@chaos-maker/core 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -8
- package/dist/chaos-maker.cjs +12 -5
- package/dist/chaos-maker.js +1394 -1178
- package/dist/chaos-maker.umd.js +11 -4
- package/dist/sw.js +1 -1
- package/dist/sw.mjs +457 -401
- package/dist/types/ChaosMaker.d.ts +5 -0
- package/dist/types/format-event.d.ts +13 -0
- package/dist/types/index.d.ts +4 -1
- package/dist/types/runtime-state.d.ts +6 -0
- package/dist/types/seed-reporting.d.ts +1 -0
- package/dist/types/session-errors.d.ts +18 -0
- package/dist/types/sw-bridge-source.d.ts +3 -2
- package/package.json +1 -1
package/dist/chaos-maker.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
"use strict";var is=Object.defineProperty;var cs=(t,e,n)=>e in t?is(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var R=(t,e,n)=>cs(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var O;(function(t){t.assertEqual=r=>{};function e(r){}t.assertIs=e;function n(r){throw new Error}t.assertNever=n,t.arrayToEnum=r=>{const a={};for(const o of r)a[o]=o;return a},t.getValidEnumValues=r=>{const a=t.objectKeys(r).filter(i=>typeof r[r[i]]!="number"),o={};for(const i of a)o[i]=r[i];return t.objectValues(o)},t.objectValues=r=>t.objectKeys(r).map(function(a){return r[a]}),t.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{const a=[];for(const o in r)Object.prototype.hasOwnProperty.call(r,o)&&a.push(o);return a},t.find=(r,a)=>{for(const o of r)if(a(o))return o},t.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function s(r,a=" | "){return r.map(o=>typeof o=="string"?`'${o}'`:o).join(a)}t.joinValues=s,t.jsonStringifyReplacer=(r,a)=>typeof a=="bigint"?a.toString():a})(O||(O={}));var Mt;(function(t){t.mergeShapes=(e,n)=>({...e,...n})})(Mt||(Mt={}));const m=O.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),ue=t=>{switch(typeof t){case"undefined":return m.undefined;case"string":return m.string;case"number":return Number.isNaN(t)?m.nan:m.number;case"boolean":return m.boolean;case"function":return m.function;case"bigint":return m.bigint;case"symbol":return m.symbol;case"object":return Array.isArray(t)?m.array:t===null?m.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?m.promise:typeof Map<"u"&&t instanceof Map?m.map:typeof Set<"u"&&t instanceof Set?m.set:typeof Date<"u"&&t instanceof Date?m.date:m.object;default:return m.unknown}},h=O.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class ce extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=e}format(e){const n=e||function(a){return a.message},s={_errors:[]},r=a=>{for(const o of a.issues)if(o.code==="invalid_union")o.unionErrors.map(r);else if(o.code==="invalid_return_type")r(o.returnTypeError);else if(o.code==="invalid_arguments")r(o.argumentsError);else if(o.path.length===0)s._errors.push(n(o));else{let i=s,c=0;for(;c<o.path.length;){const u=o.path[c];c===o.path.length-1?(i[u]=i[u]||{_errors:[]},i[u]._errors.push(n(o))):i[u]=i[u]||{_errors:[]},i=i[u],c++}}};return r(this),s}static assert(e){if(!(e instanceof ce))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,O.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=n=>n.message){const n={},s=[];for(const r of this.issues)if(r.path.length>0){const a=r.path[0];n[a]=n[a]||[],n[a].push(e(r))}else s.push(e(r));return{formErrors:s,fieldErrors:n}}get formErrors(){return this.flatten()}}ce.create=t=>new ce(t);const it=(t,e)=>{let n;switch(t.code){case h.invalid_type:t.received===m.undefined?n="Required":n=`Expected ${t.expected}, received ${t.received}`;break;case h.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(t.expected,O.jsonStringifyReplacer)}`;break;case h.unrecognized_keys:n=`Unrecognized key(s) in object: ${O.joinValues(t.keys,", ")}`;break;case h.invalid_union:n="Invalid input";break;case h.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${O.joinValues(t.options)}`;break;case h.invalid_enum_value:n=`Invalid enum value. Expected ${O.joinValues(t.options)}, received '${t.received}'`;break;case h.invalid_arguments:n="Invalid function arguments";break;case h.invalid_return_type:n="Invalid function return type";break;case h.invalid_date:n="Invalid date";break;case h.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(n=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?n=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?n=`Invalid input: must end with "${t.validation.endsWith}"`:O.assertNever(t.validation):t.validation!=="regex"?n=`Invalid ${t.validation}`:n="Invalid";break;case h.too_small:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:n="Invalid input";break;case h.too_big:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?n=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:n="Invalid input";break;case h.custom:n="Invalid input";break;case h.invalid_intersection_types:n="Intersection results could not be merged";break;case h.not_multiple_of:n=`Number must be a multiple of ${t.multipleOf}`;break;case h.not_finite:n="Number must be finite";break;default:n=e.defaultError,O.assertNever(t)}return{message:n}};let us=it;function ls(){return us}const ds=t=>{const{data:e,path:n,errorMaps:s,issueData:r}=t,a=[...n,...r.path||[]],o={...r,path:a};if(r.message!==void 0)return{...r,path:a,message:r.message};let i="";const c=s.filter(u=>!!u).slice().reverse();for(const u of c)i=u(o,{data:e,defaultError:i}).message;return{...r,path:a,message:i}};function g(t,e){const n=ls(),s=ds({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,n,n===it?void 0:it].filter(r=>!!r)});t.common.issues.push(s)}class z{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,n){const s=[];for(const r of n){if(r.status==="aborted")return x;r.status==="dirty"&&e.dirty(),s.push(r.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,n){const s=[];for(const r of n){const a=await r.key,o=await r.value;s.push({key:a,value:o})}return z.mergeObjectSync(e,s)}static mergeObjectSync(e,n){const s={};for(const r of n){const{key:a,value:o}=r;if(a.status==="aborted"||o.status==="aborted")return x;a.status==="dirty"&&e.dirty(),o.status==="dirty"&&e.dirty(),a.value!=="__proto__"&&(typeof o.value<"u"||r.alwaysSet)&&(s[a.value]=o.value)}return{status:e.value,value:s}}}const x=Object.freeze({status:"aborted"}),Te=t=>({status:"dirty",value:t}),Q=t=>({status:"valid",value:t}),jt=t=>t.status==="aborted",Pt=t=>t.status==="dirty",_e=t=>t.status==="valid",qe=t=>typeof Promise<"u"&&t instanceof Promise;var b;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(b||(b={}));class re{constructor(e,n,s,r){this._cachedPath=[],this.parent=e,this.data=n,this._path=s,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const $t=(t,e)=>{if(_e(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new ce(t.common.issues);return this._error=n,this._error}}};function E(t){if(!t)return{};const{errorMap:e,invalid_type_error:n,required_error:s,description:r}=t;if(e&&(n||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:r}:{errorMap:(o,i)=>{const{message:c}=t;return o.code==="invalid_enum_value"?{message:c??i.defaultError}:typeof i.data>"u"?{message:c??s??i.defaultError}:o.code!=="invalid_type"?{message:i.defaultError}:{message:c??n??i.defaultError}},description:r}}class T{get description(){return this._def.description}_getType(e){return ue(e.data)}_getOrReturnCtx(e,n){return n||{common:e.parent.common,data:e.data,parsedType:ue(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new z,ctx:{common:e.parent.common,data:e.data,parsedType:ue(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const n=this._parse(e);if(qe(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(e){const n=this._parse(e);return Promise.resolve(n)}parse(e,n){const s=this.safeParse(e,n);if(s.success)return s.data;throw s.error}safeParse(e,n){const s={common:{issues:[],async:(n==null?void 0:n.async)??!1,contextualErrorMap:n==null?void 0:n.errorMap},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ue(e)},r=this._parseSync({data:e,path:s.path,parent:s});return $t(s,r)}"~validate"(e){var s,r;const n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ue(e)};if(!this["~standard"].async)try{const a=this._parseSync({data:e,path:[],parent:n});return _e(a)?{value:a.value}:{issues:n.common.issues}}catch(a){(r=(s=a==null?void 0:a.message)==null?void 0:s.toLowerCase())!=null&&r.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:n}).then(a=>_e(a)?{value:a.value}:{issues:n.common.issues})}async parseAsync(e,n){const s=await this.safeParseAsync(e,n);if(s.success)return s.data;throw s.error}async safeParseAsync(e,n){const s={common:{issues:[],contextualErrorMap:n==null?void 0:n.errorMap,async:!0},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ue(e)},r=this._parse({data:e,path:s.path,parent:s}),a=await(qe(r)?r:Promise.resolve(r));return $t(s,a)}refine(e,n){const s=r=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(r):n;return this._refinement((r,a)=>{const o=e(r),i=()=>a.addIssue({code:h.custom,...s(r)});return typeof Promise<"u"&&o instanceof Promise?o.then(c=>c?!0:(i(),!1)):o?!0:(i(),!1)})}refinement(e,n){return this._refinement((s,r)=>e(s)?!0:(r.addIssue(typeof n=="function"?n(s,r):n),!1))}_refinement(e){return new xe({schema:this,typeName:w.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return le.create(this,this._def)}nullable(){return Se.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return ne.create(this)}promise(){return He.create(this,this._def)}or(e){return ze.create([this,e],this._def)}and(e){return Fe.create(this,e,this._def)}transform(e){return new xe({...E(this._def),schema:this,typeName:w.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const n=typeof e=="function"?e:()=>e;return new dt({...E(this._def),innerType:this,defaultValue:n,typeName:w.ZodDefault})}brand(){return new Ps({typeName:w.ZodBranded,type:this,...E(this._def)})}catch(e){const n=typeof e=="function"?e:()=>e;return new ft({...E(this._def),innerType:this,catchValue:n,typeName:w.ZodCatch})}describe(e){const n=this.constructor;return new n({...this._def,description:e})}pipe(e){return _t.create(this,e)}readonly(){return ht.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const fs=/^c[^\s-]{8,}$/i,hs=/^[0-9a-z]+$/,ps=/^[0-9A-HJKMNP-TV-Z]{26}$/i,gs=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ys=/^[a-z0-9_-]{21}$/i,ms=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,bs=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,vs=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,_s="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let st;const ks=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ws=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,xs=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Ss=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Cs=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,Es=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,un="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Ns=new RegExp(`^${un}$`);function ln(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);const n=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${n}`}function Ts(t){return new RegExp(`^${ln(t)}$`)}function Os(t){let e=`${un}T${ln(t)}`;const n=[];return n.push(t.local?"Z?":"Z"),t.offset&&n.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${n.join("|")})`,new RegExp(`^${e}$`)}function Rs(t,e){return!!((e==="v4"||!e)&&ks.test(t)||(e==="v6"||!e)&&xs.test(t))}function As(t,e){if(!ms.test(t))return!1;try{const[n]=t.split(".");if(!n)return!1;const s=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),r=JSON.parse(atob(s));return!(typeof r!="object"||r===null||"typ"in r&&(r==null?void 0:r.typ)!=="JWT"||!r.alg||e&&r.alg!==e)}catch{return!1}}function Ms(t,e){return!!((e==="v4"||!e)&&ws.test(t)||(e==="v6"||!e)&&Ss.test(t))}class ie extends T{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==m.string){const a=this._getOrReturnCtx(e);return g(a,{code:h.invalid_type,expected:m.string,received:a.parsedType}),x}const s=new z;let r;for(const a of this._def.checks)if(a.kind==="min")e.data.length<a.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),s.dirty());else if(a.kind==="max")e.data.length>a.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!1,message:a.message}),s.dirty());else if(a.kind==="length"){const o=e.data.length>a.value,i=e.data.length<a.value;(o||i)&&(r=this._getOrReturnCtx(e,r),o?g(r,{code:h.too_big,maximum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}):i&&g(r,{code:h.too_small,minimum:a.value,type:"string",inclusive:!0,exact:!0,message:a.message}),s.dirty())}else if(a.kind==="email")vs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"email",code:h.invalid_string,message:a.message}),s.dirty());else if(a.kind==="emoji")st||(st=new RegExp(_s,"u")),st.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"emoji",code:h.invalid_string,message:a.message}),s.dirty());else if(a.kind==="uuid")gs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"uuid",code:h.invalid_string,message:a.message}),s.dirty());else if(a.kind==="nanoid")ys.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"nanoid",code:h.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid")fs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"cuid",code:h.invalid_string,message:a.message}),s.dirty());else if(a.kind==="cuid2")hs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"cuid2",code:h.invalid_string,message:a.message}),s.dirty());else if(a.kind==="ulid")ps.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"ulid",code:h.invalid_string,message:a.message}),s.dirty());else if(a.kind==="url")try{new URL(e.data)}catch{r=this._getOrReturnCtx(e,r),g(r,{validation:"url",code:h.invalid_string,message:a.message}),s.dirty()}else a.kind==="regex"?(a.regex.lastIndex=0,a.regex.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"regex",code:h.invalid_string,message:a.message}),s.dirty())):a.kind==="trim"?e.data=e.data.trim():a.kind==="includes"?e.data.includes(a.value,a.position)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:{includes:a.value,position:a.position},message:a.message}),s.dirty()):a.kind==="toLowerCase"?e.data=e.data.toLowerCase():a.kind==="toUpperCase"?e.data=e.data.toUpperCase():a.kind==="startsWith"?e.data.startsWith(a.value)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:{startsWith:a.value},message:a.message}),s.dirty()):a.kind==="endsWith"?e.data.endsWith(a.value)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:{endsWith:a.value},message:a.message}),s.dirty()):a.kind==="datetime"?Os(a).test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:"datetime",message:a.message}),s.dirty()):a.kind==="date"?Ns.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:"date",message:a.message}),s.dirty()):a.kind==="time"?Ts(a).test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:"time",message:a.message}),s.dirty()):a.kind==="duration"?bs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"duration",code:h.invalid_string,message:a.message}),s.dirty()):a.kind==="ip"?Rs(e.data,a.version)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"ip",code:h.invalid_string,message:a.message}),s.dirty()):a.kind==="jwt"?As(e.data,a.alg)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"jwt",code:h.invalid_string,message:a.message}),s.dirty()):a.kind==="cidr"?Ms(e.data,a.version)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"cidr",code:h.invalid_string,message:a.message}),s.dirty()):a.kind==="base64"?Cs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"base64",code:h.invalid_string,message:a.message}),s.dirty()):a.kind==="base64url"?Es.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"base64url",code:h.invalid_string,message:a.message}),s.dirty()):O.assertNever(a);return{status:s.value,value:e.data}}_regex(e,n,s){return this.refinement(r=>e.test(r),{validation:n,code:h.invalid_string,...b.errToObj(s)})}_addCheck(e){return new ie({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...b.errToObj(e)})}url(e){return this._addCheck({kind:"url",...b.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...b.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...b.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...b.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...b.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...b.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...b.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...b.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...b.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...b.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...b.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...b.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(e==null?void 0:e.offset)??!1,local:(e==null?void 0:e.local)??!1,...b.errToObj(e==null?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,...b.errToObj(e==null?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...b.errToObj(e)})}regex(e,n){return this._addCheck({kind:"regex",regex:e,...b.errToObj(n)})}includes(e,n){return this._addCheck({kind:"includes",value:e,position:n==null?void 0:n.position,...b.errToObj(n==null?void 0:n.message)})}startsWith(e,n){return this._addCheck({kind:"startsWith",value:e,...b.errToObj(n)})}endsWith(e,n){return this._addCheck({kind:"endsWith",value:e,...b.errToObj(n)})}min(e,n){return this._addCheck({kind:"min",value:e,...b.errToObj(n)})}max(e,n){return this._addCheck({kind:"max",value:e,...b.errToObj(n)})}length(e,n){return this._addCheck({kind:"length",value:e,...b.errToObj(n)})}nonempty(e){return this.min(1,b.errToObj(e))}trim(){return new ie({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ie({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ie({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxLength(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}ie.create=t=>new ie({checks:[],typeName:w.ZodString,coerce:(t==null?void 0:t.coerce)??!1,...E(t)});function js(t,e){const n=(t.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,r=n>s?n:s,a=Number.parseInt(t.toFixed(r).replace(".","")),o=Number.parseInt(e.toFixed(r).replace(".",""));return a%o/10**r}class ke extends T{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==m.number){const a=this._getOrReturnCtx(e);return g(a,{code:h.invalid_type,expected:m.number,received:a.parsedType}),x}let s;const r=new z;for(const a of this._def.checks)a.kind==="int"?O.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),g(s,{code:h.invalid_type,expected:"integer",received:"float",message:a.message}),r.dirty()):a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_small,minimum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),r.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_big,maximum:a.value,type:"number",inclusive:a.inclusive,exact:!1,message:a.message}),r.dirty()):a.kind==="multipleOf"?js(e.data,a.value)!==0&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.not_multiple_of,multipleOf:a.value,message:a.message}),r.dirty()):a.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),g(s,{code:h.not_finite,message:a.message}),r.dirty()):O.assertNever(a);return{status:r.value,value:e.data}}gte(e,n){return this.setLimit("min",e,!0,b.toString(n))}gt(e,n){return this.setLimit("min",e,!1,b.toString(n))}lte(e,n){return this.setLimit("max",e,!0,b.toString(n))}lt(e,n){return this.setLimit("max",e,!1,b.toString(n))}setLimit(e,n,s,r){return new ke({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:s,message:b.toString(r)}]})}_addCheck(e){return new ke({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:b.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:b.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:b.toString(n)})}finite(e){return this._addCheck({kind:"finite",message:b.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:b.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:b.toString(e)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&O.isInteger(e.value))}get isFinite(){let e=null,n=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(n===null||s.value>n)&&(n=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value)}return Number.isFinite(n)&&Number.isFinite(e)}}ke.create=t=>new ke({checks:[],typeName:w.ZodNumber,coerce:(t==null?void 0:t.coerce)||!1,...E(t)});class Ae extends T{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==m.bigint)return this._getInvalidInput(e);let s;const r=new z;for(const a of this._def.checks)a.kind==="min"?(a.inclusive?e.data<a.value:e.data<=a.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_small,type:"bigint",minimum:a.value,inclusive:a.inclusive,message:a.message}),r.dirty()):a.kind==="max"?(a.inclusive?e.data>a.value:e.data>=a.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_big,type:"bigint",maximum:a.value,inclusive:a.inclusive,message:a.message}),r.dirty()):a.kind==="multipleOf"?e.data%a.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.not_multiple_of,multipleOf:a.value,message:a.message}),r.dirty()):O.assertNever(a);return{status:r.value,value:e.data}}_getInvalidInput(e){const n=this._getOrReturnCtx(e);return g(n,{code:h.invalid_type,expected:m.bigint,received:n.parsedType}),x}gte(e,n){return this.setLimit("min",e,!0,b.toString(n))}gt(e,n){return this.setLimit("min",e,!1,b.toString(n))}lte(e,n){return this.setLimit("max",e,!0,b.toString(n))}lt(e,n){return this.setLimit("max",e,!1,b.toString(n))}setLimit(e,n,s,r){return new Ae({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:s,message:b.toString(r)}]})}_addCheck(e){return new Ae({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:b.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:b.toString(n)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}Ae.create=t=>new Ae({checks:[],typeName:w.ZodBigInt,coerce:(t==null?void 0:t.coerce)??!1,...E(t)});class ct extends T{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==m.boolean){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.boolean,received:s.parsedType}),x}return Q(e.data)}}ct.create=t=>new ct({typeName:w.ZodBoolean,coerce:(t==null?void 0:t.coerce)||!1,...E(t)});class Ve extends T{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==m.date){const a=this._getOrReturnCtx(e);return g(a,{code:h.invalid_type,expected:m.date,received:a.parsedType}),x}if(Number.isNaN(e.data.getTime())){const a=this._getOrReturnCtx(e);return g(a,{code:h.invalid_date}),x}const s=new z;let r;for(const a of this._def.checks)a.kind==="min"?e.data.getTime()<a.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_small,message:a.message,inclusive:!0,exact:!1,minimum:a.value,type:"date"}),s.dirty()):a.kind==="max"?e.data.getTime()>a.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_big,message:a.message,inclusive:!0,exact:!1,maximum:a.value,type:"date"}),s.dirty()):O.assertNever(a);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Ve({...this._def,checks:[...this._def.checks,e]})}min(e,n){return this._addCheck({kind:"min",value:e.getTime(),message:b.toString(n)})}max(e,n){return this._addCheck({kind:"max",value:e.getTime(),message:b.toString(n)})}get minDate(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e!=null?new Date(e):null}}Ve.create=t=>new Ve({checks:[],coerce:(t==null?void 0:t.coerce)||!1,typeName:w.ZodDate,...E(t)});class Lt extends T{_parse(e){if(this._getType(e)!==m.symbol){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.symbol,received:s.parsedType}),x}return Q(e.data)}}Lt.create=t=>new Lt({typeName:w.ZodSymbol,...E(t)});class It extends T{_parse(e){if(this._getType(e)!==m.undefined){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.undefined,received:s.parsedType}),x}return Q(e.data)}}It.create=t=>new It({typeName:w.ZodUndefined,...E(t)});class Dt extends T{_parse(e){if(this._getType(e)!==m.null){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.null,received:s.parsedType}),x}return Q(e.data)}}Dt.create=t=>new Dt({typeName:w.ZodNull,...E(t)});class Me extends T{constructor(){super(...arguments),this._any=!0}_parse(e){return Q(e.data)}}Me.create=t=>new Me({typeName:w.ZodAny,...E(t)});class Zt extends T{constructor(){super(...arguments),this._unknown=!0}_parse(e){return Q(e.data)}}Zt.create=t=>new Zt({typeName:w.ZodUnknown,...E(t)});class de extends T{_parse(e){const n=this._getOrReturnCtx(e);return g(n,{code:h.invalid_type,expected:m.never,received:n.parsedType}),x}}de.create=t=>new de({typeName:w.ZodNever,...E(t)});class Gt extends T{_parse(e){if(this._getType(e)!==m.undefined){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.void,received:s.parsedType}),x}return Q(e.data)}}Gt.create=t=>new Gt({typeName:w.ZodVoid,...E(t)});class ne extends T{_parse(e){const{ctx:n,status:s}=this._processInputParams(e),r=this._def;if(n.parsedType!==m.array)return g(n,{code:h.invalid_type,expected:m.array,received:n.parsedType}),x;if(r.exactLength!==null){const o=n.data.length>r.exactLength.value,i=n.data.length<r.exactLength.value;(o||i)&&(g(n,{code:o?h.too_big:h.too_small,minimum:i?r.exactLength.value:void 0,maximum:o?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),s.dirty())}if(r.minLength!==null&&n.data.length<r.minLength.value&&(g(n,{code:h.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),s.dirty()),r.maxLength!==null&&n.data.length>r.maxLength.value&&(g(n,{code:h.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),s.dirty()),n.common.async)return Promise.all([...n.data].map((o,i)=>r.type._parseAsync(new re(n,o,n.path,i)))).then(o=>z.mergeArray(s,o));const a=[...n.data].map((o,i)=>r.type._parseSync(new re(n,o,n.path,i)));return z.mergeArray(s,a)}get element(){return this._def.type}min(e,n){return new ne({...this._def,minLength:{value:e,message:b.toString(n)}})}max(e,n){return new ne({...this._def,maxLength:{value:e,message:b.toString(n)}})}length(e,n){return new ne({...this._def,exactLength:{value:e,message:b.toString(n)}})}nonempty(e){return this.min(1,e)}}ne.create=(t,e)=>new ne({type:t,minLength:null,maxLength:null,exactLength:null,typeName:w.ZodArray,...E(e)});function ve(t){if(t instanceof I){const e={};for(const n in t.shape){const s=t.shape[n];e[n]=le.create(ve(s))}return new I({...t._def,shape:()=>e})}else return t instanceof ne?new ne({...t._def,type:ve(t.element)}):t instanceof le?le.create(ve(t.unwrap())):t instanceof Se?Se.create(ve(t.unwrap())):t instanceof pe?pe.create(t.items.map(e=>ve(e))):t}class I extends T{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),n=O.objectKeys(e);return this._cached={shape:e,keys:n},this._cached}_parse(e){if(this._getType(e)!==m.object){const u=this._getOrReturnCtx(e);return g(u,{code:h.invalid_type,expected:m.object,received:u.parsedType}),x}const{status:s,ctx:r}=this._processInputParams(e),{shape:a,keys:o}=this._getCached(),i=[];if(!(this._def.catchall instanceof de&&this._def.unknownKeys==="strip"))for(const u in r.data)o.includes(u)||i.push(u);const c=[];for(const u of o){const v=a[u],M=r.data[u];c.push({key:{status:"valid",value:u},value:v._parse(new re(r,M,r.path,u)),alwaysSet:u in r.data})}if(this._def.catchall instanceof de){const u=this._def.unknownKeys;if(u==="passthrough")for(const v of i)c.push({key:{status:"valid",value:v},value:{status:"valid",value:r.data[v]}});else if(u==="strict")i.length>0&&(g(r,{code:h.unrecognized_keys,keys:i}),s.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const v of i){const M=r.data[v];c.push({key:{status:"valid",value:v},value:u._parse(new re(r,M,r.path,v)),alwaysSet:v in r.data})}}return r.common.async?Promise.resolve().then(async()=>{const u=[];for(const v of c){const M=await v.key,P=await v.value;u.push({key:M,value:P,alwaysSet:v.alwaysSet})}return u}).then(u=>z.mergeObjectSync(s,u)):z.mergeObjectSync(s,c)}get shape(){return this._def.shape()}strict(e){return b.errToObj,new I({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(n,s)=>{var a,o;const r=((o=(a=this._def).errorMap)==null?void 0:o.call(a,n,s).message)??s.defaultError;return n.code==="unrecognized_keys"?{message:b.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new I({...this._def,unknownKeys:"strip"})}passthrough(){return new I({...this._def,unknownKeys:"passthrough"})}extend(e){return new I({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new I({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:w.ZodObject})}setKey(e,n){return this.augment({[e]:n})}catchall(e){return new I({...this._def,catchall:e})}pick(e){const n={};for(const s of O.objectKeys(e))e[s]&&this.shape[s]&&(n[s]=this.shape[s]);return new I({...this._def,shape:()=>n})}omit(e){const n={};for(const s of O.objectKeys(this.shape))e[s]||(n[s]=this.shape[s]);return new I({...this._def,shape:()=>n})}deepPartial(){return ve(this)}partial(e){const n={};for(const s of O.objectKeys(this.shape)){const r=this.shape[s];e&&!e[s]?n[s]=r:n[s]=r.optional()}return new I({...this._def,shape:()=>n})}required(e){const n={};for(const s of O.objectKeys(this.shape))if(e&&!e[s])n[s]=this.shape[s];else{let a=this.shape[s];for(;a instanceof le;)a=a._def.innerType;n[s]=a}return new I({...this._def,shape:()=>n})}keyof(){return dn(O.objectKeys(this.shape))}}I.create=(t,e)=>new I({shape:()=>t,unknownKeys:"strip",catchall:de.create(),typeName:w.ZodObject,...E(e)});I.strictCreate=(t,e)=>new I({shape:()=>t,unknownKeys:"strict",catchall:de.create(),typeName:w.ZodObject,...E(e)});I.lazycreate=(t,e)=>new I({shape:t,unknownKeys:"strip",catchall:de.create(),typeName:w.ZodObject,...E(e)});class ze extends T{_parse(e){const{ctx:n}=this._processInputParams(e),s=this._def.options;function r(a){for(const i of a)if(i.result.status==="valid")return i.result;for(const i of a)if(i.result.status==="dirty")return n.common.issues.push(...i.ctx.common.issues),i.result;const o=a.map(i=>new ce(i.ctx.common.issues));return g(n,{code:h.invalid_union,unionErrors:o}),x}if(n.common.async)return Promise.all(s.map(async a=>{const o={...n,common:{...n.common,issues:[]},parent:null};return{result:await a._parseAsync({data:n.data,path:n.path,parent:o}),ctx:o}})).then(r);{let a;const o=[];for(const c of s){const u={...n,common:{...n.common,issues:[]},parent:null},v=c._parseSync({data:n.data,path:n.path,parent:u});if(v.status==="valid")return v;v.status==="dirty"&&!a&&(a={result:v,ctx:u}),u.common.issues.length&&o.push(u.common.issues)}if(a)return n.common.issues.push(...a.ctx.common.issues),a.result;const i=o.map(c=>new ce(c));return g(n,{code:h.invalid_union,unionErrors:i}),x}}get options(){return this._def.options}}ze.create=(t,e)=>new ze({options:t,typeName:w.ZodUnion,...E(e)});function ut(t,e){const n=ue(t),s=ue(e);if(t===e)return{valid:!0,data:t};if(n===m.object&&s===m.object){const r=O.objectKeys(e),a=O.objectKeys(t).filter(i=>r.indexOf(i)!==-1),o={...t,...e};for(const i of a){const c=ut(t[i],e[i]);if(!c.valid)return{valid:!1};o[i]=c.data}return{valid:!0,data:o}}else if(n===m.array&&s===m.array){if(t.length!==e.length)return{valid:!1};const r=[];for(let a=0;a<t.length;a++){const o=t[a],i=e[a],c=ut(o,i);if(!c.valid)return{valid:!1};r.push(c.data)}return{valid:!0,data:r}}else return n===m.date&&s===m.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}class Fe extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e),r=(a,o)=>{if(jt(a)||jt(o))return x;const i=ut(a.value,o.value);return i.valid?((Pt(a)||Pt(o))&&n.dirty(),{status:n.value,value:i.data}):(g(s,{code:h.invalid_intersection_types}),x)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([a,o])=>r(a,o)):r(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}Fe.create=(t,e,n)=>new Fe({left:t,right:e,typeName:w.ZodIntersection,...E(n)});class pe extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.array)return g(s,{code:h.invalid_type,expected:m.array,received:s.parsedType}),x;if(s.data.length<this._def.items.length)return g(s,{code:h.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),x;!this._def.rest&&s.data.length>this._def.items.length&&(g(s,{code:h.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const a=[...s.data].map((o,i)=>{const c=this._def.items[i]||this._def.rest;return c?c._parse(new re(s,o,s.path,i)):null}).filter(o=>!!o);return s.common.async?Promise.all(a).then(o=>z.mergeArray(n,o)):z.mergeArray(n,a)}get items(){return this._def.items}rest(e){return new pe({...this._def,rest:e})}}pe.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new pe({items:t,typeName:w.ZodTuple,rest:null,...E(e)})};class Be extends T{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.object)return g(s,{code:h.invalid_type,expected:m.object,received:s.parsedType}),x;const r=[],a=this._def.keyType,o=this._def.valueType;for(const i in s.data)r.push({key:a._parse(new re(s,i,s.path,i)),value:o._parse(new re(s,s.data[i],s.path,i)),alwaysSet:i in s.data});return s.common.async?z.mergeObjectAsync(n,r):z.mergeObjectSync(n,r)}get element(){return this._def.valueType}static create(e,n,s){return n instanceof T?new Be({keyType:e,valueType:n,typeName:w.ZodRecord,...E(s)}):new Be({keyType:ie.create(),valueType:e,typeName:w.ZodRecord,...E(n)})}}class Ut extends T{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.map)return g(s,{code:h.invalid_type,expected:m.map,received:s.parsedType}),x;const r=this._def.keyType,a=this._def.valueType,o=[...s.data.entries()].map(([i,c],u)=>({key:r._parse(new re(s,i,s.path,[u,"key"])),value:a._parse(new re(s,c,s.path,[u,"value"]))}));if(s.common.async){const i=new Map;return Promise.resolve().then(async()=>{for(const c of o){const u=await c.key,v=await c.value;if(u.status==="aborted"||v.status==="aborted")return x;(u.status==="dirty"||v.status==="dirty")&&n.dirty(),i.set(u.value,v.value)}return{status:n.value,value:i}})}else{const i=new Map;for(const c of o){const u=c.key,v=c.value;if(u.status==="aborted"||v.status==="aborted")return x;(u.status==="dirty"||v.status==="dirty")&&n.dirty(),i.set(u.value,v.value)}return{status:n.value,value:i}}}}Ut.create=(t,e,n)=>new Ut({valueType:e,keyType:t,typeName:w.ZodMap,...E(n)});class je extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.set)return g(s,{code:h.invalid_type,expected:m.set,received:s.parsedType}),x;const r=this._def;r.minSize!==null&&s.data.size<r.minSize.value&&(g(s,{code:h.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),n.dirty()),r.maxSize!==null&&s.data.size>r.maxSize.value&&(g(s,{code:h.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),n.dirty());const a=this._def.valueType;function o(c){const u=new Set;for(const v of c){if(v.status==="aborted")return x;v.status==="dirty"&&n.dirty(),u.add(v.value)}return{status:n.value,value:u}}const i=[...s.data.values()].map((c,u)=>a._parse(new re(s,c,s.path,u)));return s.common.async?Promise.all(i).then(c=>o(c)):o(i)}min(e,n){return new je({...this._def,minSize:{value:e,message:b.toString(n)}})}max(e,n){return new je({...this._def,maxSize:{value:e,message:b.toString(n)}})}size(e,n){return this.min(e,n).max(e,n)}nonempty(e){return this.min(1,e)}}je.create=(t,e)=>new je({valueType:t,minSize:null,maxSize:null,typeName:w.ZodSet,...E(e)});class Wt extends T{get schema(){return this._def.getter()}_parse(e){const{ctx:n}=this._processInputParams(e);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Wt.create=(t,e)=>new Wt({getter:t,typeName:w.ZodLazy,...E(e)});class lt extends T{_parse(e){if(e.data!==this._def.value){const n=this._getOrReturnCtx(e);return g(n,{received:n.data,code:h.invalid_literal,expected:this._def.value}),x}return{status:"valid",value:e.data}}get value(){return this._def.value}}lt.create=(t,e)=>new lt({value:t,typeName:w.ZodLiteral,...E(e)});function dn(t,e){return new we({values:t,typeName:w.ZodEnum,...E(e)})}class we extends T{_parse(e){if(typeof e.data!="string"){const n=this._getOrReturnCtx(e),s=this._def.values;return g(n,{expected:O.joinValues(s),received:n.parsedType,code:h.invalid_type}),x}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const n=this._getOrReturnCtx(e),s=this._def.values;return g(n,{received:n.data,code:h.invalid_enum_value,options:s}),x}return Q(e.data)}get options(){return this._def.values}get enum(){const e={};for(const n of this._def.values)e[n]=n;return e}get Values(){const e={};for(const n of this._def.values)e[n]=n;return e}get Enum(){const e={};for(const n of this._def.values)e[n]=n;return e}extract(e,n=this._def){return we.create(e,{...this._def,...n})}exclude(e,n=this._def){return we.create(this.options.filter(s=>!e.includes(s)),{...this._def,...n})}}we.create=dn;class qt extends T{_parse(e){const n=O.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==m.string&&s.parsedType!==m.number){const r=O.objectValues(n);return g(s,{expected:O.joinValues(r),received:s.parsedType,code:h.invalid_type}),x}if(this._cache||(this._cache=new Set(O.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const r=O.objectValues(n);return g(s,{received:s.data,code:h.invalid_enum_value,options:r}),x}return Q(e.data)}get enum(){return this._def.values}}qt.create=(t,e)=>new qt({values:t,typeName:w.ZodNativeEnum,...E(e)});class He extends T{unwrap(){return this._def.type}_parse(e){const{ctx:n}=this._processInputParams(e);if(n.parsedType!==m.promise&&n.common.async===!1)return g(n,{code:h.invalid_type,expected:m.promise,received:n.parsedType}),x;const s=n.parsedType===m.promise?n.data:Promise.resolve(n.data);return Q(s.then(r=>this._def.type.parseAsync(r,{path:n.path,errorMap:n.common.contextualErrorMap})))}}He.create=(t,e)=>new He({type:t,typeName:w.ZodPromise,...E(e)});class xe extends T{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===w.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:n,ctx:s}=this._processInputParams(e),r=this._def.effect||null,a={addIssue:o=>{g(s,o),o.fatal?n.abort():n.dirty()},get path(){return s.path}};if(a.addIssue=a.addIssue.bind(a),r.type==="preprocess"){const o=r.transform(s.data,a);if(s.common.async)return Promise.resolve(o).then(async i=>{if(n.value==="aborted")return x;const c=await this._def.schema._parseAsync({data:i,path:s.path,parent:s});return c.status==="aborted"?x:c.status==="dirty"||n.value==="dirty"?Te(c.value):c});{if(n.value==="aborted")return x;const i=this._def.schema._parseSync({data:o,path:s.path,parent:s});return i.status==="aborted"?x:i.status==="dirty"||n.value==="dirty"?Te(i.value):i}}if(r.type==="refinement"){const o=i=>{const c=r.refinement(i,a);if(s.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return i};if(s.common.async===!1){const i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?x:(i.status==="dirty"&&n.dirty(),o(i.value),{status:n.value,value:i.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>i.status==="aborted"?x:(i.status==="dirty"&&n.dirty(),o(i.value).then(()=>({status:n.value,value:i.value}))))}if(r.type==="transform")if(s.common.async===!1){const o=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!_e(o))return x;const i=r.transform(o.value,a);if(i instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:i}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(o=>_e(o)?Promise.resolve(r.transform(o.value,a)).then(i=>({status:n.value,value:i})):x);O.assertNever(r)}}xe.create=(t,e,n)=>new xe({schema:t,typeName:w.ZodEffects,effect:e,...E(n)});xe.createWithPreprocess=(t,e,n)=>new xe({schema:e,effect:{type:"preprocess",transform:t},typeName:w.ZodEffects,...E(n)});class le extends T{_parse(e){return this._getType(e)===m.undefined?Q(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}le.create=(t,e)=>new le({innerType:t,typeName:w.ZodOptional,...E(e)});class Se extends T{_parse(e){return this._getType(e)===m.null?Q(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Se.create=(t,e)=>new Se({innerType:t,typeName:w.ZodNullable,...E(e)});class dt extends T{_parse(e){const{ctx:n}=this._processInputParams(e);let s=n.data;return n.parsedType===m.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}dt.create=(t,e)=>new dt({innerType:t,typeName:w.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...E(e)});class ft extends T{_parse(e){const{ctx:n}=this._processInputParams(e),s={...n,common:{...n.common,issues:[]}},r=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return qe(r)?r.then(a=>({status:"valid",value:a.status==="valid"?a.value:this._def.catchValue({get error(){return new ce(s.common.issues)},input:s.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new ce(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}ft.create=(t,e)=>new ft({innerType:t,typeName:w.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...E(e)});class Vt extends T{_parse(e){if(this._getType(e)!==m.nan){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.nan,received:s.parsedType}),x}return{status:"valid",value:e.data}}}Vt.create=t=>new Vt({typeName:w.ZodNaN,...E(t)});class Ps extends T{_parse(e){const{ctx:n}=this._processInputParams(e),s=n.data;return this._def.type._parse({data:s,path:n.path,parent:n})}unwrap(){return this._def.type}}class _t extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{const a=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return a.status==="aborted"?x:a.status==="dirty"?(n.dirty(),Te(a.value)):this._def.out._parseAsync({data:a.value,path:s.path,parent:s})})();{const r=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?x:r.status==="dirty"?(n.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:s.path,parent:s})}}static create(e,n){return new _t({in:e,out:n,typeName:w.ZodPipeline})}}class ht extends T{_parse(e){const n=this._def.innerType._parse(e),s=r=>(_e(r)&&(r.value=Object.freeze(r.value)),r);return qe(n)?n.then(r=>s(r)):s(n)}unwrap(){return this._def.innerType}}ht.create=(t,e)=>new ht({innerType:t,typeName:w.ZodReadonly,...E(e)});function zt(t,e){const n=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof n=="string"?{message:n}:n}function $s(t,e={},n){return t?Me.create().superRefine((s,r)=>{const a=t(s);if(a instanceof Promise)return a.then(o=>{if(!o){const i=zt(e,s),c=i.fatal??n??!0;r.addIssue({code:"custom",...i,fatal:c})}});if(!a){const o=zt(e,s),i=o.fatal??n??!0;r.addIssue({code:"custom",...o,fatal:i})}}):Me.create()}var w;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(w||(w={}));const Ls=(t,e={message:`Input not instance of ${t.name}`})=>$s(n=>n instanceof t,e),D=ie.create,J=ke.create,pt=ct.create;Me.create;de.create;const U=ne.create,L=I.create,fn=ze.create;Fe.create;pe.create;const hn=Be.create,Is=lt.create,Le=we.create;He.create;le.create;Se.create;const Ds={network:{failures:"network.failure",latencies:"network.latency",aborts:"network.abort",corruptions:"network.corruption",cors:"network.cors"},ui:{assaults:"ui.assault"},websocket:{drops:"websocket.drop",delays:"websocket.delay",corruptions:"websocket.corrupt",closes:"websocket.close"},sse:{drops:"sse.drop",delays:"sse.delay",corruptions:"sse.corrupt",closes:"sse.close"}};function Zs(t){if(t.length===0)return"top-level";const e=t[0];if(e==="groups")return"group";if(e==="presets"||e==="customPresets")return"preset";if(typeof e=="string"){const n=Ds[e];if(n&&typeof t[1]=="string"){const s=n[t[1]];if(s)return s}}return"top-level"}function Gs(t){let e="";for(const n of t)typeof n=="number"?e+=`[${n}]`:e+=e.length===0?n:`.${n}`;return e}function Ft(t,e=80){return t.length<=e?t:`${t.slice(0,e-1)}…`}function Us(t){try{return t===void 0?"undefined":JSON.stringify(t)??String(t)}catch{return"<unserializable>"}}function Ws(t){switch(t.code){case h.unrecognized_keys:return"unknown_field";case h.invalid_type:return t.received==="undefined"?"missing_field":"invalid_type";case h.too_small:return"value_too_small";case h.too_big:return"value_too_large";case h.invalid_enum_value:return"invalid_enum";case h.invalid_string:return"invalid_string";case h.invalid_union:case h.invalid_union_discriminator:return"invalid_type";case h.custom:{const e=t.message.toLowerCase();return e.includes("mutually exclusive")||e.includes("only one of")?"mutually_exclusive":e.includes("duplicate")?"duplicate":e.includes("regexp")||e.includes("flag")?"invalid_regex":"custom"}default:return"custom"}}function qs(t){switch(t.code){case h.invalid_type:return t.expected;case h.too_small:return t.type==="number"?`>= ${t.minimum}`:t.type==="string"?`length >= ${t.minimum}`:t.type==="array"?`length >= ${t.minimum}`:`>= ${t.minimum}`;case h.too_big:return t.type==="number"?`<= ${t.maximum}`:t.type==="string"?`length <= ${t.maximum}`:t.type==="array"?`length <= ${t.maximum}`:`<= ${t.maximum}`;case h.invalid_enum_value:return t.options.map(e=>JSON.stringify(e)).join("|");case h.unrecognized_keys:return"no extra keys";default:return}}function Vs(t){if(t.code===h.invalid_type)return t.received;if(t.code===h.invalid_enum_value)return Ft(Us(t.received));if(t.code===h.unrecognized_keys)return Ft(t.keys.map(e=>JSON.stringify(e)).join(", "))}function pn(t){return{path:Gs(t.path),code:Ws(t),ruleType:Zs(t.path),message:t.message,expected:qs(t),received:Vs(t)}}function zs(t){return[...t].sort((e,n)=>e.path<n.path?-1:e.path>n.path?1:e.code<n.code?-1:e.code>n.code?1:0)}function Fs(t,e={}){const n=e.maxIssues??50,s=t.slice(0,n),r=Math.max(0,t.length-n),a=s.map(o=>{let i=`[${o.ruleType}] ${o.path||"<root>"} (${o.code}): ${o.message}`;return o.expected!==void 0&&(i+=`, expected ${o.expected}`),o.received!==void 0&&(i+=`, received ${o.received}`),i});return r>0&&a.push(`... and ${r} more`),`Invalid ChaosConfig:
|
|
2
|
-
${
|
|
3
|
-
`)}`}class he extends Error{constructor(n){const s=Bs(n)?n.map(a=>({path:"",code:"legacy",ruleType:"top-level",message:a})):n,r=zs(s);super(Fs(r,{maxIssues:50}));R(this,"issues");this.name="ChaosConfigError",this.issues=r}get messages(){return this.issues.map(n=>`${n.path||"<root>"}: ${n.message}`)}}function Bs(t){return t.length>0&&typeof t[0]=="string"}const Pe="default";class gn{constructor(){R(this,"groups",new Map);R(this,"gatedEmitted",new Set)}ensure(e,n){const s=this.groups.get(e);if(s)return n!=null&&n.explicit&&(s.explicit=!0),(n==null?void 0:n.enabled)!==void 0&&(s.enabled=n.enabled),s;const r={name:e,enabled:(n==null?void 0:n.enabled)??!0,explicit:(n==null?void 0:n.explicit)??!1};return this.groups.set(e,r),r}setEnabled(e,n){this.ensure(e).enabled=n,this.gatedEmitted.clear()}isActive(e){return this.ensure(e??Pe).enabled}shouldEmitGated(e){return this.gatedEmitted.has(e)?!1:(this.gatedEmitted.add(e),!0)}has(e){return this.groups.has(e)}remove(e,n,s){if(e===Pe)return!1;if(!(s!=null&&s.force)&&n.has(e))throw new Error(`[chaos-maker] Cannot remove group '${e}': still referenced by one or more rules. Pass { force: true } to override.`);const r=this.groups.delete(e);return r&&this.gatedEmitted.delete(e),r}list(){return[...this.groups.values()].map(e=>({...e}))}getSnapshot(){const e={};for(const n of this.groups.values())e[n.name]=n.enabled;return e}}function $e(t){if(t===null||typeof t!="object")return t;if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(Array.isArray(t))return t.map(n=>$e(n));const e={};for(const[n,s]of Object.entries(t))e[n]=$e(s);return e}function q(t,e){return e()<t}function ee(t,e){const n=(e.get(t)??0)+1;return e.set(t,n),n}function te(t,e){return t.onNth!==void 0?e===t.onNth:t.everyNth!==void 0?e%t.everyNth===0:t.afterN!==void 0?e>t.afterN:!0}function ge(t,e){return e==="*"?!0:t.includes(e)}function kt(t,e){switch(e){case"truncate":return t.slice(0,Math.max(0,Math.floor(t.length/2)));case"malformed-json":return`${t}"}`;case"empty":return"";case"wrong-type":return"<html><body>Unexpected HTML</body></html>"}}function V(t,e,n,s){if(!e||e.isActive(t.group))return!0;const r=t.group??Pe;return e.shouldEmitGated(r)&&n&&n.emit({type:"rule-group:gated",timestamp:Date.now(),applied:!1,detail:{...s,groupName:r}}),n==null||n.debug("rule-skip-group",{...s,groupName:r},t),!1}function Bt(t,e){var s,r,a,o,i,c,u,v,M,P,F,X,W,p;const n=l=>{if(l)for(const f of l)e(f)};n((s=t.network)==null?void 0:s.failures),n((r=t.network)==null?void 0:r.latencies),n((a=t.network)==null?void 0:a.aborts),n((o=t.network)==null?void 0:o.corruptions),n((i=t.network)==null?void 0:i.cors),n((c=t.ui)==null?void 0:c.assaults),n((u=t.websocket)==null?void 0:u.drops),n((v=t.websocket)==null?void 0:v.delays),n((M=t.websocket)==null?void 0:M.corruptions),n((P=t.websocket)==null?void 0:P.closes),n((F=t.sse)==null?void 0:F.drops),n((X=t.sse)==null?void 0:X.delays),n((W=t.sse)==null?void 0:W.corruptions),n((p=t.sse)==null?void 0:p.closes)}const se="*",Ye={network:{latencies:[{urlPattern:se,delayMs:2e3,probability:1}]}},Ke={network:{aborts:[{urlPattern:se,probability:.05}],latencies:[{urlPattern:se,delayMs:3e3,probability:.1}]}},Xe={network:{cors:[{urlPattern:se,probability:1}]}},Qe={network:{failures:[{urlPattern:"/api/",statusCode:500,probability:.1}],latencies:[{urlPattern:"/api/",delayMs:1e3,probability:.2}]}},wt={ui:{assaults:[{selector:"button",action:"disable",probability:.2},{selector:"a",action:"hide",probability:.1}]}},xt={websocket:{drops:[{urlPattern:se,direction:"both",probability:.1}],delays:[{urlPattern:se,direction:"inbound",delayMs:500,probability:1}],corruptions:[{urlPattern:se,direction:"inbound",strategy:"truncate",probability:.05}]}},St={sse:{drops:[{urlPattern:se,probability:.05}],delays:[{urlPattern:se,delayMs:200,probability:1}],closes:[{urlPattern:se,probability:.02,afterMs:2e3}]}};function yn(t){if(t&&typeof t=="object"&&!Object.isFrozen(t)){Object.freeze(t);for(const e of Object.values(t))yn(e)}return t}[Ye,Ke,Xe,Qe,wt,xt,St].forEach(yn);const mn=Object.freeze([{name:"unstableApi",config:Qe},{name:"slowNetwork",config:Ye},{name:"offlineMode",config:Xe},{name:"flakyConnection",config:Ke},{name:"degradedUi",config:wt},{name:"unreliableWebSocket",config:xt},{name:"unreliableEventStream",config:St},{name:"slow-api",config:Ye},{name:"flaky-api",config:Ke},{name:"offline-mode",config:Xe},{name:"high-latency",config:Qe}].map(t=>Object.freeze(t)));function rt(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] preset name cannot be empty");return e}class bn{constructor(e=mn){R(this,"map",new Map);for(const n of e)this.register(n)}register(e){const n=rt(e.name);if(this.map.has(n))throw new Error(`[chaos-maker] preset '${n}' already registered`);this.map.set(n,e.config)}registerAll(e){if(e)for(const[n,s]of Object.entries(e))this.register({name:n,config:s})}has(e){return this.map.has(rt(e))}get(e){const n=rt(e),s=this.map.get(n);if(!s)throw new Error(`[chaos-maker] preset '${n}' is not registered. Known: ${this.list().join(", ")}`);return s}list(){return[...this.map.keys()]}}function Ht(t,e){var n,s,r;for(const a of["network","ui","websocket","sse"]){const o=e[a];if(!o)continue;const i=t[a]??(t[a]={});for(const[c,u]of Object.entries(o)){if(!Array.isArray(u)){let v;try{const M=u===null?"null":((n=u==null?void 0:u.constructor)==null?void 0:n.name)??typeof u,P=((s=JSON.stringify(u))==null?void 0:s.slice(0,80))??"<unserializable>";v=`${M} ${P}`}catch{v=`${typeof u} <unserializable>`}throw new Error(`[chaos-maker] internal: preset slice category '${a}.${c}' must be an array (got ${v}). Update appendSlice when adding non-array category fields.`)}(i[c]??(i[c]=[])).push(...u)}}(r=e.groups)!=null&&r.length&&(t.groups??(t.groups=[])).push(...e.groups)}function vn(t,e){const n=new Set,s=new Set,r=[];for(const i of t.presets??[]){const c=i.trim();if(!c||n.has(c))continue;n.add(c);const u=e.get(c);s.has(u)||(s.add(u),r.push(u))}const a={};for(const i of r)Ht(a,$e(i));const o=$e(t);return delete o.presets,delete o.customPresets,o.seed!==void 0&&(a.seed=o.seed),o.debug!==void 0&&(a.debug=o.debug),Ht(a,o),a}const Hs=Object.freeze({unstableApi:Qe,slowNetwork:Ye,offlineMode:Xe,flakyConnection:Ke,degradedUi:wt,unreliableWebSocket:xt,unreliableEventStream:St}),Yt=new Map;function Ys(t,e){if(Yt.size===0)return;const n=t;for(const[s,r]of Yt){if(n[s]===void 0)continue;const a={path:s,code:"deprecated",ruleType:"top-level",message:r.message};e&&e(a);try{console.warn(`[chaos-maker] deprecated: ${s} — ${r.message}`)}catch{}}}const Ie=["urlPattern","methods","graphqlOperation","probability","onNth","everyNth","afterN","group"],Ks=new Set([...Ie,"statusCode","body","statusText","headers"]),Xs=new Set([...Ie,"delayMs"]),Qs=new Set([...Ie,"timeout"]),Js=new Set([...Ie,"strategy"]),er=new Set(Ie),tr=new Set(["selector","action","probability","group"]),nr=new Set(["urlPattern","direction","probability","onNth","everyNth","afterN","group"]),sr=new Set(["urlPattern","direction","delayMs","probability","onNth","everyNth","afterN","group"]),rr=new Set(["urlPattern","direction","strategy","probability","onNth","everyNth","afterN","group"]),ar=new Set(["urlPattern","code","reason","afterMs","probability","onNth","everyNth","afterN","group"]),or=new Set(["urlPattern","eventType","probability","onNth","everyNth","afterN","group"]),ir=new Set(["urlPattern","eventType","delayMs","probability","onNth","everyNth","afterN","group"]),cr=new Set(["urlPattern","eventType","strategy","probability","onNth","everyNth","afterN","group"]),ur=new Set(["urlPattern","afterMs","probability","onNth","everyNth","afterN","group"]),_n=new Set(["name","enabled"]),kn={failures:Ks,latencies:Xs,aborts:Qs,corruptions:Js,cors:er},wn={assaults:tr},xn={drops:nr,delays:sr,corruptions:rr,closes:ar},Sn={drops:or,delays:ir,corruptions:cr,closes:ur},Cn=new Set(["network","ui","websocket","sse","groups","presets","customPresets","seed","debug","schemaVersion"]),tt={network:new Set(Object.keys(kn)),ui:new Set(Object.keys(wn)),websocket:new Set(Object.keys(xn)),sse:new Set(Object.keys(Sn))},fe={network:kn,ui:wn,websocket:xn,sse:Sn};function En(t,e){const n={};if(!t||typeof t!="object")return n;const s=t;for(const r of Object.keys(s))e.has(r)&&(n[r]=s[r]);return n}function lr(t,e){return Array.isArray(t)?t.map(n=>En(n,e)):[]}function Nn(t,e,n){const s={};if(!t||typeof t!="object")return s;const r=t;for(const a of Object.keys(r)){if(!n.has(a))continue;const o=e[a];o&&(s[a]=lr(r[a],o))}return s}function Tn(t){return Array.isArray(t)?t.map(e=>En(e,_n)):[]}function dr(t){const e={};if(!t||typeof t!="object")return e;const n=t;for(const s of Object.keys(fe))n[s]!==void 0&&(e[s]=Nn(n[s],fe[s],tt[s]));return n.groups!==void 0&&(e.groups=Tn(n.groups)),e}function fr(t){const e={};if(!t||typeof t!="object")return e;const n=t;for(const s of Object.keys(n))if(Cn.has(s))if(s in fe)e[s]=Nn(n[s],fe[s],tt[s]);else if(s==="groups")e[s]=Tn(n[s]);else if(s==="customPresets"){const r=n[s];if(r&&typeof r=="object"){const a={};for(const[o,i]of Object.entries(r))a[o]=dr(i);e[s]=a}}else e[s]=n[s];return e}function hr(t){const e=[];return pr(t,"",e),e.sort()}function pr(t,e,n){if(!(!t||typeof t!="object")){const s=t;for(const r of Object.keys(s)){if(!Cn.has(r)){n.push(r);continue}r in fe?On(s[r],r,fe[r],tt[r],n):r==="groups"?Rn(s[r],"groups",n):r==="customPresets"&&gr(s[r],n)}}}function On(t,e,n,s,r){if(!t||typeof t!="object")return;const a=t;for(const o of Object.keys(a)){const i=`${e}.${o}`;if(!s.has(o)){r.push(i);continue}const c=n[o];c&&Array.isArray(a[o])&&a[o].forEach((u,v)=>{if(!u||typeof u!="object")return;const M=u;for(const P of Object.keys(M))c.has(P)||r.push(`${i}[${v}].${P}`)})}}function Rn(t,e,n){Array.isArray(t)&&t.forEach((s,r)=>{if(!s||typeof s!="object")return;const a=s;for(const o of Object.keys(a))_n.has(o)||n.push(`${e}[${r}].${o}`)})}function gr(t,e){if(!(!t||typeof t!="object"))for(const[n,s]of Object.entries(t)){if(!s||typeof s!="object")continue;const r=s;for(const a of Object.keys(r)){if(a==="groups"){Rn(r[a],`customPresets.${n}.groups`,e);continue}if(!(a in fe)){e.push(`customPresets.${n}.${a}`);continue}On(r[a],`customPresets.${n}.${a}`,fe[a],tt[a],e)}}}function $(t,e){return e==="strict"?t.strict():t.passthrough()}const B=J().min(0,"Probability must be >= 0").max(1,"Probability must be <= 1"),Kt=J().int().min(1),Y={onNth:Kt.optional(),everyNth:Kt.optional(),afterN:J().int().min(0).optional()},H={group:D().trim().min(1,"group must not be empty").optional()},yr=t=>[t.onNth,t.everyNth,t.afterN].filter(e=>e!==void 0).length<=1,K=[yr,{message:"Only one of onNth, everyNth, or afterN may be set on a single rule"}],mr=fn([D().min(1,"graphqlOperation must not be empty"),Ls(RegExp).refine(t=>!t.global&&!t.sticky,{message:"graphqlOperation RegExp must not use global (g) or sticky (y) flags due to lastIndex mutation"})]),De={urlPattern:D().min(1,"urlPattern must not be empty"),methods:U(D()).optional(),graphqlOperation:mr.optional()},An=t=>$(L({...De,statusCode:J().int().min(100).max(599),probability:B,body:D().optional(),statusText:D().optional(),headers:hn(D()).optional(),...Y,...H}),t).refine(...K),Mn=t=>$(L({...De,delayMs:J().min(0,"delayMs must be >= 0"),probability:B,...Y,...H}),t).refine(...K),jn=t=>$(L({...De,probability:B,timeout:J().min(0,"timeout must be >= 0").optional(),...Y,...H}),t).refine(...K),Pn=t=>$(L({...De,probability:B,strategy:Le(["truncate","malformed-json","empty","wrong-type"]),...Y,...H}),t).refine(...K),$n=t=>$(L({...De,probability:B,...Y,...H}),t).refine(...K),br=t=>$(L({failures:U(An(t)).optional(),latencies:U(Mn(t)).optional(),aborts:U(jn(t)).optional(),corruptions:U(Pn(t)).optional(),cors:U($n(t)).optional()}),t),Ln=t=>$(L({selector:D().min(1,"selector must not be empty"),action:Le(["disable","hide","remove"]),probability:B,...H}),t),vr=t=>$(L({assaults:U(Ln(t)).optional()}),t),Ct=Le(["inbound","outbound","both"]),In=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),direction:Ct,probability:B,...Y,...H}),t).refine(...K),Dn=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),direction:Ct,delayMs:J().min(0,"delayMs must be >= 0"),probability:B,...Y,...H}),t).refine(...K),Zn=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),direction:Ct,strategy:Le(["truncate","malformed-json","empty","wrong-type"]),probability:B,...Y,...H}),t).refine(...K),_r=J().int().refine(t=>t===1e3||t>=3e3&&t<=4999,{message:"code must be 1000 or in the range 3000-4999"}),kr=D().refine(t=>new TextEncoder().encode(t).length<=123,{message:"reason must be <= 123 UTF-8 bytes"}),Gn=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),code:_r.optional(),reason:kr.optional(),afterMs:J().min(0,"afterMs must be >= 0").optional(),probability:B,...Y,...H}),t).refine(...K),wr=t=>$(L({drops:U(In(t)).optional(),delays:U(Dn(t)).optional(),corruptions:U(Zn(t)).optional(),closes:U(Gn(t)).optional()}),t),Et=D().min(1,"eventType must not be empty"),Un=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),eventType:Et.optional(),probability:B,...Y,...H}),t).refine(...K),Wn=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),eventType:Et.optional(),delayMs:J().min(0,"delayMs must be >= 0"),probability:B,...Y,...H}),t).refine(...K),qn=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),eventType:Et.optional(),strategy:Le(["truncate","malformed-json","empty","wrong-type"]),probability:B,...Y,...H}),t).refine(...K),Vn=t=>$(L({urlPattern:D().min(1,"urlPattern must not be empty"),afterMs:J().min(0,"afterMs must be >= 0").optional(),probability:B,...Y,...H}),t).refine(...K),xr=t=>$(L({drops:U(Un(t)).optional(),delays:U(Wn(t)).optional(),corruptions:U(qn(t)).optional(),closes:U(Vn(t)).optional()}),t),zn=t=>$(L({name:D().trim().min(1,"group name must not be empty"),enabled:pt().optional()}),t),Sr=t=>U(zn(t)).superRefine((e,n)=>{const s=new Set;for(const[r,a]of e.entries()){const o=a.name.trim();if(s.has(o)){n.addIssue({code:h.custom,message:"duplicate group name after normalization",path:[r,"name"]});continue}s.add(o)}}),Cr=t=>fn([pt(),$(L({enabled:pt()}),t)]),gt=t=>$(L({network:br(t).optional(),ui:vr(t).optional(),websocket:wr(t).optional(),sse:xr(t).optional(),groups:Sr(t).optional()}),t),Fn=D().trim().min(1,"preset name must not be empty"),Er=U(Fn).transform(t=>{const e=new Set,n=[];for(const s of t){const r=s.trim();e.has(r)||(e.add(r),n.push(r))}return n}),Bn=t=>$(gt(t).extend({presets:Er.optional(),customPresets:hn(Fn,gt(t)).optional(),seed:J().int("Seed must be an integer").optional(),debug:Cr(t).optional(),schemaVersion:Is(1).optional()}),t),Nt=Bn("strict"),Hn=Bn("passthrough");gt("strict");An("strict"),Mn("strict"),jn("strict"),Pn("strict"),$n("strict"),Ln("strict"),In("strict"),Dn("strict"),Zn("strict"),Gn("strict"),Un("strict"),Wn("strict"),qn("strict"),Vn("strict"),zn("strict");const Nr={network:{failures:"network.failure",latencies:"network.latency",aborts:"network.abort",corruptions:"network.corruption",cors:"network.cors"},ui:{assaults:"ui.assault"},websocket:{drops:"websocket.drop",delays:"websocket.delay",corruptions:"websocket.corrupt",closes:"websocket.close"},sse:{drops:"sse.drop",delays:"sse.delay",corruptions:"sse.corrupt",closes:"sse.close"}},Yn=Symbol.for("chaos-maker.validated"),yt=1;function Tr(t,e){return!t||typeof t!="object"?!1:t[Yn]===e}function Or(t,e){return Object.defineProperty(t,Yn,{value:e,enumerable:!1,writable:!1,configurable:!1}),t}function Kn(t){const e=Nt.safeParse(t);if(!e.success)throw new he(e.error.issues.map(pn));return e.data}function Xn(t,e={}){const n=e.unknownFields??"reject",r=(n==="reject"?Nt:Hn).safeParse(t);if(!r.success)throw new he(r.error.issues.map(pn));let a=r.data;if(n==="warn"||n==="ignore"){if(n==="warn"){const i=hr(t);if(i.length>0)try{console.warn(`[chaos-maker] unknown config fields ignored: ${i.join(", ")}`)}catch{}}a=fr(a)}let o;try{const i=new bn;i.registerAll(a.customPresets),o=vn(a,i)}catch(i){if(i instanceof he)throw i;const c=i.message;let u="custom";throw c.includes("not registered")?u="unknown_preset":c.includes("already registered")&&(u="preset_collision"),new he([{path:"presets",code:u,ruleType:"preset",message:c}])}return Kn(o)}function Rr(t,e){const n=[],s=(r,a,o)=>{const i=e[r];if(!i)return;let c;try{c=i(a,{ruleType:r,path:o})}catch(u){n.push({path:o,code:"custom",ruleType:r,message:`customValidator threw: ${u.message}`});return}Array.isArray(c)&&n.push(...c)};for(const[r,a]of Object.entries(Nr)){const o=t[r];if(o)for(const[i,c]of Object.entries(a)){if(!c)continue;const u=o[i];Array.isArray(u)&&u.forEach((v,M)=>{s(c,v,`${r}.${i}[${M}]`)})}}return Array.isArray(t.groups)&&t.groups.forEach((r,a)=>{s("group",r,`groups[${a}]`)}),e["top-level"]&&s("top-level",t,""),n}function Tt(t,e={}){if(typeof t=="object"&&t!==null){const r=t.schemaVersion;if(r!==void 0&&r!==1)throw new he([{path:"schemaVersion",code:"unknown_schema_version",ruleType:"top-level",message:`unsupported schemaVersion: ${JSON.stringify(r)} (this build supports 1)`,expected:"1",received:JSON.stringify(r)}])}if(!e.unknownFields&&!e.onDeprecation&&!e.customValidators&&Tr(t,yt))return t;const s=Xn(t,{unknownFields:e.unknownFields});if(Ys(s,e.onDeprecation),e.customValidators){const r=Rr(s,e.customValidators);if(r.length>0)throw new he(r)}return Or(s,yt)}function Ar(t){let e=t|0;return()=>{e=e+1831565813|0;let n=Math.imul(e^e>>>15,1|e);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}function Qn(){return Math.random()*4294967296>>>0}function Jn(t){const e=t??Qn();return{random:Ar(e),seed:e}}class es{constructor(e=2e3){R(this,"listeners",new Map);R(this,"log",[]);R(this,"logger");R(this,"ruleIds");this.maxLogEntries=e}on(e,n){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(n)}off(e,n){var s;(s=this.listeners.get(e))==null||s.delete(n)}emit(e){this.log.push(e),this.log.length>this.maxLogEntries&&this.log.shift(),this.notify(this.listeners.get(e.type),e),this.notify(this.listeners.get("*"),e)}setLogger(e){this.logger=e}setRuleIds(e){this.ruleIds=e}debug(e,n,s){var i;if(!this.logger)return;const r=s?(i=this.ruleIds)==null?void 0:i.get(s):void 0,a=r?{...n,ruleType:r.ruleType,ruleId:r.ruleId}:n,o=this.logger.log(e,a);o&&this.emit(o)}getLog(){return[...this.log]}clearLog(){this.log=[]}notify(e,n){if(e)for(const s of e)try{s(n)}catch{}}}function Ot(t){const e=t.replace(/#[^\r\n]*/g," "),n=/\b(?:query|mutation|subscription)\s+([A-Za-z_][A-Za-z0-9_]*)/.exec(e);return(n==null?void 0:n[1])??null}function Mr(t){try{return JSON.parse(t)}catch{return}}function ts(t){if(!t||typeof t!="object")return{isGraphQL:!1,operationName:null};if(Array.isArray(t))return t.length===0?{isGraphQL:!1,operationName:null}:ts(t[0]);const e=t,n=typeof e.query=="string",s=typeof e.operationName=="string";return!n&&!s?{isGraphQL:!1,operationName:null}:s&&e.operationName.length>0?{isGraphQL:!0,operationName:e.operationName}:n?{isGraphQL:!0,operationName:Ot(e.query)}:{isGraphQL:!0,operationName:null}}function jr(t){let e;try{e=new URL(t,"http://_chaos-maker.invalid")}catch{return{kind:"not-graphql"}}const n=e.searchParams.get("operationName"),s=e.searchParams.get("query");return n&&n.length>0?{kind:"extracted",operationName:n}:s&&s.length>0?{kind:"extracted",operationName:Ot(s)}:{kind:"not-graphql"}}function Rt(t,e,n,s){const r=t.toUpperCase();if(r==="POST"){if(n!==null){const a=Mr(n);if(a===void 0)return{kind:"not-graphql"};const{isGraphQL:o,operationName:i}=ts(a);return o?{kind:"extracted",operationName:i}:{kind:"not-graphql"}}return s?{kind:"unparseable"}:{kind:"not-graphql"}}return r==="GET"?jr(e):{kind:"not-graphql"}}function ns(t,e){return e===null?!1:typeof t=="string"?t===e:((t.global||t.sticky)&&(t.lastIndex=0),t.test(e))}function At(t,e){return t?e.kind==="not-graphql"?{kind:"no-match"}:e.kind==="unparseable"?{kind:"unparseable"}:ns(t,e.operationName)?{kind:"match",operationName:e.operationName}:{kind:"no-match"}:e.kind==="extracted"?{kind:"skip-no-constraint",operationName:e.operationName}:{kind:"skip-no-constraint",operationName:null}}function nt(t){return typeof Request<"u"&&t instanceof Request}function Pr(t){return nt(t)?t.url:t.toString()}function $r(t,e){return e!=null&&e.method?e.method.toUpperCase():nt(t)?t.method.toUpperCase():"GET"}function Lr(t,e){if(e!=null&&e.signal)return e.signal;if(nt(t))return t.signal}function Ir(){if(typeof DOMException<"u")return new DOMException("The user aborted a request.","AbortError");const t=new Error("The user aborted a request.");return t.name="AbortError",t}function Dr(t,e){if(!e)return t;const n=new AbortController,s=i=>{o(),n.signal.aborted||n.abort(i.reason)},r=()=>s(t),a=()=>s(e),o=()=>{t.removeEventListener("abort",r),e.removeEventListener("abort",a)};return t.aborted?(s(t),n.signal):e.aborted?(s(e),n.signal):(t.addEventListener("abort",r,{once:!0}),e.addEventListener("abort",a,{once:!0}),n.signal)}function Zr(t,e){return e?{...t??{},signal:e}:t}async function Gr(t,e){const n=e==null?void 0:e.body;if(n!=null){if(typeof n=="string")return{text:n,unparseable:!1};if(typeof URLSearchParams<"u"&&n instanceof URLSearchParams)return{text:n.toString(),unparseable:!1};if(typeof Blob<"u"&&n instanceof Blob){if(!(n.type===""||/json|text|graphql/i.test(n.type)))return{text:null,unparseable:!0};try{return{text:await n.text(),unparseable:!1}}catch{return{text:null,unparseable:!0}}}return{text:null,unparseable:!0}}if(nt(t)){if(t.body===null)return{text:null,unparseable:!1};try{return{text:await t.clone().text(),unparseable:!1}}catch{return{text:null,unparseable:!0}}}return{text:null,unparseable:!1}}function Ce(t,e,n,s,r){t==null||t.emit({type:e,timestamp:Date.now(),applied:!1,detail:{url:n,method:s,...r,reason:"graphql-body-unparseable"}})}function Ee(t,e,n,s){if(!ge(e,t.urlPattern))return{proceed:!1,outcome:null};if(t.methods&&!t.methods.includes(n))return{proceed:!1,outcome:null};const r=At(t.graphqlOperation,s);return r.kind==="no-match"?{proceed:!1,outcome:r}:{proceed:!0,outcome:r}}function Oe(t){return t?t.kind==="match"||t.kind==="skip-no-constraint"?t.operationName?{operationName:t.operationName}:{}:{}:{}}function Xt(t,e,n,s,r,a){t==null||t.emit({type:"network:abort",timestamp:Date.now(),applied:r,detail:{url:n,method:s,timeoutMs:e.timeout,...Oe(a)}})}function Ge(t,e,n,s,r,a){t==null||t.emit({type:"network:corruption",timestamp:Date.now(),applied:r,detail:{url:n,method:s,strategy:e.strategy,...Oe(a)}})}function Ur(t){return t.graphqlOperation!==void 0}function Wr(t,e,n,s,r=new Map,a){return async(o,i)=>{var S,C,N,Z,j;const c=Pr(o),u=$r(o,i),v=Lr(o,i),M=(()=>{const d=[e.failures,e.latencies,e.aborts,e.corruptions,e.cors];for(const A of d)if(A!=null&&A.some(Ur))return!0;return!1})();let P={kind:"not-graphql"};if(M){const d=await Gr(o,i);P=Rt(u,c,d.text,d.unparseable)}if(e.cors)for(const d of e.cors){s==null||s.debug("rule-evaluating",{url:c,method:u},d);const A=Ee(d,c,u,P);if(!A.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u},d);continue}s==null||s.debug("rule-matched",{url:c,method:u},d);const ae=ee(d,r);if(!te(d,ae)){s==null||s.debug("rule-skip-counting",{url:c,method:u},d);continue}if(!V(d,a,s,{url:c,method:u}))continue;const G=q(d.probability,n);if(((S=A.outcome)==null?void 0:S.kind)==="unparseable"){G&&Ce(s,"network:cors",c,u,{});continue}if(s==null||s.emit({type:"network:cors",timestamp:Date.now(),applied:G,detail:{url:c,method:u,...Oe(A.outcome)}}),!G){s==null||s.debug("rule-skip-probability",{url:c,method:u},d);continue}s==null||s.debug("rule-applied",{url:c,method:u},d);const oe=new TypeError("Failed to fetch");throw oe.stack="",oe}let F=null,X=null,W,p,l=!1;const f=d=>{!F||l||(l=!0,p&&(clearTimeout(p),p=void 0),Xt(s,F,c,u,d,X))};if(e.aborts)for(const d of e.aborts){s==null||s.debug("rule-evaluating",{url:c,method:u,timeoutMs:d.timeout},d);const A=Ee(d,c,u,P);if(!A.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,timeoutMs:d.timeout},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,timeoutMs:d.timeout},d);const ae=ee(d,r);if(!te(d,ae)){s==null||s.debug("rule-skip-counting",{url:c,method:u,timeoutMs:d.timeout},d);continue}if(!V(d,a,s,{url:c,method:u,timeoutMs:d.timeout}))continue;const G=q(d.probability,n);if(((C=A.outcome)==null?void 0:C.kind)==="unparseable"){G&&Ce(s,"network:abort",c,u,{timeoutMs:d.timeout});continue}if(!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,timeoutMs:d.timeout},d),Xt(s,d,c,u,!1,A.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,timeoutMs:d.timeout},d),console.warn(`CHAOS: Aborting ${u} ${c} after ${d.timeout||0}ms`),F=d,X=A.outcome;const oe=new AbortController;W=Dr(oe.signal,v);const Ze=()=>{l||(f(!0),oe.abort(Ir()))};d.timeout?p=setTimeout(Ze,d.timeout):Ze();break}if(F)try{const d=await t(o,Zr(i,W));return f(!1),d}catch(d){throw f(!1),d}if(e.failures)for(const d of e.failures){s==null||s.debug("rule-evaluating",{url:c,method:u,statusCode:d.statusCode},d);const A=Ee(d,c,u,P);if(!A.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,statusCode:d.statusCode},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,statusCode:d.statusCode},d);const ae=ee(d,r);if(!te(d,ae)){s==null||s.debug("rule-skip-counting",{url:c,method:u,statusCode:d.statusCode},d);continue}if(!V(d,a,s,{url:c,method:u,statusCode:d.statusCode}))continue;const G=q(d.probability,n);if(((N=A.outcome)==null?void 0:N.kind)==="unparseable"){G&&Ce(s,"network:failure",c,u,{statusCode:d.statusCode});continue}if(s==null||s.emit({type:"network:failure",timestamp:Date.now(),applied:G,detail:{url:c,method:u,statusCode:d.statusCode,...Oe(A.outcome)}}),!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,statusCode:d.statusCode},d);continue}s==null||s.debug("rule-applied",{url:c,method:u,statusCode:d.statusCode},d),console.warn(`CHAOS: Forcing ${d.statusCode} for ${u} ${c}`);const oe=d.body??JSON.stringify({error:"Chaos Maker Attack!"}),Ze=d.headers??{};return new Response(oe,{status:d.statusCode,statusText:d.statusText??"Service Unavailable (Chaos)",headers:Ze})}if(e.latencies)for(const d of e.latencies){s==null||s.debug("rule-evaluating",{url:c,method:u,delayMs:d.delayMs},d);const A=Ee(d,c,u,P);if(!A.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,delayMs:d.delayMs},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,delayMs:d.delayMs},d);const ae=ee(d,r);if(!te(d,ae)){s==null||s.debug("rule-skip-counting",{url:c,method:u,delayMs:d.delayMs},d);continue}if(!V(d,a,s,{url:c,method:u,delayMs:d.delayMs}))continue;const G=q(d.probability,n);if(((Z=A.outcome)==null?void 0:Z.kind)==="unparseable"){G&&Ce(s,"network:latency",c,u,{delayMs:d.delayMs});continue}if(s==null||s.emit({type:"network:latency",timestamp:Date.now(),applied:G,detail:{url:c,method:u,delayMs:d.delayMs,...Oe(A.outcome)}}),!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,delayMs:d.delayMs},d);continue}s==null||s.debug("rule-applied",{url:c,method:u,delayMs:d.delayMs},d),console.warn(`CHAOS: Adding ${d.delayMs}ms latency to ${u} ${c}`),await new Promise(oe=>setTimeout(oe,d.delayMs))}let y=null,_=null;if(e.corruptions)for(const d of e.corruptions){s==null||s.debug("rule-evaluating",{url:c,method:u,strategy:d.strategy},d);const A=Ee(d,c,u,P);if(!A.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,strategy:d.strategy},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,strategy:d.strategy},d);const ae=ee(d,r);if(!te(d,ae)){s==null||s.debug("rule-skip-counting",{url:c,method:u,strategy:d.strategy},d);continue}if(!V(d,a,s,{url:c,method:u,strategy:d.strategy}))continue;const G=q(d.probability,n);if(((j=A.outcome)==null?void 0:j.kind)==="unparseable"){G&&Ce(s,"network:corruption",c,u,{strategy:d.strategy});continue}if(!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,strategy:d.strategy},d),Ge(s,d,c,u,!1,A.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,strategy:d.strategy},d),y=d,_=A.outcome;break}let k;try{k=await t(o,i)}catch(d){throw y&&Ge(s,y,c,u,!1,_),d}if(!y)return k;try{console.warn(`CHAOS: Corrupting response for ${u} ${c} with strategy: ${y.strategy}`);const d=await k.text(),A=kt(d,y.strategy);return Ge(s,y,c,u,!0,_),new Response(A,{status:k.status,statusText:k.statusText,headers:k.headers})}catch(d){throw Ge(s,y,c,u,!1,_),d}}}function qr(t){return t==null?{text:null,unparseable:!1}:typeof t=="string"?{text:t,unparseable:!1}:typeof URLSearchParams<"u"&&t instanceof URLSearchParams?{text:t.toString(),unparseable:!1}:{text:null,unparseable:!0}}function Vr(t){return t.graphqlOperation!==void 0}function zr(t){const e=[t.failures,t.latencies,t.aborts,t.corruptions,t.cors];for(const n of e)if(n!=null&&n.some(Vr))return!0;return!1}function Ne(t,e,n,s,r){t==null||t.emit({type:e,timestamp:Date.now(),applied:!1,detail:{url:n,method:s,...r,reason:"graphql-body-unparseable"}})}function Ue(t,e,n,s,r){if(!ge(e,t.urlPattern))return{proceed:!1,outcome:null};if(t.methods&&!t.methods.includes(n))return{proceed:!1,outcome:null};const a=At(t.graphqlOperation,s);if(a.kind==="no-match"||a.kind==="unparseable")return{proceed:!1,outcome:a};const o=ee(t,r);return te(t,o)?{proceed:!0,outcome:a}:{proceed:!1,outcome:a}}function Re(t){return t?t.kind==="match"||t.kind==="skip-no-constraint"?t.operationName?{operationName:t.operationName}:{}:{}:{}}function Qt(t,e,n,s,r,a){t==null||t.emit({type:"network:abort",timestamp:Date.now(),applied:r,detail:{url:n,method:s,timeoutMs:e.timeout,...Re(a)}})}function Jt(t,e,n,s,r,a){t==null||t.emit({type:"network:corruption",timestamp:Date.now(),applied:r,detail:{url:n,method:s,strategy:e.strategy,...Re(a)}})}function Fr(t,e,n,s,r=new Map,a){const o=zr(e);return function(i){var F,X,W,p;const c=this._chaos_url,u=this._chaos_method;let v={kind:"not-graphql"};if(o){const l=qr(i);v=Rt(u,c,l.text,l.unparseable)}if(e.cors)for(const l of e.cors){if(s==null||s.debug("rule-evaluating",{url:c,method:u},l),!ge(c,l.urlPattern)){s==null||s.debug("rule-skip-match",{url:c,method:u},l);continue}if(l.methods&&!l.methods.includes(u)){s==null||s.debug("rule-skip-match",{url:c,method:u},l);continue}const f=At(l.graphqlOperation,v);if(f.kind==="no-match"){s==null||s.debug("rule-skip-match",{url:c,method:u},l);continue}if(f.kind==="unparseable"){Ne(s,"network:cors",c,u,{});continue}s==null||s.debug("rule-matched",{url:c,method:u},l);const y=ee(l,r);if(!te(l,y)){s==null||s.debug("rule-skip-counting",{url:c,method:u},l);continue}if(!V(l,a,s,{url:c,method:u}))continue;const _=q(l.probability,n);if(s==null||s.emit({type:"network:cors",timestamp:Date.now(),applied:_,detail:{url:c,method:u,...Re(f)}}),!_){s==null||s.debug("rule-skip-probability",{url:c,method:u},l);continue}s==null||s.debug("rule-applied",{url:c,method:u},l),Object.defineProperty(this,"status",{value:0}),Object.defineProperty(this,"statusText",{value:""}),this.dispatchEvent(new Event("error")),this.dispatchEvent(new Event("loadend"));return}if(e.aborts)for(const l of e.aborts){s==null||s.debug("rule-evaluating",{url:c,method:u,timeoutMs:l.timeout},l);const f=Ue(l,c,u,v,r);if(!f.proceed){((F=f.outcome)==null?void 0:F.kind)==="unparseable"?Ne(s,"network:abort",c,u,{timeoutMs:l.timeout}):s==null||s.debug("rule-skip-match",{url:c,method:u,timeoutMs:l.timeout},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,timeoutMs:l.timeout},l),!V(l,a,s,{url:c,method:u,timeoutMs:l.timeout}))continue;if(!q(l.probability,n)){s==null||s.debug("rule-skip-probability",{url:c,method:u,timeoutMs:l.timeout},l),Qt(s,l,c,u,!1,f.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,timeoutMs:l.timeout},l),console.warn(`CHAOS: Aborting ${u} ${c} after ${l.timeout||0}ms`);let _=!1,k;const S=()=>{k&&(clearTimeout(k),k=void 0),typeof this.removeEventListener=="function"&&this.removeEventListener("loadend",N)},C=j=>{_||(_=!0,S(),Qt(s,l,c,u,j,f.outcome))},N=()=>{C(!1)},Z=()=>{_||(C(!0),this.abort())};typeof this.addEventListener=="function"&&this.addEventListener("loadend",N);try{t.call(this,i)}catch(j){throw C(!1),j}if(_)return;l.timeout?k=setTimeout(Z,l.timeout):Z();return}if(e.failures)for(const l of e.failures){s==null||s.debug("rule-evaluating",{url:c,method:u,statusCode:l.statusCode},l);const f=Ue(l,c,u,v,r);if(!f.proceed){((X=f.outcome)==null?void 0:X.kind)==="unparseable"?Ne(s,"network:failure",c,u,{statusCode:l.statusCode}):s==null||s.debug("rule-skip-match",{url:c,method:u,statusCode:l.statusCode},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,statusCode:l.statusCode},l),!V(l,a,s,{url:c,method:u,statusCode:l.statusCode}))continue;const y=q(l.probability,n);if(s==null||s.emit({type:"network:failure",timestamp:Date.now(),applied:y,detail:{url:c,method:u,statusCode:l.statusCode,...Re(f.outcome)}}),!y){s==null||s.debug("rule-skip-probability",{url:c,method:u,statusCode:l.statusCode},l);continue}s==null||s.debug("rule-applied",{url:c,method:u,statusCode:l.statusCode},l),console.warn(`CHAOS: Forcing ${l.statusCode} for ${u} ${c}`),Object.defineProperty(this,"status",{value:l.statusCode}),Object.defineProperty(this,"statusText",{value:l.statusText??"Service Unavailable (Chaos)"});const _=l.body??JSON.stringify({error:"Chaos Maker Attack!"});Object.defineProperty(this,"responseText",{value:_,configurable:!0});const k=l.headers??{};Object.defineProperty(this,"getResponseHeader",{value:S=>{const C=Object.keys(k).find(N=>N.toLowerCase()===S.toLowerCase());return C?k[C]:null},configurable:!0}),Object.defineProperty(this,"getAllResponseHeaders",{value:()=>Object.entries(k).map(([S,C])=>`${S}: ${C}`).join(`\r
|
|
4
|
-
`),configurable:!0}),this.dispatchEvent(new Event("load")),this.dispatchEvent(new Event("loadend"));return}let M=null,P=null;if(e.corruptions)for(const l of e.corruptions){s==null||s.debug("rule-evaluating",{url:c,method:u,strategy:l.strategy},l);const f=Ue(l,c,u,v,r);if(!f.proceed){((W=f.outcome)==null?void 0:W.kind)==="unparseable"?Ne(s,"network:corruption",c,u,{strategy:l.strategy}):s==null||s.debug("rule-skip-match",{url:c,method:u,strategy:l.strategy},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,strategy:l.strategy},l),!V(l,a,s,{url:c,method:u,strategy:l.strategy}))continue;if(!q(l.probability,n)){s==null||s.debug("rule-skip-probability",{url:c,method:u,strategy:l.strategy},l),Jt(s,l,c,u,!1,f.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,strategy:l.strategy},l),M=l,P=f.outcome;break}if(M){let l=!1,f=null;const y=()=>{typeof this.removeEventListener=="function"&&(this.removeEventListener("error",S),this.removeEventListener("abort",S),this.removeEventListener("loadend",C))},_=N=>{l||(l=!0,Jt(s,M,c,u,N,P),y())},k=()=>{if(f!==null)return f;delete this.responseText;try{const N=this.responseText;return typeof N!="string"?(Object.defineProperty(this,"responseText",{value:N,configurable:!0}),_(!1),N):(f=kt(N,M.strategy),Object.defineProperty(this,"responseText",{value:f,configurable:!0}),_(!0),f)}catch(N){throw _(!1),N}},S=()=>{_(!1)},C=()=>{if(!l)try{k()}catch{}};typeof this.addEventListener=="function"&&(this.addEventListener("error",S),this.addEventListener("abort",S),this.addEventListener("loadend",C)),Object.defineProperty(this,"responseText",{get(){return k()},configurable:!0})}if(e.latencies)for(const l of e.latencies){s==null||s.debug("rule-evaluating",{url:c,method:u,delayMs:l.delayMs},l);const f=Ue(l,c,u,v,r);if(!f.proceed){((p=f.outcome)==null?void 0:p.kind)==="unparseable"?Ne(s,"network:latency",c,u,{delayMs:l.delayMs}):s==null||s.debug("rule-skip-match",{url:c,method:u,delayMs:l.delayMs},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,delayMs:l.delayMs},l),!V(l,a,s,{url:c,method:u,delayMs:l.delayMs}))continue;const y=q(l.probability,n);if(s==null||s.emit({type:"network:latency",timestamp:Date.now(),applied:y,detail:{url:c,method:u,delayMs:l.delayMs,...Re(f.outcome)}}),!y){s==null||s.debug("rule-skip-probability",{url:c,method:u,delayMs:l.delayMs},l);continue}s==null||s.debug("rule-applied",{url:c,method:u,delayMs:l.delayMs},l),console.warn(`CHAOS: Adding ${l.delayMs}ms latency to ${u} ${c}`),setTimeout(()=>{t.call(this,i)},l.delayMs);return}t.call(this,i)}}function Br(t){return function(e,n){this._chaos_url=n.toString(),this._chaos_method=e.toUpperCase(),t.call(this,e,n)}}function mt(t,e,n,s,r){if(s==null||s.debug("rule-evaluating",{selector:e.selector,action:e.action},e),s==null||s.debug("rule-matched",{selector:e.selector,action:e.action},e),!V(e,r,s,{selector:e.selector,action:e.action}))return;const a=q(e.probability,n);if(s==null||s.emit({type:"ui:assault",timestamp:Date.now(),applied:a,detail:{selector:e.selector,action:e.action}}),!a){s==null||s.debug("rule-skip-probability",{selector:e.selector,action:e.action},e);return}s==null||s.debug("rule-applied",{selector:e.selector,action:e.action},e),console.warn(`CHAOS: Applying action '${e.action}' to element:`,t);try{switch(e.action){case"disable":"disabled"in t&&(t.disabled=!0);break;case"hide":t.style.display="none";break;case"remove":t.remove();break}}catch(o){console.error("Chaos Maker failed to assault element:",o,t)}}function Hr(t,e,n,s,r){if(t.nodeType!==Node.ELEMENT_NODE||!e.assaults)return;const a=t;for(const o of e.assaults)try{a.matches(o.selector)&&mt(a,o,n,s,r),a.querySelectorAll(o.selector).forEach(i=>{mt(i,o,n,s,r)})}catch(i){console.error(`Chaos Maker: Invalid selector '${o.selector}'`,i)}}function Yr(t,e,n,s){if(t.assaults){console.log("CHAOS: Running initial DOM scan for existing elements...");for(const a of t.assaults)try{document.querySelectorAll(a.selector).forEach(o=>{mt(o,a,e,n,s)})}catch(o){console.error(`Chaos Maker: Invalid selector in initial scan '${a.selector}'`,o)}}return new MutationObserver(a=>{for(const o of a)o.type==="childList"&&o.addedNodes.forEach(i=>Hr(i,t,e,n,s))})}const en=Symbol.for("chaos-maker.websocket.intercepted");function Kr(t,e){return t==="both"?!0:t===e}function tn(t){return typeof t=="string"?"text":"binary"}function nn(t,e){switch(e){case"truncate":return t.slice(0,Math.max(0,Math.floor(t.length/2)));case"malformed-json":return`${t}"}`;case"empty":return"";case"wrong-type":return"<html><body>Unexpected HTML</body></html>"}}function sn(t,e){if(e==="malformed-json"||e==="wrong-type")return null;if(e==="empty")return typeof Blob<"u"&&t instanceof Blob?new Blob([]):t instanceof ArrayBuffer?new ArrayBuffer(0):new Uint8Array(0);if(typeof Blob<"u"&&t instanceof Blob)return t.slice(0,Math.max(0,Math.floor(t.size/2)));if(t instanceof ArrayBuffer)return t.slice(0,Math.max(0,Math.floor(t.byteLength/2)));const n=t,s=Math.max(0,Math.floor(n.byteLength/2));return new Uint8Array(n.buffer.slice(n.byteOffset,n.byteOffset+s))}function ye(t,e,n,s,r,a,o){if(!t)return null;for(const i of t){if(o==null||o.debug("rule-evaluating",{url:e,direction:n},i),!ge(e,i.urlPattern)){o==null||o.debug("rule-skip-match",{url:e,direction:n},i);continue}if(!Kr(i.direction,n)){o==null||o.debug("rule-skip-match",{url:e,direction:n},i);continue}o==null||o.debug("rule-matched",{url:e,direction:n},i);const c=ee(i,r);if(!te(i,c)){o==null||o.debug("rule-skip-counting",{url:e,direction:n},i);continue}if(V(i,a,o,{url:e,direction:n})){if(!q(i.probability,s)){o==null||o.debug("rule-skip-probability",{url:e,direction:n},i);continue}return o==null||o.debug("rule-applied",{url:e,direction:n},i),i}}return null}function We(t,e,n,s,r){t.emit({type:"websocket:drop",timestamp:Date.now(),applied:!0,detail:{url:e,direction:n,payloadType:s,...r?{reason:r}:{}}})}function rn(t,e,n,s,r){t.emit({type:"websocket:delay",timestamp:Date.now(),applied:!0,detail:{url:e,direction:n,payloadType:s,delayMs:r}})}function me(t,e,n,s,r,a,o){t.emit({type:"websocket:corrupt",timestamp:Date.now(),applied:a,detail:{url:e,direction:n,payloadType:s,strategy:r,...o?{reason:o}:{}}})}function Xr(t,e,n,s){t.emit({type:"websocket:close",timestamp:Date.now(),applied:!0,detail:{url:e,closeCode:n,closeReason:s}})}function Qr(t,e,n,s,r,a){const o=new Map;let i=!0;const c=(p,l)=>{let f=o.get(p);f||(f=new Set,o.set(p,f)),f.add(l)},u=(p,l)=>{var f;(f=o.get(p))==null||f.delete(l)},v=(p,l)=>{const f=o.get(p);if(f){for(const y of f)clearTimeout(y.handle),y.kind==="delay"&&We(n,y.url,y.direction,y.payloadType,l);o.delete(p)}},M=(p,l,f)=>{const y=new MessageEvent("message",{data:f,origin:l.origin,lastEventId:l.lastEventId,source:l.source,ports:Array.from(l.ports??[])});y[en]=!0,p.dispatchEvent(y)},P=(p,l,f,y)=>{if(!i)return{handled:!1,data:f};const _="outbound",k=tn(f);if(ye(e.drops,l,_,s,r,a,n))return We(n,l,_,k),{handled:!0,data:f};let S=f;const C=ye(e.corruptions,l,_,s,r,a,n);if(C)if(k==="text")S=nn(S,C.strategy),me(n,l,_,k,C.strategy,!0);else{const Z=sn(S,C.strategy);Z===null?me(n,l,_,k,C.strategy,!1,"incompatible-payload-type"):(S=Z,me(n,l,_,k,C.strategy,!0))}const N=ye(e.delays,l,_,s,r,a,n);if(N){rn(n,l,_,k,N.delayMs);const Z={kind:"delay",handle:setTimeout(()=>{u(p,Z);try{y(S)}catch{}},N.delayMs),url:l,direction:_,payloadType:k};return c(p,Z),{handled:!0,data:S}}return{handled:!1,data:S}},F=(p,l)=>{p.addEventListener("message",f=>{const y=f;if(y[en]||!i)return;const _="inbound",k=tn(y.data);if(ye(e.drops,l,_,s,r,a,n)){y.stopImmediatePropagation(),We(n,l,_,k);return}let S=y.data,C=!1;const N=ye(e.corruptions,l,_,s,r,a,n);if(N)if(k==="text")S=nn(S,N.strategy),C=!0,me(n,l,_,k,N.strategy,!0);else{const j=sn(S,N.strategy);j===null?me(n,l,_,k,N.strategy,!1,"incompatible-payload-type"):(S=j,C=!0,me(n,l,_,k,N.strategy,!0))}const Z=ye(e.delays,l,_,s,r,a,n);if(Z){y.stopImmediatePropagation(),rn(n,l,_,k,Z.delayMs);const j={kind:"delay",handle:setTimeout(()=>{u(p,j),M(p,y,S)},Z.delayMs),url:l,direction:_,payloadType:k};c(p,j);return}C&&(y.stopImmediatePropagation(),M(p,y,S))})},X=(p,l)=>{if(e.closes)for(const f of e.closes){if(n.debug("rule-evaluating",{url:l},f),!ge(l,f.urlPattern)){n.debug("rule-skip-match",{url:l},f);continue}n.debug("rule-matched",{url:l},f);const y=ee(f,r);if(!te(f,y)){n.debug("rule-skip-counting",{url:l},f);continue}if(!V(f,a,n,{url:l}))continue;if(!q(f.probability,s)){n.debug("rule-skip-probability",{url:l},f);continue}n.debug("rule-applied",{url:l},f);const _=f.code??1e3,k=f.reason??"Chaos Maker close",S=f.afterMs??0,C=()=>{if(i){v(p,"close-interrupt"),Xr(n,l,_,k);try{p.close(_,k)}catch{try{p.close()}catch{}}}};if(S<=0)p.readyState===p.OPEN?C():p.addEventListener("open",C,{once:!0});else{const N=()=>{const Z={kind:"close",handle:setTimeout(C,S)};c(p,Z)};p.readyState===p.OPEN?N():p.addEventListener("open",N,{once:!0})}return}};function W(p,l){const f=new t(p,l),y=typeof p=="string"?p:p.toString(),_=f.send.bind(f);return f.send=function(S){const C=P(f,y,S,_);C.handled||_(C.data)},F(f,y),X(f,y),f}Object.defineProperty(W,"prototype",{value:t.prototype,writable:!1});for(const p of["CONNECTING","OPEN","CLOSING","CLOSED"])W[p]=t[p];return{Wrapped:W,uninstall(){i=!1;for(const[,p]of o)for(const l of p)clearTimeout(l.handle),l.kind==="delay"&&We(n,l.url,l.direction,l.payloadType,"stop-during-delay");o.clear()}}}const an=Symbol.for("chaos-maker.eventsource.intercepted");function Jr(t,e){return t===void 0||t==="*"?!0:t===e}function at(t,e,n,s,r,a,o){if(!t)return null;for(const i of t){if(o==null||o.debug("rule-evaluating",{url:e,eventType:n},i),!ge(e,i.urlPattern)){o==null||o.debug("rule-skip-match",{url:e,eventType:n},i);continue}if(!Jr(i.eventType,n)){o==null||o.debug("rule-skip-match",{url:e,eventType:n},i);continue}o==null||o.debug("rule-matched",{url:e,eventType:n},i);const c=ee(i,r);if(!te(i,c)){o==null||o.debug("rule-skip-counting",{url:e,eventType:n},i);continue}if(V(i,a,o,{url:e,eventType:n})){if(!q(i.probability,s)){o==null||o.debug("rule-skip-probability",{url:e,eventType:n},i);continue}return o==null||o.debug("rule-applied",{url:e,eventType:n},i),i}}return null}function ot(t,e,n,s){t.emit({type:"sse:drop",timestamp:Date.now(),applied:!0,detail:{url:e,eventType:n,...s?{reason:s}:{}}})}function ea(t,e,n,s){t.emit({type:"sse:delay",timestamp:Date.now(),applied:!0,detail:{url:e,eventType:n,delayMs:s}})}function ta(t,e,n,s){t.emit({type:"sse:corrupt",timestamp:Date.now(),applied:!0,detail:{url:e,eventType:n,strategy:s}})}function na(t,e,n){t.emit({type:"sse:close",timestamp:Date.now(),applied:!0,detail:{url:e,reason:n}})}function sa(t,e,n,s,r,a){const o=new Map;let i=!0;const c=(p,l)=>{let f=o.get(p);f||(f=new Set,o.set(p,f)),f.add(l)},u=(p,l)=>{var f;(f=o.get(p))==null||f.delete(l)},v=(p,l)=>{const f=o.get(p);if(f){for(const y of f)clearTimeout(y.handle),y.kind==="delay"&&ot(n,y.url,y.eventType,l);o.delete(p)}},M=(p,l,f)=>{const y=new MessageEvent(l.type||"message",{data:f,origin:l.origin,lastEventId:l.lastEventId});y[an]=!0,p.dispatchEvent(y)},P=(p,l,f)=>{if(f[an]||!i)return;const y=f.type||"message";if(at(e.drops,l,y,s,r,a,n)){f.stopImmediatePropagation(),ot(n,l,y);return}let _=typeof f.data=="string"?f.data:String(f.data),k=!1;const S=at(e.corruptions,l,y,s,r,a,n);S&&(_=kt(_,S.strategy),k=!0,ta(n,l,y,S.strategy));const C=at(e.delays,l,y,s,r,a,n);if(C){f.stopImmediatePropagation(),ea(n,l,y,C.delayMs);const N={kind:"delay",handle:setTimeout(()=>{u(p,N),i&&p.readyState!==p.CLOSED&&M(p,f,_)},C.delayMs),url:l,eventType:y};c(p,N);return}k&&(f.stopImmediatePropagation(),M(p,f,_))},F=p=>{if(!e.closes)return null;for(const l of e.closes){if(n.debug("rule-evaluating",{url:p},l),!ge(p,l.urlPattern)){n.debug("rule-skip-match",{url:p},l);continue}n.debug("rule-matched",{url:p},l);const f=ee(l,r);if(!te(l,f)){n.debug("rule-skip-counting",{url:p},l);continue}if(V(l,a,n,{url:p})){if(!q(l.probability,s)){n.debug("rule-skip-probability",{url:p},l);continue}return n.debug("rule-applied",{url:p},l),l}}return null},X=(p,l)=>{const f=F(l);if(!f)return;const y=f.afterMs??0,_=()=>{if(i){v(p,"close-interrupt"),na(n,l,"chaos-maker-close");try{p.close()}catch{}try{p.dispatchEvent(new Event("error"))}catch{}}};if(y<=0){const k={kind:"close",handle:setTimeout(_,0)};c(p,k)}else{const k={kind:"close",handle:setTimeout(_,y)};c(p,k)}};function W(p,l){const f=new t(p,l),y=typeof p=="string"?p:p.toString(),_=j=>{P(f,y,j)},k=new Set,S=f.addEventListener.bind(f),C=j=>{k.has(j)||(k.add(j),S(j,_,{capture:!0}))};C("message");const N=j=>{if(j)for(const d of j)d.eventType&&d.eventType!=="*"&&d.eventType!=="message"&&C(d.eventType)};N(e.drops),N(e.delays),N(e.corruptions);const Z=(j,d,A)=>{j!=="open"&&j!=="error"&&C(j),S(j,d,A)};return f.addEventListener=Z,X(f,y),f}Object.defineProperty(W,"prototype",{value:t.prototype,writable:!1});for(const p of["CONNECTING","OPEN","CLOSED"])W[p]=t[p];return{Wrapped:W,uninstall(){i=!1;for(const[,p]of o)for(const l of p)clearTimeout(l.handle),l.kind==="delay"&&ot(n,l.url,l.eventType,"stop-during-delay");o.clear()}}}function ss(t){return t===void 0?{enabled:!1}:typeof t=="boolean"?{enabled:t}:{enabled:t.enabled}}const ra=[{pick:t=>{var e;return(e=t.network)==null?void 0:e.failures},ruleType:"failure"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.latencies},ruleType:"latency"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.aborts},ruleType:"abort"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.corruptions},ruleType:"corruption"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.cors},ruleType:"cors"},{pick:t=>{var e;return(e=t.ui)==null?void 0:e.assaults},ruleType:"ui-assault"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.drops},ruleType:"ws-drop"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.delays},ruleType:"ws-delay"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.corruptions},ruleType:"ws-corrupt"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.closes},ruleType:"ws-close"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.drops},ruleType:"sse-drop"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.delays},ruleType:"sse-delay"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.corruptions},ruleType:"sse-corrupt"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.closes},ruleType:"sse-close"}];function rs(t){const e=new WeakMap;for(const{pick:n,ruleType:s}of ra){const r=n(t);r&&r.forEach((a,o)=>{e.set(a,{ruleType:s,ruleId:`${s}#${o}`})})}return e}function as(t,e){const n=[];return e.ruleId&&n.push(`rule=${e.ruleId}`),e.phase&&n.push(e.phase),e.method&&n.push(e.method),e.url&&n.push(e.url),e.statusCode!==void 0&&n.push(`-> ${e.statusCode}`),e.delayMs!==void 0&&n.push(`+${e.delayMs}ms`),e.direction&&n.push(e.direction),e.eventType&&n.push(`event=${e.eventType}`),e.selector&&n.push(`selector=${e.selector}`),e.action&&n.push(`action=${e.action}`),e.strategy&&n.push(`strategy=${e.strategy}`),e.groupName&&n.push(`group=${e.groupName}`),e.reason&&n.push(`reason=${e.reason}`),n.length===0?t:`${t}: ${n.join(" ")}`}class os{constructor(e,n="page"){this.opts=e,this.target=n}isEnabled(){return this.opts.enabled}log(e,n){if(!this.opts.enabled)return null;const s={...n,stage:e},r={type:"debug",timestamp:Date.now(),applied:!1,detail:s};if(typeof console<"u"&&typeof console.debug=="function"){const a=this.target==="sw"?"[Chaos SW]":"[Chaos]";try{console.debug(`${a} ${as(e,s)}`)}catch{}}return r}}function be(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] Group name cannot be empty");return e}class bt{constructor(e,n={}){R(this,"config");R(this,"emitter");R(this,"random");R(this,"seed");R(this,"running",!1);R(this,"target");R(this,"originalFetch");R(this,"originalXhrSend");R(this,"originalXhrOpen");R(this,"domObserver");R(this,"originalWebSocket");R(this,"webSocketHandle");R(this,"originalEventSource");R(this,"eventSourceHandle");R(this,"requestCounters",new Map);R(this,"groups");R(this,"ruleIds");R(this,"logger");this.config=Tt(e,n.validation),this.emitter=new es;const s=Jn(this.config.seed);this.random=s.random,this.seed=s.seed,this.target=n.target??globalThis,this.groups=new gn;for(const a of this.config.groups??[])this.groups.ensure(a.name,{enabled:a.enabled??!0,explicit:!0});this.seedGroupsFromRules(),this.groups.ensure(Pe,{enabled:!0});const r=ss(this.config.debug);r.enabled&&(this.ruleIds=rs(this.config),this.emitter.setRuleIds(this.ruleIds),this.logger=new os(r,"page"),this.emitter.setLogger(this.logger)),console.log(`Chaos Maker initialized (seed: ${this.seed})`)}seedGroupsFromRules(){Bt(this.config,e=>{e.group&&this.groups.ensure(e.group)})}collectReferencedGroups(){const e=new Set;return Bt(this.config,n=>{n.group&&e.add(n.group)}),e}getSeed(){return this.seed}on(e,n){this.emitter.on(e,n)}off(e,n){this.emitter.off(e,n)}getLog(){return this.emitter.getLog()}clearLog(){this.emitter.clearLog()}enableGroup(e){const n=be(e);this.groups.setEnabled(n,!0),this.emitter.emit({type:"rule-group:enabled",timestamp:Date.now(),applied:!0,detail:{groupName:n}}),this.emitter.debug("lifecycle",{phase:"engine:group-toggled",groupName:n,enabled:!0})}disableGroup(e){const n=be(e);this.groups.setEnabled(n,!1),this.emitter.emit({type:"rule-group:disabled",timestamp:Date.now(),applied:!0,detail:{groupName:n}}),this.emitter.debug("lifecycle",{phase:"engine:group-toggled",groupName:n,enabled:!1})}createGroup(e,n){const s=be(e);this.groups.ensure(s,{...n,explicit:!0})}removeGroup(e,n){const s=be(e);return this.groups.remove(s,this.collectReferencedGroups(),n)}hasGroup(e){const n=be(e);return this.groups.has(n)}getGroupState(e){const n=be(e);return this.groups.isActive(n)}getGroupsSnapshot(){return this.groups.getSnapshot()}listGroups(){return this.groups.list()}start(){if(this.running){console.warn("Chaos Maker is already running. Call stop() first.");return}this.requestCounters.clear(),this.running=!0,console.log("🛠️ Chaos Maker ENGAGED 🛠️"),this.emitter.debug("lifecycle",{phase:"engine:start"});const e=this.target;this.config.network&&(typeof e.fetch=="function"&&(this.originalFetch=e.fetch,e.fetch=Wr(this.originalFetch.bind(e),this.config.network,this.random,this.emitter,this.requestCounters,this.groups)),typeof e.XMLHttpRequest=="function"&&(this.originalXhrOpen=e.XMLHttpRequest.prototype.open,e.XMLHttpRequest.prototype.open=Br(this.originalXhrOpen),this.originalXhrSend=e.XMLHttpRequest.prototype.send,e.XMLHttpRequest.prototype.send=Fr(this.originalXhrSend,this.config.network,this.random,this.emitter,this.requestCounters,this.groups))),this.config.ui&&(typeof document>"u"||typeof MutationObserver>"u"?console.warn("Chaos Maker: UI config ignored — no DOM available in current context."):(this.domObserver=Yr(this.config.ui,this.random,this.emitter,this.groups),this.domObserver.observe(document.body,{childList:!0,subtree:!0}),console.log("UI Assailant is now observing the DOM."))),this.config.websocket&&typeof e.WebSocket<"u"&&(this.originalWebSocket=e.WebSocket,this.webSocketHandle=Qr(this.originalWebSocket,this.config.websocket,this.emitter,this.random,this.requestCounters,this.groups),e.WebSocket=this.webSocketHandle.Wrapped),this.config.sse&&typeof e.EventSource<"u"&&(this.originalEventSource=e.EventSource,this.eventSourceHandle=sa(this.originalEventSource,this.config.sse,this.emitter,this.random,this.requestCounters,this.groups),e.EventSource=this.eventSourceHandle.Wrapped)}stop(){this.running=!1,console.log("🛑 Chaos Maker DISENGAGED 🛑"),this.emitter.debug("lifecycle",{phase:"engine:stop"});const e=this.target;this.originalFetch&&(e.fetch=this.originalFetch),this.originalXhrSend&&typeof e.XMLHttpRequest=="function"&&(e.XMLHttpRequest.prototype.send=this.originalXhrSend),this.originalXhrOpen&&typeof e.XMLHttpRequest=="function"&&(e.XMLHttpRequest.prototype.open=this.originalXhrOpen),this.domObserver&&(this.domObserver.disconnect(),console.log("UI Assailant has stopped observing.")),this.originalWebSocket&&(e.WebSocket=this.originalWebSocket,this.originalWebSocket=void 0),this.webSocketHandle&&(this.webSocketHandle.uninstall(),this.webSocketHandle=void 0),this.originalEventSource&&(e.EventSource=this.originalEventSource,this.originalEventSource=void 0),this.eventSourceHandle&&(this.eventSourceHandle.uninstall(),this.eventSourceHandle=void 0)}}function on(t){return $e(t)}function cn(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] Group name cannot be empty");return e}function aa(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] preset name cannot be empty");return e}class oa{constructor(e){R(this,"config");R(this,"pendingGroup");R(this,"pendingPresets",[]);this.config=e?on(e):{network:{},ui:{},websocket:{},sse:{}},this.config.network||(this.config.network={}),this.config.ui||(this.config.ui={}),this.config.websocket||(this.config.websocket={}),this.config.sse||(this.config.sse={})}inGroup(e){return this.pendingGroup=cn(e),this}defineGroup(e,n){this.config.groups||(this.config.groups=[]);const s={name:cn(e)};return(n==null?void 0:n.enabled)!==void 0&&(s.enabled=n.enabled),this.config.groups.push(s),this}withGroup(e){const n=this.pendingGroup;return this.pendingGroup=void 0,n?{...e,group:n}:e}failRequests(e,n,s,r,a,o,i){return this.config.network.failures||(this.config.network.failures=[]),this.config.network.failures.push(this.withGroup({urlPattern:e,statusCode:n,probability:s,methods:r,body:a,headers:o,...i})),this}addLatency(e,n,s,r,a){return this.config.network.latencies||(this.config.network.latencies=[]),this.config.network.latencies.push(this.withGroup({urlPattern:e,delayMs:n,probability:s,methods:r,...a})),this}abortRequests(e,n,s,r,a){return this.config.network.aborts||(this.config.network.aborts=[]),this.config.network.aborts.push(this.withGroup({urlPattern:e,probability:n,timeout:s,methods:r,...a})),this}corruptResponses(e,n,s,r,a){return this.config.network.corruptions||(this.config.network.corruptions=[]),this.config.network.corruptions.push(this.withGroup({urlPattern:e,strategy:n,probability:s,methods:r,...a})),this}simulateCors(e,n,s,r){return this.config.network.cors||(this.config.network.cors=[]),this.config.network.cors.push(this.withGroup({urlPattern:e,probability:n,methods:s,...r})),this}failRequestsOnNth(e,n,s,r){return this.failRequests(e,n,1,r,void 0,void 0,{onNth:s})}addLatencyOnNth(e,n,s,r){return this.addLatency(e,n,1,r,{onNth:s})}abortRequestsOnNth(e,n,s,r){return this.abortRequests(e,1,s,r,{onNth:n})}corruptResponsesOnNth(e,n,s,r){return this.corruptResponses(e,n,1,r,{onNth:s})}simulateCorsOnNth(e,n,s){return this.simulateCors(e,1,s,{onNth:n})}failRequestsEveryNth(e,n,s,r){return this.failRequests(e,n,1,r,void 0,void 0,{everyNth:s})}addLatencyEveryNth(e,n,s,r){return this.addLatency(e,n,1,r,{everyNth:s})}abortRequestsEveryNth(e,n,s,r){return this.abortRequests(e,1,s,r,{everyNth:n})}corruptResponsesEveryNth(e,n,s,r){return this.corruptResponses(e,n,1,r,{everyNth:s})}simulateCorsEveryNth(e,n,s){return this.simulateCors(e,1,s,{everyNth:n})}failRequestsAfterN(e,n,s,r){return this.failRequests(e,n,1,r,void 0,void 0,{afterN:s})}addLatencyAfterN(e,n,s,r){return this.addLatency(e,n,1,r,{afterN:s})}abortRequestsAfterN(e,n,s,r){return this.abortRequests(e,1,s,r,{afterN:n})}corruptResponsesAfterN(e,n,s,r){return this.corruptResponses(e,n,1,r,{afterN:s})}simulateCorsAfterN(e,n,s){return this.simulateCors(e,1,s,{afterN:n})}assaultUi(e,n,s){return this.config.ui.assaults||(this.config.ui.assaults=[]),this.config.ui.assaults.push(this.withGroup({selector:e,action:n,probability:s})),this}dropMessages(e,n,s,r){return this.config.websocket.drops||(this.config.websocket.drops=[]),this.config.websocket.drops.push(this.withGroup({urlPattern:e,direction:n,probability:s,...r})),this}delayMessages(e,n,s,r,a){return this.config.websocket.delays||(this.config.websocket.delays=[]),this.config.websocket.delays.push(this.withGroup({urlPattern:e,direction:n,delayMs:s,probability:r,...a})),this}corruptMessages(e,n,s,r,a){return this.config.websocket.corruptions||(this.config.websocket.corruptions=[]),this.config.websocket.corruptions.push(this.withGroup({urlPattern:e,direction:n,strategy:s,probability:r,...a})),this}closeConnection(e,n,s,r){return this.config.websocket.closes||(this.config.websocket.closes=[]),this.config.websocket.closes.push(this.withGroup({urlPattern:e,probability:n,...s,...r})),this}dropMessagesOnNth(e,n,s){return this.dropMessages(e,n,1,{onNth:s})}delayMessagesOnNth(e,n,s,r){return this.delayMessages(e,n,s,1,{onNth:r})}failGraphQLOperation(e,n,s,r="*"){return this.config.network.failures||(this.config.network.failures=[]),this.config.network.failures.push(this.withGroup({urlPattern:r,statusCode:n,probability:s,graphqlOperation:e})),this}delayGraphQLOperation(e,n,s,r="*"){return this.config.network.latencies||(this.config.network.latencies=[]),this.config.network.latencies.push(this.withGroup({urlPattern:r,delayMs:n,probability:s,graphqlOperation:e})),this}dropSSE(e,n,s,r){return this.config.sse.drops||(this.config.sse.drops=[]),this.config.sse.drops.push(this.withGroup({urlPattern:e,probability:n,...s?{eventType:s}:{},...r})),this}delaySSE(e,n,s,r,a){return this.config.sse.delays||(this.config.sse.delays=[]),this.config.sse.delays.push(this.withGroup({urlPattern:e,delayMs:n,probability:s,...r?{eventType:r}:{},...a})),this}corruptSSE(e,n,s,r,a){return this.config.sse.corruptions||(this.config.sse.corruptions=[]),this.config.sse.corruptions.push(this.withGroup({urlPattern:e,strategy:n,probability:s,...r?{eventType:r}:{},...a})),this}closeSSE(e,n,s,r){return this.config.sse.closes||(this.config.sse.closes=[]),this.config.sse.closes.push(this.withGroup({urlPattern:e,probability:n,...s,...r})),this}withSeed(e){return this.config.seed=e,this}withDebug(e=!0){return this.config.debug=e,this}usePreset(e){const n=aa(e);return this.pendingPresets.includes(n)||this.pendingPresets.push(n),this}build(){const e=on(this.config),n=[],s=new Set;for(const r of[...e.presets??[],...this.pendingPresets])s.has(r)||(s.add(r),n.push(r));return n.length?e.presets=n:delete e.presets,e}}const Je="__chaosMakerRegExp";function ia(t){if(t===null||typeof t!="object")return!1;const e=t,n=Object.keys(e);if(n.length!==1||n[0]!==Je)return!1;const s=e[Je];if(!s||typeof s!="object")return!1;const r=s;for(const a of Object.keys(r))if(a!=="source"&&a!=="flags")return!1;return typeof r.source=="string"&&typeof r.flags=="string"}function vt(t){if(t===null||typeof t!="object")return t;if(t instanceof RegExp)return{[Je]:{source:t.source,flags:t.flags}};if(Array.isArray(t))return t.map(n=>vt(n));const e={};for(const[n,s]of Object.entries(t))e[n]=vt(s);return e}function et(t){if(t===null||typeof t!="object"||t instanceof RegExp)return t;if(ia(t)){const{source:n,flags:s}=t[Je];try{return new RegExp(n,s)}catch(r){return console.warn(`[chaos-maker] deserializeForTransport: invalid RegExp { source: ${JSON.stringify(n)}, flags: ${JSON.stringify(s)} } — ${r.message}`),t}}if(Array.isArray(t))return t.map(n=>et(n));const e={};for(const[n,s]of Object.entries(t))e[n]=et(s);return e}const ca=`
|
|
1
|
+
"use strict";var hs=Object.defineProperty;var ps=(t,e,n)=>e in t?hs(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var R=(t,e,n)=>ps(t,typeof e!="symbol"?e+"":e,n);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var O;(function(t){t.assertEqual=r=>{};function e(r){}t.assertIs=e;function n(r){throw new Error}t.assertNever=n,t.arrayToEnum=r=>{const o={};for(const a of r)o[a]=a;return o},t.getValidEnumValues=r=>{const o=t.objectKeys(r).filter(i=>typeof r[r[i]]!="number"),a={};for(const i of o)a[i]=r[i];return t.objectValues(a)},t.objectValues=r=>t.objectKeys(r).map(function(o){return r[o]}),t.objectKeys=typeof Object.keys=="function"?r=>Object.keys(r):r=>{const o=[];for(const a in r)Object.prototype.hasOwnProperty.call(r,a)&&o.push(a);return o},t.find=(r,o)=>{for(const a of r)if(o(a))return a},t.isInteger=typeof Number.isInteger=="function"?r=>Number.isInteger(r):r=>typeof r=="number"&&Number.isFinite(r)&&Math.floor(r)===r;function s(r,o=" | "){return r.map(a=>typeof a=="string"?`'${a}'`:a).join(o)}t.joinValues=s,t.jsonStringifyReplacer=(r,o)=>typeof o=="bigint"?o.toString():o})(O||(O={}));var Lt;(function(t){t.mergeShapes=(e,n)=>({...e,...n})})(Lt||(Lt={}));const m=O.arrayToEnum(["string","nan","number","integer","float","boolean","date","bigint","symbol","function","undefined","null","array","object","unknown","promise","void","never","map","set"]),ue=t=>{switch(typeof t){case"undefined":return m.undefined;case"string":return m.string;case"number":return Number.isNaN(t)?m.nan:m.number;case"boolean":return m.boolean;case"function":return m.function;case"bigint":return m.bigint;case"symbol":return m.symbol;case"object":return Array.isArray(t)?m.array:t===null?m.null:t.then&&typeof t.then=="function"&&t.catch&&typeof t.catch=="function"?m.promise:typeof Map<"u"&&t instanceof Map?m.map:typeof Set<"u"&&t instanceof Set?m.set:typeof Date<"u"&&t instanceof Date?m.date:m.object;default:return m.unknown}},h=O.arrayToEnum(["invalid_type","invalid_literal","custom","invalid_union","invalid_union_discriminator","invalid_enum_value","unrecognized_keys","invalid_arguments","invalid_return_type","invalid_date","invalid_string","too_small","too_big","invalid_intersection_types","not_multiple_of","not_finite"]);class ce extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=s=>{this.issues=[...this.issues,s]},this.addIssues=(s=[])=>{this.issues=[...this.issues,...s]};const n=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,n):this.__proto__=n,this.name="ZodError",this.issues=e}format(e){const n=e||function(o){return o.message},s={_errors:[]},r=o=>{for(const a of o.issues)if(a.code==="invalid_union")a.unionErrors.map(r);else if(a.code==="invalid_return_type")r(a.returnTypeError);else if(a.code==="invalid_arguments")r(a.argumentsError);else if(a.path.length===0)s._errors.push(n(a));else{let i=s,c=0;for(;c<a.path.length;){const u=a.path[c];c===a.path.length-1?(i[u]=i[u]||{_errors:[]},i[u]._errors.push(n(a))):i[u]=i[u]||{_errors:[]},i=i[u],c++}}};return r(this),s}static assert(e){if(!(e instanceof ce))throw new Error(`Not a ZodError: ${e}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,O.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=n=>n.message){const n={},s=[];for(const r of this.issues)if(r.path.length>0){const o=r.path[0];n[o]=n[o]||[],n[o].push(e(r))}else s.push(e(r));return{formErrors:s,fieldErrors:n}}get formErrors(){return this.flatten()}}ce.create=t=>new ce(t);const ht=(t,e)=>{let n;switch(t.code){case h.invalid_type:t.received===m.undefined?n="Required":n=`Expected ${t.expected}, received ${t.received}`;break;case h.invalid_literal:n=`Invalid literal value, expected ${JSON.stringify(t.expected,O.jsonStringifyReplacer)}`;break;case h.unrecognized_keys:n=`Unrecognized key(s) in object: ${O.joinValues(t.keys,", ")}`;break;case h.invalid_union:n="Invalid input";break;case h.invalid_union_discriminator:n=`Invalid discriminator value. Expected ${O.joinValues(t.options)}`;break;case h.invalid_enum_value:n=`Invalid enum value. Expected ${O.joinValues(t.options)}, received '${t.received}'`;break;case h.invalid_arguments:n="Invalid function arguments";break;case h.invalid_return_type:n="Invalid function return type";break;case h.invalid_date:n="Invalid date";break;case h.invalid_string:typeof t.validation=="object"?"includes"in t.validation?(n=`Invalid input: must include "${t.validation.includes}"`,typeof t.validation.position=="number"&&(n=`${n} at one or more positions greater than or equal to ${t.validation.position}`)):"startsWith"in t.validation?n=`Invalid input: must start with "${t.validation.startsWith}"`:"endsWith"in t.validation?n=`Invalid input: must end with "${t.validation.endsWith}"`:O.assertNever(t.validation):t.validation!=="regex"?n=`Invalid ${t.validation}`:n="Invalid";break;case h.too_small:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at least":"more than"} ${t.minimum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at least":"over"} ${t.minimum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="bigint"?n=`Number must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${t.minimum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly equal to ":t.inclusive?"greater than or equal to ":"greater than "}${new Date(Number(t.minimum))}`:n="Invalid input";break;case h.too_big:t.type==="array"?n=`Array must contain ${t.exact?"exactly":t.inclusive?"at most":"less than"} ${t.maximum} element(s)`:t.type==="string"?n=`String must contain ${t.exact?"exactly":t.inclusive?"at most":"under"} ${t.maximum} character(s)`:t.type==="number"?n=`Number must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="bigint"?n=`BigInt must be ${t.exact?"exactly":t.inclusive?"less than or equal to":"less than"} ${t.maximum}`:t.type==="date"?n=`Date must be ${t.exact?"exactly":t.inclusive?"smaller than or equal to":"smaller than"} ${new Date(Number(t.maximum))}`:n="Invalid input";break;case h.custom:n="Invalid input";break;case h.invalid_intersection_types:n="Intersection results could not be merged";break;case h.not_multiple_of:n=`Number must be a multiple of ${t.multipleOf}`;break;case h.not_finite:n="Number must be finite";break;default:n=e.defaultError,O.assertNever(t)}return{message:n}};let gs=ht;function ys(){return gs}const ms=t=>{const{data:e,path:n,errorMaps:s,issueData:r}=t,o=[...n,...r.path||[]],a={...r,path:o};if(r.message!==void 0)return{...r,path:o,message:r.message};let i="";const c=s.filter(u=>!!u).slice().reverse();for(const u of c)i=u(a,{data:e,defaultError:i}).message;return{...r,path:o,message:i}};function g(t,e){const n=ys(),s=ms({issueData:e,data:t.data,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,n,n===ht?void 0:ht].filter(r=>!!r)});t.common.issues.push(s)}class z{constructor(){this.value="valid"}dirty(){this.value==="valid"&&(this.value="dirty")}abort(){this.value!=="aborted"&&(this.value="aborted")}static mergeArray(e,n){const s=[];for(const r of n){if(r.status==="aborted")return x;r.status==="dirty"&&e.dirty(),s.push(r.value)}return{status:e.value,value:s}}static async mergeObjectAsync(e,n){const s=[];for(const r of n){const o=await r.key,a=await r.value;s.push({key:o,value:a})}return z.mergeObjectSync(e,s)}static mergeObjectSync(e,n){const s={};for(const r of n){const{key:o,value:a}=r;if(o.status==="aborted"||a.status==="aborted")return x;o.status==="dirty"&&e.dirty(),a.status==="dirty"&&e.dirty(),o.value!=="__proto__"&&(typeof a.value<"u"||r.alwaysSet)&&(s[o.value]=a.value)}return{status:e.value,value:s}}}const x=Object.freeze({status:"aborted"}),Oe=t=>({status:"dirty",value:t}),J=t=>({status:"valid",value:t}),It=t=>t.status==="aborted",Dt=t=>t.status==="dirty",ke=t=>t.status==="valid",Fe=t=>typeof Promise<"u"&&t instanceof Promise;var b;(function(t){t.errToObj=e=>typeof e=="string"?{message:e}:e||{},t.toString=e=>typeof e=="string"?e:e==null?void 0:e.message})(b||(b={}));class re{constructor(e,n,s,r){this._cachedPath=[],this.parent=e,this.data=n,this._path=s,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}}const Zt=(t,e)=>{if(ke(e))return{success:!0,data:e.value};if(!t.common.issues.length)throw new Error("Validation failed but no issues detected.");return{success:!1,get error(){if(this._error)return this._error;const n=new ce(t.common.issues);return this._error=n,this._error}}};function E(t){if(!t)return{};const{errorMap:e,invalid_type_error:n,required_error:s,description:r}=t;if(e&&(n||s))throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return e?{errorMap:e,description:r}:{errorMap:(a,i)=>{const{message:c}=t;return a.code==="invalid_enum_value"?{message:c??i.defaultError}:typeof i.data>"u"?{message:c??s??i.defaultError}:a.code!=="invalid_type"?{message:i.defaultError}:{message:c??n??i.defaultError}},description:r}}class T{get description(){return this._def.description}_getType(e){return ue(e.data)}_getOrReturnCtx(e,n){return n||{common:e.parent.common,data:e.data,parsedType:ue(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new z,ctx:{common:e.parent.common,data:e.data,parsedType:ue(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){const n=this._parse(e);if(Fe(n))throw new Error("Synchronous parse encountered promise.");return n}_parseAsync(e){const n=this._parse(e);return Promise.resolve(n)}parse(e,n){const s=this.safeParse(e,n);if(s.success)return s.data;throw s.error}safeParse(e,n){const s={common:{issues:[],async:(n==null?void 0:n.async)??!1,contextualErrorMap:n==null?void 0:n.errorMap},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ue(e)},r=this._parseSync({data:e,path:s.path,parent:s});return Zt(s,r)}"~validate"(e){var s,r;const n={common:{issues:[],async:!!this["~standard"].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ue(e)};if(!this["~standard"].async)try{const o=this._parseSync({data:e,path:[],parent:n});return ke(o)?{value:o.value}:{issues:n.common.issues}}catch(o){(r=(s=o==null?void 0:o.message)==null?void 0:s.toLowerCase())!=null&&r.includes("encountered")&&(this["~standard"].async=!0),n.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:n}).then(o=>ke(o)?{value:o.value}:{issues:n.common.issues})}async parseAsync(e,n){const s=await this.safeParseAsync(e,n);if(s.success)return s.data;throw s.error}async safeParseAsync(e,n){const s={common:{issues:[],contextualErrorMap:n==null?void 0:n.errorMap,async:!0},path:(n==null?void 0:n.path)||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:ue(e)},r=this._parse({data:e,path:s.path,parent:s}),o=await(Fe(r)?r:Promise.resolve(r));return Zt(s,o)}refine(e,n){const s=r=>typeof n=="string"||typeof n>"u"?{message:n}:typeof n=="function"?n(r):n;return this._refinement((r,o)=>{const a=e(r),i=()=>o.addIssue({code:h.custom,...s(r)});return typeof Promise<"u"&&a instanceof Promise?a.then(c=>c?!0:(i(),!1)):a?!0:(i(),!1)})}refinement(e,n){return this._refinement((s,r)=>e(s)?!0:(r.addIssue(typeof n=="function"?n(s,r):n),!1))}_refinement(e){return new xe({schema:this,typeName:w.ZodEffects,effect:{type:"refinement",refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this["~standard"]={version:1,vendor:"zod",validate:n=>this["~validate"](n)}}optional(){return le.create(this,this._def)}nullable(){return Se.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return se.create(this)}promise(){return Xe.create(this,this._def)}or(e){return He.create([this,e],this._def)}and(e){return Ke.create(this,e,this._def)}transform(e){return new xe({...E(this._def),schema:this,typeName:w.ZodEffects,effect:{type:"transform",transform:e}})}default(e){const n=typeof e=="function"?e:()=>e;return new mt({...E(this._def),innerType:this,defaultValue:n,typeName:w.ZodDefault})}brand(){return new Gs({typeName:w.ZodBranded,type:this,...E(this._def)})}catch(e){const n=typeof e=="function"?e:()=>e;return new bt({...E(this._def),innerType:this,catchValue:n,typeName:w.ZodCatch})}describe(e){const n=this.constructor;return new n({...this._def,description:e})}pipe(e){return Et.create(this,e)}readonly(){return vt.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}}const bs=/^c[^\s-]{8,}$/i,vs=/^[0-9a-z]+$/,ks=/^[0-9A-HJKMNP-TV-Z]{26}$/i,_s=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ws=/^[a-z0-9_-]{21}$/i,xs=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,Ss=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,Cs=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,Es="^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$";let ut;const Ns=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,Ts=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,Os=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,Rs=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,Ms=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,As=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,hn="((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))",Ps=new RegExp(`^${hn}$`);function pn(t){let e="[0-5]\\d";t.precision?e=`${e}\\.\\d{${t.precision}}`:t.precision==null&&(e=`${e}(\\.\\d+)?`);const n=t.precision?"+":"?";return`([01]\\d|2[0-3]):[0-5]\\d(:${e})${n}`}function $s(t){return new RegExp(`^${pn(t)}$`)}function js(t){let e=`${hn}T${pn(t)}`;const n=[];return n.push(t.local?"Z?":"Z"),t.offset&&n.push("([+-]\\d{2}:?\\d{2})"),e=`${e}(${n.join("|")})`,new RegExp(`^${e}$`)}function Ls(t,e){return!!((e==="v4"||!e)&&Ns.test(t)||(e==="v6"||!e)&&Os.test(t))}function Is(t,e){if(!xs.test(t))return!1;try{const[n]=t.split(".");if(!n)return!1;const s=n.replace(/-/g,"+").replace(/_/g,"/").padEnd(n.length+(4-n.length%4)%4,"="),r=JSON.parse(atob(s));return!(typeof r!="object"||r===null||"typ"in r&&(r==null?void 0:r.typ)!=="JWT"||!r.alg||e&&r.alg!==e)}catch{return!1}}function Ds(t,e){return!!((e==="v4"||!e)&&Ts.test(t)||(e==="v6"||!e)&&Rs.test(t))}class ie extends T{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==m.string){const o=this._getOrReturnCtx(e);return g(o,{code:h.invalid_type,expected:m.string,received:o.parsedType}),x}const s=new z;let r;for(const o of this._def.checks)if(o.kind==="min")e.data.length<o.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if(o.kind==="max")e.data.length>o.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!1,message:o.message}),s.dirty());else if(o.kind==="length"){const a=e.data.length>o.value,i=e.data.length<o.value;(a||i)&&(r=this._getOrReturnCtx(e,r),a?g(r,{code:h.too_big,maximum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}):i&&g(r,{code:h.too_small,minimum:o.value,type:"string",inclusive:!0,exact:!0,message:o.message}),s.dirty())}else if(o.kind==="email")Cs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"email",code:h.invalid_string,message:o.message}),s.dirty());else if(o.kind==="emoji")ut||(ut=new RegExp(Es,"u")),ut.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"emoji",code:h.invalid_string,message:o.message}),s.dirty());else if(o.kind==="uuid")_s.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"uuid",code:h.invalid_string,message:o.message}),s.dirty());else if(o.kind==="nanoid")ws.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"nanoid",code:h.invalid_string,message:o.message}),s.dirty());else if(o.kind==="cuid")bs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"cuid",code:h.invalid_string,message:o.message}),s.dirty());else if(o.kind==="cuid2")vs.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"cuid2",code:h.invalid_string,message:o.message}),s.dirty());else if(o.kind==="ulid")ks.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"ulid",code:h.invalid_string,message:o.message}),s.dirty());else if(o.kind==="url")try{new URL(e.data)}catch{r=this._getOrReturnCtx(e,r),g(r,{validation:"url",code:h.invalid_string,message:o.message}),s.dirty()}else o.kind==="regex"?(o.regex.lastIndex=0,o.regex.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"regex",code:h.invalid_string,message:o.message}),s.dirty())):o.kind==="trim"?e.data=e.data.trim():o.kind==="includes"?e.data.includes(o.value,o.position)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:{includes:o.value,position:o.position},message:o.message}),s.dirty()):o.kind==="toLowerCase"?e.data=e.data.toLowerCase():o.kind==="toUpperCase"?e.data=e.data.toUpperCase():o.kind==="startsWith"?e.data.startsWith(o.value)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:{startsWith:o.value},message:o.message}),s.dirty()):o.kind==="endsWith"?e.data.endsWith(o.value)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:{endsWith:o.value},message:o.message}),s.dirty()):o.kind==="datetime"?js(o).test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:"datetime",message:o.message}),s.dirty()):o.kind==="date"?Ps.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:"date",message:o.message}),s.dirty()):o.kind==="time"?$s(o).test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{code:h.invalid_string,validation:"time",message:o.message}),s.dirty()):o.kind==="duration"?Ss.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"duration",code:h.invalid_string,message:o.message}),s.dirty()):o.kind==="ip"?Ls(e.data,o.version)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"ip",code:h.invalid_string,message:o.message}),s.dirty()):o.kind==="jwt"?Is(e.data,o.alg)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"jwt",code:h.invalid_string,message:o.message}),s.dirty()):o.kind==="cidr"?Ds(e.data,o.version)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"cidr",code:h.invalid_string,message:o.message}),s.dirty()):o.kind==="base64"?Ms.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"base64",code:h.invalid_string,message:o.message}),s.dirty()):o.kind==="base64url"?As.test(e.data)||(r=this._getOrReturnCtx(e,r),g(r,{validation:"base64url",code:h.invalid_string,message:o.message}),s.dirty()):O.assertNever(o);return{status:s.value,value:e.data}}_regex(e,n,s){return this.refinement(r=>e.test(r),{validation:n,code:h.invalid_string,...b.errToObj(s)})}_addCheck(e){return new ie({...this._def,checks:[...this._def.checks,e]})}email(e){return this._addCheck({kind:"email",...b.errToObj(e)})}url(e){return this._addCheck({kind:"url",...b.errToObj(e)})}emoji(e){return this._addCheck({kind:"emoji",...b.errToObj(e)})}uuid(e){return this._addCheck({kind:"uuid",...b.errToObj(e)})}nanoid(e){return this._addCheck({kind:"nanoid",...b.errToObj(e)})}cuid(e){return this._addCheck({kind:"cuid",...b.errToObj(e)})}cuid2(e){return this._addCheck({kind:"cuid2",...b.errToObj(e)})}ulid(e){return this._addCheck({kind:"ulid",...b.errToObj(e)})}base64(e){return this._addCheck({kind:"base64",...b.errToObj(e)})}base64url(e){return this._addCheck({kind:"base64url",...b.errToObj(e)})}jwt(e){return this._addCheck({kind:"jwt",...b.errToObj(e)})}ip(e){return this._addCheck({kind:"ip",...b.errToObj(e)})}cidr(e){return this._addCheck({kind:"cidr",...b.errToObj(e)})}datetime(e){return typeof e=="string"?this._addCheck({kind:"datetime",precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:"datetime",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,offset:(e==null?void 0:e.offset)??!1,local:(e==null?void 0:e.local)??!1,...b.errToObj(e==null?void 0:e.message)})}date(e){return this._addCheck({kind:"date",message:e})}time(e){return typeof e=="string"?this._addCheck({kind:"time",precision:null,message:e}):this._addCheck({kind:"time",precision:typeof(e==null?void 0:e.precision)>"u"?null:e==null?void 0:e.precision,...b.errToObj(e==null?void 0:e.message)})}duration(e){return this._addCheck({kind:"duration",...b.errToObj(e)})}regex(e,n){return this._addCheck({kind:"regex",regex:e,...b.errToObj(n)})}includes(e,n){return this._addCheck({kind:"includes",value:e,position:n==null?void 0:n.position,...b.errToObj(n==null?void 0:n.message)})}startsWith(e,n){return this._addCheck({kind:"startsWith",value:e,...b.errToObj(n)})}endsWith(e,n){return this._addCheck({kind:"endsWith",value:e,...b.errToObj(n)})}min(e,n){return this._addCheck({kind:"min",value:e,...b.errToObj(n)})}max(e,n){return this._addCheck({kind:"max",value:e,...b.errToObj(n)})}length(e,n){return this._addCheck({kind:"length",value:e,...b.errToObj(n)})}nonempty(e){return this.min(1,b.errToObj(e))}trim(){return new ie({...this._def,checks:[...this._def.checks,{kind:"trim"}]})}toLowerCase(){return new ie({...this._def,checks:[...this._def.checks,{kind:"toLowerCase"}]})}toUpperCase(){return new ie({...this._def,checks:[...this._def.checks,{kind:"toUpperCase"}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind==="datetime")}get isDate(){return!!this._def.checks.find(e=>e.kind==="date")}get isTime(){return!!this._def.checks.find(e=>e.kind==="time")}get isDuration(){return!!this._def.checks.find(e=>e.kind==="duration")}get isEmail(){return!!this._def.checks.find(e=>e.kind==="email")}get isURL(){return!!this._def.checks.find(e=>e.kind==="url")}get isEmoji(){return!!this._def.checks.find(e=>e.kind==="emoji")}get isUUID(){return!!this._def.checks.find(e=>e.kind==="uuid")}get isNANOID(){return!!this._def.checks.find(e=>e.kind==="nanoid")}get isCUID(){return!!this._def.checks.find(e=>e.kind==="cuid")}get isCUID2(){return!!this._def.checks.find(e=>e.kind==="cuid2")}get isULID(){return!!this._def.checks.find(e=>e.kind==="ulid")}get isIP(){return!!this._def.checks.find(e=>e.kind==="ip")}get isCIDR(){return!!this._def.checks.find(e=>e.kind==="cidr")}get isBase64(){return!!this._def.checks.find(e=>e.kind==="base64")}get isBase64url(){return!!this._def.checks.find(e=>e.kind==="base64url")}get minLength(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxLength(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}ie.create=t=>new ie({checks:[],typeName:w.ZodString,coerce:(t==null?void 0:t.coerce)??!1,...E(t)});function Zs(t,e){const n=(t.toString().split(".")[1]||"").length,s=(e.toString().split(".")[1]||"").length,r=n>s?n:s,o=Number.parseInt(t.toFixed(r).replace(".","")),a=Number.parseInt(e.toFixed(r).replace(".",""));return o%a/10**r}class _e extends T{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==m.number){const o=this._getOrReturnCtx(e);return g(o,{code:h.invalid_type,expected:m.number,received:o.parsedType}),x}let s;const r=new z;for(const o of this._def.checks)o.kind==="int"?O.isInteger(e.data)||(s=this._getOrReturnCtx(e,s),g(s,{code:h.invalid_type,expected:"integer",received:"float",message:o.message}),r.dirty()):o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_small,minimum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),r.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_big,maximum:o.value,type:"number",inclusive:o.inclusive,exact:!1,message:o.message}),r.dirty()):o.kind==="multipleOf"?Zs(e.data,o.value)!==0&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.not_multiple_of,multipleOf:o.value,message:o.message}),r.dirty()):o.kind==="finite"?Number.isFinite(e.data)||(s=this._getOrReturnCtx(e,s),g(s,{code:h.not_finite,message:o.message}),r.dirty()):O.assertNever(o);return{status:r.value,value:e.data}}gte(e,n){return this.setLimit("min",e,!0,b.toString(n))}gt(e,n){return this.setLimit("min",e,!1,b.toString(n))}lte(e,n){return this.setLimit("max",e,!0,b.toString(n))}lt(e,n){return this.setLimit("max",e,!1,b.toString(n))}setLimit(e,n,s,r){return new _e({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:s,message:b.toString(r)}]})}_addCheck(e){return new _e({...this._def,checks:[...this._def.checks,e]})}int(e){return this._addCheck({kind:"int",message:b.toString(e)})}positive(e){return this._addCheck({kind:"min",value:0,inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:"max",value:0,inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:0,inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:0,inclusive:!0,message:b.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:b.toString(n)})}finite(e){return this._addCheck({kind:"finite",message:b.toString(e)})}safe(e){return this._addCheck({kind:"min",inclusive:!0,value:Number.MIN_SAFE_INTEGER,message:b.toString(e)})._addCheck({kind:"max",inclusive:!0,value:Number.MAX_SAFE_INTEGER,message:b.toString(e)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind==="int"||e.kind==="multipleOf"&&O.isInteger(e.value))}get isFinite(){let e=null,n=null;for(const s of this._def.checks){if(s.kind==="finite"||s.kind==="int"||s.kind==="multipleOf")return!0;s.kind==="min"?(n===null||s.value>n)&&(n=s.value):s.kind==="max"&&(e===null||s.value<e)&&(e=s.value)}return Number.isFinite(n)&&Number.isFinite(e)}}_e.create=t=>new _e({checks:[],typeName:w.ZodNumber,coerce:(t==null?void 0:t.coerce)||!1,...E(t)});class $e extends T{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==m.bigint)return this._getInvalidInput(e);let s;const r=new z;for(const o of this._def.checks)o.kind==="min"?(o.inclusive?e.data<o.value:e.data<=o.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_small,type:"bigint",minimum:o.value,inclusive:o.inclusive,message:o.message}),r.dirty()):o.kind==="max"?(o.inclusive?e.data>o.value:e.data>=o.value)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.too_big,type:"bigint",maximum:o.value,inclusive:o.inclusive,message:o.message}),r.dirty()):o.kind==="multipleOf"?e.data%o.value!==BigInt(0)&&(s=this._getOrReturnCtx(e,s),g(s,{code:h.not_multiple_of,multipleOf:o.value,message:o.message}),r.dirty()):O.assertNever(o);return{status:r.value,value:e.data}}_getInvalidInput(e){const n=this._getOrReturnCtx(e);return g(n,{code:h.invalid_type,expected:m.bigint,received:n.parsedType}),x}gte(e,n){return this.setLimit("min",e,!0,b.toString(n))}gt(e,n){return this.setLimit("min",e,!1,b.toString(n))}lte(e,n){return this.setLimit("max",e,!0,b.toString(n))}lt(e,n){return this.setLimit("max",e,!1,b.toString(n))}setLimit(e,n,s,r){return new $e({...this._def,checks:[...this._def.checks,{kind:e,value:n,inclusive:s,message:b.toString(r)}]})}_addCheck(e){return new $e({...this._def,checks:[...this._def.checks,e]})}positive(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:"max",value:BigInt(0),inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:"min",value:BigInt(0),inclusive:!0,message:b.toString(e)})}multipleOf(e,n){return this._addCheck({kind:"multipleOf",value:e,message:b.toString(n)})}get minValue(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e}get maxValue(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e}}$e.create=t=>new $e({checks:[],typeName:w.ZodBigInt,coerce:(t==null?void 0:t.coerce)??!1,...E(t)});class pt extends T{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==m.boolean){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.boolean,received:s.parsedType}),x}return J(e.data)}}pt.create=t=>new pt({typeName:w.ZodBoolean,coerce:(t==null?void 0:t.coerce)||!1,...E(t)});class Be extends T{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==m.date){const o=this._getOrReturnCtx(e);return g(o,{code:h.invalid_type,expected:m.date,received:o.parsedType}),x}if(Number.isNaN(e.data.getTime())){const o=this._getOrReturnCtx(e);return g(o,{code:h.invalid_date}),x}const s=new z;let r;for(const o of this._def.checks)o.kind==="min"?e.data.getTime()<o.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_small,message:o.message,inclusive:!0,exact:!1,minimum:o.value,type:"date"}),s.dirty()):o.kind==="max"?e.data.getTime()>o.value&&(r=this._getOrReturnCtx(e,r),g(r,{code:h.too_big,message:o.message,inclusive:!0,exact:!1,maximum:o.value,type:"date"}),s.dirty()):O.assertNever(o);return{status:s.value,value:new Date(e.data.getTime())}}_addCheck(e){return new Be({...this._def,checks:[...this._def.checks,e]})}min(e,n){return this._addCheck({kind:"min",value:e.getTime(),message:b.toString(n)})}max(e,n){return this._addCheck({kind:"max",value:e.getTime(),message:b.toString(n)})}get minDate(){let e=null;for(const n of this._def.checks)n.kind==="min"&&(e===null||n.value>e)&&(e=n.value);return e!=null?new Date(e):null}get maxDate(){let e=null;for(const n of this._def.checks)n.kind==="max"&&(e===null||n.value<e)&&(e=n.value);return e!=null?new Date(e):null}}Be.create=t=>new Be({checks:[],coerce:(t==null?void 0:t.coerce)||!1,typeName:w.ZodDate,...E(t)});class Gt extends T{_parse(e){if(this._getType(e)!==m.symbol){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.symbol,received:s.parsedType}),x}return J(e.data)}}Gt.create=t=>new Gt({typeName:w.ZodSymbol,...E(t)});class Wt extends T{_parse(e){if(this._getType(e)!==m.undefined){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.undefined,received:s.parsedType}),x}return J(e.data)}}Wt.create=t=>new Wt({typeName:w.ZodUndefined,...E(t)});class qt extends T{_parse(e){if(this._getType(e)!==m.null){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.null,received:s.parsedType}),x}return J(e.data)}}qt.create=t=>new qt({typeName:w.ZodNull,...E(t)});class je extends T{constructor(){super(...arguments),this._any=!0}_parse(e){return J(e.data)}}je.create=t=>new je({typeName:w.ZodAny,...E(t)});class Ut extends T{constructor(){super(...arguments),this._unknown=!0}_parse(e){return J(e.data)}}Ut.create=t=>new Ut({typeName:w.ZodUnknown,...E(t)});class de extends T{_parse(e){const n=this._getOrReturnCtx(e);return g(n,{code:h.invalid_type,expected:m.never,received:n.parsedType}),x}}de.create=t=>new de({typeName:w.ZodNever,...E(t)});class Vt extends T{_parse(e){if(this._getType(e)!==m.undefined){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.void,received:s.parsedType}),x}return J(e.data)}}Vt.create=t=>new Vt({typeName:w.ZodVoid,...E(t)});class se extends T{_parse(e){const{ctx:n,status:s}=this._processInputParams(e),r=this._def;if(n.parsedType!==m.array)return g(n,{code:h.invalid_type,expected:m.array,received:n.parsedType}),x;if(r.exactLength!==null){const a=n.data.length>r.exactLength.value,i=n.data.length<r.exactLength.value;(a||i)&&(g(n,{code:a?h.too_big:h.too_small,minimum:i?r.exactLength.value:void 0,maximum:a?r.exactLength.value:void 0,type:"array",inclusive:!0,exact:!0,message:r.exactLength.message}),s.dirty())}if(r.minLength!==null&&n.data.length<r.minLength.value&&(g(n,{code:h.too_small,minimum:r.minLength.value,type:"array",inclusive:!0,exact:!1,message:r.minLength.message}),s.dirty()),r.maxLength!==null&&n.data.length>r.maxLength.value&&(g(n,{code:h.too_big,maximum:r.maxLength.value,type:"array",inclusive:!0,exact:!1,message:r.maxLength.message}),s.dirty()),n.common.async)return Promise.all([...n.data].map((a,i)=>r.type._parseAsync(new re(n,a,n.path,i)))).then(a=>z.mergeArray(s,a));const o=[...n.data].map((a,i)=>r.type._parseSync(new re(n,a,n.path,i)));return z.mergeArray(s,o)}get element(){return this._def.type}min(e,n){return new se({...this._def,minLength:{value:e,message:b.toString(n)}})}max(e,n){return new se({...this._def,maxLength:{value:e,message:b.toString(n)}})}length(e,n){return new se({...this._def,exactLength:{value:e,message:b.toString(n)}})}nonempty(e){return this.min(1,e)}}se.create=(t,e)=>new se({type:t,minLength:null,maxLength:null,exactLength:null,typeName:w.ZodArray,...E(e)});function ve(t){if(t instanceof I){const e={};for(const n in t.shape){const s=t.shape[n];e[n]=le.create(ve(s))}return new I({...t._def,shape:()=>e})}else return t instanceof se?new se({...t._def,type:ve(t.element)}):t instanceof le?le.create(ve(t.unwrap())):t instanceof Se?Se.create(ve(t.unwrap())):t instanceof pe?pe.create(t.items.map(e=>ve(e))):t}class I extends T{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;const e=this._def.shape(),n=O.objectKeys(e);return this._cached={shape:e,keys:n},this._cached}_parse(e){if(this._getType(e)!==m.object){const u=this._getOrReturnCtx(e);return g(u,{code:h.invalid_type,expected:m.object,received:u.parsedType}),x}const{status:s,ctx:r}=this._processInputParams(e),{shape:o,keys:a}=this._getCached(),i=[];if(!(this._def.catchall instanceof de&&this._def.unknownKeys==="strip"))for(const u in r.data)a.includes(u)||i.push(u);const c=[];for(const u of a){const v=o[u],A=r.data[u];c.push({key:{status:"valid",value:u},value:v._parse(new re(r,A,r.path,u)),alwaysSet:u in r.data})}if(this._def.catchall instanceof de){const u=this._def.unknownKeys;if(u==="passthrough")for(const v of i)c.push({key:{status:"valid",value:v},value:{status:"valid",value:r.data[v]}});else if(u==="strict")i.length>0&&(g(r,{code:h.unrecognized_keys,keys:i}),s.dirty());else if(u!=="strip")throw new Error("Internal ZodObject error: invalid unknownKeys value.")}else{const u=this._def.catchall;for(const v of i){const A=r.data[v];c.push({key:{status:"valid",value:v},value:u._parse(new re(r,A,r.path,v)),alwaysSet:v in r.data})}}return r.common.async?Promise.resolve().then(async()=>{const u=[];for(const v of c){const A=await v.key,$=await v.value;u.push({key:A,value:$,alwaysSet:v.alwaysSet})}return u}).then(u=>z.mergeObjectSync(s,u)):z.mergeObjectSync(s,c)}get shape(){return this._def.shape()}strict(e){return b.errToObj,new I({...this._def,unknownKeys:"strict",...e!==void 0?{errorMap:(n,s)=>{var o,a;const r=((a=(o=this._def).errorMap)==null?void 0:a.call(o,n,s).message)??s.defaultError;return n.code==="unrecognized_keys"?{message:b.errToObj(e).message??r}:{message:r}}}:{}})}strip(){return new I({...this._def,unknownKeys:"strip"})}passthrough(){return new I({...this._def,unknownKeys:"passthrough"})}extend(e){return new I({...this._def,shape:()=>({...this._def.shape(),...e})})}merge(e){return new I({unknownKeys:e._def.unknownKeys,catchall:e._def.catchall,shape:()=>({...this._def.shape(),...e._def.shape()}),typeName:w.ZodObject})}setKey(e,n){return this.augment({[e]:n})}catchall(e){return new I({...this._def,catchall:e})}pick(e){const n={};for(const s of O.objectKeys(e))e[s]&&this.shape[s]&&(n[s]=this.shape[s]);return new I({...this._def,shape:()=>n})}omit(e){const n={};for(const s of O.objectKeys(this.shape))e[s]||(n[s]=this.shape[s]);return new I({...this._def,shape:()=>n})}deepPartial(){return ve(this)}partial(e){const n={};for(const s of O.objectKeys(this.shape)){const r=this.shape[s];e&&!e[s]?n[s]=r:n[s]=r.optional()}return new I({...this._def,shape:()=>n})}required(e){const n={};for(const s of O.objectKeys(this.shape))if(e&&!e[s])n[s]=this.shape[s];else{let o=this.shape[s];for(;o instanceof le;)o=o._def.innerType;n[s]=o}return new I({...this._def,shape:()=>n})}keyof(){return gn(O.objectKeys(this.shape))}}I.create=(t,e)=>new I({shape:()=>t,unknownKeys:"strip",catchall:de.create(),typeName:w.ZodObject,...E(e)});I.strictCreate=(t,e)=>new I({shape:()=>t,unknownKeys:"strict",catchall:de.create(),typeName:w.ZodObject,...E(e)});I.lazycreate=(t,e)=>new I({shape:t,unknownKeys:"strip",catchall:de.create(),typeName:w.ZodObject,...E(e)});class He extends T{_parse(e){const{ctx:n}=this._processInputParams(e),s=this._def.options;function r(o){for(const i of o)if(i.result.status==="valid")return i.result;for(const i of o)if(i.result.status==="dirty")return n.common.issues.push(...i.ctx.common.issues),i.result;const a=o.map(i=>new ce(i.ctx.common.issues));return g(n,{code:h.invalid_union,unionErrors:a}),x}if(n.common.async)return Promise.all(s.map(async o=>{const a={...n,common:{...n.common,issues:[]},parent:null};return{result:await o._parseAsync({data:n.data,path:n.path,parent:a}),ctx:a}})).then(r);{let o;const a=[];for(const c of s){const u={...n,common:{...n.common,issues:[]},parent:null},v=c._parseSync({data:n.data,path:n.path,parent:u});if(v.status==="valid")return v;v.status==="dirty"&&!o&&(o={result:v,ctx:u}),u.common.issues.length&&a.push(u.common.issues)}if(o)return n.common.issues.push(...o.ctx.common.issues),o.result;const i=a.map(c=>new ce(c));return g(n,{code:h.invalid_union,unionErrors:i}),x}}get options(){return this._def.options}}He.create=(t,e)=>new He({options:t,typeName:w.ZodUnion,...E(e)});function gt(t,e){const n=ue(t),s=ue(e);if(t===e)return{valid:!0,data:t};if(n===m.object&&s===m.object){const r=O.objectKeys(e),o=O.objectKeys(t).filter(i=>r.indexOf(i)!==-1),a={...t,...e};for(const i of o){const c=gt(t[i],e[i]);if(!c.valid)return{valid:!1};a[i]=c.data}return{valid:!0,data:a}}else if(n===m.array&&s===m.array){if(t.length!==e.length)return{valid:!1};const r=[];for(let o=0;o<t.length;o++){const a=t[o],i=e[o],c=gt(a,i);if(!c.valid)return{valid:!1};r.push(c.data)}return{valid:!0,data:r}}else return n===m.date&&s===m.date&&+t==+e?{valid:!0,data:t}:{valid:!1}}class Ke extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e),r=(o,a)=>{if(It(o)||It(a))return x;const i=gt(o.value,a.value);return i.valid?((Dt(o)||Dt(a))&&n.dirty(),{status:n.value,value:i.data}):(g(s,{code:h.invalid_intersection_types}),x)};return s.common.async?Promise.all([this._def.left._parseAsync({data:s.data,path:s.path,parent:s}),this._def.right._parseAsync({data:s.data,path:s.path,parent:s})]).then(([o,a])=>r(o,a)):r(this._def.left._parseSync({data:s.data,path:s.path,parent:s}),this._def.right._parseSync({data:s.data,path:s.path,parent:s}))}}Ke.create=(t,e,n)=>new Ke({left:t,right:e,typeName:w.ZodIntersection,...E(n)});class pe extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.array)return g(s,{code:h.invalid_type,expected:m.array,received:s.parsedType}),x;if(s.data.length<this._def.items.length)return g(s,{code:h.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),x;!this._def.rest&&s.data.length>this._def.items.length&&(g(s,{code:h.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:"array"}),n.dirty());const o=[...s.data].map((a,i)=>{const c=this._def.items[i]||this._def.rest;return c?c._parse(new re(s,a,s.path,i)):null}).filter(a=>!!a);return s.common.async?Promise.all(o).then(a=>z.mergeArray(n,a)):z.mergeArray(n,o)}get items(){return this._def.items}rest(e){return new pe({...this._def,rest:e})}}pe.create=(t,e)=>{if(!Array.isArray(t))throw new Error("You must pass an array of schemas to z.tuple([ ... ])");return new pe({items:t,typeName:w.ZodTuple,rest:null,...E(e)})};class Ye extends T{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.object)return g(s,{code:h.invalid_type,expected:m.object,received:s.parsedType}),x;const r=[],o=this._def.keyType,a=this._def.valueType;for(const i in s.data)r.push({key:o._parse(new re(s,i,s.path,i)),value:a._parse(new re(s,s.data[i],s.path,i)),alwaysSet:i in s.data});return s.common.async?z.mergeObjectAsync(n,r):z.mergeObjectSync(n,r)}get element(){return this._def.valueType}static create(e,n,s){return n instanceof T?new Ye({keyType:e,valueType:n,typeName:w.ZodRecord,...E(s)}):new Ye({keyType:ie.create(),valueType:e,typeName:w.ZodRecord,...E(n)})}}class zt extends T{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.map)return g(s,{code:h.invalid_type,expected:m.map,received:s.parsedType}),x;const r=this._def.keyType,o=this._def.valueType,a=[...s.data.entries()].map(([i,c],u)=>({key:r._parse(new re(s,i,s.path,[u,"key"])),value:o._parse(new re(s,c,s.path,[u,"value"]))}));if(s.common.async){const i=new Map;return Promise.resolve().then(async()=>{for(const c of a){const u=await c.key,v=await c.value;if(u.status==="aborted"||v.status==="aborted")return x;(u.status==="dirty"||v.status==="dirty")&&n.dirty(),i.set(u.value,v.value)}return{status:n.value,value:i}})}else{const i=new Map;for(const c of a){const u=c.key,v=c.value;if(u.status==="aborted"||v.status==="aborted")return x;(u.status==="dirty"||v.status==="dirty")&&n.dirty(),i.set(u.value,v.value)}return{status:n.value,value:i}}}}zt.create=(t,e,n)=>new zt({valueType:e,keyType:t,typeName:w.ZodMap,...E(n)});class Le extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.parsedType!==m.set)return g(s,{code:h.invalid_type,expected:m.set,received:s.parsedType}),x;const r=this._def;r.minSize!==null&&s.data.size<r.minSize.value&&(g(s,{code:h.too_small,minimum:r.minSize.value,type:"set",inclusive:!0,exact:!1,message:r.minSize.message}),n.dirty()),r.maxSize!==null&&s.data.size>r.maxSize.value&&(g(s,{code:h.too_big,maximum:r.maxSize.value,type:"set",inclusive:!0,exact:!1,message:r.maxSize.message}),n.dirty());const o=this._def.valueType;function a(c){const u=new Set;for(const v of c){if(v.status==="aborted")return x;v.status==="dirty"&&n.dirty(),u.add(v.value)}return{status:n.value,value:u}}const i=[...s.data.values()].map((c,u)=>o._parse(new re(s,c,s.path,u)));return s.common.async?Promise.all(i).then(c=>a(c)):a(i)}min(e,n){return new Le({...this._def,minSize:{value:e,message:b.toString(n)}})}max(e,n){return new Le({...this._def,maxSize:{value:e,message:b.toString(n)}})}size(e,n){return this.min(e,n).max(e,n)}nonempty(e){return this.min(1,e)}}Le.create=(t,e)=>new Le({valueType:t,minSize:null,maxSize:null,typeName:w.ZodSet,...E(e)});class Ft extends T{get schema(){return this._def.getter()}_parse(e){const{ctx:n}=this._processInputParams(e);return this._def.getter()._parse({data:n.data,path:n.path,parent:n})}}Ft.create=(t,e)=>new Ft({getter:t,typeName:w.ZodLazy,...E(e)});class yt extends T{_parse(e){if(e.data!==this._def.value){const n=this._getOrReturnCtx(e);return g(n,{received:n.data,code:h.invalid_literal,expected:this._def.value}),x}return{status:"valid",value:e.data}}get value(){return this._def.value}}yt.create=(t,e)=>new yt({value:t,typeName:w.ZodLiteral,...E(e)});function gn(t,e){return new we({values:t,typeName:w.ZodEnum,...E(e)})}class we extends T{_parse(e){if(typeof e.data!="string"){const n=this._getOrReturnCtx(e),s=this._def.values;return g(n,{expected:O.joinValues(s),received:n.parsedType,code:h.invalid_type}),x}if(this._cache||(this._cache=new Set(this._def.values)),!this._cache.has(e.data)){const n=this._getOrReturnCtx(e),s=this._def.values;return g(n,{received:n.data,code:h.invalid_enum_value,options:s}),x}return J(e.data)}get options(){return this._def.values}get enum(){const e={};for(const n of this._def.values)e[n]=n;return e}get Values(){const e={};for(const n of this._def.values)e[n]=n;return e}get Enum(){const e={};for(const n of this._def.values)e[n]=n;return e}extract(e,n=this._def){return we.create(e,{...this._def,...n})}exclude(e,n=this._def){return we.create(this.options.filter(s=>!e.includes(s)),{...this._def,...n})}}we.create=gn;class Bt extends T{_parse(e){const n=O.getValidEnumValues(this._def.values),s=this._getOrReturnCtx(e);if(s.parsedType!==m.string&&s.parsedType!==m.number){const r=O.objectValues(n);return g(s,{expected:O.joinValues(r),received:s.parsedType,code:h.invalid_type}),x}if(this._cache||(this._cache=new Set(O.getValidEnumValues(this._def.values))),!this._cache.has(e.data)){const r=O.objectValues(n);return g(s,{received:s.data,code:h.invalid_enum_value,options:r}),x}return J(e.data)}get enum(){return this._def.values}}Bt.create=(t,e)=>new Bt({values:t,typeName:w.ZodNativeEnum,...E(e)});class Xe extends T{unwrap(){return this._def.type}_parse(e){const{ctx:n}=this._processInputParams(e);if(n.parsedType!==m.promise&&n.common.async===!1)return g(n,{code:h.invalid_type,expected:m.promise,received:n.parsedType}),x;const s=n.parsedType===m.promise?n.data:Promise.resolve(n.data);return J(s.then(r=>this._def.type.parseAsync(r,{path:n.path,errorMap:n.common.contextualErrorMap})))}}Xe.create=(t,e)=>new Xe({type:t,typeName:w.ZodPromise,...E(e)});class xe extends T{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===w.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){const{status:n,ctx:s}=this._processInputParams(e),r=this._def.effect||null,o={addIssue:a=>{g(s,a),a.fatal?n.abort():n.dirty()},get path(){return s.path}};if(o.addIssue=o.addIssue.bind(o),r.type==="preprocess"){const a=r.transform(s.data,o);if(s.common.async)return Promise.resolve(a).then(async i=>{if(n.value==="aborted")return x;const c=await this._def.schema._parseAsync({data:i,path:s.path,parent:s});return c.status==="aborted"?x:c.status==="dirty"||n.value==="dirty"?Oe(c.value):c});{if(n.value==="aborted")return x;const i=this._def.schema._parseSync({data:a,path:s.path,parent:s});return i.status==="aborted"?x:i.status==="dirty"||n.value==="dirty"?Oe(i.value):i}}if(r.type==="refinement"){const a=i=>{const c=r.refinement(i,o);if(s.common.async)return Promise.resolve(c);if(c instanceof Promise)throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead.");return i};if(s.common.async===!1){const i=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});return i.status==="aborted"?x:(i.status==="dirty"&&n.dirty(),a(i.value),{status:n.value,value:i.value})}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(i=>i.status==="aborted"?x:(i.status==="dirty"&&n.dirty(),a(i.value).then(()=>({status:n.value,value:i.value}))))}if(r.type==="transform")if(s.common.async===!1){const a=this._def.schema._parseSync({data:s.data,path:s.path,parent:s});if(!ke(a))return x;const i=r.transform(a.value,o);if(i instanceof Promise)throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.");return{status:n.value,value:i}}else return this._def.schema._parseAsync({data:s.data,path:s.path,parent:s}).then(a=>ke(a)?Promise.resolve(r.transform(a.value,o)).then(i=>({status:n.value,value:i})):x);O.assertNever(r)}}xe.create=(t,e,n)=>new xe({schema:t,typeName:w.ZodEffects,effect:e,...E(n)});xe.createWithPreprocess=(t,e,n)=>new xe({schema:e,effect:{type:"preprocess",transform:t},typeName:w.ZodEffects,...E(n)});class le extends T{_parse(e){return this._getType(e)===m.undefined?J(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}le.create=(t,e)=>new le({innerType:t,typeName:w.ZodOptional,...E(e)});class Se extends T{_parse(e){return this._getType(e)===m.null?J(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}}Se.create=(t,e)=>new Se({innerType:t,typeName:w.ZodNullable,...E(e)});class mt extends T{_parse(e){const{ctx:n}=this._processInputParams(e);let s=n.data;return n.parsedType===m.undefined&&(s=this._def.defaultValue()),this._def.innerType._parse({data:s,path:n.path,parent:n})}removeDefault(){return this._def.innerType}}mt.create=(t,e)=>new mt({innerType:t,typeName:w.ZodDefault,defaultValue:typeof e.default=="function"?e.default:()=>e.default,...E(e)});class bt extends T{_parse(e){const{ctx:n}=this._processInputParams(e),s={...n,common:{...n.common,issues:[]}},r=this._def.innerType._parse({data:s.data,path:s.path,parent:{...s}});return Fe(r)?r.then(o=>({status:"valid",value:o.status==="valid"?o.value:this._def.catchValue({get error(){return new ce(s.common.issues)},input:s.data})})):{status:"valid",value:r.status==="valid"?r.value:this._def.catchValue({get error(){return new ce(s.common.issues)},input:s.data})}}removeCatch(){return this._def.innerType}}bt.create=(t,e)=>new bt({innerType:t,typeName:w.ZodCatch,catchValue:typeof e.catch=="function"?e.catch:()=>e.catch,...E(e)});class Ht extends T{_parse(e){if(this._getType(e)!==m.nan){const s=this._getOrReturnCtx(e);return g(s,{code:h.invalid_type,expected:m.nan,received:s.parsedType}),x}return{status:"valid",value:e.data}}}Ht.create=t=>new Ht({typeName:w.ZodNaN,...E(t)});class Gs extends T{_parse(e){const{ctx:n}=this._processInputParams(e),s=n.data;return this._def.type._parse({data:s,path:n.path,parent:n})}unwrap(){return this._def.type}}class Et extends T{_parse(e){const{status:n,ctx:s}=this._processInputParams(e);if(s.common.async)return(async()=>{const o=await this._def.in._parseAsync({data:s.data,path:s.path,parent:s});return o.status==="aborted"?x:o.status==="dirty"?(n.dirty(),Oe(o.value)):this._def.out._parseAsync({data:o.value,path:s.path,parent:s})})();{const r=this._def.in._parseSync({data:s.data,path:s.path,parent:s});return r.status==="aborted"?x:r.status==="dirty"?(n.dirty(),{status:"dirty",value:r.value}):this._def.out._parseSync({data:r.value,path:s.path,parent:s})}}static create(e,n){return new Et({in:e,out:n,typeName:w.ZodPipeline})}}class vt extends T{_parse(e){const n=this._def.innerType._parse(e),s=r=>(ke(r)&&(r.value=Object.freeze(r.value)),r);return Fe(n)?n.then(r=>s(r)):s(n)}unwrap(){return this._def.innerType}}vt.create=(t,e)=>new vt({innerType:t,typeName:w.ZodReadonly,...E(e)});function Kt(t,e){const n=typeof t=="function"?t(e):typeof t=="string"?{message:t}:t;return typeof n=="string"?{message:n}:n}function Ws(t,e={},n){return t?je.create().superRefine((s,r)=>{const o=t(s);if(o instanceof Promise)return o.then(a=>{if(!a){const i=Kt(e,s),c=i.fatal??n??!0;r.addIssue({code:"custom",...i,fatal:c})}});if(!o){const a=Kt(e,s),i=a.fatal??n??!0;r.addIssue({code:"custom",...a,fatal:i})}}):je.create()}var w;(function(t){t.ZodString="ZodString",t.ZodNumber="ZodNumber",t.ZodNaN="ZodNaN",t.ZodBigInt="ZodBigInt",t.ZodBoolean="ZodBoolean",t.ZodDate="ZodDate",t.ZodSymbol="ZodSymbol",t.ZodUndefined="ZodUndefined",t.ZodNull="ZodNull",t.ZodAny="ZodAny",t.ZodUnknown="ZodUnknown",t.ZodNever="ZodNever",t.ZodVoid="ZodVoid",t.ZodArray="ZodArray",t.ZodObject="ZodObject",t.ZodUnion="ZodUnion",t.ZodDiscriminatedUnion="ZodDiscriminatedUnion",t.ZodIntersection="ZodIntersection",t.ZodTuple="ZodTuple",t.ZodRecord="ZodRecord",t.ZodMap="ZodMap",t.ZodSet="ZodSet",t.ZodFunction="ZodFunction",t.ZodLazy="ZodLazy",t.ZodLiteral="ZodLiteral",t.ZodEnum="ZodEnum",t.ZodEffects="ZodEffects",t.ZodNativeEnum="ZodNativeEnum",t.ZodOptional="ZodOptional",t.ZodNullable="ZodNullable",t.ZodDefault="ZodDefault",t.ZodCatch="ZodCatch",t.ZodPromise="ZodPromise",t.ZodBranded="ZodBranded",t.ZodPipeline="ZodPipeline",t.ZodReadonly="ZodReadonly"})(w||(w={}));const qs=(t,e={message:`Input not instance of ${t.name}`})=>Ws(n=>n instanceof t,e),D=ie.create,ee=_e.create,kt=pt.create;je.create;de.create;const W=se.create,L=I.create,yn=He.create;Ke.create;pe.create;const mn=Ye.create,Us=yt.create,Ze=we.create;Xe.create;le.create;Se.create;const Vs={network:{failures:"network.failure",latencies:"network.latency",aborts:"network.abort",corruptions:"network.corruption",cors:"network.cors"},ui:{assaults:"ui.assault"},websocket:{drops:"websocket.drop",delays:"websocket.delay",corruptions:"websocket.corrupt",closes:"websocket.close"},sse:{drops:"sse.drop",delays:"sse.delay",corruptions:"sse.corrupt",closes:"sse.close"}};function zs(t){if(t.length===0)return"top-level";const e=t[0];if(e==="groups")return"group";if(e==="presets"||e==="customPresets")return"preset";if(typeof e=="string"){const n=Vs[e];if(n&&typeof t[1]=="string"){const s=n[t[1]];if(s)return s}}return"top-level"}function Fs(t){let e="";for(const n of t)typeof n=="number"?e+=`[${n}]`:e+=e.length===0?n:`.${n}`;return e}function Yt(t,e=80){return t.length<=e?t:`${t.slice(0,e-1)}…`}function Bs(t){try{return t===void 0?"undefined":JSON.stringify(t)??String(t)}catch{return"<unserializable>"}}function Hs(t){switch(t.code){case h.unrecognized_keys:return"unknown_field";case h.invalid_type:return t.received==="undefined"?"missing_field":"invalid_type";case h.too_small:return"value_too_small";case h.too_big:return"value_too_large";case h.invalid_enum_value:return"invalid_enum";case h.invalid_string:return"invalid_string";case h.invalid_union:case h.invalid_union_discriminator:return"invalid_type";case h.custom:{const e=t.message.toLowerCase();return e.includes("mutually exclusive")||e.includes("only one of")?"mutually_exclusive":e.includes("duplicate")?"duplicate":e.includes("regexp")||e.includes("flag")?"invalid_regex":"custom"}default:return"custom"}}function Ks(t){switch(t.code){case h.invalid_type:return t.expected;case h.too_small:return t.type==="number"?`>= ${t.minimum}`:t.type==="string"?`length >= ${t.minimum}`:t.type==="array"?`length >= ${t.minimum}`:`>= ${t.minimum}`;case h.too_big:return t.type==="number"?`<= ${t.maximum}`:t.type==="string"?`length <= ${t.maximum}`:t.type==="array"?`length <= ${t.maximum}`:`<= ${t.maximum}`;case h.invalid_enum_value:return t.options.map(e=>JSON.stringify(e)).join("|");case h.unrecognized_keys:return"no extra keys";default:return}}function Ys(t){if(t.code===h.invalid_type)return t.received;if(t.code===h.invalid_enum_value)return Yt(Bs(t.received));if(t.code===h.unrecognized_keys)return Yt(t.keys.map(e=>JSON.stringify(e)).join(", "))}function bn(t){return{path:Fs(t.path),code:Hs(t),ruleType:zs(t.path),message:t.message,expected:Ks(t),received:Ys(t)}}function Xs(t){return[...t].sort((e,n)=>e.path<n.path?-1:e.path>n.path?1:e.code<n.code?-1:e.code>n.code?1:0)}function Qs(t,e={}){const n=e.maxIssues??50,s=t.slice(0,n),r=Math.max(0,t.length-n),o=s.map(a=>{let i=`[${a.ruleType}] ${a.path||"<root>"} (${a.code}): ${a.message}`;return a.expected!==void 0&&(i+=`, expected ${a.expected}`),a.received!==void 0&&(i+=`, received ${a.received}`),i});return r>0&&o.push(`... and ${r} more`),`Invalid ChaosConfig:
|
|
2
|
+
${o.map(a=>` - ${a}`).join(`
|
|
3
|
+
`)}`}class he extends Error{constructor(n){const s=Js(n)?n.map(o=>({path:"",code:"legacy",ruleType:"top-level",message:o})):n,r=Xs(s);super(Qs(r,{maxIssues:50}));R(this,"issues");this.name="ChaosConfigError",this.issues=r}get messages(){return this.issues.map(n=>`${n.path||"<root>"}: ${n.message}`)}}function Js(t){return t.length>0&&typeof t[0]=="string"}const Ie="default";class vn{constructor(){R(this,"groups",new Map);R(this,"gatedEmitted",new Set)}ensure(e,n){const s=this.groups.get(e);if(s)return n!=null&&n.explicit&&(s.explicit=!0),(n==null?void 0:n.enabled)!==void 0&&(s.enabled=n.enabled),s;const r={name:e,enabled:(n==null?void 0:n.enabled)??!0,explicit:(n==null?void 0:n.explicit)??!1};return this.groups.set(e,r),r}setEnabled(e,n){this.ensure(e).enabled=n,this.gatedEmitted.clear()}isActive(e){return this.ensure(e??Ie).enabled}shouldEmitGated(e){return this.gatedEmitted.has(e)?!1:(this.gatedEmitted.add(e),!0)}has(e){return this.groups.has(e)}remove(e,n,s){if(e===Ie)return!1;if(!(s!=null&&s.force)&&n.has(e))throw new Error(`[chaos-maker] Cannot remove group '${e}': still referenced by one or more rules. Pass { force: true } to override.`);const r=this.groups.delete(e);return r&&this.gatedEmitted.delete(e),r}list(){return[...this.groups.values()].map(e=>({...e}))}getSnapshot(){const e={};for(const n of this.groups.values())e[n.name]=n.enabled;return e}}function De(t){if(t===null||typeof t!="object")return t;if(t instanceof RegExp)return new RegExp(t.source,t.flags);if(Array.isArray(t))return t.map(n=>De(n));const e={};for(const[n,s]of Object.entries(t))e[n]=De(s);return e}function U(t,e){return e()<t}function te(t,e){const n=(e.get(t)??0)+1;return e.set(t,n),n}function ne(t,e){return t.onNth!==void 0?e===t.onNth:t.everyNth!==void 0?e%t.everyNth===0:t.afterN!==void 0?e>t.afterN:!0}function ge(t,e){return e==="*"?!0:t.includes(e)}function Nt(t,e){switch(e){case"truncate":return t.slice(0,Math.max(0,Math.floor(t.length/2)));case"malformed-json":return`${t}"}`;case"empty":return"";case"wrong-type":return"<html><body>Unexpected HTML</body></html>"}}function V(t,e,n,s){if(!e||e.isActive(t.group))return!0;const r=t.group??Ie;return e.shouldEmitGated(r)&&n&&n.emit({type:"rule-group:gated",timestamp:Date.now(),applied:!1,detail:{...s,groupName:r}}),n==null||n.debug("rule-skip-group",{...s,groupName:r},t),!1}function Xt(t,e){var s,r,o,a,i,c,u,v,A,$,F,X,q,p;const n=l=>{if(l)for(const f of l)e(f)};n((s=t.network)==null?void 0:s.failures),n((r=t.network)==null?void 0:r.latencies),n((o=t.network)==null?void 0:o.aborts),n((a=t.network)==null?void 0:a.corruptions),n((i=t.network)==null?void 0:i.cors),n((c=t.ui)==null?void 0:c.assaults),n((u=t.websocket)==null?void 0:u.drops),n((v=t.websocket)==null?void 0:v.delays),n((A=t.websocket)==null?void 0:A.corruptions),n(($=t.websocket)==null?void 0:$.closes),n((F=t.sse)==null?void 0:F.drops),n((X=t.sse)==null?void 0:X.delays),n((q=t.sse)==null?void 0:q.corruptions),n((p=t.sse)==null?void 0:p.closes)}const Q="*",Qe={network:{latencies:[{urlPattern:Q,delayMs:2e3,probability:1}]}},Re={network:{aborts:[{urlPattern:Q,probability:.05}],latencies:[{urlPattern:Q,delayMs:3e3,probability:.1}]}},Je={network:{cors:[{urlPattern:Q,probability:1}]}},et={network:{failures:[{urlPattern:"/api/",statusCode:500,probability:.1}],latencies:[{urlPattern:"/api/",delayMs:1e3,probability:.2}]}},Tt={ui:{assaults:[{selector:"button",action:"disable",probability:.2},{selector:"a",action:"hide",probability:.1}]}},tt={websocket:{drops:[{urlPattern:Q,direction:"both",probability:.1}],delays:[{urlPattern:Q,direction:"inbound",delayMs:500,probability:1}],corruptions:[{urlPattern:Q,direction:"inbound",strategy:"truncate",probability:.05}]}},nt={sse:{drops:[{urlPattern:Q,probability:.05}],delays:[{urlPattern:Q,delayMs:200,probability:1}],closes:[{urlPattern:Q,probability:.02,afterMs:2e3}]}},st={network:{latencies:[{urlPattern:Q,delayMs:1500,probability:1}],aborts:[{urlPattern:Q,probability:.02}]}},rt={network:{latencies:[{urlPattern:"/checkout",delayMs:800,probability:.3}],failures:[{urlPattern:"/checkout",statusCode:503,probability:.05},{urlPattern:"/api/payments",statusCode:500,probability:.1}]}};function kn(t){if(t&&typeof t=="object"&&!Object.isFrozen(t)){Object.freeze(t);for(const e of Object.values(t))kn(e)}return t}[Qe,Re,Je,et,Tt,tt,nt,st,rt].forEach(kn);const _n=Object.freeze([{name:"unstableApi",config:et},{name:"slowNetwork",config:Qe},{name:"offlineMode",config:Je},{name:"flakyConnection",config:Re},{name:"degradedUi",config:Tt},{name:"unreliableWebSocket",config:tt},{name:"unreliableEventStream",config:nt},{name:"mobileThreeG",config:st},{name:"checkoutDegraded",config:rt},{name:"slow-api",config:Qe},{name:"flaky-api",config:Re},{name:"api-flaky",config:Re},{name:"offline-mode",config:Je},{name:"high-latency",config:et},{name:"websocket-instability",config:tt},{name:"realtime-lag",config:nt},{name:"mobile-3g",config:st},{name:"checkout-degraded",config:rt}].map(t=>Object.freeze(t)));function lt(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] preset name cannot be empty");return e}class wn{constructor(e=_n){R(this,"map",new Map);for(const n of e)this.register(n)}register(e){const n=lt(e.name);if(this.map.has(n))throw new Error(`[chaos-maker] preset '${n}' already registered`);this.map.set(n,e.config)}registerAll(e){if(e)for(const[n,s]of Object.entries(e))this.register({name:n,config:s})}has(e){return this.map.has(lt(e))}get(e){const n=lt(e),s=this.map.get(n);if(!s)throw new Error(`[chaos-maker] preset '${n}' is not registered. Known: ${this.list().join(", ")}`);return s}list(){return[...this.map.keys()]}}function Qt(t,e){var n,s,r;for(const o of["network","ui","websocket","sse"]){const a=e[o];if(!a)continue;const i=t[o]??(t[o]={});for(const[c,u]of Object.entries(a)){if(!Array.isArray(u)){let v;try{const A=u===null?"null":((n=u==null?void 0:u.constructor)==null?void 0:n.name)??typeof u,$=((s=JSON.stringify(u))==null?void 0:s.slice(0,80))??"<unserializable>";v=`${A} ${$}`}catch{v=`${typeof u} <unserializable>`}throw new Error(`[chaos-maker] internal: preset slice category '${o}.${c}' must be an array (got ${v}). Update appendSlice when adding non-array category fields.`)}(i[c]??(i[c]=[])).push(...u)}}(r=e.groups)!=null&&r.length&&(t.groups??(t.groups=[])).push(...e.groups)}function xn(t,e){const n=new Set,s=new Set,r=[];for(const i of t.presets??[]){const c=i.trim();if(!c||n.has(c))continue;n.add(c);const u=e.get(c);s.has(u)||(s.add(u),r.push(u))}const o={};for(const i of r)Qt(o,De(i));const a=De(t);return delete a.presets,delete a.customPresets,a.seed!==void 0&&(o.seed=a.seed),a.debug!==void 0&&(o.debug=a.debug),Qt(o,a),o}const er=Object.freeze({unstableApi:et,slowNetwork:Qe,offlineMode:Je,flakyConnection:Re,degradedUi:Tt,unreliableWebSocket:tt,unreliableEventStream:nt,mobileThreeG:st,checkoutDegraded:rt}),Jt=new Map;function tr(t,e){if(Jt.size===0)return;const n=t;for(const[s,r]of Jt){if(n[s]===void 0)continue;const o={path:s,code:"deprecated",ruleType:"top-level",message:r.message};e&&e(o);try{console.warn(`[chaos-maker] deprecated: ${s} — ${r.message}`)}catch{}}}const Ge=["urlPattern","methods","graphqlOperation","probability","onNth","everyNth","afterN","group"],nr=new Set([...Ge,"statusCode","body","statusText","headers"]),sr=new Set([...Ge,"delayMs"]),rr=new Set([...Ge,"timeout"]),or=new Set([...Ge,"strategy"]),ar=new Set(Ge),ir=new Set(["selector","action","probability","group"]),cr=new Set(["urlPattern","direction","probability","onNth","everyNth","afterN","group"]),ur=new Set(["urlPattern","direction","delayMs","probability","onNth","everyNth","afterN","group"]),lr=new Set(["urlPattern","direction","strategy","probability","onNth","everyNth","afterN","group"]),dr=new Set(["urlPattern","code","reason","afterMs","probability","onNth","everyNth","afterN","group"]),fr=new Set(["urlPattern","eventType","probability","onNth","everyNth","afterN","group"]),hr=new Set(["urlPattern","eventType","delayMs","probability","onNth","everyNth","afterN","group"]),pr=new Set(["urlPattern","eventType","strategy","probability","onNth","everyNth","afterN","group"]),gr=new Set(["urlPattern","afterMs","probability","onNth","everyNth","afterN","group"]),Sn=new Set(["name","enabled"]),Cn={failures:nr,latencies:sr,aborts:rr,corruptions:or,cors:ar},En={assaults:ir},Nn={drops:cr,delays:ur,corruptions:lr,closes:dr},Tn={drops:fr,delays:hr,corruptions:pr,closes:gr},On=new Set(["network","ui","websocket","sse","groups","presets","customPresets","seed","debug","schemaVersion"]),it={network:new Set(Object.keys(Cn)),ui:new Set(Object.keys(En)),websocket:new Set(Object.keys(Nn)),sse:new Set(Object.keys(Tn))},fe={network:Cn,ui:En,websocket:Nn,sse:Tn};function Rn(t,e){const n={};if(!t||typeof t!="object")return n;const s=t;for(const r of Object.keys(s))e.has(r)&&(n[r]=s[r]);return n}function yr(t,e){return Array.isArray(t)?t.map(n=>Rn(n,e)):[]}function Mn(t,e,n){const s={};if(!t||typeof t!="object")return s;const r=t;for(const o of Object.keys(r)){if(!n.has(o))continue;const a=e[o];a&&(s[o]=yr(r[o],a))}return s}function An(t){return Array.isArray(t)?t.map(e=>Rn(e,Sn)):[]}function mr(t){const e={};if(!t||typeof t!="object")return e;const n=t;for(const s of Object.keys(fe))n[s]!==void 0&&(e[s]=Mn(n[s],fe[s],it[s]));return n.groups!==void 0&&(e.groups=An(n.groups)),e}function br(t){const e={};if(!t||typeof t!="object")return e;const n=t;for(const s of Object.keys(n))if(On.has(s))if(s in fe)e[s]=Mn(n[s],fe[s],it[s]);else if(s==="groups")e[s]=An(n[s]);else if(s==="customPresets"){const r=n[s];if(r&&typeof r=="object"){const o={};for(const[a,i]of Object.entries(r))o[a]=mr(i);e[s]=o}}else e[s]=n[s];return e}function vr(t){const e=[];return kr(t,"",e),e.sort()}function kr(t,e,n){if(!(!t||typeof t!="object")){const s=t;for(const r of Object.keys(s)){if(!On.has(r)){n.push(r);continue}r in fe?Pn(s[r],r,fe[r],it[r],n):r==="groups"?$n(s[r],"groups",n):r==="customPresets"&&_r(s[r],n)}}}function Pn(t,e,n,s,r){if(!t||typeof t!="object")return;const o=t;for(const a of Object.keys(o)){const i=`${e}.${a}`;if(!s.has(a)){r.push(i);continue}const c=n[a];c&&Array.isArray(o[a])&&o[a].forEach((u,v)=>{if(!u||typeof u!="object")return;const A=u;for(const $ of Object.keys(A))c.has($)||r.push(`${i}[${v}].${$}`)})}}function $n(t,e,n){Array.isArray(t)&&t.forEach((s,r)=>{if(!s||typeof s!="object")return;const o=s;for(const a of Object.keys(o))Sn.has(a)||n.push(`${e}[${r}].${a}`)})}function _r(t,e){if(!(!t||typeof t!="object"))for(const[n,s]of Object.entries(t)){if(!s||typeof s!="object")continue;const r=s;for(const o of Object.keys(r)){if(o==="groups"){$n(r[o],`customPresets.${n}.groups`,e);continue}if(!(o in fe)){e.push(`customPresets.${n}.${o}`);continue}Pn(r[o],`customPresets.${n}.${o}`,fe[o],it[o],e)}}}function j(t,e){return e==="strict"?t.strict():t.passthrough()}const B=ee().min(0,"Probability must be >= 0").max(1,"Probability must be <= 1"),en=ee().int().min(1),K={onNth:en.optional(),everyNth:en.optional(),afterN:ee().int().min(0).optional()},H={group:D().trim().min(1,"group must not be empty").optional()},wr=t=>[t.onNth,t.everyNth,t.afterN].filter(e=>e!==void 0).length<=1,Y=[wr,{message:"Only one of onNth, everyNth, or afterN may be set on a single rule"}],xr=yn([D().min(1,"graphqlOperation must not be empty"),qs(RegExp).refine(t=>!t.global&&!t.sticky,{message:"graphqlOperation RegExp must not use global (g) or sticky (y) flags due to lastIndex mutation"})]),We={urlPattern:D().min(1,"urlPattern must not be empty"),methods:W(D()).optional(),graphqlOperation:xr.optional()},jn=t=>j(L({...We,statusCode:ee().int().min(100).max(599),probability:B,body:D().optional(),statusText:D().optional(),headers:mn(D()).optional(),...K,...H}),t).refine(...Y),Ln=t=>j(L({...We,delayMs:ee().min(0,"delayMs must be >= 0"),probability:B,...K,...H}),t).refine(...Y),In=t=>j(L({...We,probability:B,timeout:ee().min(0,"timeout must be >= 0").optional(),...K,...H}),t).refine(...Y),Dn=t=>j(L({...We,probability:B,strategy:Ze(["truncate","malformed-json","empty","wrong-type"]),...K,...H}),t).refine(...Y),Zn=t=>j(L({...We,probability:B,...K,...H}),t).refine(...Y),Sr=t=>j(L({failures:W(jn(t)).optional(),latencies:W(Ln(t)).optional(),aborts:W(In(t)).optional(),corruptions:W(Dn(t)).optional(),cors:W(Zn(t)).optional()}),t),Gn=t=>j(L({selector:D().min(1,"selector must not be empty"),action:Ze(["disable","hide","remove"]),probability:B,...H}),t),Cr=t=>j(L({assaults:W(Gn(t)).optional()}),t),Ot=Ze(["inbound","outbound","both"]),Wn=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),direction:Ot,probability:B,...K,...H}),t).refine(...Y),qn=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),direction:Ot,delayMs:ee().min(0,"delayMs must be >= 0"),probability:B,...K,...H}),t).refine(...Y),Un=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),direction:Ot,strategy:Ze(["truncate","malformed-json","empty","wrong-type"]),probability:B,...K,...H}),t).refine(...Y),Er=ee().int().refine(t=>t===1e3||t>=3e3&&t<=4999,{message:"code must be 1000 or in the range 3000-4999"}),Nr=D().refine(t=>new TextEncoder().encode(t).length<=123,{message:"reason must be <= 123 UTF-8 bytes"}),Vn=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),code:Er.optional(),reason:Nr.optional(),afterMs:ee().min(0,"afterMs must be >= 0").optional(),probability:B,...K,...H}),t).refine(...Y),Tr=t=>j(L({drops:W(Wn(t)).optional(),delays:W(qn(t)).optional(),corruptions:W(Un(t)).optional(),closes:W(Vn(t)).optional()}),t),Rt=D().min(1,"eventType must not be empty"),zn=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),eventType:Rt.optional(),probability:B,...K,...H}),t).refine(...Y),Fn=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),eventType:Rt.optional(),delayMs:ee().min(0,"delayMs must be >= 0"),probability:B,...K,...H}),t).refine(...Y),Bn=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),eventType:Rt.optional(),strategy:Ze(["truncate","malformed-json","empty","wrong-type"]),probability:B,...K,...H}),t).refine(...Y),Hn=t=>j(L({urlPattern:D().min(1,"urlPattern must not be empty"),afterMs:ee().min(0,"afterMs must be >= 0").optional(),probability:B,...K,...H}),t).refine(...Y),Or=t=>j(L({drops:W(zn(t)).optional(),delays:W(Fn(t)).optional(),corruptions:W(Bn(t)).optional(),closes:W(Hn(t)).optional()}),t),Kn=t=>j(L({name:D().trim().min(1,"group name must not be empty"),enabled:kt().optional()}),t),Rr=t=>W(Kn(t)).superRefine((e,n)=>{const s=new Set;for(const[r,o]of e.entries()){const a=o.name.trim();if(s.has(a)){n.addIssue({code:h.custom,message:"duplicate group name after normalization",path:[r,"name"]});continue}s.add(a)}}),Mr=t=>yn([kt(),j(L({enabled:kt()}),t)]),_t=t=>j(L({network:Sr(t).optional(),ui:Cr(t).optional(),websocket:Tr(t).optional(),sse:Or(t).optional(),groups:Rr(t).optional()}),t),Yn=D().trim().min(1,"preset name must not be empty"),Ar=W(Yn).transform(t=>{const e=new Set,n=[];for(const s of t){const r=s.trim();e.has(r)||(e.add(r),n.push(r))}return n}),Xn=t=>j(_t(t).extend({presets:Ar.optional(),customPresets:mn(Yn,_t(t)).optional(),seed:ee().int("Seed must be an integer").optional(),debug:Mr(t).optional(),schemaVersion:Us(1).optional()}),t),Mt=Xn("strict"),Qn=Xn("passthrough");_t("strict");jn("strict"),Ln("strict"),In("strict"),Dn("strict"),Zn("strict"),Gn("strict"),Wn("strict"),qn("strict"),Un("strict"),Vn("strict"),zn("strict"),Fn("strict"),Bn("strict"),Hn("strict"),Kn("strict");const Pr={network:{failures:"network.failure",latencies:"network.latency",aborts:"network.abort",corruptions:"network.corruption",cors:"network.cors"},ui:{assaults:"ui.assault"},websocket:{drops:"websocket.drop",delays:"websocket.delay",corruptions:"websocket.corrupt",closes:"websocket.close"},sse:{drops:"sse.drop",delays:"sse.delay",corruptions:"sse.corrupt",closes:"sse.close"}},Jn=Symbol.for("chaos-maker.validated"),wt=1;function $r(t,e){return!t||typeof t!="object"?!1:t[Jn]===e}function jr(t,e){return Object.defineProperty(t,Jn,{value:e,enumerable:!1,writable:!1,configurable:!1}),t}function es(t){const e=Mt.safeParse(t);if(!e.success)throw new he(e.error.issues.map(bn));return e.data}function ts(t,e={}){const n=e.unknownFields??"reject",r=(n==="reject"?Mt:Qn).safeParse(t);if(!r.success)throw new he(r.error.issues.map(bn));let o=r.data;if(n==="warn"||n==="ignore"){if(n==="warn"){const i=vr(t);if(i.length>0)try{console.warn(`[chaos-maker] unknown config fields ignored: ${i.join(", ")}`)}catch{}}o=br(o)}let a;try{const i=new wn;i.registerAll(o.customPresets),a=xn(o,i)}catch(i){if(i instanceof he)throw i;const c=i.message;let u="custom";throw c.includes("not registered")?u="unknown_preset":c.includes("already registered")&&(u="preset_collision"),new he([{path:"presets",code:u,ruleType:"preset",message:c}])}return es(a)}function Lr(t,e){const n=[],s=(r,o,a)=>{const i=e[r];if(!i)return;let c;try{c=i(o,{ruleType:r,path:a})}catch(u){n.push({path:a,code:"custom",ruleType:r,message:`customValidator threw: ${u.message}`});return}Array.isArray(c)&&n.push(...c)};for(const[r,o]of Object.entries(Pr)){const a=t[r];if(a)for(const[i,c]of Object.entries(o)){if(!c)continue;const u=a[i];Array.isArray(u)&&u.forEach((v,A)=>{s(c,v,`${r}.${i}[${A}]`)})}}return Array.isArray(t.groups)&&t.groups.forEach((r,o)=>{s("group",r,`groups[${o}]`)}),e["top-level"]&&s("top-level",t,""),n}function At(t,e={}){if(typeof t=="object"&&t!==null){const r=t.schemaVersion;if(r!==void 0&&r!==1)throw new he([{path:"schemaVersion",code:"unknown_schema_version",ruleType:"top-level",message:`unsupported schemaVersion: ${JSON.stringify(r)} (this build supports 1)`,expected:"1",received:JSON.stringify(r)}])}if(!e.unknownFields&&!e.onDeprecation&&!e.customValidators&&$r(t,wt))return t;const s=ts(t,{unknownFields:e.unknownFields});if(tr(s,e.onDeprecation),e.customValidators){const r=Lr(s,e.customValidators);if(r.length>0)throw new he(r)}return jr(s,wt)}function Ir(t){let e=t|0;return()=>{e=e+1831565813|0;let n=Math.imul(e^e>>>15,1|e);return n=n+Math.imul(n^n>>>7,61|n)^n,((n^n>>>14)>>>0)/4294967296}}function ns(){return Math.random()*4294967296>>>0}function ss(t){const e=t??ns();return{random:Ir(e),seed:e}}class rs{constructor(e=2e3){R(this,"listeners",new Map);R(this,"log",[]);R(this,"logger");R(this,"ruleIds");this.maxLogEntries=e}on(e,n){this.listeners.has(e)||this.listeners.set(e,new Set),this.listeners.get(e).add(n)}off(e,n){var s;(s=this.listeners.get(e))==null||s.delete(n)}emit(e){this.log.push(e),this.log.length>this.maxLogEntries&&this.log.shift(),this.notify(this.listeners.get(e.type),e),this.notify(this.listeners.get("*"),e)}setLogger(e){this.logger=e}setRuleIds(e){this.ruleIds=e}debug(e,n,s){var i;if(!this.logger)return;const r=s?(i=this.ruleIds)==null?void 0:i.get(s):void 0,o=r?{...n,ruleType:r.ruleType,ruleId:r.ruleId}:n,a=this.logger.log(e,o);a&&this.emit(a)}getLog(){return[...this.log]}clearLog(){this.log=[]}notify(e,n){if(e)for(const s of e)try{s(n)}catch{}}}function Pt(t){const e=t.replace(/#[^\r\n]*/g," "),n=/\b(?:query|mutation|subscription)\s+([A-Za-z_][A-Za-z0-9_]*)/.exec(e);return(n==null?void 0:n[1])??null}function Dr(t){try{return JSON.parse(t)}catch{return}}function os(t){if(!t||typeof t!="object")return{isGraphQL:!1,operationName:null};if(Array.isArray(t))return t.length===0?{isGraphQL:!1,operationName:null}:os(t[0]);const e=t,n=typeof e.query=="string",s=typeof e.operationName=="string";return!n&&!s?{isGraphQL:!1,operationName:null}:s&&e.operationName.length>0?{isGraphQL:!0,operationName:e.operationName}:n?{isGraphQL:!0,operationName:Pt(e.query)}:{isGraphQL:!0,operationName:null}}function Zr(t){let e;try{e=new URL(t,"http://_chaos-maker.invalid")}catch{return{kind:"not-graphql"}}const n=e.searchParams.get("operationName"),s=e.searchParams.get("query");return n&&n.length>0?{kind:"extracted",operationName:n}:s&&s.length>0?{kind:"extracted",operationName:Pt(s)}:{kind:"not-graphql"}}function $t(t,e,n,s){const r=t.toUpperCase();if(r==="POST"){if(n!==null){const o=Dr(n);if(o===void 0)return{kind:"not-graphql"};const{isGraphQL:a,operationName:i}=os(o);return a?{kind:"extracted",operationName:i}:{kind:"not-graphql"}}return s?{kind:"unparseable"}:{kind:"not-graphql"}}return r==="GET"?Zr(e):{kind:"not-graphql"}}function as(t,e){return e===null?!1:typeof t=="string"?t===e:((t.global||t.sticky)&&(t.lastIndex=0),t.test(e))}function jt(t,e){return t?e.kind==="not-graphql"?{kind:"no-match"}:e.kind==="unparseable"?{kind:"unparseable"}:as(t,e.operationName)?{kind:"match",operationName:e.operationName}:{kind:"no-match"}:e.kind==="extracted"?{kind:"skip-no-constraint",operationName:e.operationName}:{kind:"skip-no-constraint",operationName:null}}function ct(t){return typeof Request<"u"&&t instanceof Request}function Gr(t){return ct(t)?t.url:t.toString()}function Wr(t,e){return e!=null&&e.method?e.method.toUpperCase():ct(t)?t.method.toUpperCase():"GET"}function qr(t,e){if(e!=null&&e.signal)return e.signal;if(ct(t))return t.signal}function Ur(){if(typeof DOMException<"u")return new DOMException("The user aborted a request.","AbortError");const t=new Error("The user aborted a request.");return t.name="AbortError",t}function Vr(t,e){if(!e)return t;const n=new AbortController,s=i=>{a(),n.signal.aborted||n.abort(i.reason)},r=()=>s(t),o=()=>s(e),a=()=>{t.removeEventListener("abort",r),e.removeEventListener("abort",o)};return t.aborted?(s(t),n.signal):e.aborted?(s(e),n.signal):(t.addEventListener("abort",r,{once:!0}),e.addEventListener("abort",o,{once:!0}),n.signal)}function zr(t,e){return e?{...t??{},signal:e}:t}async function Fr(t,e){const n=e==null?void 0:e.body;if(n!=null){if(typeof n=="string")return{text:n,unparseable:!1};if(typeof URLSearchParams<"u"&&n instanceof URLSearchParams)return{text:n.toString(),unparseable:!1};if(typeof Blob<"u"&&n instanceof Blob){if(!(n.type===""||/json|text|graphql/i.test(n.type)))return{text:null,unparseable:!0};try{return{text:await n.text(),unparseable:!1}}catch{return{text:null,unparseable:!0}}}return{text:null,unparseable:!0}}if(ct(t)){if(t.body===null)return{text:null,unparseable:!1};try{return{text:await t.clone().text(),unparseable:!1}}catch{return{text:null,unparseable:!0}}}return{text:null,unparseable:!1}}function Ce(t,e,n,s,r){t==null||t.emit({type:e,timestamp:Date.now(),applied:!1,detail:{url:n,method:s,...r,reason:"graphql-body-unparseable"}})}function Ee(t,e,n,s){if(!ge(e,t.urlPattern))return{proceed:!1,outcome:null};if(t.methods&&!t.methods.includes(n))return{proceed:!1,outcome:null};const r=jt(t.graphqlOperation,s);return r.kind==="no-match"?{proceed:!1,outcome:r}:{proceed:!0,outcome:r}}function Me(t){return t?t.kind==="match"||t.kind==="skip-no-constraint"?t.operationName?{operationName:t.operationName}:{}:{}:{}}function tn(t,e,n,s,r,o){t==null||t.emit({type:"network:abort",timestamp:Date.now(),applied:r,detail:{url:n,method:s,timeoutMs:e.timeout,...Me(o)}})}function Ue(t,e,n,s,r,o){t==null||t.emit({type:"network:corruption",timestamp:Date.now(),applied:r,detail:{url:n,method:s,strategy:e.strategy,...Me(o)}})}function Br(t){return t.graphqlOperation!==void 0}function Hr(t,e,n,s,r=new Map,o){return async(a,i)=>{var S,C,N,Z,P;const c=Gr(a),u=Wr(a,i),v=qr(a,i),A=(()=>{const d=[e.failures,e.latencies,e.aborts,e.corruptions,e.cors];for(const M of d)if(M!=null&&M.some(Br))return!0;return!1})();let $={kind:"not-graphql"};if(A){const d=await Fr(a,i);$=$t(u,c,d.text,d.unparseable)}if(e.cors)for(const d of e.cors){s==null||s.debug("rule-evaluating",{url:c,method:u},d);const M=Ee(d,c,u,$);if(!M.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u},d);continue}s==null||s.debug("rule-matched",{url:c,method:u},d);const oe=te(d,r);if(!ne(d,oe)){s==null||s.debug("rule-skip-counting",{url:c,method:u},d);continue}if(!V(d,o,s,{url:c,method:u}))continue;const G=U(d.probability,n);if(((S=M.outcome)==null?void 0:S.kind)==="unparseable"){G&&Ce(s,"network:cors",c,u,{});continue}if(s==null||s.emit({type:"network:cors",timestamp:Date.now(),applied:G,detail:{url:c,method:u,...Me(M.outcome)}}),!G){s==null||s.debug("rule-skip-probability",{url:c,method:u},d);continue}s==null||s.debug("rule-applied",{url:c,method:u},d);const ae=new TypeError("Failed to fetch");throw ae.stack="",ae}let F=null,X=null,q,p,l=!1;const f=d=>{!F||l||(l=!0,p&&(clearTimeout(p),p=void 0),tn(s,F,c,u,d,X))};if(e.aborts)for(const d of e.aborts){s==null||s.debug("rule-evaluating",{url:c,method:u,timeoutMs:d.timeout},d);const M=Ee(d,c,u,$);if(!M.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,timeoutMs:d.timeout},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,timeoutMs:d.timeout},d);const oe=te(d,r);if(!ne(d,oe)){s==null||s.debug("rule-skip-counting",{url:c,method:u,timeoutMs:d.timeout},d);continue}if(!V(d,o,s,{url:c,method:u,timeoutMs:d.timeout}))continue;const G=U(d.probability,n);if(((C=M.outcome)==null?void 0:C.kind)==="unparseable"){G&&Ce(s,"network:abort",c,u,{timeoutMs:d.timeout});continue}if(!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,timeoutMs:d.timeout},d),tn(s,d,c,u,!1,M.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,timeoutMs:d.timeout},d),console.warn(`CHAOS: Aborting ${u} ${c} after ${d.timeout||0}ms`),F=d,X=M.outcome;const ae=new AbortController;q=Vr(ae.signal,v);const qe=()=>{l||(f(!0),ae.abort(Ur()))};d.timeout?p=setTimeout(qe,d.timeout):qe();break}if(F)try{const d=await t(a,zr(i,q));return f(!1),d}catch(d){throw f(!1),d}if(e.failures)for(const d of e.failures){s==null||s.debug("rule-evaluating",{url:c,method:u,statusCode:d.statusCode},d);const M=Ee(d,c,u,$);if(!M.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,statusCode:d.statusCode},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,statusCode:d.statusCode},d);const oe=te(d,r);if(!ne(d,oe)){s==null||s.debug("rule-skip-counting",{url:c,method:u,statusCode:d.statusCode},d);continue}if(!V(d,o,s,{url:c,method:u,statusCode:d.statusCode}))continue;const G=U(d.probability,n);if(((N=M.outcome)==null?void 0:N.kind)==="unparseable"){G&&Ce(s,"network:failure",c,u,{statusCode:d.statusCode});continue}if(s==null||s.emit({type:"network:failure",timestamp:Date.now(),applied:G,detail:{url:c,method:u,statusCode:d.statusCode,...Me(M.outcome)}}),!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,statusCode:d.statusCode},d);continue}s==null||s.debug("rule-applied",{url:c,method:u,statusCode:d.statusCode},d),console.warn(`CHAOS: Forcing ${d.statusCode} for ${u} ${c}`);const ae=d.body??JSON.stringify({error:"Chaos Maker Attack!"}),qe=d.headers??{};return new Response(ae,{status:d.statusCode,statusText:d.statusText??"Service Unavailable (Chaos)",headers:qe})}if(e.latencies)for(const d of e.latencies){s==null||s.debug("rule-evaluating",{url:c,method:u,delayMs:d.delayMs},d);const M=Ee(d,c,u,$);if(!M.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,delayMs:d.delayMs},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,delayMs:d.delayMs},d);const oe=te(d,r);if(!ne(d,oe)){s==null||s.debug("rule-skip-counting",{url:c,method:u,delayMs:d.delayMs},d);continue}if(!V(d,o,s,{url:c,method:u,delayMs:d.delayMs}))continue;const G=U(d.probability,n);if(((Z=M.outcome)==null?void 0:Z.kind)==="unparseable"){G&&Ce(s,"network:latency",c,u,{delayMs:d.delayMs});continue}if(s==null||s.emit({type:"network:latency",timestamp:Date.now(),applied:G,detail:{url:c,method:u,delayMs:d.delayMs,...Me(M.outcome)}}),!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,delayMs:d.delayMs},d);continue}s==null||s.debug("rule-applied",{url:c,method:u,delayMs:d.delayMs},d),console.warn(`CHAOS: Adding ${d.delayMs}ms latency to ${u} ${c}`),await new Promise(ae=>setTimeout(ae,d.delayMs))}let y=null,k=null;if(e.corruptions)for(const d of e.corruptions){s==null||s.debug("rule-evaluating",{url:c,method:u,strategy:d.strategy},d);const M=Ee(d,c,u,$);if(!M.proceed){s==null||s.debug("rule-skip-match",{url:c,method:u,strategy:d.strategy},d);continue}s==null||s.debug("rule-matched",{url:c,method:u,strategy:d.strategy},d);const oe=te(d,r);if(!ne(d,oe)){s==null||s.debug("rule-skip-counting",{url:c,method:u,strategy:d.strategy},d);continue}if(!V(d,o,s,{url:c,method:u,strategy:d.strategy}))continue;const G=U(d.probability,n);if(((P=M.outcome)==null?void 0:P.kind)==="unparseable"){G&&Ce(s,"network:corruption",c,u,{strategy:d.strategy});continue}if(!G){s==null||s.debug("rule-skip-probability",{url:c,method:u,strategy:d.strategy},d),Ue(s,d,c,u,!1,M.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,strategy:d.strategy},d),y=d,k=M.outcome;break}let _;try{_=await t(a,i)}catch(d){throw y&&Ue(s,y,c,u,!1,k),d}if(!y)return _;try{console.warn(`CHAOS: Corrupting response for ${u} ${c} with strategy: ${y.strategy}`);const d=await _.text(),M=Nt(d,y.strategy);return Ue(s,y,c,u,!0,k),new Response(M,{status:_.status,statusText:_.statusText,headers:_.headers})}catch(d){throw Ue(s,y,c,u,!1,k),d}}}function Kr(t){return t==null?{text:null,unparseable:!1}:typeof t=="string"?{text:t,unparseable:!1}:typeof URLSearchParams<"u"&&t instanceof URLSearchParams?{text:t.toString(),unparseable:!1}:{text:null,unparseable:!0}}function Yr(t){return t.graphqlOperation!==void 0}function Xr(t){const e=[t.failures,t.latencies,t.aborts,t.corruptions,t.cors];for(const n of e)if(n!=null&&n.some(Yr))return!0;return!1}function Ne(t,e,n,s,r){t==null||t.emit({type:e,timestamp:Date.now(),applied:!1,detail:{url:n,method:s,...r,reason:"graphql-body-unparseable"}})}function Ve(t,e,n,s,r){if(!ge(e,t.urlPattern))return{proceed:!1,outcome:null};if(t.methods&&!t.methods.includes(n))return{proceed:!1,outcome:null};const o=jt(t.graphqlOperation,s);if(o.kind==="no-match"||o.kind==="unparseable")return{proceed:!1,outcome:o};const a=te(t,r);return ne(t,a)?{proceed:!0,outcome:o}:{proceed:!1,outcome:o}}function Ae(t){return t?t.kind==="match"||t.kind==="skip-no-constraint"?t.operationName?{operationName:t.operationName}:{}:{}:{}}function nn(t,e,n,s,r,o){t==null||t.emit({type:"network:abort",timestamp:Date.now(),applied:r,detail:{url:n,method:s,timeoutMs:e.timeout,...Ae(o)}})}function sn(t,e,n,s,r,o){t==null||t.emit({type:"network:corruption",timestamp:Date.now(),applied:r,detail:{url:n,method:s,strategy:e.strategy,...Ae(o)}})}function Qr(t,e,n,s,r=new Map,o){const a=Xr(e);return function(i){var F,X,q,p;const c=this._chaos_url,u=this._chaos_method;let v={kind:"not-graphql"};if(a){const l=Kr(i);v=$t(u,c,l.text,l.unparseable)}if(e.cors)for(const l of e.cors){if(s==null||s.debug("rule-evaluating",{url:c,method:u},l),!ge(c,l.urlPattern)){s==null||s.debug("rule-skip-match",{url:c,method:u},l);continue}if(l.methods&&!l.methods.includes(u)){s==null||s.debug("rule-skip-match",{url:c,method:u},l);continue}const f=jt(l.graphqlOperation,v);if(f.kind==="no-match"){s==null||s.debug("rule-skip-match",{url:c,method:u},l);continue}if(f.kind==="unparseable"){Ne(s,"network:cors",c,u,{});continue}s==null||s.debug("rule-matched",{url:c,method:u},l);const y=te(l,r);if(!ne(l,y)){s==null||s.debug("rule-skip-counting",{url:c,method:u},l);continue}if(!V(l,o,s,{url:c,method:u}))continue;const k=U(l.probability,n);if(s==null||s.emit({type:"network:cors",timestamp:Date.now(),applied:k,detail:{url:c,method:u,...Ae(f)}}),!k){s==null||s.debug("rule-skip-probability",{url:c,method:u},l);continue}s==null||s.debug("rule-applied",{url:c,method:u},l),Object.defineProperty(this,"status",{value:0}),Object.defineProperty(this,"statusText",{value:""}),this.dispatchEvent(new Event("error")),this.dispatchEvent(new Event("loadend"));return}if(e.aborts)for(const l of e.aborts){s==null||s.debug("rule-evaluating",{url:c,method:u,timeoutMs:l.timeout},l);const f=Ve(l,c,u,v,r);if(!f.proceed){((F=f.outcome)==null?void 0:F.kind)==="unparseable"?Ne(s,"network:abort",c,u,{timeoutMs:l.timeout}):s==null||s.debug("rule-skip-match",{url:c,method:u,timeoutMs:l.timeout},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,timeoutMs:l.timeout},l),!V(l,o,s,{url:c,method:u,timeoutMs:l.timeout}))continue;if(!U(l.probability,n)){s==null||s.debug("rule-skip-probability",{url:c,method:u,timeoutMs:l.timeout},l),nn(s,l,c,u,!1,f.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,timeoutMs:l.timeout},l),console.warn(`CHAOS: Aborting ${u} ${c} after ${l.timeout||0}ms`);let k=!1,_;const S=()=>{_&&(clearTimeout(_),_=void 0),typeof this.removeEventListener=="function"&&this.removeEventListener("loadend",N)},C=P=>{k||(k=!0,S(),nn(s,l,c,u,P,f.outcome))},N=()=>{C(!1)},Z=()=>{k||(C(!0),this.abort())};typeof this.addEventListener=="function"&&this.addEventListener("loadend",N);try{t.call(this,i)}catch(P){throw C(!1),P}if(k)return;l.timeout?_=setTimeout(Z,l.timeout):Z();return}if(e.failures)for(const l of e.failures){s==null||s.debug("rule-evaluating",{url:c,method:u,statusCode:l.statusCode},l);const f=Ve(l,c,u,v,r);if(!f.proceed){((X=f.outcome)==null?void 0:X.kind)==="unparseable"?Ne(s,"network:failure",c,u,{statusCode:l.statusCode}):s==null||s.debug("rule-skip-match",{url:c,method:u,statusCode:l.statusCode},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,statusCode:l.statusCode},l),!V(l,o,s,{url:c,method:u,statusCode:l.statusCode}))continue;const y=U(l.probability,n);if(s==null||s.emit({type:"network:failure",timestamp:Date.now(),applied:y,detail:{url:c,method:u,statusCode:l.statusCode,...Ae(f.outcome)}}),!y){s==null||s.debug("rule-skip-probability",{url:c,method:u,statusCode:l.statusCode},l);continue}s==null||s.debug("rule-applied",{url:c,method:u,statusCode:l.statusCode},l),console.warn(`CHAOS: Forcing ${l.statusCode} for ${u} ${c}`),Object.defineProperty(this,"status",{value:l.statusCode}),Object.defineProperty(this,"statusText",{value:l.statusText??"Service Unavailable (Chaos)"});const k=l.body??JSON.stringify({error:"Chaos Maker Attack!"});Object.defineProperty(this,"responseText",{value:k,configurable:!0});const _=l.headers??{};Object.defineProperty(this,"getResponseHeader",{value:S=>{const C=Object.keys(_).find(N=>N.toLowerCase()===S.toLowerCase());return C?_[C]:null},configurable:!0}),Object.defineProperty(this,"getAllResponseHeaders",{value:()=>Object.entries(_).map(([S,C])=>`${S}: ${C}`).join(`\r
|
|
4
|
+
`),configurable:!0}),this.dispatchEvent(new Event("load")),this.dispatchEvent(new Event("loadend"));return}let A=null,$=null;if(e.corruptions)for(const l of e.corruptions){s==null||s.debug("rule-evaluating",{url:c,method:u,strategy:l.strategy},l);const f=Ve(l,c,u,v,r);if(!f.proceed){((q=f.outcome)==null?void 0:q.kind)==="unparseable"?Ne(s,"network:corruption",c,u,{strategy:l.strategy}):s==null||s.debug("rule-skip-match",{url:c,method:u,strategy:l.strategy},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,strategy:l.strategy},l),!V(l,o,s,{url:c,method:u,strategy:l.strategy}))continue;if(!U(l.probability,n)){s==null||s.debug("rule-skip-probability",{url:c,method:u,strategy:l.strategy},l),sn(s,l,c,u,!1,f.outcome);continue}s==null||s.debug("rule-applied",{url:c,method:u,strategy:l.strategy},l),A=l,$=f.outcome;break}if(A){let l=!1,f=null;const y=()=>{typeof this.removeEventListener=="function"&&(this.removeEventListener("error",S),this.removeEventListener("abort",S),this.removeEventListener("loadend",C))},k=N=>{l||(l=!0,sn(s,A,c,u,N,$),y())},_=()=>{if(f!==null)return f;delete this.responseText;try{const N=this.responseText;return typeof N!="string"?(Object.defineProperty(this,"responseText",{value:N,configurable:!0}),k(!1),N):(f=Nt(N,A.strategy),Object.defineProperty(this,"responseText",{value:f,configurable:!0}),k(!0),f)}catch(N){throw k(!1),N}},S=()=>{k(!1)},C=()=>{if(!l)try{_()}catch{}};typeof this.addEventListener=="function"&&(this.addEventListener("error",S),this.addEventListener("abort",S),this.addEventListener("loadend",C)),Object.defineProperty(this,"responseText",{get(){return _()},configurable:!0})}if(e.latencies)for(const l of e.latencies){s==null||s.debug("rule-evaluating",{url:c,method:u,delayMs:l.delayMs},l);const f=Ve(l,c,u,v,r);if(!f.proceed){((p=f.outcome)==null?void 0:p.kind)==="unparseable"?Ne(s,"network:latency",c,u,{delayMs:l.delayMs}):s==null||s.debug("rule-skip-match",{url:c,method:u,delayMs:l.delayMs},l);continue}if(s==null||s.debug("rule-matched",{url:c,method:u,delayMs:l.delayMs},l),!V(l,o,s,{url:c,method:u,delayMs:l.delayMs}))continue;const y=U(l.probability,n);if(s==null||s.emit({type:"network:latency",timestamp:Date.now(),applied:y,detail:{url:c,method:u,delayMs:l.delayMs,...Ae(f.outcome)}}),!y){s==null||s.debug("rule-skip-probability",{url:c,method:u,delayMs:l.delayMs},l);continue}s==null||s.debug("rule-applied",{url:c,method:u,delayMs:l.delayMs},l),console.warn(`CHAOS: Adding ${l.delayMs}ms latency to ${u} ${c}`),setTimeout(()=>{t.call(this,i)},l.delayMs);return}t.call(this,i)}}function Jr(t){return function(e,n){this._chaos_url=n.toString(),this._chaos_method=e.toUpperCase(),t.call(this,e,n)}}function xt(t,e,n,s,r){if(s==null||s.debug("rule-evaluating",{selector:e.selector,action:e.action},e),s==null||s.debug("rule-matched",{selector:e.selector,action:e.action},e),!V(e,r,s,{selector:e.selector,action:e.action}))return;const o=U(e.probability,n);if(s==null||s.emit({type:"ui:assault",timestamp:Date.now(),applied:o,detail:{selector:e.selector,action:e.action}}),!o){s==null||s.debug("rule-skip-probability",{selector:e.selector,action:e.action},e);return}s==null||s.debug("rule-applied",{selector:e.selector,action:e.action},e),console.warn(`CHAOS: Applying action '${e.action}' to element:`,t);try{switch(e.action){case"disable":"disabled"in t&&(t.disabled=!0);break;case"hide":t.style.display="none";break;case"remove":t.remove();break}}catch(a){console.error("Chaos Maker failed to assault element:",a,t)}}function eo(t,e,n,s,r){if(t.nodeType!==Node.ELEMENT_NODE||!e.assaults)return;const o=t;for(const a of e.assaults)try{o.matches(a.selector)&&xt(o,a,n,s,r),o.querySelectorAll(a.selector).forEach(i=>{xt(i,a,n,s,r)})}catch(i){console.error(`Chaos Maker: Invalid selector '${a.selector}'`,i)}}function to(t,e,n,s){if(t.assaults){console.log("CHAOS: Running initial DOM scan for existing elements...");for(const o of t.assaults)try{document.querySelectorAll(o.selector).forEach(a=>{xt(a,o,e,n,s)})}catch(a){console.error(`Chaos Maker: Invalid selector in initial scan '${o.selector}'`,a)}}return new MutationObserver(o=>{for(const a of o)a.type==="childList"&&a.addedNodes.forEach(i=>eo(i,t,e,n,s))})}const rn=Symbol.for("chaos-maker.websocket.intercepted");function no(t,e){return t==="both"?!0:t===e}function on(t){return typeof t=="string"?"text":"binary"}function an(t,e){switch(e){case"truncate":return t.slice(0,Math.max(0,Math.floor(t.length/2)));case"malformed-json":return`${t}"}`;case"empty":return"";case"wrong-type":return"<html><body>Unexpected HTML</body></html>"}}function cn(t,e){if(e==="malformed-json"||e==="wrong-type")return null;if(e==="empty")return typeof Blob<"u"&&t instanceof Blob?new Blob([]):t instanceof ArrayBuffer?new ArrayBuffer(0):new Uint8Array(0);if(typeof Blob<"u"&&t instanceof Blob)return t.slice(0,Math.max(0,Math.floor(t.size/2)));if(t instanceof ArrayBuffer)return t.slice(0,Math.max(0,Math.floor(t.byteLength/2)));const n=t,s=Math.max(0,Math.floor(n.byteLength/2));return new Uint8Array(n.buffer.slice(n.byteOffset,n.byteOffset+s))}function ye(t,e,n,s,r,o,a){if(!t)return null;for(const i of t){if(a==null||a.debug("rule-evaluating",{url:e,direction:n},i),!ge(e,i.urlPattern)){a==null||a.debug("rule-skip-match",{url:e,direction:n},i);continue}if(!no(i.direction,n)){a==null||a.debug("rule-skip-match",{url:e,direction:n},i);continue}a==null||a.debug("rule-matched",{url:e,direction:n},i);const c=te(i,r);if(!ne(i,c)){a==null||a.debug("rule-skip-counting",{url:e,direction:n},i);continue}if(V(i,o,a,{url:e,direction:n})){if(!U(i.probability,s)){a==null||a.debug("rule-skip-probability",{url:e,direction:n},i);continue}return a==null||a.debug("rule-applied",{url:e,direction:n},i),i}}return null}function ze(t,e,n,s,r){t.emit({type:"websocket:drop",timestamp:Date.now(),applied:!0,detail:{url:e,direction:n,payloadType:s,...r?{reason:r}:{}}})}function un(t,e,n,s,r){t.emit({type:"websocket:delay",timestamp:Date.now(),applied:!0,detail:{url:e,direction:n,payloadType:s,delayMs:r}})}function me(t,e,n,s,r,o,a){t.emit({type:"websocket:corrupt",timestamp:Date.now(),applied:o,detail:{url:e,direction:n,payloadType:s,strategy:r,...a?{reason:a}:{}}})}function so(t,e,n,s){t.emit({type:"websocket:close",timestamp:Date.now(),applied:!0,detail:{url:e,closeCode:n,closeReason:s}})}function ro(t,e,n,s,r,o){const a=new Map;let i=!0;const c=(p,l)=>{let f=a.get(p);f||(f=new Set,a.set(p,f)),f.add(l)},u=(p,l)=>{var f;(f=a.get(p))==null||f.delete(l)},v=(p,l)=>{const f=a.get(p);if(f){for(const y of f)clearTimeout(y.handle),y.kind==="delay"&&ze(n,y.url,y.direction,y.payloadType,l);a.delete(p)}},A=(p,l,f)=>{const y=new MessageEvent("message",{data:f,origin:l.origin,lastEventId:l.lastEventId,source:l.source,ports:Array.from(l.ports??[])});y[rn]=!0,p.dispatchEvent(y)},$=(p,l,f,y)=>{if(!i)return{handled:!1,data:f};const k="outbound",_=on(f);if(ye(e.drops,l,k,s,r,o,n))return ze(n,l,k,_),{handled:!0,data:f};let S=f;const C=ye(e.corruptions,l,k,s,r,o,n);if(C)if(_==="text")S=an(S,C.strategy),me(n,l,k,_,C.strategy,!0);else{const Z=cn(S,C.strategy);Z===null?me(n,l,k,_,C.strategy,!1,"incompatible-payload-type"):(S=Z,me(n,l,k,_,C.strategy,!0))}const N=ye(e.delays,l,k,s,r,o,n);if(N){un(n,l,k,_,N.delayMs);const Z={kind:"delay",handle:setTimeout(()=>{if(u(p,Z),!!i)try{y(S)}catch{}},N.delayMs),url:l,direction:k,payloadType:_};return c(p,Z),{handled:!0,data:S}}return{handled:!1,data:S}},F=(p,l)=>{p.addEventListener("message",f=>{const y=f;if(y[rn]||!i)return;const k="inbound",_=on(y.data);if(ye(e.drops,l,k,s,r,o,n)){y.stopImmediatePropagation(),ze(n,l,k,_);return}let S=y.data,C=!1;const N=ye(e.corruptions,l,k,s,r,o,n);if(N)if(_==="text")S=an(S,N.strategy),C=!0,me(n,l,k,_,N.strategy,!0);else{const P=cn(S,N.strategy);P===null?me(n,l,k,_,N.strategy,!1,"incompatible-payload-type"):(S=P,C=!0,me(n,l,k,_,N.strategy,!0))}const Z=ye(e.delays,l,k,s,r,o,n);if(Z){y.stopImmediatePropagation(),un(n,l,k,_,Z.delayMs);const P={kind:"delay",handle:setTimeout(()=>{u(p,P),i&&A(p,y,S)},Z.delayMs),url:l,direction:k,payloadType:_};c(p,P);return}C&&(y.stopImmediatePropagation(),A(p,y,S))})},X=(p,l)=>{if(e.closes)for(const f of e.closes){if(n.debug("rule-evaluating",{url:l},f),!ge(l,f.urlPattern)){n.debug("rule-skip-match",{url:l},f);continue}n.debug("rule-matched",{url:l},f);const y=te(f,r);if(!ne(f,y)){n.debug("rule-skip-counting",{url:l},f);continue}if(!V(f,o,n,{url:l}))continue;if(!U(f.probability,s)){n.debug("rule-skip-probability",{url:l},f);continue}n.debug("rule-applied",{url:l},f);const k=f.code??1e3,_=f.reason??"Chaos Maker close",S=f.afterMs??0,C=()=>{if(i){v(p,"close-interrupt"),so(n,l,k,_);try{p.close(k,_)}catch{try{p.close()}catch{}}}};if(S<=0)p.readyState===p.OPEN?C():p.addEventListener("open",C,{once:!0});else{const N=()=>{const Z={kind:"close",handle:setTimeout(C,S)};c(p,Z)};p.readyState===p.OPEN?N():p.addEventListener("open",N,{once:!0})}return}};function q(p,l){const f=new t(p,l),y=typeof p=="string"?p:p.toString(),k=f.send.bind(f);return f.send=function(S){const C=$(f,y,S,k);C.handled||k(C.data)},F(f,y),X(f,y),f}Object.defineProperty(q,"prototype",{value:t.prototype,writable:!1});for(const p of["CONNECTING","OPEN","CLOSING","CLOSED"])q[p]=t[p];return{Wrapped:q,uninstall(){i=!1;for(const[,p]of a)for(const l of p)clearTimeout(l.handle),l.kind==="delay"&&ze(n,l.url,l.direction,l.payloadType,"stop-during-delay");a.clear()}}}const ln=Symbol.for("chaos-maker.eventsource.intercepted");function oo(t,e){return t===void 0||t==="*"?!0:t===e}function dt(t,e,n,s,r,o,a){if(!t)return null;for(const i of t){if(a==null||a.debug("rule-evaluating",{url:e,eventType:n},i),!ge(e,i.urlPattern)){a==null||a.debug("rule-skip-match",{url:e,eventType:n},i);continue}if(!oo(i.eventType,n)){a==null||a.debug("rule-skip-match",{url:e,eventType:n},i);continue}a==null||a.debug("rule-matched",{url:e,eventType:n},i);const c=te(i,r);if(!ne(i,c)){a==null||a.debug("rule-skip-counting",{url:e,eventType:n},i);continue}if(V(i,o,a,{url:e,eventType:n})){if(!U(i.probability,s)){a==null||a.debug("rule-skip-probability",{url:e,eventType:n},i);continue}return a==null||a.debug("rule-applied",{url:e,eventType:n},i),i}}return null}function ft(t,e,n,s){t.emit({type:"sse:drop",timestamp:Date.now(),applied:!0,detail:{url:e,eventType:n,...s?{reason:s}:{}}})}function ao(t,e,n,s){t.emit({type:"sse:delay",timestamp:Date.now(),applied:!0,detail:{url:e,eventType:n,delayMs:s}})}function io(t,e,n,s){t.emit({type:"sse:corrupt",timestamp:Date.now(),applied:!0,detail:{url:e,eventType:n,strategy:s}})}function co(t,e,n){t.emit({type:"sse:close",timestamp:Date.now(),applied:!0,detail:{url:e,reason:n}})}function uo(t,e,n,s,r,o){const a=new Map;let i=!0;const c=(p,l)=>{let f=a.get(p);f||(f=new Set,a.set(p,f)),f.add(l)},u=(p,l)=>{var f;(f=a.get(p))==null||f.delete(l)},v=(p,l)=>{const f=a.get(p);if(f){for(const y of f)clearTimeout(y.handle),y.kind==="delay"&&ft(n,y.url,y.eventType,l);a.delete(p)}},A=(p,l,f)=>{const y=new MessageEvent(l.type||"message",{data:f,origin:l.origin,lastEventId:l.lastEventId});y[ln]=!0,p.dispatchEvent(y)},$=(p,l,f)=>{if(f[ln]||!i)return;const y=f.type||"message";if(dt(e.drops,l,y,s,r,o,n)){f.stopImmediatePropagation(),ft(n,l,y);return}let k=typeof f.data=="string"?f.data:String(f.data),_=!1;const S=dt(e.corruptions,l,y,s,r,o,n);S&&(k=Nt(k,S.strategy),_=!0,io(n,l,y,S.strategy));const C=dt(e.delays,l,y,s,r,o,n);if(C){f.stopImmediatePropagation(),ao(n,l,y,C.delayMs);const N={kind:"delay",handle:setTimeout(()=>{u(p,N),i&&p.readyState!==p.CLOSED&&A(p,f,k)},C.delayMs),url:l,eventType:y};c(p,N);return}_&&(f.stopImmediatePropagation(),A(p,f,k))},F=p=>{if(!e.closes)return null;for(const l of e.closes){if(n.debug("rule-evaluating",{url:p},l),!ge(p,l.urlPattern)){n.debug("rule-skip-match",{url:p},l);continue}n.debug("rule-matched",{url:p},l);const f=te(l,r);if(!ne(l,f)){n.debug("rule-skip-counting",{url:p},l);continue}if(V(l,o,n,{url:p})){if(!U(l.probability,s)){n.debug("rule-skip-probability",{url:p},l);continue}return n.debug("rule-applied",{url:p},l),l}}return null},X=(p,l)=>{const f=F(l);if(!f)return;const y=f.afterMs??0,k=()=>{if(i){v(p,"close-interrupt"),co(n,l,"chaos-maker-close");try{p.close()}catch{}try{p.dispatchEvent(new Event("error"))}catch{}}};if(y<=0){const _={kind:"close",handle:setTimeout(k,0)};c(p,_)}else{const _={kind:"close",handle:setTimeout(k,y)};c(p,_)}};function q(p,l){const f=new t(p,l),y=typeof p=="string"?p:p.toString(),k=P=>{$(f,y,P)},_=new Set,S=f.addEventListener.bind(f),C=P=>{_.has(P)||(_.add(P),S(P,k,{capture:!0}))};C("message");const N=P=>{if(P)for(const d of P)d.eventType&&d.eventType!=="*"&&d.eventType!=="message"&&C(d.eventType)};N(e.drops),N(e.delays),N(e.corruptions);const Z=(P,d,M)=>{P!=="open"&&P!=="error"&&C(P),S(P,d,M)};return f.addEventListener=Z,X(f,y),f}Object.defineProperty(q,"prototype",{value:t.prototype,writable:!1});for(const p of["CONNECTING","OPEN","CLOSED"])q[p]=t[p];return{Wrapped:q,uninstall(){i=!1;for(const[,p]of a)for(const l of p)clearTimeout(l.handle),l.kind==="delay"&&ft(n,l.url,l.eventType,"stop-during-delay");a.clear()}}}function is(t){return t===void 0?{enabled:!1}:typeof t=="boolean"?{enabled:t}:{enabled:t.enabled}}const lo=[{pick:t=>{var e;return(e=t.network)==null?void 0:e.failures},ruleType:"failure"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.latencies},ruleType:"latency"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.aborts},ruleType:"abort"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.corruptions},ruleType:"corruption"},{pick:t=>{var e;return(e=t.network)==null?void 0:e.cors},ruleType:"cors"},{pick:t=>{var e;return(e=t.ui)==null?void 0:e.assaults},ruleType:"ui-assault"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.drops},ruleType:"ws-drop"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.delays},ruleType:"ws-delay"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.corruptions},ruleType:"ws-corrupt"},{pick:t=>{var e;return(e=t.websocket)==null?void 0:e.closes},ruleType:"ws-close"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.drops},ruleType:"sse-drop"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.delays},ruleType:"sse-delay"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.corruptions},ruleType:"sse-corrupt"},{pick:t=>{var e;return(e=t.sse)==null?void 0:e.closes},ruleType:"sse-close"}];function cs(t){const e=new WeakMap;for(const{pick:n,ruleType:s}of lo){const r=n(t);r&&r.forEach((o,a)=>{e.set(o,{ruleType:s,ruleId:`${s}#${a}`})})}return e}function us(t,e){const n=[];return e.ruleId&&n.push(`rule=${e.ruleId}`),e.phase&&n.push(e.phase),e.method&&n.push(e.method),e.url&&n.push(e.url),e.statusCode!==void 0&&n.push(`-> ${e.statusCode}`),e.delayMs!==void 0&&n.push(`+${e.delayMs}ms`),e.direction&&n.push(e.direction),e.eventType&&n.push(`event=${e.eventType}`),e.selector&&n.push(`selector=${e.selector}`),e.action&&n.push(`action=${e.action}`),e.strategy&&n.push(`strategy=${e.strategy}`),e.groupName&&n.push(`group=${e.groupName}`),e.reason&&n.push(`reason=${e.reason}`),n.length===0?t:`${t}: ${n.join(" ")}`}class ls{constructor(e,n="page"){this.opts=e,this.target=n}isEnabled(){return this.opts.enabled}log(e,n){if(!this.opts.enabled)return null;const s={...n,stage:e},r={type:"debug",timestamp:Date.now(),applied:!1,detail:s};if(typeof console<"u"&&typeof console.debug=="function"){const o=this.target==="sw"?"[Chaos SW]":"[Chaos]";try{console.debug(`${o} ${us(e,s)}`)}catch{}}return r}}const ds=Symbol.for("chaos-maker.runtime.patch-kind"),Pe=Symbol.for("chaos-maker.runtime.active-instance");function fo(t){return typeof t=="object"&&t!==null||typeof t=="function"}function Te(t,e){try{Object.defineProperty(t,ds,{value:e,configurable:!0})}catch{}return t}function ho(t){if(fo(t))return t[ds]}function po(t){return t[Pe]}function go(t,e){try{Object.defineProperty(t,Pe,{value:e,configurable:!0})}catch{}}function yo(t,e){const n=t;if(n[Pe]===e)try{delete n[Pe]}catch{try{n[Pe]=void 0}catch{}}}function be(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] Group name cannot be empty");return e}function mo(t,e){if(!(typeof console>"u"||typeof console.warn!="function"))try{console.warn(`[chaos-maker] cleanup step failed: ${t}`,e)}catch{}}class St{constructor(e,n={}){R(this,"config");R(this,"emitter");R(this,"random");R(this,"seed");R(this,"running",!1);R(this,"target");R(this,"originalFetch");R(this,"originalXhrSend");R(this,"originalXhrOpen");R(this,"domObserver");R(this,"originalWebSocket");R(this,"webSocketHandle");R(this,"originalEventSource");R(this,"eventSourceHandle");R(this,"requestCounters",new Map);R(this,"groups");R(this,"ruleIds");R(this,"logger");this.config=At(e,n.validation),this.emitter=new rs;const s=ss(this.config.seed);this.random=s.random,this.seed=s.seed,this.target=n.target??globalThis,this.groups=new vn;for(const o of this.config.groups??[])this.groups.ensure(o.name,{enabled:o.enabled??!0,explicit:!0});this.seedGroupsFromRules(),this.groups.ensure(Ie,{enabled:!0});const r=is(this.config.debug);r.enabled&&(this.ruleIds=cs(this.config),this.emitter.setRuleIds(this.ruleIds),this.logger=new ls(r,"page"),this.emitter.setLogger(this.logger)),console.log(`Chaos Maker initialized (seed: ${this.seed})`)}seedGroupsFromRules(){Xt(this.config,e=>{e.group&&this.groups.ensure(e.group)})}emitInvariant(e,n,s={}){this.emitter.debug("lifecycle",{phase:e,reason:n,...s})}emitStartInvariantDiagnostics(e){this.emitPatchDiagnostic(e.fetch,"fetch","target-fetch-already-patched","engine:start"),typeof e.XMLHttpRequest=="function"&&(this.emitPatchDiagnostic(e.XMLHttpRequest.prototype.open,"xhr-open","target-xhr-open-already-patched","engine:start"),this.emitPatchDiagnostic(e.XMLHttpRequest.prototype.send,"xhr-send","target-xhr-send-already-patched","engine:start")),typeof e.WebSocket<"u"&&this.emitPatchDiagnostic(e.WebSocket,"websocket","target-websocket-already-patched","engine:start"),typeof e.EventSource<"u"&&this.emitPatchDiagnostic(e.EventSource,"eventsource","target-eventsource-already-patched","engine:start"),this.domObserver&&this.emitInvariant("engine:start","orphaned-dom-observer"),this.webSocketHandle&&this.emitInvariant("engine:start","stale-websocket-handle"),this.eventSourceHandle&&this.emitInvariant("engine:start","stale-eventsource-handle")}emitStopInvariantDiagnostics(e){this.emitPatchDiagnostic(e.fetch,"fetch","target-fetch-still-patched","engine:stop"),typeof e.XMLHttpRequest=="function"&&(this.emitPatchDiagnostic(e.XMLHttpRequest.prototype.open,"xhr-open","target-xhr-open-still-patched","engine:stop"),this.emitPatchDiagnostic(e.XMLHttpRequest.prototype.send,"xhr-send","target-xhr-send-still-patched","engine:stop")),typeof e.WebSocket<"u"&&this.emitPatchDiagnostic(e.WebSocket,"websocket","target-websocket-still-patched","engine:stop"),typeof e.EventSource<"u"&&this.emitPatchDiagnostic(e.EventSource,"eventsource","target-eventsource-still-patched","engine:stop")}emitPatchDiagnostic(e,n,s,r){ho(e)===n&&this.emitInvariant(r,s)}runCleanupStep(e,n){try{n()}catch(s){this.emitInvariant("engine:stop",`cleanup-step-failed:${e}`),mo(e,s)}}collectReferencedGroups(){const e=new Set;return Xt(this.config,n=>{n.group&&e.add(n.group)}),e}getSeed(){return this.seed}on(e,n){this.emitter.on(e,n)}off(e,n){this.emitter.off(e,n)}getLog(){return this.emitter.getLog()}clearLog(){this.emitter.clearLog()}enableGroup(e){const n=be(e);this.groups.setEnabled(n,!0),this.emitter.emit({type:"rule-group:enabled",timestamp:Date.now(),applied:!0,detail:{groupName:n}}),this.emitter.debug("lifecycle",{phase:"engine:group-toggled",groupName:n,enabled:!0})}disableGroup(e){const n=be(e);this.groups.setEnabled(n,!1),this.emitter.emit({type:"rule-group:disabled",timestamp:Date.now(),applied:!0,detail:{groupName:n}}),this.emitter.debug("lifecycle",{phase:"engine:group-toggled",groupName:n,enabled:!1})}createGroup(e,n){const s=be(e);this.groups.ensure(s,{...n,explicit:!0})}removeGroup(e,n){const s=be(e);return this.groups.remove(s,this.collectReferencedGroups(),n)}hasGroup(e){const n=be(e);return this.groups.has(n)}getGroupState(e){const n=be(e);return this.groups.isActive(n)}getGroupsSnapshot(){return this.groups.getSnapshot()}listGroups(){return this.groups.list()}start(){if(this.running){console.warn("Chaos Maker is already running. Call stop() first.");return}const e=this.target,n=po(e);if(n&&n!==this)throw this.emitInvariant("engine:start","active-instance-conflict"),new Error("[chaos-maker] target already has an active runtime instance");this.emitStartInvariantDiagnostics(e),this.requestCounters.clear(),this.running=!0,console.log("🛠️ Chaos Maker ENGAGED 🛠️"),this.emitter.debug("lifecycle",{phase:"engine:start"});try{this.config.network&&(typeof e.fetch=="function"&&(this.originalFetch=e.fetch,e.fetch=Te(Hr(this.originalFetch.bind(e),this.config.network,this.random,this.emitter,this.requestCounters,this.groups),"fetch")),typeof e.XMLHttpRequest=="function"&&(this.originalXhrOpen=e.XMLHttpRequest.prototype.open,e.XMLHttpRequest.prototype.open=Te(Jr(this.originalXhrOpen),"xhr-open"),this.originalXhrSend=e.XMLHttpRequest.prototype.send,e.XMLHttpRequest.prototype.send=Te(Qr(this.originalXhrSend,this.config.network,this.random,this.emitter,this.requestCounters,this.groups),"xhr-send"))),this.config.ui&&(typeof document>"u"||typeof MutationObserver>"u"?console.warn("Chaos Maker: UI config ignored - no DOM available in current context."):(this.domObserver=to(this.config.ui,this.random,this.emitter,this.groups),this.domObserver.observe(document.body,{childList:!0,subtree:!0}),console.log("UI Assailant is now observing the DOM."))),this.config.websocket&&typeof e.WebSocket<"u"&&(this.originalWebSocket=e.WebSocket,this.webSocketHandle=ro(this.originalWebSocket,this.config.websocket,this.emitter,this.random,this.requestCounters,this.groups),e.WebSocket=Te(this.webSocketHandle.Wrapped,"websocket")),this.config.sse&&typeof e.EventSource<"u"&&(this.originalEventSource=e.EventSource,this.eventSourceHandle=uo(this.originalEventSource,this.config.sse,this.emitter,this.random,this.requestCounters,this.groups),e.EventSource=Te(this.eventSourceHandle.Wrapped,"eventsource")),go(e,this)}catch(s){throw this.stop(),s}}stop(){this.running=!1,console.log("🛑 Chaos Maker DISENGAGED 🛑"),this.emitter.debug("lifecycle",{phase:"engine:stop"});const e=this.target,n=this.originalFetch,s=this.originalXhrOpen,r=this.originalXhrSend,o=this.domObserver,a=this.originalWebSocket,i=this.webSocketHandle,c=this.originalEventSource,u=this.eventSourceHandle;this.originalFetch=void 0,this.originalXhrOpen=void 0,this.originalXhrSend=void 0,this.domObserver=void 0,this.originalWebSocket=void 0,this.webSocketHandle=void 0,this.originalEventSource=void 0,this.eventSourceHandle=void 0,n&&this.runCleanupStep("restore-fetch",()=>{e.fetch=n}),r&&typeof e.XMLHttpRequest=="function"&&this.runCleanupStep("restore-xhr-send",()=>{e.XMLHttpRequest.prototype.send=r}),s&&typeof e.XMLHttpRequest=="function"&&this.runCleanupStep("restore-xhr-open",()=>{e.XMLHttpRequest.prototype.open=s}),o&&this.runCleanupStep("disconnect-dom-observer",()=>{o.disconnect(),console.log("UI Assailant has stopped observing.")}),i&&this.runCleanupStep("uninstall-websocket",()=>{i.uninstall()}),a&&this.runCleanupStep("restore-websocket",()=>{e.WebSocket=a}),u&&this.runCleanupStep("uninstall-eventsource",()=>{u.uninstall()}),c&&this.runCleanupStep("restore-eventsource",()=>{e.EventSource=c}),this.requestCounters.clear(),yo(e,this),this.emitStopInvariantDiagnostics(e)}}function dn(t){return De(t)}function fn(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] Group name cannot be empty");return e}function bo(t){const e=t.trim();if(!e)throw new Error("[chaos-maker] preset name cannot be empty");return e}class vo{constructor(e){R(this,"config");R(this,"pendingGroup");R(this,"pendingPresets",[]);this.config=e?dn(e):{network:{},ui:{},websocket:{},sse:{}},this.config.network||(this.config.network={}),this.config.ui||(this.config.ui={}),this.config.websocket||(this.config.websocket={}),this.config.sse||(this.config.sse={})}inGroup(e){return this.pendingGroup=fn(e),this}defineGroup(e,n){this.config.groups||(this.config.groups=[]);const s={name:fn(e)};return(n==null?void 0:n.enabled)!==void 0&&(s.enabled=n.enabled),this.config.groups.push(s),this}withGroup(e){const n=this.pendingGroup;return this.pendingGroup=void 0,n?{...e,group:n}:e}failRequests(e,n,s,r,o,a,i){return this.config.network.failures||(this.config.network.failures=[]),this.config.network.failures.push(this.withGroup({urlPattern:e,statusCode:n,probability:s,methods:r,body:o,headers:a,...i})),this}addLatency(e,n,s,r,o){return this.config.network.latencies||(this.config.network.latencies=[]),this.config.network.latencies.push(this.withGroup({urlPattern:e,delayMs:n,probability:s,methods:r,...o})),this}abortRequests(e,n,s,r,o){return this.config.network.aborts||(this.config.network.aborts=[]),this.config.network.aborts.push(this.withGroup({urlPattern:e,probability:n,timeout:s,methods:r,...o})),this}corruptResponses(e,n,s,r,o){return this.config.network.corruptions||(this.config.network.corruptions=[]),this.config.network.corruptions.push(this.withGroup({urlPattern:e,strategy:n,probability:s,methods:r,...o})),this}simulateCors(e,n,s,r){return this.config.network.cors||(this.config.network.cors=[]),this.config.network.cors.push(this.withGroup({urlPattern:e,probability:n,methods:s,...r})),this}failRequestsOnNth(e,n,s,r){return this.failRequests(e,n,1,r,void 0,void 0,{onNth:s})}addLatencyOnNth(e,n,s,r){return this.addLatency(e,n,1,r,{onNth:s})}abortRequestsOnNth(e,n,s,r){return this.abortRequests(e,1,s,r,{onNth:n})}corruptResponsesOnNth(e,n,s,r){return this.corruptResponses(e,n,1,r,{onNth:s})}simulateCorsOnNth(e,n,s){return this.simulateCors(e,1,s,{onNth:n})}failRequestsEveryNth(e,n,s,r){return this.failRequests(e,n,1,r,void 0,void 0,{everyNth:s})}addLatencyEveryNth(e,n,s,r){return this.addLatency(e,n,1,r,{everyNth:s})}abortRequestsEveryNth(e,n,s,r){return this.abortRequests(e,1,s,r,{everyNth:n})}corruptResponsesEveryNth(e,n,s,r){return this.corruptResponses(e,n,1,r,{everyNth:s})}simulateCorsEveryNth(e,n,s){return this.simulateCors(e,1,s,{everyNth:n})}failRequestsAfterN(e,n,s,r){return this.failRequests(e,n,1,r,void 0,void 0,{afterN:s})}addLatencyAfterN(e,n,s,r){return this.addLatency(e,n,1,r,{afterN:s})}abortRequestsAfterN(e,n,s,r){return this.abortRequests(e,1,s,r,{afterN:n})}corruptResponsesAfterN(e,n,s,r){return this.corruptResponses(e,n,1,r,{afterN:s})}simulateCorsAfterN(e,n,s){return this.simulateCors(e,1,s,{afterN:n})}assaultUi(e,n,s){return this.config.ui.assaults||(this.config.ui.assaults=[]),this.config.ui.assaults.push(this.withGroup({selector:e,action:n,probability:s})),this}dropMessages(e,n,s,r){return this.config.websocket.drops||(this.config.websocket.drops=[]),this.config.websocket.drops.push(this.withGroup({urlPattern:e,direction:n,probability:s,...r})),this}delayMessages(e,n,s,r,o){return this.config.websocket.delays||(this.config.websocket.delays=[]),this.config.websocket.delays.push(this.withGroup({urlPattern:e,direction:n,delayMs:s,probability:r,...o})),this}corruptMessages(e,n,s,r,o){return this.config.websocket.corruptions||(this.config.websocket.corruptions=[]),this.config.websocket.corruptions.push(this.withGroup({urlPattern:e,direction:n,strategy:s,probability:r,...o})),this}closeConnection(e,n,s,r){return this.config.websocket.closes||(this.config.websocket.closes=[]),this.config.websocket.closes.push(this.withGroup({urlPattern:e,probability:n,...s,...r})),this}dropMessagesOnNth(e,n,s){return this.dropMessages(e,n,1,{onNth:s})}delayMessagesOnNth(e,n,s,r){return this.delayMessages(e,n,s,1,{onNth:r})}failGraphQLOperation(e,n,s,r="*"){return this.config.network.failures||(this.config.network.failures=[]),this.config.network.failures.push(this.withGroup({urlPattern:r,statusCode:n,probability:s,graphqlOperation:e})),this}delayGraphQLOperation(e,n,s,r="*"){return this.config.network.latencies||(this.config.network.latencies=[]),this.config.network.latencies.push(this.withGroup({urlPattern:r,delayMs:n,probability:s,graphqlOperation:e})),this}dropSSE(e,n,s,r){return this.config.sse.drops||(this.config.sse.drops=[]),this.config.sse.drops.push(this.withGroup({urlPattern:e,probability:n,...s?{eventType:s}:{},...r})),this}delaySSE(e,n,s,r,o){return this.config.sse.delays||(this.config.sse.delays=[]),this.config.sse.delays.push(this.withGroup({urlPattern:e,delayMs:n,probability:s,...r?{eventType:r}:{},...o})),this}corruptSSE(e,n,s,r,o){return this.config.sse.corruptions||(this.config.sse.corruptions=[]),this.config.sse.corruptions.push(this.withGroup({urlPattern:e,strategy:n,probability:s,...r?{eventType:r}:{},...o})),this}closeSSE(e,n,s,r){return this.config.sse.closes||(this.config.sse.closes=[]),this.config.sse.closes.push(this.withGroup({urlPattern:e,probability:n,...s,...r})),this}withSeed(e){return this.config.seed=e,this}withDebug(e=!0){return this.config.debug=e,this}usePreset(e){const n=bo(e);return this.pendingPresets.includes(n)||this.pendingPresets.push(n),this}build(){const e=dn(this.config),n=[],s=new Set;for(const r of[...e.presets??[],...this.pendingPresets])s.has(r)||(s.add(r),n.push(r));return n.length?e.presets=n:delete e.presets,e}}const ot="__chaosMakerRegExp";function ko(t){if(t===null||typeof t!="object")return!1;const e=t,n=Object.keys(e);if(n.length!==1||n[0]!==ot)return!1;const s=e[ot];if(!s||typeof s!="object")return!1;const r=s;for(const o of Object.keys(r))if(o!=="source"&&o!=="flags")return!1;return typeof r.source=="string"&&typeof r.flags=="string"}function Ct(t){if(t===null||typeof t!="object")return t;if(t instanceof RegExp)return{[ot]:{source:t.source,flags:t.flags}};if(Array.isArray(t))return t.map(n=>Ct(n));const e={};for(const[n,s]of Object.entries(t))e[n]=Ct(s);return e}function at(t){if(t===null||typeof t!="object"||t instanceof RegExp)return t;if(ko(t)){const{source:n,flags:s}=t[ot];try{return new RegExp(n,s)}catch(r){return console.warn(`[chaos-maker] deserializeForTransport: invalid RegExp { source: ${JSON.stringify(n)}, flags: ${JSON.stringify(s)} } — ${r.message}`),t}}if(Array.isArray(t))return t.map(n=>at(n));const e={};for(const[n,s]of Object.entries(t))e[n]=at(s);return e}function _o(t){const e=`chaos:${t.type}`,n=t.detail??{},s=[],r=n.url??n.selector;r&&s.push(xo(r,48));const o=wo(t);return o&&s.push(`→ ${o}`),t.applied||s.push("(skipped)"),s.length>0?`${e} ${s.join(" ")}`:e}function wo(t){const e=t.detail??{};switch(t.type){case"network:failure":return e.statusCode!=null?String(e.statusCode):null;case"network:latency":return e.delayMs!=null?`+${e.delayMs}ms`:null;case"network:abort":return"abort";case"network:corruption":return e.strategy??"corrupted";case"network:cors":return"cors-block";case"ui:assault":return e.action??null;case"websocket:drop":return e.direction?`drop ${e.direction}`:"drop";case"websocket:delay":return e.delayMs!=null?`delay ${e.direction??""} +${e.delayMs}ms`:"delay";case"websocket:corrupt":return e.strategy??"corrupt";case"websocket:close":return e.closeCode!=null?`close ${e.closeCode}`:"close";default:return null}}function xo(t,e){return t.length<=e?t:`…${t.slice(-47)}`}function So(t,e){return t.type==="debug"?!1:t.applied?!0:e}function Co(t){return t===null?"chaos seed: <not injected>":`chaos seed: ${t}`}const Eo=`
|
|
5
5
|
(function installChaosMakerSWBridge() {
|
|
6
6
|
if (typeof window === 'undefined') return;
|
|
7
7
|
if (window.__chaosMakerSWBridgeInstalled) return;
|
|
@@ -121,8 +121,15 @@ ${a.map(o=>` - ${o}`).join(`
|
|
|
121
121
|
return (reply && Array.isArray(reply.log)) ? reply.log : [];
|
|
122
122
|
});
|
|
123
123
|
},
|
|
124
|
+
clearRemoteLog: function (timeoutMs) {
|
|
125
|
+
if (!('serviceWorker' in navigator) || !navigator.serviceWorker.controller) {
|
|
126
|
+
return Promise.resolve();
|
|
127
|
+
}
|
|
128
|
+
return postViaPort(navigator.serviceWorker.controller, { __chaosMakerClearLog: true }, timeoutMs)
|
|
129
|
+
.then(function () { return undefined; });
|
|
130
|
+
},
|
|
124
131
|
};
|
|
125
132
|
|
|
126
133
|
addSwListeners();
|
|
127
134
|
})();
|
|
128
|
-
|
|
135
|
+
`,fs=[/invalid session id/i,/no such window/i,/session closed/i,/session not created/i,/browser has disconnected/i,/browser is closed/i,/target closed/i,/connection closed/i,/browsing context has been discarded/i];function No(t){const e=t instanceof Error?`${t.name} ${t.message}`:String(t);return fs.some(n=>n.test(e))}if(typeof window<"u"){window.ChaosMaker=St;const t={instance:null,start:e=>{t.instance&&(t.instance.stop(),t.instance=null);try{const n=at(e),s=new St(n);return s.start(),t.instance=s,{success:!0,message:"Chaos started"}}catch(n){return console.error("Chaos Utils Error:",n),{success:!1,message:n.message}}},stop:()=>t.instance?(t.instance.stop(),t.instance=null,{success:!0,message:"Chaos stopped"}):{success:!1,message:"No chaos instance to stop"},getLog:()=>t.instance?t.instance.getLog():[],getSeed:()=>t.instance?t.instance.getSeed():null,enableGroup:e=>{if(!t.instance)return{success:!1,message:"No chaos instance"};try{return t.instance.enableGroup(e),{success:!0,message:`Group '${e}' enabled`}}catch(n){return{success:!1,message:(n==null?void 0:n.message)??String(n)}}},disableGroup:e=>{if(!t.instance)return{success:!1,message:"No chaos instance"};try{return t.instance.disableGroup(e),{success:!0,message:`Group '${e}' disabled`}}catch(n){return{success:!1,message:(n==null?void 0:n.message)??String(n)}}},createGroup:(e,n)=>{if(!t.instance)return{success:!1,message:"No chaos instance"};try{return t.instance.createGroup(e,n),{success:!0,message:`Group '${e}' created`}}catch(s){return{success:!1,message:(s==null?void 0:s.message)??String(s)}}},getGroupState:e=>{if(!t.instance)return null;try{return t.instance.getGroupState(e)}catch{return null}},validate:(e,n)=>At(e,n)};if(window.chaosUtils=t,window.__CHAOS_CONFIG__)try{const e=window.__CHAOS_CONFIG__;t.start(e),delete window.__CHAOS_CONFIG__}catch(e){console.error("ChaosMaker auto-start failed:",e)}}exports.BUILT_IN_PRESETS=_n;exports.ChaosConfigBuilder=vo;exports.ChaosConfigError=he;exports.ChaosEventEmitter=rs;exports.ChaosMaker=St;exports.DEFAULT_GROUP_NAME=Ie;exports.Logger=ls;exports.PresetRegistry=wn;exports.RuleGroupRegistry=vn;exports.SESSION_TEARDOWN_PATTERNS=fs;exports.SW_BRIDGE_SOURCE=Eo;exports.VALIDATOR_BRAND_VERSION=wt;exports.buildRuleIdMap=cs;exports.chaosConfigSchemaPassthrough=Qn;exports.chaosConfigSchemaStrict=Mt;exports.createPrng=ss;exports.deserializeForTransport=at;exports.expandPresets=xn;exports.extractGraphQLOperation=$t;exports.formatDebugMessage=us;exports.formatSeedReproduction=Co;exports.formatStepTitle=_o;exports.generateSeed=ns;exports.isSessionTeardownError=No;exports.normalizeDebugOption=is;exports.operationNameMatches=as;exports.parseOperationFromQueryString=Pt;exports.prepareChaosConfig=ts;exports.presets=er;exports.serializeForTransport=Ct;exports.shouldEmitStep=So;exports.validateChaosConfig=At;exports.validateConfig=es;
|