@tinkerlandai/indiana-sdk 0.8.4 → 0.9.1

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.
Files changed (65) hide show
  1. package/CHANGELOG.md +15 -1
  2. package/README.md +45 -37
  3. package/README.zh-CN.md +42 -13
  4. package/dist/{ai-usage-DUlre7JC.d.ts → ai-usage-DMNKvCiq.d.ts} +3 -3
  5. package/dist/{api-XDc4pRlN.d.ts → api--Zf0gxfj.d.ts} +128 -124
  6. package/dist/chunk-3PZ4Y6UD.js +17 -0
  7. package/dist/chunk-5O667MKA.js +1 -0
  8. package/dist/chunk-7DXL3LHT.js +1 -0
  9. package/dist/chunk-7IB7CZ5P.js +1 -0
  10. package/dist/chunk-CPLLMISZ.js +1 -0
  11. package/dist/chunk-DAWZULXZ.js +1 -0
  12. package/dist/chunk-G23YNWWI.js +1 -0
  13. package/dist/chunk-G56XGVMS.js +1 -0
  14. package/dist/chunk-IH4KBLNR.js +1 -0
  15. package/dist/chunk-JEFEBF2H.js +1 -0
  16. package/dist/chunk-L7LKE3MG.js +173 -0
  17. package/dist/chunk-NH2PTTNK.js +2 -0
  18. package/dist/chunk-NTP55JMK.js +1 -0
  19. package/dist/chunk-SX5MO56H.js +4 -0
  20. package/dist/chunk-UBRLGIZE.js +1 -0
  21. package/dist/chunk-YAU4DI52.js +1 -0
  22. package/dist/{configuration-sync-Ce3dShy7.d.ts → configuration-sync-E98CqVwh.d.ts} +6 -5
  23. package/dist/content-YAPEUX6I.js +1 -0
  24. package/dist/{errors-C8lRYZ0n.d.ts → errors-0TSUIbUi.d.ts} +12 -1
  25. package/dist/{funnel-local-client-CUGavICI.d.ts → funnel-local-client-BjPwXlQb.d.ts} +550 -260
  26. package/dist/funnel-runtime-host-OZA763NT.js +1 -0
  27. package/dist/index.d.ts +689 -223
  28. package/dist/index.js +1 -1
  29. package/dist/native-shell.js +1 -1
  30. package/dist/openrouter.d.ts +3 -3
  31. package/dist/openrouter.js +1 -1
  32. package/dist/page.d.ts +6 -6
  33. package/dist/page.js +1 -1
  34. package/dist/paywall-EM7RGU56.js +1 -0
  35. package/dist/popup.d.ts +1 -1
  36. package/dist/popup.js +1 -1
  37. package/dist/react-native.d.ts +122 -99
  38. package/dist/react-native.js +1 -1
  39. package/dist/screen-renderer-A6VYE2QL.js +1 -0
  40. package/dist/server.d.ts +58 -58
  41. package/dist/server.js +1 -1
  42. package/dist/visual.d.ts +36 -1
  43. package/dist/visual.js +1 -2
  44. package/package.json +1 -1
  45. package/dist/chunk-3F2NQOR2.js +0 -1
  46. package/dist/chunk-663UOBHL.js +0 -1
  47. package/dist/chunk-BUDTHBFF.js +0 -173
  48. package/dist/chunk-EJTBSGLV.js +0 -10
  49. package/dist/chunk-EXCPE2XH.js +0 -1
  50. package/dist/chunk-F2GOIBDQ.js +0 -1
  51. package/dist/chunk-GRLMT5PR.js +0 -1
  52. package/dist/chunk-KQCTDXVD.js +0 -17
  53. package/dist/chunk-LMR2TM3X.js +0 -1
  54. package/dist/chunk-OBYJWIRB.js +0 -1
  55. package/dist/chunk-RRII2DMC.js +0 -1
  56. package/dist/chunk-RZBZ6LCT.js +0 -4
  57. package/dist/chunk-SOQO2RDZ.js +0 -1
  58. package/dist/chunk-SSHUBTT3.js +0 -1
  59. package/dist/chunk-VVV3JNS3.js +0 -1
  60. package/dist/content-2FCUY6XX.js +0 -1
  61. package/dist/funnel-runtime-host-ENRTSXPJ.js +0 -1
  62. package/dist/paywall-734GWAS4.js +0 -1
  63. package/dist/screen-renderer-DLXDQQKK.js +0 -1
  64. package/dist/src-CLEFCTAU.js +0 -1
  65. package/dist/{screen-BpAejkn0.d.ts → screen-BITZ11jn.d.ts} +18 -18
@@ -0,0 +1,17 @@
1
+ function P(e){let t=2166136261,n=e.length;for(let r=0;r<n;r++)t^=e.charCodeAt(r),t+=(t<<1)+(t<<4)+(t<<7)+(t<<8)+(t<<24);return t>>>0}function R(e,t,n){return n===2?P(P(e+t)+"")%1e4/1e4:null}function oe(e){return e<=0?[]:new Array(e).fill(1/e)}function C(e,t){return e>=t[0]&&e<t[1]}function K(e,t){for(let[n,r]of t.entries())if(C(e,r))return n;return-1}function G(e,t,n){t=t===void 0?1:t,t<0?t=0:t>1&&(t=1);let r=oe(e);n=n||r,n.length!==e&&(n=r);let o=n.reduce((a,u)=>u+a,0);(o<.99||o>1.01)&&(n=r);let i=0,s=t;return n.map(a=>{let u=i;return i+=a,[u,u+s*a]})}function N(e,t,n){if(!t)return null;let r=t.split("?")[1];if(!r)return null;let i=r.replace(/#.*/,"").split("&").map(s=>s.split("=",2)).filter(([s])=>s===e).map(([,s])=>s===void 0?NaN:parseInt(s))[0];return i!==void 0&&i>=0&&i<n?i:null}function M(e){try{return e()}catch{return!1}}function T(e){return typeof e=="string"?e:JSON.stringify(e)}function g(e){typeof e=="number"&&(e=e+""),(!e||typeof e!="string")&&(e="0");let t=e.replace(/(^v|\+.*$)/g,"").split(/[-.]/);return t.length===3&&t.push("~"),t.map(n=>n.match(/^[0-9]+$/)?n.padStart(5," "):n).join("-")}function se(e){try{let t=e.replace(/([^\\])\//g,"$1\\/");return new RegExp(t)}catch{return}}function I(e,t){if(!t.length)return!1;let n=!1,r=!1;for(let o of t){let i=De(e,o.type,o.pattern);if(o.include===!1){if(i)return!1}else n=!0,i&&(r=!0)}return r||!n}function Ue(e,t,n){try{let r=t.replace(/[*.+?^${}()|[\]\\]/g,"\\$&").replace(/_____/g,".*");return n&&(r="\\/?"+r.replace(/(^\/|\/$)/g,"")+"\\/?"),new RegExp("^"+r+"$","i").test(e)}catch{return!1}}function _e(e,t){try{let n=new URL(t.replace(/^([^:/?]*)\./i,"https://$1.").replace(/\*/g,"_____"),"https://_____"),r=[[e.host,n.host,!1],[e.pathname,n.pathname,!0]];return n.hash&&r.push([e.hash,n.hash,!1]),n.searchParams.forEach((o,i)=>{r.push([e.searchParams.get(i)||"",o,!1])}),!r.some(o=>!Ue(o[0],o[1],o[2]))}catch{return!1}}function De(e,t,n){try{let r=new URL(e,"https://_");if(t==="regex"){let o=se(n);return o?o.test(r.href)||o.test(r.href.substring(r.origin.length)):!1}else if(t==="simple")return _e(r,n);return!1}catch{return!1}}function q(e){for(let n of["namespace","status","url","groups"])if(Object.hasOwn(e,n))throw new TypeError(`Retired experiment field: ${n}`);let t=e;if(t.hashVersion!==void 0&&t.hashVersion!==2)throw new TypeError("Only hash version 2 is supported");if(t.filters?.some(n=>n.hashVersion!==2))throw new TypeError("Only hash version 2 is supported")}function O(e){for(let t of Object.values(e)){if(Array.isArray(t))throw new TypeError("Saved groups require typed list or condition entries");if(t&&Object.hasOwn(t,"useEmptyListGroup"))throw new TypeError("Retired saved group field: useEmptyListGroup")}}function ie(e){for(let t of["overrides","groups"])if(Object.hasOwn(e,t))throw new TypeError(`Retired evaluation context field: ${t}`);O(e.savedGroups??{})}var je=e=>e/2**32|0,Pe=e=>e>>>0;function ae(e,t,n,r){let o=je(n),i=Pe(n);e.setUint32(t,r?i:o,r),e.setUint32(t+4,r?o:i,r)}function ue(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in e&&e.BYTES_PER_ELEMENT===1}var W=e=>e?`"${e}" `:"";function Ke(e,t=""){if(typeof e!="number")throw new TypeError(W(t)+"expected number, got "+typeof e);if(!Number.isSafeInteger(e)||e<0)throw new RangeError(W(t)+"expected integer >= 0, got "+e);return e}function $(e,t,n=""){if(ue(e)&&(t===void 0||e.length===t))return e;t!==void 0&&Ke(t,"length");let r=ue(e),o=t!==void 0?` of length ${t}`:"",i=r?`length=${e.length}`:`type=${typeof e}`,s=W(n)+"expected Uint8Array"+o+", got "+i;throw r?new RangeError(s):new TypeError(s)}var Ge=(e,t)=>{if(e===null||typeof e!="object"||Array.isArray(e))throw new TypeError((t==="object"?"":`"${t}" `)+"expected object, got type="+typeof e)},ce=(e,t)=>{Ge(e,t);let n=Object.getPrototypeOf(e);if(n!==Object.prototype&&n!==null)throw new TypeError(`"${t}" expected plain object`);if(Object.hasOwn(e,"__proto__"))throw new TypeError(`"${t}.__proto__" is not allowed`)};function J(e,t=!0){if(e.destroyed)throw new Error("hash was destroyed");if(t&&e.finished)throw new Error("digest() was already called")}function fe(e,t){$(e,void 0,"output");let n=t.outputLen;if(!(e.length>=n))throw new RangeError('"output" expected length >= '+n)}function Q(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function H(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function x(e,t){return e<<32-t|e>>>t}var Ne=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",Me=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function le(e){if($(e),Ne)return e.toHex();let t="";for(let n=0;n<e.length;n++)t+=Me[e[n]];return t}function Ie(e,t,n="opts"){return ce(e,"defaults"),t!==void 0&&ce(t,n),Object.assign(Object.create(null),e,t)}function de(e,t={}){if(typeof e!="function")throw new TypeError('"hashCons" expected function, got type='+typeof e);t=Ie({},t,"info");let n=(o,i)=>e(i).update(o).digest(),r=e(void 0);return n.outputLen=r.outputLen,n.blockLen=r.blockLen,n.canXOF=r.canXOF,n.create=o=>e(o),Object.assign(n,t),Object.freeze(n)}var he=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});function be(e,t,n){return e&t^~e&n}function ge(e,t,n){return e&t^e&n^t&n}var L=class{blockLen;outputLen;canXOF=!1;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,n,r,o){this.blockLen=t,this.outputLen=n,this.padOffset=r,this.isLE=o,this.buffer=new Uint8Array(t),this.view=H(this.buffer)}update(t){J(this),$(t);let{view:n,buffer:r,blockLen:o}=this,i=t.length,s=!1;for(let a=0;a<i;){let u=Math.min(o-this.pos,i-a);if(u===o){let f=H(t);for(;o<=i-a;a+=o)this.process(f,a);s=!0;continue}r.set(a===0&&u===i?t:t.subarray(a,a+u),this.pos),this.pos+=u,a+=u,this.pos===o&&(this.process(n,0),this.pos=0,s=!0)}return this.length+=t.length,s&&this.roundClean(),this}digestInto(t){J(this),fe(t,this),this.finished=!0;let{buffer:n,view:r,blockLen:o,isLE:i}=this,{pos:s}=this;n[s++]=128,n.fill(0,s),this.padOffset>o-s&&(this.process(r,0),n.fill(0)),ae(r,o-8,this.length*8,i),this.process(r,0),this.roundClean();let a=t===n?r:H(t),u=this.outputLen,f=u/4,d=this.get();if(u%4||f>d.length)throw new Error("invalid outputLen");for(let c=0;c<f;c++)a.setUint32(4*c,d[c],i)}digest(){let{buffer:t,outputLen:n}=this;this.digestInto(t);let r=t.slice(0,n);return this.destroy(),r}_cloneIntoMeta(t){let{buffer:n,length:r,finished:o,destroyed:i,pos:s}=this;return t.destroyed=i,t.finished=o,t.length=r,t.pos=s,s&&t.buffer.set(n),t}clone(){return this._cloneInto()}},pe=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var qe=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),S=new Uint32Array(64),X=class extends L{A=0;B=0;C=0;D=0;E=0;F=0;G=0;H=0;constructor(t,n){super(64,t,8,!1),this.A=n[0]|0,this.B=n[1]|0,this.C=n[2]|0,this.D=n[3]|0,this.E=n[4]|0,this.F=n[5]|0,this.G=n[6]|0,this.H=n[7]|0}get(){let{A:t,B:n,C:r,D:o,E:i,F:s,G:a,H:u}=this;return[t,n,r,o,i,s,a,u]}set(t,n,r,o,i,s,a,u){this.A=t|0,this.B=n|0,this.C=r|0,this.D=o|0,this.E=i|0,this.F=s|0,this.G=a|0,this.H=u|0}_cloneInto(t){return(t||=new this.constructor).set(...this.get()),this._cloneIntoMeta(t)}process(t,n){for(let c=0;c<16;c++,n+=4)S[c]=t.getUint32(n,!1);for(let c=16;c<64;c++){let h=S[c-15],p=S[c-2],k=x(h,7)^x(h,18)^h>>>3,m=x(p,17)^x(p,19)^p>>>10;S[c]=m+S[c-7]+k+S[c-16]|0}let{A:r,B:o,C:i,D:s,E:a,F:u,G:f,H:d}=this;for(let c=0;c<64;c++){let h=x(a,6)^x(a,11)^x(a,25),p=d+h+be(a,u,f)+qe[c]+S[c]|0,m=(x(r,2)^x(r,13)^x(r,22))+ge(r,o,i)|0;d=f,f=u,u=a,a=s+p|0,s=i,i=o,o=r,r=p+m|0}r=r+this.A|0,o=o+this.B|0,i=i+this.C|0,s=s+this.D|0,a=a+this.E|0,u=u+this.F|0,f=f+this.G|0,d=d+this.H|0,this.set(r,o,i,s,a,u,f,d)}roundClean(){Q(S)}destroy(){this.destroyed=!0,this.set(0,0,0,0,0,0,0,0),Q(this.buffer)}},z=class extends X{constructor(){super(32,pe)}};var xe=de(()=>new z,he(1));var ye=new Map,Y=32,ke=new WeakMap,me=new WeakMap;function We(e){return le(xe(new TextEncoder().encode(String(e))))}var _=e=>Array.isArray(e)?e.map(_):typeof e=="string"||typeof e=="number"?We(e):null,U=e=>typeof e=="string"?e.toLowerCase():e;function ve(e){let t=ke.get(e);return t||(t=new Set(e),ke.set(e,t)),t}function Je(e){let t=me.get(e);return t||(t=new Set(e.map(U)),me.set(e,t)),t}function Qe(e){O(e);for(let t of Object.values(e)){let n=t?.type==="list"||t?.type==="hashed"?t.values:null;n&&n.length>=Y&&ve(n)}return e}function y(e,t,n,r){n=n||{},r||O(n),r=r||new Set;for(let[o,i]of Object.entries(t))switch(o){case"$or":if(!Ee(e,i,n,r))return!1;break;case"$nor":if(Ee(e,i,n,r))return!1;break;case"$and":if(!et(e,i,n,r))return!1;break;case"$not":if(y(e,i,n,r))return!1;break;case"$savedGroup":if(!Xe(e,i,n,r))return!1;break;default:if(!V(i,Be(e,o),n,!1,r))return!1}return!0}function Xe(e,t,n,r){if(!t||typeof t!="object"||Array.isArray(t))return!1;let{id:o,attributeKey:i}=t;if(typeof o!="string"||r.has(o)||i!==void 0&&typeof i!="string")return!1;let s=n[o];if(!s||Array.isArray(s)||typeof s!="object")return!1;let a=new Set(r).add(o);if(s.type==="list"||s.type==="hashed"){let u=i??s.attributeKey;if(typeof u!="string"||!Array.isArray(s.values))return!1;let f=Be(e,u);return v(s.type==="hashed"?_(f):f,s.values)}return s.type==="condition"?!s.condition||typeof s.condition!="object"?!1:y(e,s.condition,n,a):!1}function Be(e,t){let n=t.split("."),r=e;for(let o of n)if(r&&typeof r=="object"&&o in r)r=r[o];else return null;return r}function we(e,t=!1){let n=`${e}${t?"/i":""}`,r=ye.get(n);return r||(r=new RegExp(e.replace(/([^\\])\//g,"$1\\/"),t?"i":void 0),ye.set(n,r)),r}function V(e,t,n,r=!1,o=new Set){if(typeof e=="string")return r?String(t).toLowerCase()===e.toLowerCase():t+""===e;if(typeof e=="number")return t*1===e;if(typeof e=="boolean")return t!==null&&!!t===e;if(e===null)return t===null;if(Array.isArray(e)||!Te(e))return JSON.stringify(t)===JSON.stringify(e);let i=e;for(let s in i)if(!Ze(s,t,i[s],n,o))return!1;return!0}function Te(e){let t=Object.keys(e);return t.length>0&&t.filter(n=>n[0]==="$").length===t.length}function ze(e){if(e===null)return"null";if(Array.isArray(e))return"array";let t=typeof e;return["string","number","boolean","object","undefined"].includes(t)?t:"unknown"}function Ye(e,t,n,r){if(!Array.isArray(e))return!1;let o=Te(t)?i=>V(t,i,n,!1,r):i=>y(i,t,n,r);for(let i=0;i<e.length;i++)if((e[i]??null)!==null&&o(e[i]))return!0;return!1}function v(e,t,n=!1){if(n){let o;if(t.length>=Y){let i=Je(t);o=s=>{let a=U(s);return!(typeof a=="number"&&Number.isNaN(a))&&i.has(a)}}else o=i=>t.some(s=>U(i)===U(s));return Array.isArray(e)?e.some(i=>o(i)):o(e)}let r=t.length>=Y?(o=>i=>o.has(i))(ve(t)):o=>t.includes(o);return Array.isArray(e)?e.some(o=>r(o)):r(e)}function Se(e){return e===void 0?[]:e&&typeof e=="object"&&(e.type==="list"||e.type==="hashed")&&Array.isArray(e.values)?e.values:null}function Ae(e,t,n,r=!1,o=new Set){if(!Array.isArray(e))return!1;for(let i=0;i<t.length;i++){let s=!1;for(let a=0;a<e.length;a++)if(V(t[i],e[a],n,r,o)){s=!0;break}if(!s)return!1}return!0}function Ze(e,t,n,r,o=new Set){let i=t,s=n;switch(e){case"$veq":return g(t)===g(n);case"$vne":return g(t)!==g(n);case"$vgt":return g(t)>g(n);case"$vgte":return g(t)>=g(n);case"$vlt":return g(t)<g(n);case"$vlte":return g(t)<=g(n);case"$eq":return t===n;case"$ne":return t!==n;case"$lt":return i<s;case"$lte":return i<=s;case"$gt":return i>s;case"$gte":return i>=s;case"$exists":return n?t!=null:t==null;case"$in":return Array.isArray(n)?v(t,n):!1;case"$ini":return Array.isArray(n)?v(t,n,!0):!1;case"$inGroup":{let a=r[n],u=Se(a);return u===null?!1:v(a?.type==="hashed"?_(t):t,u)}case"$notInGroup":{let a=r[n],u=Se(a);return u===null?!1:!v(a?.type==="hashed"?_(t):t,u)}case"$nin":return Array.isArray(n)?!v(t,n):!1;case"$nini":return Array.isArray(n)?!v(t,n,!0):!1;case"$not":return!V(n,t,r,!1,o);case"$size":return Array.isArray(t)?V(n,t.length,r,!1,o):!1;case"$elemMatch":return Ye(t,n,r,o);case"$all":return Array.isArray(n)?Ae(t,n,r,!1,o):!1;case"$alli":return Array.isArray(n)?Ae(t,n,r,!0,o):!1;case"$regex":try{return we(n).test(t)}catch{return!1}case"$regexi":try{return we(n,!0).test(t)}catch{return!1}case"$type":return ze(t)===n;default:return!1}}function Ee(e,t,n,r){if(!t.length)return!0;for(let o of t)if(y(e,o,n,r))return!0;return!1}function et(e,t,n,r){for(let o of t)if(!y(e,o,n,r))return!1;return!0}function Z(e){return ie(e),{context:e,stack:{evaluatedFeatures:new Set}}}function ee(e){return{...e.attributes,...e.attributeOverrides}}function A(e,t,n){let r=t||"id",o="",i=ee(e);return i[r]&&(o=i[r]),!o&&n&&(i[n]&&(o=i[n]),o&&(r=n)),{hashAttribute:r,hashValue:o}}function l(e,t,n){e.context.log?.(t,n)}function D(e,t){return t=t||0,`${e}__${t}`}function te(e,t){return`${e}||${t}`}function tt(e,t,n){let r=e.stickyBucketAssignmentDocs;if(!r)return{};let{hashAttribute:o,hashValue:i}=A(e,t),s=te(o,T(i)),{hashAttribute:a,hashValue:u}=A(e,n),f=u?te(a,T(u)):null,d={};return f&&r[f]&&Object.assign(d,r[f].assignments||{}),r[s]&&Object.assign(d,r[s].assignments||{}),d}function Fe({context:e,expKey:t,expBucketVersion:n,expHashAttribute:r,expFallbackAttribute:o,expMinBucketVersion:i,expMeta:s}){n=n||0,i=i||0,r=r||"id",s=s||[];let a=D(t,n),u=tt(e,r,o);if(i>0)for(let c=0;c<i;c++){let h=D(t,c);if(u[h]!==void 0)return{variation:-1,versionIsBlocked:!0}}let f=u[a];if(f===void 0)return{variation:-1};let d=s.findIndex(c=>c.key===f);return d<0?{variation:-1}:{variation:d}}function Re(e,t,n,r){let o=te(t,n),i=e.stickyBucketAssignmentDocs,s=i&&i[o]?i[o].assignments||{}:{},a={...s,...r},u=JSON.stringify(s)!==JSON.stringify(a);return{key:o,doc:{attributeName:t,attributeValue:n,assignments:a},changed:u}}function Ce(e){return Object.fromEntries(Object.entries(e).filter(([,t])=>t!==void 0))}function nt(e,t){let n=Z(t),r=Oe(e,null,n);return t.onExperimentEval?.(e,r),r}function rt(e,t){return re(e,Z(t))}function ot(e){return e.forcedVariations||{}}function Ve(e,t,n){let{context:r}=e;if(r.trackedExperiments){let o=Le(t,n);if(r.trackedExperiments.has(o))return;r.trackedExperiments.add(o)}ne(()=>r.onExperimentViewed?.(t,n))}function st(e,t,n){let{context:r}=e;if(r.trackedFeatureUsage){let o=JSON.stringify(n.value);if(r.trackedFeatureUsage[t]===o)return;r.trackedFeatureUsage[t]=o}ne(()=>r.onFeatureUsage?.(t,n))}function ne(e){try{let t=e();t&&typeof t.catch=="function"&&t.catch(()=>{})}catch{}}function re(e,t){let{context:n}=t;if(t.stack.evaluatedFeatures.has(e))return l(t,`evalFeature: circular dependency detected: ${t.stack.id} -> ${e}`,{from:t.stack.id,to:e}),E(t,e,null,"cyclicPrerequisite");t.stack.evaluatedFeatures.add(e),t.stack.id=e;let r=n.features?.[e];for(let i of r?.rules??[])q(i);let o=n.forcedFeatureValues;if(o&&o.has(e))return l(t,"Global override",{id:e,value:o.get(e)}),E(t,e,o.get(e),"override");if(!r)return l(t,"Unknown feature",{id:e}),E(t,e,null,"unknownFeature");if(r.rules){let i=new Set(t.stack.evaluatedFeatures);e:for(let s of r.rules){if(s.parentConditions)for(let f of s.parentConditions){t.stack.evaluatedFeatures=new Set(i);let d=re(f.id,t);if(d.source==="cyclicPrerequisite")return E(t,e,null,"cyclicPrerequisite");let c={value:d.value};if(!y(c,f.condition||{},n.savedGroups||{})){if(f.gate)return l(t,"Feature blocked by prerequisite",{id:e,rule:s}),E(t,e,null,"prerequisite");l(t,"Skip rule because prerequisite evaluation fails",{id:e,rule:s});continue e}}if(s.filters&&He(s.filters,t)){l(t,"Skip rule because of filters",{id:e,rule:s});continue}if("force"in s){if(s.condition&&!$e(s.condition,t)){l(t,"Skip rule because of condition ff",{id:e,rule:s});continue}if(!it(t,s.seed||e,s.hashAttribute,n.saveStickyBucketAssignmentDoc&&!s.disableStickyBucketing?s.fallbackAttribute:void 0,s.range,s.coverage,s.hashVersion)){l(t,"Skip rule because user not included in rollout",{id:e,rule:s});continue}return l(t,"Force value from rule",{id:e,rule:s}),s.tracks&&s.tracks.forEach(f=>{Ve(t,f.experiment,f.result)}),E(t,e,s.force,"force",s.id)}if(!s.variations){l(t,"Skip invalid rule",{id:e,rule:s});continue}let a={variations:s.variations,key:s.key||e};"coverage"in s&&(a.coverage=s.coverage),s.weights&&(a.weights=s.weights),s.hashAttribute&&(a.hashAttribute=s.hashAttribute),s.fallbackAttribute&&(a.fallbackAttribute=s.fallbackAttribute),s.disableStickyBucketing&&(a.disableStickyBucketing=s.disableStickyBucketing),s.bucketVersion!==void 0&&(a.bucketVersion=s.bucketVersion),s.minBucketVersion!==void 0&&(a.minBucketVersion=s.minBucketVersion),s.meta&&(a.meta=s.meta),s.ranges&&(a.ranges=s.ranges),s.name&&(a.name=s.name),s.phase&&(a.phase=s.phase),s.seed&&(a.seed=s.seed),s.hashVersion&&(a.hashVersion=s.hashVersion),s.filters&&(a.filters=s.filters),s.condition&&(a.condition=s.condition);let u=Oe(a,e,t);if(n.onExperimentEval?.(a,u),u.inExperiment&&!u.passthrough)return E(t,e,u.value,"experiment",s.id,a,u)}}return l(t,"Use default value",{id:e,value:r.defaultValue}),E(t,e,r.defaultValue===void 0?null:r.defaultValue,"defaultValue")}function Oe(e,t,n){let{context:r}=n;q(e);let o=e.key,i=e.variations.length;if(i<2)return l(n,"Invalid experiment",{id:o}),b(n,e,-1,!1,t);if(r.enabled===!1)return l(n,"Context disabled",{id:o}),b(n,e,-1,!1,t);if(e.urlPatterns&&!I(r.url||"",e.urlPatterns))return l(n,"Skip because of url targeting",{id:o}),b(n,e,-1,!1,t);let s=N(o,r.url||"",i);if(s!==null)return l(n,"Force via querystring",{id:o,variation:s}),b(n,e,s,!1,t);let u=ot(r)[o];if(u!==void 0)return l(n,"Force via dev tools",{id:o,variation:u}),b(n,e,u,!1,t);if(e.active===!1)return l(n,"Skip because inactive",{id:o}),b(n,e,-1,!1,t);let{hashAttribute:f,hashValue:d}=A(r,e.hashAttribute,r.saveStickyBucketAssignmentDoc&&!e.disableStickyBucketing?e.fallbackAttribute:void 0);if(!d)return l(n,"Skip because missing hashAttribute",{id:o}),b(n,e,-1,!1,t);let c=-1,h=!1,p=!1;if(r.saveStickyBucketAssignmentDoc&&!e.disableStickyBucketing){let{variation:w,versionIsBlocked:B}=Fe(Ce({context:r,expKey:e.key,expBucketVersion:e.bucketVersion,expHashAttribute:e.hashAttribute,expFallbackAttribute:e.fallbackAttribute,expMinBucketVersion:e.minBucketVersion,expMeta:e.meta}));h=w>=0,c=w,p=!!B}if(!h){if(e.filters&&He(e.filters,n))return l(n,"Skip because of filters",{id:o}),b(n,e,-1,!1,t);if(e.include&&!M(e.include))return l(n,"Skip because of include function",{id:o}),b(n,e,-1,!1,t);if(e.condition&&!$e(e.condition,n))return l(n,"Skip because of condition exp",{id:o}),b(n,e,-1,!1,t);if(e.parentConditions){let w=new Set(n.stack.evaluatedFeatures);for(let B of e.parentConditions){n.stack.evaluatedFeatures=new Set(w);let F=re(B.id,n);if(F.source==="cyclicPrerequisite")return b(n,e,-1,!1,t);let j={value:F.value};if(!y(j,B.condition||{},r.savedGroups||{}))return l(n,"Skip because prerequisite evaluation fails",{id:o}),b(n,e,-1,!1,t)}}}let k=R(e.seed||o,d,e.hashVersion??2);if(k===null)return l(n,"Skip because of invalid hash version",{id:o}),b(n,e,-1,!1,t);if(!h){let w=e.ranges||G(i,e.coverage===void 0?1:e.coverage,e.weights);c=K(k,w)}if(p)return l(n,"Skip because sticky bucket version is blocked",{id:o}),b(n,e,-1,!1,t,void 0,!0);if(c<0)return l(n,"Skip because of coverage",{id:o}),b(n,e,-1,!1,t);if("force"in e)return l(n,"Force variation",{id:o,variation:e.force}),b(n,e,e.force===void 0?-1:e.force,!1,t);if(r.qaMode)return l(n,"Skip because QA mode",{id:o}),b(n,e,-1,!1,t);let m=b(n,e,c,!0,t,k,h);if(r.saveStickyBucketAssignmentDoc&&!e.disableStickyBucketing){let{changed:w,key:B,doc:F}=Re(r,f,T(d),{[D(e.key,e.bucketVersion)]:m.key});if(w){r.stickyBucketAssignmentDocs=r.stickyBucketAssignmentDocs||{},r.stickyBucketAssignmentDocs[B]=F;let j=r.saveStickyBucketAssignmentDoc;ne(()=>j(F))}}return Ve(n,e,m),l(n,"In experiment",{id:o,variation:m.variationId}),m}function E(e,t,n,r,o,i,s){let a={value:n,on:!!n,off:!n,source:r,ruleId:o||""};return i&&(a.experiment=i),s&&(a.experimentResult=s),r!=="override"&&st(e,t,a),a}function $e(e,t){return y(ee(t.context),e,t.context.savedGroups||{})}function He(e,t){return e.some(n=>{let{hashValue:r}=A(t.context,n.attribute);if(!r)return!0;let o=R(n.seed,r,n.hashVersion||2);return o===null?!0:!n.ranges.some(i=>C(o,i))})}function it(e,t,n,r,o,i,s){if(!o&&i===void 0)return!0;if(!o&&i===0)return!1;let{hashValue:a}=A(e.context,n,r);if(!a)return!1;let u=R(t,a,s??2);return u===null?!1:o?C(u,o):i!==void 0?u<=i:!0}function b(e,t,n,r,o,i,s){let a=!0;(n<0||n>=t.variations.length)&&(n=0,a=!1);let{hashAttribute:u,hashValue:f}=A(e.context,t.hashAttribute,e.context.saveStickyBucketAssignmentDoc&&!t.disableStickyBucketing?t.fallbackAttribute:void 0),d=t.meta?.[n]??{},c=t.variations[0];for(let[p,k]of t.variations.entries())if(p===n){c=k;break}let h={key:d.key||""+n,featureId:o,inExperiment:a,hashUsed:r,variationId:n,value:c,hashAttribute:u,hashValue:f,stickyBucketUsed:!!s};return d.name&&(h.name=d.name),i!==void 0&&(h.bucket=i),d.passthrough&&(h.passthrough=d.passthrough),h}function Le(e,t){return t.hashAttribute+t.hashValue+e.key+t.variationId}/*!
2
+ Copyright (c) 2025 GrowthBook, Inc.
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
5
+ furnished to do so, subject to the following conditions:
6
+
7
+ The above copyright notice and this permission notice shall be included in all
8
+ copies or substantial portions of the Software.
9
+
10
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
11
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
12
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
13
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
14
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
15
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
16
+ SOFTWARE.
17
+ */export{T as a,I as b,le as c,xe as d,Qe as e,y as f,nt as g,rt as h,Le as i};
@@ -0,0 +1 @@
1
+ import{fa as u}from"./chunk-G23YNWWI.js";import{ZodError as f}from"zod";function T(n,r,t,e){try{return n.parse(r)}catch(s){throw e&&s instanceof f?new u(t,e):s}}async function R(n,r,t,e={},s){let o=typeof e=="function"?{}:e,i=T(r.request,t,"INVALID_REQUEST",o.request),p=await n(r.path,i,r.method,s),a=typeof e=="function"?e:e.parseResponse;return a?a(r.response,p):T(r.response,p,"INVALID_RESPONSE",o.response)}export{R as a};
@@ -0,0 +1 @@
1
+ import{z as e}from"zod";var c=e.json().superRefine((t,i)=>{let r=0;function o(n,s){if(++r>1e4||s>20){i.addIssue({code:"custom",message:"JSON exceeds its depth or node budget"});return}if(typeof n=="string"&&(n.includes("\0")||/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(n))&&i.addIssue({code:"custom",message:"JSON text must contain valid Unicode without NUL"}),Array.isArray(n))n.forEach(a=>o(a,s+1));else if(n&&typeof n=="object")for(let[a,u]of Object.entries(n))(a.includes("\0")||/[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?<![\uD800-\uDBFF])[\uDC00-\uDFFF]/u.test(a)||["__proto__","prototype","constructor"].includes(a))&&i.addIssue({code:"custom",message:"Reserved JSON property"}),o(u,s+1)}o(t,0),new TextEncoder().encode(JSON.stringify(t)).byteLength>65536&&i.addIssue({code:"custom",message:"JSON exceeds 64 KiB"})}),l=e.record(e.string().min(1).max(128),c).superRefine((t,i)=>{(!c.safeParse(t).success||Object.keys(t).length>128||new TextEncoder().encode(JSON.stringify(t)).byteLength>65536||["__proto__","constructor","prototype"].some(r=>Object.hasOwn(t,r)))&&i.addIssue({code:"custom",message:"Attribute document exceeds its budget or uses a reserved key"})}),b=new Set(["$in","$ini","$inGroup","$nin","$nini","$notInGroup","$gt","$gte","$lt","$lte","$regex","$regexi","$ne","$eq","$size","$elemMatch","$all","$alli","$not","$type","$exists","$vgt","$vgte","$vlt","$vlte","$vne","$veq","$and","$or","$nor","$savedGroup"]),d=l.superRefine((t,i)=>{function r(o){if(Array.isArray(o))o.forEach(r);else if(o&&typeof o=="object")for(let[n,s]of Object.entries(o)){if(n==="$savedGroup"&&!e.strictObject({id:e.uuid(),attributeKey:e.string().min(1).max(128).optional()}).safeParse(s).success&&i.addIssue({code:"custom",message:"Saved groups use v2 object references"}),!n.startsWith("$")&&n.split(".").some(a=>["__proto__","prototype","constructor"].includes(a))&&i.addIssue({code:"custom",message:"Reserved attribute path"}),n.startsWith("$")&&!b.has(n)&&i.addIssue({code:"custom",message:`Unknown GrowthBook operator: ${n}`}),["$regex","$regexi"].includes(n)&&typeof s=="string"){(/\(\?[<!=]|\\[0-9]|\\k</.test(s)||[...s.matchAll(/\{(\d+)(?:,(\d*))?\}/g)].some(a=>Number(a[1])>255||Number(a[2]||0)>255)||n==="$regexi"&&/[^\x00-\x7f]/.test(s.replace(/\\u([0-9a-f]{4})/gi,(a,u)=>String.fromCharCode(Number.parseInt(u,16)))))&&i.addIssue({code:"custom",message:"Regex is outside the shared TS/SQL subset"});try{new RegExp(s)}catch{i.addIssue({code:"custom",message:"Invalid regular expression"})}}r(s)}}typeof t.source=="string"&&["all","any","group","parameter","answer","attribute","result"].includes(t.source)&&("operator"in t||"predicates"in t||"groupId"in t)&&i.addIssue({code:"custom",message:"Obsolete condition protocol"}),r(t)}),y=e.discriminatedUnion("type",[e.strictObject({type:e.literal("condition"),condition:d}),e.strictObject({type:e.literal("list"),attributeKey:e.string().min(1).max(128),values:e.array(e.union([e.string(),e.number().finite()])).max(1e5)})]).refine(t=>t.type!=="list"||new TextEncoder().encode(JSON.stringify(t.values)).byteLength<=1048576,"Saved group list exceeds 1 MiB");function x(t){let i=new Set;function r(o){if(Array.isArray(o))o.forEach(r);else if(o&&typeof o=="object")for(let[n,s]of Object.entries(o))n==="$savedGroup"&&s&&typeof s=="object"&&!Array.isArray(s)&&typeof s.id=="string"?i.add(s.id):["$inGroup","$notInGroup"].includes(n)&&typeof s=="string"?i.add(s):["$eq","$ne","$in","$nin","$ini","$nini"].includes(n)||r(s)}return r(t),[...i]}var S=e.record(e.uuid(),y).superRefine((t,i)=>{let r=new Set,o=new Set;function n(s){if(r.has(s)){i.addIssue({code:"custom",message:"Cyclic saved group dependency"});return}if(o.has(s))return;let a=t[s];if(!a){i.addIssue({code:"custom",message:"Missing saved group dependency"});return}r.add(s),a.type==="condition"&&x(a.condition).forEach(n),r.delete(s),o.add(s)}Object.keys(t).forEach(n)}),g=e.tuple([e.number().min(0).max(1),e.number().min(0).max(1)]).refine(([t,i])=>t<=i),f=e.strictObject({attribute:e.string().optional(),seed:e.string().min(1),hashVersion:e.literal(2),ranges:e.array(g).min(1).max(100)}),$=e.strictObject({id:e.string().min(1).max(128),condition:d,gate:e.boolean().optional()}),m={id:e.string().max(128).optional(),condition:d.optional(),parentConditions:e.array($).max(50).optional(),filters:e.array(f).max(20).optional()},w=e.union([e.strictObject({...m}),e.strictObject({...m,force:c,coverage:e.number().min(0).max(1).optional(),range:g.optional(),seed:e.string().min(1).optional(),hashAttribute:e.string().optional(),hashVersion:e.literal(2).optional()}),e.strictObject({...m,type:e.literal("experiment-ref"),experimentId:e.uuid(),values:e.record(e.string().min(1),c),meta:e.record(e.string().min(1),e.strictObject({passthrough:e.boolean()})).optional()})]),v=e.strictObject({defaultValue:c,rules:e.array(w).max(100)}),V=e.record(e.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,127}$/),v).superRefine((t,i)=>{Object.keys(t).length>100&&i.addIssue({code:"custom",message:"Too many Features"});let r=new Set,o=new Set;function n(s){if(r.has(s)){i.addIssue({code:"custom",message:`Cyclic Feature dependency: ${s}`});return}if(o.has(s))return;let a=t[s];if(!a){i.addIssue({code:"custom",message:`Unknown prerequisite Feature: ${s}`});return}r.add(s);for(let u of a.rules)for(let p of u.parentConditions??[])n(p.id);r.delete(s),o.add(s)}Object.keys(t).forEach(n)}),O=e.strictObject({name:e.string().max(80),reason:e.string().max(500),dateStarted:e.iso.datetime({offset:!0}),dateEnded:e.iso.datetime({offset:!0}).nullable(),coverage:e.number().min(0).max(1),variationWeights:e.array(e.number().min(0).max(1)).min(2).max(20).refine(t=>Math.abs(t.reduce((i,r)=>i+r,0)-1)<=.01),condition:d,savedGroups:e.array(e.strictObject({match:e.enum(["any","all","none"]),ids:e.array(e.uuid()).min(1)})).max(50),namespace:e.strictObject({id:e.uuid(),ranges:e.array(g).min(1)}).nullable(),seed:e.string().min(1).max(128)}),j=e.strictObject({key:e.string().min(1).max(128),name:e.string().min(1).max(80),hypothesis:e.string().max(2e3),status:e.enum(["draft","running","stopped"]),hashAttribute:e.string().min(1).max(128),fallbackAttribute:e.string().max(128).nullable(),hashVersion:e.literal(2),disableStickyBucketing:e.boolean(),bucketVersion:e.number().int().min(0).max(1e3),minBucketVersion:e.number().int().min(0).max(1e3),variations:e.array(e.strictObject({id:e.string().min(1),key:e.string().min(1),name:e.string().max(80),description:e.string().max(500)})).min(2).max(20),phases:e.array(O).min(1).max(100),releasedVariationId:e.string().nullable(),excludeFromPayload:e.boolean(),statusSchedule:e.strictObject({startAt:e.iso.datetime({offset:!0}).nullable(),stopAt:e.iso.datetime({offset:!0}).nullable(),stopAfter:e.strictObject({value:e.number().int().positive().max(36500),unit:e.enum(["hours","days"])}).nullable().optional()}).nullable()}).superRefine((t,i)=>{(t.minBucketVersion>t.bucketVersion||t.statusSchedule?.stopAt&&t.statusSchedule?.stopAfter||t.phases.some((r,o)=>{if(o===0)return!1;let n=t.phases[o-1];return!n?.dateEnded||Date.parse(r.dateStarted)<Date.parse(n.dateStarted)||Date.parse(n.dateEnded)>Date.parse(r.dateStarted)})||new Set(t.variations.map(r=>r.key)).size!==t.variations.length||new Set(t.variations.map(r=>r.id)).size!==t.variations.length||t.releasedVariationId!==null&&!t.variations.some(r=>r.id===t.releasedVariationId)||t.statusSchedule?.startAt&&t.statusSchedule?.stopAt&&Date.parse(t.statusSchedule.startAt)>=Date.parse(t.statusSchedule.stopAt)||t.phases.some(r=>r.dateEnded&&Date.parse(r.dateStarted)>=Date.parse(r.dateEnded)||r.namespace?.ranges.some(([o,n],s,a)=>o>=n||a.some(([u,p],h)=>h!==s&&o<p&&u<n)))||t.phases.some(r=>r.variationWeights.length!==t.variations.length))&&i.addIssue({code:"custom",message:"Invalid experiment versions, variation keys or weights"})});var F=j.safeExtend({filters:e.array(f).optional()}),A=e.strictObject({experiments:e.record(e.uuid(),F),savedGroups:S}),k=e.strictObject({attributeName:e.string(),attributeValue:e.string(),assignments:e.record(e.string(),e.string())}),_=e.strictObject({snapshot:A,attributes:l,results:l,stickyBucketAssignmentDocs:e.record(e.string(),k)}),z=e.strictObject({variantKey:e.string().nullable(),bucketVersion:e.number().int().min(0),source:e.enum(["unknownFeature","defaultValue","force","override","experiment","prerequisite","cyclicPrerequisite"]),bucket:e.number().min(0).max(1).optional(),stickyBucketUsed:e.boolean().optional(),hashUsed:e.boolean().optional()});export{c as a,l as b,d as c,x as d,k as e};
@@ -0,0 +1 @@
1
+ var s={name:"@tinkerlandai/indiana-sdk",version:"0.9.1",description:"Framework-independent Indiana SDK for customer identity, entitlements, credits, offers and growth surfaces.",license:"UNLICENSED",repository:{type:"git",url:"git+https://github.com/tinkerlandai/Indiana.git",directory:"packages/sdk"},engines:{node:">=22"},publishConfig:{access:"public",tag:"beta"},type:"module",sideEffects:!1,files:["dist","README.md","README.zh-CN.md","CHANGELOG.md","THIRD_PARTY_NOTICES.md"],exports:{"./react-native":{types:"./dist/react-native.d.ts","react-native":"./dist/react-native.js",import:"./dist/react-native.js",default:"./dist/react-native.js"},".":{types:"./dist/index.d.ts",import:"./dist/index.js"},"./popup":{types:"./dist/popup.d.ts",import:"./dist/popup.js"},"./server":{types:"./dist/server.d.ts",import:"./dist/server.js"},"./openrouter":{types:"./dist/openrouter.d.ts",import:"./dist/openrouter.js"},"./native-shell":{types:"./dist/native-shell.d.ts",import:"./dist/native-shell.js"},"./page":{types:"./dist/page.d.ts",import:"./dist/page.js"},"./visual":{types:"./dist/visual.d.ts",import:"./dist/visual.js"}},scripts:{build:"tsup",prepack:"pnpm run build",typecheck:"tsc --noEmit",lint:"node ../../scripts/ci/lint.mjs --workspace packages/sdk"},dependencies:{"@ai-sdk/provider":"4.0.26","@types/json-schema":"7.0.15","css-tree":"^3.2.1","dom-mutator":"0.7.0",dompurify:"^3.4.15",zod:"4.6.6"},devDependencies:{"@indiana/contracts":"workspace:*","@openrouter/sdk":"^1.4.25","@types/css-tree":"^3.2.0",ai:"7.0.136",tsup:"^8.5.1",typescript:"^5.9.3","whatwg-url-minimum":"0.2.0"},peerDependencies:{"@openrouter/sdk":"^1.4.25"},peerDependenciesMeta:{"@openrouter/sdk":{optional:!0}}};var i="https://api.tinker.cash";export{s as a,i as b};
@@ -0,0 +1 @@
1
+ import{fa as o}from"./chunk-G23YNWWI.js";function a(r,n){let t=i=>"document"in i?i.offering.id:i.content.offeringVersionId;return r.id===n.id&&t(r)===t(n)&&r.content?.artifact.sha256===n.content?.artifact.sha256}function s(r,n,t){if(r.operationId!==n.operationId||n.currency!==void 0&&r.currency!==n.currency)throw new o("INVALID_RESPONSE",t)}function u(r,n,t){if(r.lines.length!==1||r.lines[0].productVersionId!==n.productVersionId||n.currency!==void 0&&r.currency!==n.currency||n.provider!==void 0&&r.provider!==n.provider)throw new o("INVALID_RESPONSE",t)}function c(r,n,t=!1){return!r||r.operationId!==n?.operationId?n:r.status==="complete"&&n.status!=="complete"||r.status!=="pending"&&(n.status==="pending"||t&&n.status!=="complete")?r:n}export{a,s as b,u as c,c as d};
@@ -0,0 +1 @@
1
+ import{M as E,N as M,O as j,P as O,Q as T}from"./chunk-IH4KBLNR.js";import{fa as u,k as w}from"./chunk-G23YNWWI.js";import{z as t}from"zod";var _=E,V=t.string().regex(/^(0|[1-9]\d{0,5})(\.\d{1,12})?$/),C=t.strictObject(Object.fromEntries(_.map(i=>[i,t.number().int().nonnegative().max(1e9)]))),L=M,D=j,q=t.strictObject({modelId:L,source:t.enum(["models.dev","custom"]),fetchedAt:t.iso.datetime(),rates:O,contextTier:t.number().int().nonnegative(),markupPercent:D}),U=t.strictObject({pricing:q,tokens:C,quantity:w,digest:t.string().regex(/^[a-f0-9]{64}$/)}),z=i=>{let[s,o=""]=i.split(".");return BigInt(s)*10n**12n+BigInt(o.padEnd(12,"0"))};function $(i){if(typeof i!="number"||!Number.isFinite(i)||i<0)throw new u("AI_PRICE_UNAVAILABLE","A published token price is missing");let s=String(i),o=s.includes("e")?i.toFixed(12).replace(/0+$/,"").replace(/\.$/,""):s;if(Number(o)!==i||!V.safeParse(o).success)throw new u("AI_PRICE_UNAVAILABLE","Published price exceeds the supported precision");return o}var R=t.strictObject({input:t.number().nonnegative(),output:t.number().nonnegative(),cache_read:t.number().nonnegative().optional(),cache_write:t.number().nonnegative().optional(),reasoning:t.number().nonnegative().optional(),input_audio:t.number().nonnegative().optional(),output_audio:t.number().nonnegative().optional()}),F=R.extend({context_over_200k:t.unknown().optional(),tiers:t.array(R.extend({tier:t.strictObject({type:t.literal("context"),size:t.number().int().nonnegative()})})).max(20).refine(i=>new Set(i.map(s=>s.tier.size)).size===i.length).optional()});async function N(i,s,o){let d=new TextEncoder().encode(JSON.stringify({pricing:i,tokens:s,quantity:o}));return[...new Uint8Array(await crypto.subtle.digest("SHA-256",d))].map(m=>m.toString(16).padStart(2,"0")).join("")}function B(i,s){let o=0n;for(let c of _){if(!s[c])continue;let f=i.rates[c];if(f===void 0)throw new u("AI_PRICE_UNAVAILABLE",`No published price for ${c}; report exclusive token pools`);o+=z(f)*BigInt(s[c])}let[d,m="0"]=String(i.markupPercent).split("e"),r=(d.split(".")[1]?.length??0)-Number(m),e=10n**BigInt(Math.max(r,0)),n=BigInt(d.replace(".",""))*10n**BigInt(Math.max(-r,0)),g=100n*e+n,l=100n*e*1000000n,a=(o*g+l-1n)/l;return w.parse(`${a/1000000n}.${(a%1000000n).toString().padStart(6,"0")}`)}function K(i={}){if(typeof window<"u")throw new u("SERVER_ONLY","AI token pricing belongs on your backend");let s=T.parse({defaultMarkup:i.defaultMarkup??0,providerMarkups:i.providerMarkups??{},modelMarkups:i.modelMarkups??{},customModels:i.customModels??{}}),o=null,d=0;async function m(){if(!o||Date.now()>=d){d=Date.now()+15*6e4;let r=(async()=>{let e=await(i.fetch??fetch)("https://models.dev/api.json",{signal:AbortSignal.timeout(3e4)});if(!e.ok)throw new u("AI_PRICE_UNAVAILABLE","Models.dev pricing is unavailable");return{data:t.record(t.string(),t.object({models:t.record(t.string(),t.unknown())})).parse(await e.json()),fetchedAt:new Date().toISOString()}})().catch(e=>{throw o===r&&(o=null),e});o=r}return o}return{refreshPrices(){o=null,d=0},async quoteTokens(r){let e=L.parse(r.modelId),n=C.parse(r.tokens),[g,...l]=e.split("/"),a=s.customModels[e],c,f,p,y=0;if(a?.input!==void 0&&a.output!==void 0&&_.every(A=>n[A]===0||a[A]!==void 0))c={...a,input:a.input,output:a.output},f="custom",p=new Date().toISOString();else{let A=await m(),x=A.data[g]?.models[l.join("/")];if(!x)throw new u("AI_PRICE_UNAVAILABLE","Unknown model; configure a complete custom price");let{cost:I}=t.object({cost:F}).parse(x),P=n.input+n.cache_read+n.cache_write+n.input_audio;if(I.tiers===void 0&&I.context_over_200k!==void 0&&P>2e5)throw new u("AI_PRICE_UNAVAILABLE","A current context tier is required for this model");let b=I.tiers?.filter(k=>P>k.tier.size).sort((k,Q)=>Q.tier.size-k.tier.size)[0],v=b??I;b&&(y=b.tier.size),c=Object.fromEntries(_.filter(k=>v[k]!==void 0).map(k=>[k,$(v[k])])),c={...c,...a},f=a?"custom":"models.dev",p=A.fetchedAt}let h=q.parse({modelId:e,source:f,fetchedAt:p,rates:c,contextTier:y,markupPercent:s.modelMarkups[e]??s.providerMarkups[g]??s.defaultMarkup}),S=B(h,n);return U.parse({pricing:h,tokens:n,quantity:S,digest:await N(h,n,S)})},async trackTokens(r,e){let n=U.parse(e.quote);if(n.quantity!==B(n.pricing,n.tokens)||n.digest!==await N(n.pricing,n.tokens,n.quantity))throw new u("INVALID_REQUEST","AI quote changed after pricing");let g=e.properties??{},l=e.providerCostUsd===void 0?void 0:t.string().regex(/^(0|[1-9]\d{0,11})(\.\d{1,18})?$/).parse(e.providerCostUsd),a=e.generationId===void 0?void 0:t.string().min(1).max(120).parse(e.generationId),c=8+ +(l!==void 0)+ +(a!==void 0);if(Object.keys(g).some(p=>p.startsWith("ai_")))throw new u("INVALID_REQUEST","AI tracking reserves ai_ event properties");if(Object.keys(g).length>16-c)throw new u("INVALID_REQUEST","AI tracking properties exceed the available event budget");let f={operation:"consume",internal_feature_id:e.internal_feature_id,quantity:n.quantity,idempotencyKey:e.idempotencyKey,properties:{...g,...l!==void 0?{ai_provider_cost_usd:l}:{},...a!==void 0?{ai_generation_id:a}:{},ai_model:n.pricing.modelId,ai_source:n.pricing.source,ai_price_at:n.pricing.fetchedAt,ai_quote_hash:n.digest,ai_markup:String(n.pricing.markupPercent),ai_tier:String(n.pricing.contextTier),ai_tokens:_.map(p=>n.tokens[p]).join(","),ai_rates:"v1:"+_.map(p=>n.pricing.rates[p]===void 0?"-":z(n.pricing.rates[p]).toString(36)).join(",")},...e.entityId?{entityId:e.entityId}:{}};return r.mutateBalance({customerId:e.customerId,command:f})}}}async function Y(i,s,o={}){let{config:d,model_markups:m}=await i.readAiPricing(s);return K({defaultMarkup:d.default_markup??0,providerMarkups:Object.fromEntries(Object.entries(d.provider_markups??{}).map(([r,e])=>[r,e.markup])),modelMarkups:Object.fromEntries(Object.entries(m??{}).filter(([,r])=>r.markup!==void 0).map(([r,e])=>[r,e.markup])),customModels:Object.fromEntries(Object.entries(m??{}).filter(([,r])=>r.input_cost!==void 0||r.output_cost!==void 0).map(([r,e])=>[r,{...e.input_cost!==void 0?{input:String(e.input_cost)}:{},...e.output_cost!==void 0?{output:String(e.output_cost)}:{}}])),...o})}export{q as a,U as b,K as c,Y as d};
@@ -0,0 +1 @@
1
+ import{a as ae}from"./chunk-7DXL3LHT.js";import{z as tt}from"zod";var rt=["USD","EUR","CNY","GBP","JPY","CAD","AUD","NZD","CHF","HKD","SGD","KRW","INR","BRL","MXN","TWD","THB","IDR","MYR","PHP","VND","ZAR","AED","SAR","SEK","NOK","DKK","PLN","CZK","HUF","ILS","TRY","RON"],O=tt.enum(rt);function nt(e){let r=O.parse(e.toUpperCase());return["JPY","KRW","VND"].includes(r)?0:2}function dr(e,r,i="en",n={}){let a=O.parse(r.toUpperCase());return new Intl.NumberFormat(i,{style:"currency",currency:a,...n}).format(e/10**nt(a))}import{z as h}from"zod";import{z as S}from"zod";var J=S.string().regex(/^(0|[1-9]\d{0,12})(\.\d{1,12})?$/),I=S.string().regex(/^(0|[1-9]\d{0,11})(\.\d{1,6})?$/).transform(e=>e.includes(".")?e.replace(/0+$/,"").replace(/\.$/,""):e),it=S.string().regex(/^-?(0|[1-9]\d{0,11})(\.\d{1,6})?$/).transform(e=>{let r=e.includes(".")?e.replace(/0+$/,"").replace(/\.$/,""):e;return r==="-0"?"0":r}),se=I.refine(e=>/[1-9]/.test(e),"\u6570\u91CF\u5FC5\u987B\u5927\u4E8E 0"),ye=S.string().min(1).max(64),V=S.string().min(1).regex(/^[a-zA-Z0-9_-]+$/),be=S.string().min(1).max(64).refine(e=>!e.includes("::"),"Dimension IDs cannot contain ::"),L=S.record(ye,S.union([S.string().max(120),S.number().finite(),S.boolean()])).refine(e=>Object.keys(e).length<=16,"\u6700\u591A 16 \u4E2A\u8BA1\u4EF7\u5C5E\u6027").transform(e=>Object.fromEntries(Object.entries(e).map(([r,i])=>[r,String(i)]))),he=S.record(ye,S.union([S.string().max(120),S.number().finite(),S.boolean()]).transform(String)).refine(e=>Object.keys(e).length<=8,"\u5339\u914D\u6761\u4EF6\u6700\u591A 8 \u4E2A\u5C5E\u6027"),q=e=>{let r=e.startsWith("-");r&&(e=e.slice(1));let[i,n=""]=e.split(".");if(i===void 0||i==="")throw new Error("Invalid decimal value");let a=BigInt(i)*BigInt("1000000")+BigInt(n.padEnd(6,"0"));return r?-a:a},Se=S.array(S.object({upTo:se.nullable(),cost:I}).strict()).min(1).max(12).refine(e=>e.at(-1)?.upTo===null&&e.slice(0,-1).every((r,i)=>{let n=e[i-1]?.upTo;return r.upTo!==null&&(i===0||n!=null&&q(r.upTo)>q(n))}),"\u9636\u68AF\u4E0A\u9650\u5FC5\u987B\u9012\u589E\uFF0C\u6700\u540E\u4E00\u6863\u4E3A\u65E0\u9650"),ot=S.object({key:be,match:he,priority:S.number().int().default(0),cost:I.optional(),tiers:Se.optional()}).strict().refine(e=>e.cost!==void 0||e.tiers!==void 0,"\u7EF4\u5EA6\u9700\u8981\u6307\u5B9A\u5355\u4EF7\u6216\u9636\u68AF"),at=S.object({key:be,match:he,factor:se.optional(),add:it.optional()}).strict().refine(e=>e.factor!==void 0||e.add!==void 0,"A multiplier needs a factor or an add").transform(e=>({...e,factor:e.factor??"1",add:e.add??"0"})),st=S.object({units:se.default("1"),cost:I,tiers:Se.optional(),dimensions:S.array(ot).max(12).optional(),multipliers:S.array(at).max(4).optional()}).strict().superRefine((e,r)=>{let i=e.dimensions??[],n=e.multipliers??[];(new Set(i.map(s=>s.key)).size!==i.length||new Set(n.map(s=>s.key)).size!==n.length)&&r.addIssue({code:"custom",message:"\u7EF4\u5EA6\u548C\u500D\u7387\u7684 ID \u4E0D\u80FD\u91CD\u590D"});for(let[s,p]of i.entries())for(let f of i.slice(s+1))Object.keys(p.match).length===Object.keys(f.match).length&&p.priority===f.priority&&!Object.keys(p.match).some(x=>f.match[x]!==void 0&&f.match[x]!==p.match[x])&&r.addIssue({code:"custom",message:"\u7EF4\u5EA6\u53EF\u80FD\u540C\u65F6\u5339\u914D\uFF0C\u8BF7\u8C03\u6574\u4F18\u5148\u7EA7"});let a=[e.cost,...(e.tiers??[]).map(s=>s.cost),...i.flatMap(s=>[...s.cost===void 0?[]:[s.cost],...(s.tiers??[]).map(p=>p.cost)])],l=q(e.units);for(let s of a)for(let p=0;p<1<<n.length;p++){let f=n.filter((w,R)=>p&1<<R);if(f.some((w,R)=>f.slice(R+1).some(ge=>Object.keys(w.match).some(oe=>ge.match[oe]!==void 0&&ge.match[oe]!==w.match[oe]))))continue;let x=q(s),m=BigInt("1"),b=BigInt("0");for(let[w,R]of n.entries())p&1<<w&&(x*=q(R.factor??"1"),m*=BigInt("1000000"),b+=q(R.add??"0"));let N=(x+b*m)*BigInt("1000000"),U=m*l;(N<BigInt("0")||N%U!==BigInt("0")||N/U>BigInt("999999999999999999"))&&r.addIssue({code:"custom",message:"\u6BCF\u4E2A\u4E1A\u52A1\u5355\u4F4D\u7684\u6700\u7EC8\u5355\u4EF7\u5FC5\u987B\u975E\u8D1F\u3001\u5728\u8303\u56F4\u5185\u4E14\u80FD\u7CBE\u786E\u8868\u793A\u4E3A\u6700\u591A 6 \u4F4D\u5C0F\u6570"})}}),yr=st.safeExtend({featureKey:V});import{z as ct}from"zod";import{z as M}from"zod";var xe=M.enum(["stripe","apple","google"]),Sr=M.enum(["membership","credit_pack","lifetime"]),xr=M.enum(["active","grace","suspended","inactive","revoked"]),_r=M.strictObject({currency:M.string().regex(/^[A-Z]{3}$/),micros:M.string().regex(/^(0|[1-9][0-9]{0,29})$/)});var _e=ct.object({provider:xe,currency:O}).strict();var Ie=h.strictObject({internal_feature_id:h.uuid(),quantity:I.refine(e=>/[1-9]/.test(e)),properties:L,entityId:h.uuid().optional()}),Tr=h.strictObject({requirement:Ie,commerce:_e.optional(),paywallId:h.uuid().optional()}),lt=h.enum(["not_entitled","insufficient_balance","capacity_exceeded","limit_exceeded","awaiting_topup","authorization_required","payment_blocked","cash_budget_exceeded","unavailable","authentication_required"]),ut=h.strictObject({productId:h.string().min(1),productVersionId:h.string().min(1),name:h.string().min(1).max(120),action:h.enum(["purchase","upgrade","addon","topup"]),membershipId:h.string().min(1).nullable(),currency:O,amountMinor:h.string().regex(/^(0|[1-9]\d{0,8})$/),interval:h.enum(["free","week","month","year","one_time"]),intervalCount:h.number().int().min(1).max(156)}),Ee=h.strictObject({internal_feature_id:h.string().min(1),name:h.string().min(1).max(120),kind:h.enum(["access","metered","credit"]),quantity:I,allowed:h.boolean(),reason:lt.nullable(),preview:h.strictObject({scenario:h.enum(["feature_flag","usage_limit"]),candidates:h.array(ut).max(20)}).nullable()}).superRefine((e,r)=>{(e.allowed!==(e.reason===null)||e.allowed&&e.preview!==null||new Set(e.preview?.candidates.map(i=>i.productVersionId)).size!==(e.preview?.candidates.length??0)||e.preview?.candidates.some(i=>i.action==="upgrade"!=(i.membershipId!==null)))&&r.addIssue({code:"custom",message:"Invalid access recommendation"})}),jr=h.strictObject({paywallId:h.uuid(),requirement:Ie});import{z as d}from"zod";var pt=["plan.name","plan.price","plan.period","plan.price_per_month","trial.headline","trial.terms","offer.headline","offer.name","offer.description","offer.eligibility","offer.validity","offer.terms","offer.discount","offer.price","offer.original_price","offer.months","offer.code","offer.ends_at","offer.expires_at","paywall.feature","paywall.message","paywall.action"],ce=d.object({plan:d.string().min(1).max(200).optional(),coupon:d.uuid().optional(),promotionCode:d.uuid().optional(),picker:d.string().regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/).optional()}).strict(),Ae=d.object({text:d.string().optional(),label:d.string().optional(),alt:d.string().optional(),html:d.string().max(32768).optional(),price:d.object({current:d.string(),original:d.string().nullable(),period:d.string()}).optional(),code:d.string().optional(),countdownAt:d.iso.datetime().optional(),planId:d.string().min(1).max(200).optional(),planVersionId:d.string().min(1).max(200).optional(),currency:O.optional(),couponId:d.uuid().optional(),offerId:d.uuid().optional(),unavailable:d.boolean().optional(),unavailableReason:d.string().optional(),missing:d.array(d.string()).optional()}).strict(),vr=d.object({paywall:Ee.optional(),nodes:d.record(d.string(),d.object({base:Ae,picker:d.string().optional(),byPlan:d.record(d.string(),Ae).optional()}).strict()),plans:d.record(d.string(),d.object({id:d.string().min(1).max(200),versionId:d.string().min(1).max(200),available:d.boolean(),name:d.string(),price:d.string(),period:d.string(),currency:O.optional()}).strict()),pickers:d.record(d.string(),d.object({options:d.array(d.string().min(1).max(200)).max(20),selected:d.string().min(1).max(200).nullable()}).strict()),diagnostics:d.array(d.object({nodeId:d.string(),message:d.string()}).strict())}).strict();function Ne(e){return[...e.matchAll(/\{\{\s*([^{}]+?)\s*\}\}/g)].flatMap(r=>r[1]===void 0?[]:[r[1].trim()])}function le(e){let r=Ne(e).filter(n=>!pt.includes(n)&&!/^variables\.[A-Za-z0-9_][A-Za-z0-9_.:-]*$/.test(n)),i=e.replace(/\{\{\s*[^{}]+?\s*\}\}/g,"");return(i.includes("{{")||i.includes("}}"))&&r.push("\u65E0\u6548\u53D8\u91CF\u8BED\u6CD5"),[...new Set(r)]}function Ur(e,r,i={}){let n=e?.nodes[r];if(!n)return;let a=n.picker?i[n.picker]??e?.pickers[n.picker]?.selected:void 0;return typeof a=="string"?n.byPlan?.[a]??n.base:n.base}import{z as u}from"zod";var mt=["credit_balance","credit_transactions","membership","billing","billing_controls","customer_plans","credit_packs","credit_pack_orders","offer_history"],Re=u.enum(mt),Oe=u.object({source:Re,layout:u.enum(["full","compact"]),resourceKey:V.optional(),pageSize:u.number().int().min(1).max(50),showSources:u.boolean(),allowPurchase:u.boolean(),outputs:u.object({billing_adjustment:u.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/).optional(),billing_authorization:u.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/).optional(),buy_pack:u.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/).optional(),billing_portal:u.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/).optional(),cancel_membership:u.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/).optional(),resume_membership:u.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/).optional()}).strict().optional()}).strict().superRefine((e,r)=>{(e.outputs?.billing_authorization||e.outputs?.billing_adjustment)&&e.source!=="billing_controls"&&r.addIssue({code:"custom",message:"Payment authorization routes belong to the billing controls component."}),e.resourceKey&&!["credit_balance","credit_transactions"].includes(e.source)&&r.addIssue({code:"custom",message:"\u8FD9\u4E2A\u6570\u636E\u6E90\u4E0D\u80FD\u7ED1\u5B9A\u79EF\u5206\u8D44\u6E90\u3002"}),e.showSources&&e.source!=="credit_balance"&&r.addIssue({code:"custom",message:"\u53EA\u6709\u79EF\u5206\u4F59\u989D\u53EF\u4EE5\u5C55\u5F00\u6765\u6E90\u3002"}),e.allowPurchase&&!["credit_packs","customer_plans","membership"].includes(e.source)&&r.addIssue({code:"custom",message:"\u53EA\u6709\u79EF\u5206\u5305\u3001\u5957\u9910\u4E0E\u4F1A\u5458\u7EC4\u4EF6\u53EF\u4EE5\u542F\u7528\u4EA4\u6613\u3002"})}),E=u.string().max(2e3),ke=u.object({id:u.string().max(100),label:E,detail:u.array(E).max(12),value:E.optional(),status:E.optional(),facts:u.array(u.object({label:E,value:E}).strict()).max(1e3),purchaseId:u.uuid().optional(),invoiceUrl:u.url().max(2048).refine(e=>{let r=new URL(e);return r.protocol==="https:"&&!r.username&&!r.password}).optional(),billingActions:u.array(u.strictObject({action:u.literal("invoice_open"),label:E})).max(1).optional(),membershipActions:u.array(u.object({value:u.string().max(100),label:E}).strict()).max(3).optional()}).strict(),dt=u.object({key:V,name:E,spendable:E,reserved:E,available:E,expiry:E.nullable(),sources:u.array(ke).max(50),sourceCount:u.number().int().nonnegative(),sourcePage:u.number().int().positive(),hasNextSources:u.boolean(),hasPreviousSources:u.boolean()}).strict(),ft=u.object({source:Re,status:u.enum(["idle","loading","ready","error"]),stale:u.boolean(),preview:u.boolean(),errorCode:u.string().max(80).optional(),errorMessage:E.optional(),resources:u.array(dt).max(500),rows:u.array(ke).max(50),hasNext:u.boolean(),hasPrevious:u.boolean(),page:u.number().int().positive(),filter:u.string().max(40),updatedAt:u.iso.datetime().optional(),buyingId:u.uuid().optional(),membershipBusy:u.boolean().optional(),billingBusy:u.boolean().optional(),membershipReview:u.object({title:E,note:E,facts:u.array(u.object({label:E,value:E}).strict()).max(100)}).strict().optional(),membershipResult:E.optional()}).strict(),qr=u.object({nodes:u.record(u.string().regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/),ft)}).strict(),Mr=u.object({nodeId:u.string().regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/),action:u.enum(["refresh","next","previous","filter","buy_pack","billing_portal","billing_authorization","billing_adjustment","invoice_open","membership_preview","membership_confirm","membership_dismiss","sources_next","sources_previous"]),value:u.string().max(100).optional()}).strict();import{z as t}from"zod";function Ce(e){return e.type==="stack"&&e.interaction?.type==="select"&&e.interaction.purpose==="product"&&!!e.interaction.pickerId}function Le(e){let r={};function i(n){if(Ce(n)){let a=r[n.interaction.pickerId]??={ids:[],defaultId:null};for(let s of n.children){let p=s.type==="stack"?s.bind?.plan:void 0;p&&!a.ids.includes(p)&&a.ids.push(p)}let l=n.children[n.interaction.defaultIndex];!a.defaultId&&l?.type==="stack"&&(a.defaultId=l.bind?.plan??null)}n.type==="stack"&&n.children.forEach(i)}return e.pages.forEach(n=>i(n.root)),r}function Te(e,r,i){let n={};function a(f){if(f.hidden)return;if(f.type==="plan_picker"){let b=i.pickers[f.id];n[f.id]={ids:b?.options??[],defaults:b?.selected?[b.selected]:[],remembered:[]};return}if(f.type!=="stack")return;let x=f.children.filter(b=>!b.hidden),m=f.interaction;if(Ce(f)){let b=n[f.interaction.pickerId]??={ids:[],defaults:[],remembered:[]},N=i.pickers[f.interaction.pickerId]?.options??[];for(let w of x){let R=w.type==="stack"?w.bind?.plan:void 0;R&&N.includes(R)&&!b.ids.includes(R)&&b.ids.push(R),R&&w.id===r[f.id]&&b.remembered.push(R)}let U=f.children[f.interaction.defaultIndex];U?.type==="stack"&&!U.hidden&&U.bind?.plan&&b.defaults.push(U.bind.plan)}if(m?.type==="tabs"){let b=x.find(N=>N.id===r[f.id])??f.children[m.defaultIndex];b&&a(b)}else if(m?.type==="toggle"){let b=typeof r[f.id]=="boolean"?r[f.id]:m.defaultEnabled,N=f.children[b?0:1];N&&a(N)}else x.forEach(a)}let l=typeof r.__page=="string"?r.__page:e.initialPageId??e.pages[0]?.id,s=e.pages.find(f=>f.id===l);s&&a(s.root);let p={};for(let[f,x]of Object.entries(n)){let m=r[f],b=x.remembered[0]??(x.ids.includes(i.pickers[f]?.selected??"")?i.pickers[f]?.selected:x.defaults[0]);p[f]=typeof m=="string"?x.ids.includes(m)?m:"":b&&x.ids.includes(b)?b:""}for(let f of Object.keys(Le(e)))p[f]??="";return p}import{z as v}from"zod";var je=v.string().regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/),De=v.strictObject({tiers:v.array(v.strictObject({id:je,name:v.string().trim().min(1).max(80)})).min(1).max(8),assignments:v.array(v.strictObject({productVersionId:v.string().min(1).max(200),tierId:je,period:v.enum(["month","year"])})).max(20)}).superRefine((e,r)=>{let i=e.tiers.map(n=>n.id);(new Set(i).size!==i.length||new Set(e.assignments.map(n=>n.productVersionId)).size!==e.assignments.length||new Set(e.assignments.map(n=>`${n.tierId}:${n.period}`)).size!==e.assignments.length||e.assignments.some(n=>!i.includes(n.tierId)))&&r.addIssue({code:"custom",message:"Each product and tier/period cell must have one unambiguous assignment"})});function ze(e,r){return e.assignments.length===r.length&&e.assignments.every(i=>r.includes(i.productVersionId))}function Qr(e){let r=le(e).map(i=>`\u672A\u77E5\u53D8\u91CF\uFF1A${i}`);for(let i=0;i<e.length;i++){if(e[i]!=="<"||!/[A-Za-z!/?{]/.test(e[i+1]??""))continue;let n=i;if(e.startsWith("<!--",i)){let a=e.indexOf("-->",i+4);i=a<0?e.length:a+2}else{let a="";for(i++;i<e.length;i++){let l=e[i];if(a)l===a&&(a="");else if(l==='"'||l==="'")a=l;else if(l===">")break}}/\{\{|\}\}/.test(e.slice(n,i+1))&&r.push("\u53D8\u91CF\u53EA\u80FD\u653E\u5728 HTML \u6587\u5B57\u4E2D\uFF0C\u4E0D\u80FD\u653E\u5165\u6807\u7B7E\u3001\u5C5E\u6027\u6216\u6CE8\u91CA")}return[...new Set(r)]}import{z as gt}from"zod";var we=/^[a-z]{2,3}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$/,F=gt.string().max(16).regex(we,"\u8BED\u8A00\u4EE3\u7801\u683C\u5F0F\u4E0D\u6B63\u786E\uFF0C\u4F8B\u5982 zh-CN\u3001en").refine(e=>{try{return Intl.getCanonicalLocales(e)[0]===e}catch{return!1}},"\u6301\u4E45\u5316\u8BED\u8A00\u4EE3\u7801\u5FC5\u987B\u4F7F\u7528\u89C4\u8303\u5199\u6CD5");function ue(e){if(typeof e!="string")return null;try{let r=Intl.getCanonicalLocales(e.trim().replaceAll("_","-"))[0];if(!r)return null;let{language:i,script:n,region:a}=new Intl.Locale(r),l=[i,n,a].filter(Boolean).join("-");return we.test(l)?l:null}catch{return null}}var yt=new Set(["TW","HK","MO"]);function Pe(e){let[r,i,n]=e.split("-");if(r!=="zh")return`${r}-${new Intl.Locale(e).maximize().script??""}`;let a=i?.length===4?i:void 0,l=i?.length===4?n:i;return a?`zh-${a}`:l&&yt.has(l)?"zh-Hant":"zh-Hans"}function ve(e,r,i){let n=r.map(a=>({code:F.parse(a),normalized:a}));for(let a of e){let l=ue(a);if(!l)continue;let s=n.find(m=>m.normalized===l);if(s)return s.code;let p=Pe(l),f=n.filter(m=>Pe(m.normalized)===p),x=f.find(m=>!m.normalized.includes("-")||m.normalized===p)??f[0];if(x)return x.code}return i}var bt=4,j={nodes:150,depth:8,children:50,locales:20,actions:40,pages:10,stringLength:2e3,customHtml:32768,customCss:16384,documentBytes:2e5},H=t.string().regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/),y=t.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/),ht=t.enum(["none","xs","sm","md","lg","xl"]),St=t.enum(["none","sm","md","lg","full"]),pe=t.string().regex(/^#[0-9a-fA-F]{6}$/),$e=t.string().max(2048).refine(e=>{try{let r=new URL(e);return r.protocol==="https:"&&r.hostname.length>0}catch{return!1}},"\u53EA\u652F\u6301 https \u94FE\u63A5"),me=t.union([$e,t.string().max(32768).regex(/^data:image\/svg\+xml;base64,[A-Za-z0-9+/]+={0,2}$/),t.string().max(131072).regex(/^data:image\/jpeg;base64,\/9j\/[A-Za-z0-9+/]+={0,2}$/),t.string().max(131072).regex(/^data:image\/png;base64,iVBORw0KGgo[A-Za-z0-9+/]+={0,2}$/)]),Ue=t.object({primary:pe,background:pe,text:pe,radius:St,font:t.enum(["system","serif","rounded","mono"])}).strict(),K=t.union([t.enum(["primary","text","muted","background","surface"]),t.string().regex(/^#[0-9a-fA-F]{6}([0-9a-fA-F]{2})?$/)]),g=(e,r)=>t.number().int().min(e).max(r),Ve=t.union([t.enum(["fit","fill"]),g(1,1200)]),xt=t.object({top:g(0,200),right:g(0,200),bottom:g(0,200),left:g(0,200)}).strict(),_t=t.object({top:g(-100,200),right:g(-100,200),bottom:g(-100,200),left:g(-100,200)}).strict(),Be=t.object({x:g(0,100),y:g(0,100)}).strict(),It=t.discriminatedUnion("type",[t.object({type:t.literal("color"),color:K}).strict(),t.object({type:t.literal("linear"),angle:g(0,360),stops:t.array(t.object({color:K,at:g(0,100)}).strict()).min(2).max(4)}).strict(),t.object({type:t.literal("image"),src:me,fit:t.enum(["cover","contain"]),position:Be.optional()}).strict()]),Et=t.discriminatedUnion("type",[t.object({type:t.literal("rect"),radius:t.union([g(0,200),t.object({topLeft:g(0,200),topRight:g(0,200),bottomRight:g(0,200),bottomLeft:g(0,200)}).strict()])}).strict(),t.object({type:t.literal("pill")}).strict()]),At=t.object({width:g(0,12),color:K,style:t.enum(["solid","dashed"])}).strict(),Nt=t.object({x:g(-40,40),y:g(-40,40),blur:g(0,80),spread:g(-20,40),color:K}).strict(),Rt=t.object({font:t.enum(["system","serif","rounded","mono"]),size:g(8,96),weight:t.number().int().min(100).max(900).multipleOf(100),lineHeight:t.number().min(.8).max(3),letterSpacing:t.number().min(-5).max(20),color:K,align:t.enum(["start","center","end"]),italic:t.boolean(),decoration:t.enum(["none","underline","line-through"]),transform:t.enum(["none","uppercase"])}).strict().partial(),$=t.object({width:Ve,height:Ve,padding:xt,margin:_t,gap:g(0,120),grow:t.union([t.boolean(),t.number().min(0).max(12)]),background:It,opacity:t.number().min(0).max(1),clipContent:t.boolean(),shape:Et,border:At,shadow:Nt,text:Rt}).strict().partial(),k={id:H,name:t.string().trim().min(1).max(60).optional(),hidden:t.boolean().optional(),style:$.optional(),fallback:y.optional()},Ot=t.object({...k,type:t.literal("text"),productField:t.enum(["name","price","trial","period"]).optional(),feature:t.object({id:t.uuid(),field:t.enum(["name","allowance"])}).strict().optional(),text:y,variant:t.enum(["title","heading","body","caption"])}).strict(),kt=t.object({...k,type:t.literal("image"),src:me,localizedSrc:t.record(F,me).optional(),alt:y,aspect:t.enum(["auto","1:1","4:3","16:9","3:1"]),fit:t.enum(["cover","contain"]),position:Be.optional()}).strict(),Ct=t.object({...k,type:t.literal("button"),label:y,variant:t.enum(["primary","secondary","link"]),action:y,purpose:t.enum(["purchase","navigation","close"]).optional(),bind:ce.optional()}).strict(),Lt=t.object({...k,type:t.literal("divider")}).strict(),Tt=t.object({...k,type:t.literal("customer_data"),title:y,data:Oe}).strict(),jt=t.object({...k,type:t.literal("spacer"),size:ht}).strict(),Dt=t.object({...k,type:t.literal("custom_html"),html:t.record(F,t.string().max(j.customHtml)),css:t.string().max(j.customCss)}).strict(),zt=t.object({...k,type:t.literal("price"),fallback:y,parts:t.object({current:$.optional(),original:$.optional(),period:$.optional()}).strict().optional()}).strict(),Pt=t.object({...k,type:t.literal("coupon_code"),label:y,fallback:y}).strict(),wt=t.object({...k,type:t.literal("countdown"),source:t.enum(["offer.ends_at","offer.expires_at","fixed"]),at:t.iso.datetime().optional(),granularity:t.enum(["day","hour","minute","second"]),expired:y,fallback:y}).strict().refine(e=>e.source!=="fixed"||!!e.at,"\u56FA\u5B9A\u5012\u8BA1\u65F6\u9700\u8981\u7ED3\u675F\u65F6\u95F4"),vt=t.object({...k,type:t.literal("plan_picker"),label:y,fallback:y,planIds:t.array(t.string().min(1).max(200)).min(1).max(20).refine(e=>new Set(e).size===e.length,"\u5957\u9910\u4E0D\u80FD\u91CD\u590D").optional(),defaultPlan:t.string().min(1).max(200).optional(),grouping:De.safeExtend({monthLabel:y,yearLabel:y,unavailableLabel:y}).optional(),states:t.object({selected:$.optional()}).strict().optional()}).strict().superRefine((e,r)=>{e.grouping&&(!e.planIds||!ze(e.grouping,e.planIds))&&r.addIssue({code:"custom",message:"Grouped picker assignments must match its product allowlist"})}),Ut=t.discriminatedUnion("type",[t.object({type:t.literal("input"),label:y,keyboard:t.enum(["text","email","tel","url"]),maxLength:g(1,500)}).strict(),t.object({type:t.literal("multiselect"),label:y,min:g(0,50),max:g(1,50)}).strict(),t.object({type:t.literal("select"),label:y,defaultIndex:g(0,49),purpose:t.enum(["option","product","tier"]).optional(),pickerId:H.optional(),selectedStyle:$.optional()}).strict(),t.object({type:t.literal("tabs"),label:y,defaultIndex:g(0,49),purpose:t.literal("tier").optional()}).strict(),t.object({type:t.literal("toggle"),label:y,defaultEnabled:t.boolean()}).strict(),t.object({type:t.literal("carousel"),label:y}).strict()]),T={...k,type:t.literal("stack"),direction:t.enum(["vertical","horizontal","overlay"]),align:t.enum(["start","center","end","stretch"]),justify:t.enum(["start","center","end","between"]),productSlot:t.object({index:g(0,19),period:t.enum(["month","year"]).optional(),requireBinding:t.boolean().optional()}).strict().optional(),interaction:Ut.optional(),states:t.object({selected:$.optional()}).strict().optional(),purpose:t.literal("benefits").optional(),purchaseAction:y.optional(),buttonVariant:t.enum(["primary","secondary","link"]).optional(),bind:ce.optional()},qe=t.lazy(()=>t.object({...k,type:T.type,direction:T.direction,align:T.align,justify:T.justify,children:t.array(Vt).max(j.children),productSlot:T.productSlot,interaction:T.interaction,states:T.states,purpose:T.purpose,purchaseAction:T.purchaseAction,buttonVariant:T.buttonVariant,bind:T.bind}).strict()),Vt=t.lazy(()=>t.union([qe,Ot,kt,Ct,Lt,jt,Dt,zt,Pt,wt,vt,Tt])),$t=t.union([t.string().max(500),t.number().finite(),t.boolean(),t.null()]),G={id:y,event:y,properties:t.record(y,$t).refine(e=>Object.keys(e).length<=20,"\u6700\u591A 20 \u4E2A\u53C2\u6570")},Bt=t.discriminatedUnion("type",[t.object({...G,type:t.literal("navigate"),close:t.literal(!1),pageId:H}).strict(),t.object({...G,type:t.literal("event"),close:t.boolean()}).strict(),t.object({...G,type:t.literal("close"),close:t.literal(!0)}).strict(),t.object({...G,type:t.literal("open_url"),close:t.boolean(),url:$e}).strict(),t.object({...G,type:t.literal("claim_offer"),close:t.boolean(),couponId:t.uuid()}).strict()]),qt=t.object({defaultLocale:F,locales:t.record(F,t.record(y,t.string().max(j.stringLength)))}).strict(),Mt=t.enum(["popup","paywall","onboarding","page","banner"]);var Ft=t.discriminatedUnion("type",[t.object({type:t.literal("modal"),size:t.enum(["sm","md","lg"])}).strict(),t.object({type:t.literal("sheet"),size:t.enum(["sm","md","lg"])}).strict(),t.object({type:t.literal("fullscreen")}).strict(),t.object({type:t.literal("inline")}).strict()]),an={sm:360,md:420,lg:560},Zt=t.object({kind:t.literal("screen"),schemaVersion:t.literal(bt),name:t.string().trim().min(1).max(80),surface:Mt,initialPageId:H.optional(),presentation:Ft,theme:Ue,pages:t.array(t.object({id:H,name:t.string().trim().min(1).max(60),root:qe,theme:Ue.optional(),editorPosition:t.object({x:t.number().finite().min(-1e5).max(1e5),y:t.number().finite().min(-1e5).max(1e5)}).strict().optional()}).strict()).min(1).max(j.pages),strings:qt,actions:t.array(Bt).max(j.actions)}).strict();function ee(e,r){for(let i of e.pages)de(i.root,r)}var sn=Zt.superRefine((e,r)=>{let i=j;e.surface!=="paywall"&&e.pages.length!==1&&r.addIssue({code:"custom",message:"Only a Paywall can contain multiple screens"}),e.initialPageId&&!e.pages.some(m=>m.id===e.initialPageId)&&r.addIssue({code:"custom",message:"Initial screen does not exist"});for(let m of e.actions)m.type==="navigate"&&(e.surface!=="paywall"||!e.pages.some(b=>b.id===m.pageId))&&r.addIssue({code:"custom",message:"Navigation screen does not exist"});e.pages.length>i.pages&&r.addIssue({code:"custom",message:`\u9875\u9762\u6700\u591A ${i.pages} \u4E2A`}),e.actions.length>i.actions&&r.addIssue({code:"custom",message:`\u52A8\u4F5C\u6700\u591A ${i.actions} \u4E2A`});let n=m=>r.addIssue({code:"custom",message:m}),a=Object.keys(e.strings.locales);a.includes(e.strings.defaultLocale)||n("\u9ED8\u8BA4\u8BED\u8A00\u5FC5\u987B\u5728\u8BED\u8A00\u5217\u8868\u91CC"),a.length>j.locales&&n(`\u6700\u591A ${j.locales} \u79CD\u8BED\u8A00`);let l=new Set;for(let m of e.actions)l.has(m.id)&&n(`\u52A8\u4F5C\u6807\u8BC6\u91CD\u590D\uFF1A${m.id}`),l.add(m.id);let s=new Set;for(let m of e.pages)["next","back"].includes(m.id)&&n(`\u9875\u9762 id \u4E0D\u80FD\u4F7F\u7528\u4FDD\u7559\u540D\u79F0\uFF1A${m.id}`),s.has(m.id)&&n(`\u9875\u9762 id \u91CD\u590D\uFF1A${m.id}`),s.add(m.id);let p=new Set,f=0,x=!1;ee(e,(m,b)=>{if(f++,b>j.depth&&(x=!0),p.has(m.id)&&n(`\u7EC4\u4EF6 id \u91CD\u590D\uFF1A${m.id}`),p.add(m.id),m.type==="button"&&!l.has(m.action)&&n(`\u6309\u94AE ${m.id} \u5F15\u7528\u7684\u52A8\u4F5C\u4E0D\u5B58\u5728\uFF1A${m.action}`),m.type==="custom_html")for(let N of Object.keys(m.html))a.includes(N)||n(`\u81EA\u5B9A\u4E49 HTML ${m.id} \u542B\u6709\u672A\u542F\u7528\u7684\u8BED\u8A00\uFF1A${N}`);if(m.type==="image")for(let N of Object.keys(m.localizedSrc??{}))a.includes(N)||n(`\u56FE\u7247 ${m.id} \u542B\u6709\u672A\u542F\u7528\u7684\u8BED\u8A00\uFF1A${N}`)}),f>i.nodes&&n(`\u7EC4\u4EF6\u6700\u591A ${i.nodes} \u4E2A`),x&&n(`\u5C42\u7EA7\u6700\u591A ${j.depth} \u5C42`)});function de(e,r,i=1,n=null){if(r(e,i,n)!==!1&&e.type==="stack")for(let a of e.children)de(a,r,i+1,e)}function Me(e){let r=[],i=new Set;return ee(e,n=>{let a=(l,s,p)=>{i.has(l)||(i.add(l),r.push({key:l,nodeId:n.id,nodeType:n.type,field:s,required:p}))};n.type==="stack"&&n.interaction&&a(n.interaction.label,"label",!0),n.fallback&&a(n.fallback,"text",!0),n.type==="text"&&a(n.text,"text",!0),n.type==="customer_data"&&a(n.title,"title",!0),(n.type==="plan_picker"||n.type==="coupon_code")&&a(n.label,"label",!0),n.type==="plan_picker"&&n.grouping&&(a(n.grouping.monthLabel,"label",!0),a(n.grouping.yearLabel,"label",!0),a(n.grouping.unavailableLabel,"text",!0)),n.type==="countdown"&&a(n.expired,"text",!0),n.type==="button"&&a(n.label,"label",!0),n.type==="image"&&(a(`image:${n.id}`,"src",!1),a(n.alt,"alt",!1)),n.type==="custom_html"&&a(`html:${n.id}`,"html",!0)}),r}function Gt(e,r,i){if(r.field==="html"){let n;return ee(e,a=>{a.id===r.nodeId&&a.type==="custom_html"&&(n=a.html[i])}),n}if(r.field==="src"){let n=Wt(e,r.nodeId);return n?.type==="image"?n.localizedSrc?.[i]??(i===e.strings.defaultLocale?n.src:void 0):void 0}return e.strings.locales[i]?.[r.key]}function Ht(e){let r=Me(e).filter(n=>n.required);return Object.keys(e.strings.locales).sort((n,a)=>n===e.strings.defaultLocale?-1:a===e.strings.defaultLocale?1:0).map(n=>{let a=r.filter(l=>!Gt(e,l,n)?.trim()).map(l=>l.key);return{locale:n,total:r.length,filled:r.length-a.length,missing:a,complete:a.length===0}})}function Kt(e){return Ht(e).filter(r=>r.complete||r.locale===e.strings.defaultLocale).map(r=>r.locale)}function cn(e,r){return ve(r,Kt(e),e.strings.defaultLocale)}function ln(e,r){let i=e.strings.locales[r]??{},n=e.strings.locales[e.strings.defaultLocale]??{},a={};for(let s of Me(e)){if(s.field==="html"||s.field==="src")continue;let p=i[s.key]?.trim()?i[s.key]:n[s.key];p!==void 0&&(a[s.key]=p)}let l=s=>{if(s.type==="stack")return{...s,children:s.children.map(l)};if(s.type==="custom_html"){let p=s.html[r]?.trim()?s.html[r]:s.html[e.strings.defaultLocale];return{...s,html:p===void 0?{}:{[r]:p}}}if(s.type==="image"){let{localizedSrc:p,...f}=s;return{...f,src:p?.[r]??p?.[e.strings.defaultLocale]??s.src}}return s};return{...e,pages:e.pages.map(s=>({...s,root:l(s.root)})),strings:{defaultLocale:r,locales:{[r]:a}}}}function Qt(e,r){let i=null;return de(e,n=>{if(i)return!1;n.id===r&&(i=n)}),i}function Wt(e,r){for(let i of e.pages){let n=Qt(i.root,r);if(n)return n}return null}function un(e){let r=ue(e)?.split("-")[0];return r!==void 0&&["ar","he","fa","ur"].includes(r)}function pn(e,r,i){let n={};if(!r||typeof r!="object"||Array.isArray(r))return n;let a=r;if(ee(e,l=>{if(l.type==="plan_picker"){let p=a[l.id];typeof p=="string"&&(n[l.id]=i?.pickers[l.id]?.options.includes(p)?p:"");return}if(l.type!=="stack"||!l.interaction)return;let s=Object.hasOwn(a,l.id)?a[l.id]:void 0;["select","tabs"].includes(l.interaction.type)&&typeof s=="string"&&l.children.some(p=>p.id===s)&&(n[l.id]=s),l.interaction.type==="toggle"&&typeof s=="boolean"&&(n[l.id]=s)}),e.surface==="paywall"&&typeof a.__page=="string"&&e.pages.some(l=>l.id===a.__page)&&(n.__page=a.__page),i){let l={...n};for(let[s,p]of Object.entries(a))(typeof p=="string"||typeof p=="boolean")&&(l[s]=p);Object.assign(n,Te(e,l,i))}return n}import{z as _}from"zod";import{z as o}from"zod";import{z as c}from"zod";var B=I.refine(e=>/[1-9]/.test(e),"Quantity must be positive"),Q=c.string().min(1).max(120),te=c.enum(["cap","overflow"]),C=(e,r)=>{let[i,n=""]=e.split(".");if(i===void 0||i==="")throw new Error("Invalid decimal value");return BigInt(i)*10n**BigInt(r)+BigInt(n.padEnd(r,"0"))},W=e=>{try{return e()}catch{return!1}},gn=c.discriminatedUnion("operation",[c.object({operation:c.literal("quote"),overageBehavior:te.optional(),internal_feature_id:c.uuid(),entityId:c.uuid().optional(),quantity:B,properties:L}).strict(),c.object({operation:c.literal("consume"),overageBehavior:te.optional(),occurredAt:c.iso.datetime({offset:!0}).optional(),internal_feature_id:c.uuid(),entityId:c.uuid().optional(),quantity:I,properties:L,idempotencyKey:Q}).strict(),c.object({operation:c.literal("reserve"),occurredAt:c.iso.datetime({offset:!0}).optional(),internal_feature_id:c.uuid(),entityId:c.uuid().optional(),quantity:B,properties:L,idempotencyKey:Q,expiresInSeconds:c.number().int().min(1).max(86400)}).strict(),c.object({operation:c.literal("confirm"),operationId:c.uuid(),quantity:B,properties:L.optional(),idempotencyKey:Q}).strict(),c.object({operation:c.literal("refund"),operationId:c.uuid(),quantity:B,idempotencyKey:Q}).strict(),c.object({operation:c.literal("release"),operationId:c.uuid(),idempotencyKey:Q}).strict()]),Yt=c.object({internal_credit_feature_id:c.uuid().nullable(),internal_metered_feature_id:c.uuid(),dimension:c.string().min(1).max(64),counterKey:c.string().min(1).max(240),cycleStart:c.iso.datetime({offset:!0}),unitCost:I,units:B,amount:J,tier:c.number().int().min(1).max(12).nullable()}).strict(),Y=c.string().regex(/^(0|[1-9]\d{0,17})(\.\d{1,12})?$/);function Fe(e,r){let i=e.reduce((n,a)=>n+C(a.units,12),0n)-C(r,12);return e.some(n=>n.funding==="balance")?i>=-100n&&i<=100n:i===0n}var Ze=c.discriminatedUnion("funding",[c.strictObject({funding:c.literal("balance"),sourceId:c.uuid(),rolloverId:c.uuid().nullable(),units:Y.refine(e=>/[1-9]/.test(e)),amount:J}),c.strictObject({funding:c.literal("unbilled"),units:Y.refine(e=>/[1-9]/.test(e))}),c.object({funding:c.literal("prepaid"),sourceId:c.uuid(),units:B,amount:J,pricing:c.array(Yt).min(1).max(12)}).strict().refine(e=>W(()=>e.pricing.reduce((r,i)=>r+C(i.units,6),0n)===C(e.units,6)&&e.pricing.reduce((r,i)=>r+C(i.amount,12),0n)===C(e.amount,12)&&e.pricing.every(r=>C(r.unitCost,6)*C(r.units,6)===C(r.amount,12))),"Frozen pricing must conserve allocated units and amounts"),c.object({funding:c.literal("postpaid"),invoiceLineId:c.uuid().nullable(),units:B,authorizationId:c.uuid()}).strict()]),re=c.enum(["unavailable","insufficient_balance","limit_exceeded","awaiting_topup","authorization_required","payment_blocked","cash_budget_exceeded"]),yn=c.object({allowed:c.boolean(),internal_feature_id:c.uuid(),quantity:I,requestedQuantity:I.optional(),overageBehavior:te.optional(),reason:re.nullable(),allocations:c.array(Ze).max(500)}).strict().refine(e=>W(()=>e.allowed?e.reason===null&&Fe(e.allocations,e.quantity):e.reason!==null&&e.allocations.length===0),"A quote must conserve its accepted units").refine(e=>W(()=>e.overageBehavior===void 0?e.requestedQuantity===void 0&&/[1-9]/.test(e.quantity):e.requestedQuantity!==void 0&&C(e.requestedQuantity,6)>=C(e.quantity,6)&&(e.overageBehavior==="cap"||e.requestedQuantity===e.quantity)),"Explicit overage behavior must retain the requested quantity"),bn=c.object({id:c.uuid(),internal_feature_id:c.uuid(),kind:c.enum(["consume","reserve","confirm","refund","release","expire"]),originalId:c.uuid().nullable(),quantity:I,requestedQuantity:I.optional(),overageBehavior:te.optional(),accepted:c.boolean(),reason:c.enum([...re.options,"expired"]).nullable(),createdAt:c.iso.datetime({offset:!0}),reservationStatus:c.enum(["pending","confirmed","released","expired"]).nullable(),expiresAt:c.iso.datetime({offset:!0}).nullable(),allocations:c.array(Ze).max(500)}).strict().refine(e=>W(()=>e.accepted?e.reason===null&&Fe(e.allocations,e.quantity):e.reason!==null&&e.allocations.length===0),"An operation must conserve its requested units").refine(e=>W(()=>e.overageBehavior===void 0?e.requestedQuantity===void 0:e.kind==="consume"&&e.requestedQuantity!==void 0&&C(e.requestedQuantity,6)>=C(e.quantity,6)&&(e.overageBehavior==="cap"||e.requestedQuantity===e.quantity)),"Overage metadata belongs to consumption and preserves requested units").refine(e=>/[1-9]/.test(e.quantity)||e.kind==="consume","Only consumption can record a zero cost event").refine(e=>e.allocations.every(r=>r.funding!=="postpaid"||r.invoiceLineId!==null),"Accepted operations must reference persisted invoice lines").refine(e=>e.originalId!==null===["confirm","refund","release","expire"].includes(e.kind)&&e.expiresAt!==null==(e.reservationStatus!==null)&&(e.kind!=="reserve"||!e.accepted||e.reservationStatus!==null),"Operation provenance and reservation state must be explicit");import{z as D}from"zod";var Xt=D.string().max(40).regex(/^(0|[1-9]\d*)(\.\d{1,12})?$/),Jt=D.string().max(41).regex(/^-?(0|[1-9]\d*)(\.\d{1,12})?$/),Ge=D.strictObject({internal_feature_id:D.uuid(),entityId:D.uuid().nullable()}),_n=Ge.extend({quantity:I,expectedRevision:D.number().int().min(0).max(Number.MAX_SAFE_INTEGER),idempotencyKey:D.string().min(1).max(120),properties:L.refine(e=>Object.keys(e).length<=13&&!Object.keys(e).some(r=>r.startsWith("usage_")),"Usage accounting reserves three properties")}).strict(),He=Ge.extend({operationId:D.uuid().nullable(),usage:I,capacity:Xt.nullable(),remaining:Jt.nullable(),withinLimit:D.boolean(),revision:D.number().int().min(0).max(Number.MAX_SAFE_INTEGER),updatedAt:D.iso.datetime({offset:!0}).nullable()}).strict().superRefine((e,r)=>{let i=n=>{let a=n.startsWith("-"),[l,s=""]=(a?n.slice(1):n).split(".");if(l===void 0||l==="")throw new Error("Invalid decimal value");return(a?-1n:1n)*(BigInt(l)*10n**12n+BigInt(s.padEnd(12,"0")))};(e.capacity===null!=(e.remaining===null)||(e.capacity===null?!e.withinLimit:e.remaining===null||i(e.remaining)!==i(e.capacity)-i(e.usage)||e.withinLimit!==i(e.remaining)>=0n)||e.revision===0!=(e.operationId===null)||e.operationId===null!=(e.updatedAt===null))&&r.addIssue({code:"custom",message:"Absolute usage must conserve capacity and its immutable revision"})});var P=o.string().regex(/^(0|[1-9]\d{0,17})(\.\d{1,12})?$/),z=o.iso.datetime({offset:!0}),er=o.enum(["access","metered","credit"]),X={internal_feature_id:o.uuid(),key:V,name:o.string().min(1).max(120),kind:er},kn=o.object({customerId:o.uuid(),snapshotAt:z,memberships:o.array(o.object({id:o.uuid(),productId:o.string().min(1).max(255),productVersionId:o.uuid(),billingProductVersionId:o.uuid(),version:o.number().int().positive(),key:o.string().min(1).max(64),name:o.string().min(1).max(120),groupId:o.string().max(255).nullable(),membershipType:o.enum(["main","addon"]),status:o.enum(["trial","active","past_due","ended","expired","trialing","paused","pending","scheduled","unknown"]),cancelAtPeriodEnd:o.boolean(),accessEnabled:o.boolean(),renewalChange:o.object({productVersionId:o.uuid(),name:o.string().min(1).max(120),version:o.number().int().positive(),effectiveAt:z,benefitsAppliedAt:z.nullable(),timing:o.enum(["immediate","renewal"]),changeKind:o.enum(["plan","seats","quantity"]),feature:o.strictObject({internal_feature_id:o.uuid(),name:o.string().min(1).max(80),fromQuantity:o.number().int().min(0).max(1e4),toQuantity:o.number().int().min(0).max(1e4)}).optional(),seat:o.object({key:o.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/),fromQuantity:o.number().int().min(0).max(1e4),toQuantity:o.number().int().min(0).max(1e4)}).strict().nullable(),status:o.enum(["prepared","quoted","confirmed","pending","scheduled"])}).strict().refine(e=>e.changeKind==="seats"==(e.seat!==null)&&e.changeKind==="quantity"==(e.feature!==void 0),"Quantity changes require their fixed component identities and quantities").nullable(),period:o.object({phase:o.enum(["paid","trial"]),startsAt:z,endsAt:z.nullable()}).strict().nullable()}).strict()).max(100),membershipsLimited:o.boolean(),balances:o.array(o.object({...X,usageType:o.enum(["consumable","non_consumable"]).nullable(),accessible:o.boolean(),unlimited:o.boolean(),available:P,held:P,debt:P,nextExpiresAt:z.nullable(),usage:He.nullable()}).strict().refine(e=>e.kind==="metered"==(e.usageType!==null)&&(e.accessible||e.available==="0"&&e.held==="0")&&(e.usageType==="non_consumable"?e.usage!==null&&e.usage.internal_feature_id===e.internal_feature_id&&e.unlimited===(e.usage.capacity===null)&&e.available===(e.usage.remaining===null||e.usage.remaining.startsWith("-")?"0":e.usage.remaining)&&e.held==="0"&&e.debt==="0":e.usage===null),"Balances must expose their actual spendable or non-consumable state")).max(500),balancesLimited:o.boolean()}).strict(),Ke=o.enum(["source","usage","transaction","invoice","debt","settlement"]),ne=o.object({at:z,id:o.uuid(),type:Ke}).strict(),Cn=o.object({type:Ke.nullable(),resourceKey:V.optional(),kind:o.enum(["purchase","refund"]).optional(),topup:o.boolean().optional(),from:o.iso.date().nullable(),to:o.iso.date().nullable(),after:ne.nullable(),limit:o.number().int().min(1).max(50)}).strict().refine(e=>!e.from||!e.to||e.from<=e.to,"Date range is reversed"),Z={id:o.uuid(),occurredAt:z},tr=o.discriminatedUnion("type",[o.strictObject({...Z,type:o.literal("invoice"),status:o.string().min(1).max(80),paid:P,refunded:P,currency:O,externalId:o.string().nullable()}),o.object({...Z,...X,type:o.literal("source"),reason:o.enum(["membership","trial","topup","manual","rollover","upgrade_carry","seat"]),quantity:P,unlimited:o.boolean(),status:o.enum(["scheduled","active","expired","revoked","unavailable"]),startsAt:z,expiresAt:z.nullable(),orderId:o.uuid().nullable(),parentSourceId:o.uuid().nullable()}).strict(),o.object({...Z,type:o.literal("usage"),internal_feature_id:o.uuid(),name:o.string().min(1).max(120),kind:o.enum(["consume","set_usage","reserve","confirm","refund","release","expire"]),originalId:o.uuid().nullable(),quantity:I,accepted:o.boolean(),reason:o.enum([...re.options,"expired"]).nullable(),properties:L,reservationStatus:o.enum(["pending","confirmed","released","expired"]).nullable(),expiresAt:z.nullable(),charges:o.array(o.discriminatedUnion("funding",[o.strictObject({funding:o.literal("balance"),sourceId:o.uuid(),rolloverId:o.uuid().nullable(),units:Y,amount:P}),o.strictObject({funding:o.literal("unbilled"),units:Y}),o.object({...X,funding:o.literal("prepaid"),amount:P}).strict(),o.object({funding:o.literal("postpaid"),invoiceId:o.uuid(),invoiceLineId:o.uuid(),authorizationId:o.uuid(),units:I,currency:O}).strict()])).max(500)}).strict().refine(e=>(e.kind==="set_usage"||e.kind==="consume"&&e.quantity==="0"?e.accepted&&e.reason===null&&e.charges.length===0&&e.reservationStatus===null:e.accepted?e.reason===null&&e.charges.length>0:e.reason!==null&&e.charges.length===0)&&e.originalId!==null===["confirm","refund","release","expire"].includes(e.kind)&&e.expiresAt!==null==(e.reservationStatus!==null),"Usage facts must retain their original outcome and receipt"),o.object({...Z,type:o.literal("transaction"),purpose:o.enum(["product","invoice"]),productVersionId:o.uuid().nullable(),productName:o.string().min(1).max(120).nullable(),productVersion:o.number().int().positive().nullable(),invoiceId:o.uuid().nullable(),orderId:o.uuid(),originalId:o.uuid().nullable(),kind:o.enum(["purchase","refund"]),amountMinor:o.number().int().nonnegative().max(2e8).nullable(),currency:O.nullable()}).strict().refine(e=>e.currency===null==(e.amountMinor===null)&&(e.purpose==="product"?e.productVersionId!==null&&e.productName!==null&&e.productVersion!==null&&e.invoiceId===null:e.productVersionId===null&&e.productName===null&&e.productVersion===null&&e.invoiceId!==null)&&e.kind==="refund"==(e.originalId!==null)&&(e.kind!=="refund"||e.amountMinor===null||e.amountMinor>0),"Payment fact provenance is incomplete"),o.object({...Z,...X,type:o.literal("debt"),sourceId:o.uuid(),transactionId:o.uuid(),amount:P}).strict(),o.object({...Z,...X,type:o.literal("settlement"),sourceId:o.uuid(),debtId:o.uuid(),kind:o.enum(["payment","usage_refund","payment_return"]),amount:P}).strict()]),Ln=o.object({customerId:o.uuid(),rows:o.array(tr).max(50),nextCursor:ne.nullable()}).strict().refine(e=>new Set(e.rows.map(r=>r.type+r.id)).size===e.rows.length,"A page cannot repeat a fact").refine(e=>{let r=e.rows.at(-1);return!e.nextCursor||!!(r&&r.id===e.nextCursor.id&&r.type===e.nextCursor.type&&r.occurredAt===e.nextCursor.at)},"Cursor must name the final displayed fact");var Pn=_.discriminatedUnion("kind",[_.object({kind:_.literal("ledger"),cursor:ne}).strict(),_.object({kind:_.literal("billing"),cursor:_.uuid()}).strict()]),rr=_.string().regex(/^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/),nr=_.record(_.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/),_.union([_.string().max(500),_.boolean(),_.array(_.string().max(500)).max(50)])).refine(e=>Object.keys(e).length<=40,"Too many answers"),ir=/^(?:api_?key|authorization|password|(?:customer|run|visitor|access|purchase)_?token|client_?secret|signed_?transaction|raw_?proof)$/i;function fe(e,r=0){return r>20?!0:!!e&&typeof e=="object"&&(Array.isArray(e)?e.some(i=>fe(i,r+1)):Object.entries(e).some(([i,n])=>["__proto__","constructor","prototype"].includes(i)||ir.test(i)||fe(n,r+1)))}var or=/gg_(?:sk|ct|fr|fv|gc)_[A-Za-z0-9_-]{20,}/,wn=_.record(rr,ae).refine(e=>Object.keys(e).length<=20,"Too many parameters").refine(e=>!fe(e)&&!or.test(JSON.stringify(e)),"Credentials cannot be screen parameters");var Qe=_.string().regex(/^[a-zA-Z][a-zA-Z0-9_.-]{0,63}$/),ar=_.array(_.object({variable:Qe,componentId:Qe,required:_.boolean()}).strict()).max(40).refine(e=>new Set(e.map(r=>r.variable)).size===e.length&&new Set(e.map(r=>r.componentId)).size===e.length,"Input bindings must be unique"),vn=_.object({bindings:ar,answers:nr,values:_.record(_.string(),ae).optional()}).strict();import{z as A}from"zod";var ie=A.enum(["INVALID_PROTOCOL_VERSION","UNSUPPORTED_PROTOCOL_VERSION","PROTOCOL_RETIRED","UNAUTHENTICATED","FORBIDDEN","SCOPE_MISMATCH","INVALID_REQUEST","NOT_FOUND","CONFLICT","PAYLOAD_TOO_LARGE","RATE_LIMITED","SERVICE_UNAVAILABLE","NOT_CONFIGURED","CAPABILITY_UNAVAILABLE","INTERNAL_ERROR"]),$n=A.enum([...ie.options,"INVALID_SERVER_RESPONSE","RESPONSE_TOO_LARGE","AMBIGUOUS_AUTHENTICATION","BROWSER_REQUIRED","INVALID_REDIRECT_URI","AUTHORIZATION_UNAVAILABLE","UNREGISTERED_CLIENT","MANAGEMENT_OPERATION_FAILED"]),Bn=A.enum([...ie.options,"stale_revision"]),sr=A.enum(["fix_request","authenticate","check_permissions","check_scope","resolve_conflict","reload_state","retry_same_request","configure_integration","check_availability","upgrade_sdk","recover_operation","contact_support"]),cr=A.enum(["CAPABILITY_NOT_ENABLED","INTEGRATION_MISSING","PROVIDER_CREDENTIAL_REJECTED","PRICE_BINDING_REQUIRED","IDEMPOTENCY_CONFLICT","RESULT_UNKNOWN","STATE_CHANGED","OPERATION_IN_PROGRESS","FUNNEL_VERSION_RETIRED"]),Ye={INVALID_PROTOCOL_VERSION:{status:400,recovery:"fix_request"},UNSUPPORTED_PROTOCOL_VERSION:{status:400,recovery:"upgrade_sdk"},PROTOCOL_RETIRED:{status:410,recovery:"upgrade_sdk"},UNAUTHENTICATED:{status:401,recovery:"authenticate"},FORBIDDEN:{status:403,recovery:"check_permissions"},SCOPE_MISMATCH:{status:403,recovery:"check_scope"},INVALID_REQUEST:{status:400,recovery:"fix_request"},NOT_FOUND:{status:404,recovery:"fix_request"},CONFLICT:{status:409,recovery:"resolve_conflict"},PAYLOAD_TOO_LARGE:{status:413,recovery:"fix_request"},RATE_LIMITED:{status:429,recovery:"retry_same_request"},SERVICE_UNAVAILABLE:{status:503,recovery:"retry_same_request"},NOT_CONFIGURED:{status:501,recovery:"configure_integration"},CAPABILITY_UNAVAILABLE:{status:501,recovery:"check_availability"},INTERNAL_ERROR:{status:500,recovery:"recover_operation"}};var We={TIMEOUT:"recover_operation",NETWORK_ERROR:"recover_operation",HTTP_ERROR:"recover_operation",INVALID_RESPONSE:"recover_operation",NOT_IDENTIFIED:"authenticate",INVALID_TOKEN:"authenticate",INVALID_URL:"fix_request",INVALID_TIMEOUT:"fix_request",SERVER_ONLY:"fix_request",PROTOCOL_MISMATCH:"upgrade_sdk",IDENTITY_CHANGED:"reload_state",INVALID_STATE:"reload_state",EVENT_QUEUE_FULL:"retry_same_request",COMMAND_PENDING:"recover_operation",DECISION_PENDING:"recover_operation",DECISION_ACCEPTANCE_UNKNOWN:"recover_operation",RUN_RECONCILIATION_REQUIRED:"recover_operation",DECISION_FAILED:"contact_support",COMMAND_STORAGE_CONFLICT:"resolve_conflict",COMMAND_STORAGE_INVALID:"fix_request",CONFIGURATION_UNAVAILABLE:"check_availability",CONFIGURATION_EXPIRED:"reload_state",CONFIGURATION_CHANGED:"reload_state",CONFIGURATION_DISPOSED:"reload_state",UNSUPPORTED_SCHEMA:"upgrade_sdk",FUNNEL_STOPPED:"check_availability",PAYWALL_UNAVAILABLE:"check_availability",EVALUATION_MODE:"reload_state",SERVER_REQUIRED:"fix_request",STICKY_SAVE_FAILED:"retry_same_request",TRANSITION_LIMIT:"resolve_conflict",PRECONDITION_FAILED:"reload_state",PRODUCT_UNAVAILABLE:"fix_request",PURCHASE_HANDLER_REQUIRED:"fix_request",EVENT_HANDLER_REQUIRED:"fix_request",CLOSED:"fix_request",BRIDGE_UNAVAILABLE:"check_availability",INVALID_CONFIGURATION:"fix_request",NATIVE_OPERATION_FAILED:"contact_support",AI_PRICE_UNAVAILABLE:"fix_request",AI_USAGE_UNAVAILABLE:"recover_operation",AI_PROVIDER_ERROR:"check_availability",AI_BALANCE_REJECTED:"resolve_conflict"};function lr(e,r){if(e==="CONFLICT"&&r===425)return{retryable:!0,recovery:"retry_same_request"};if(e==="CONFLICT"&&r===412)return{retryable:!1,recovery:"reload_state"};if(e==="INVALID_SERVER_RESPONSE")return{retryable:!1,recovery:"recover_operation"};if(e==="AMBIGUOUS_AUTHENTICATION")return{retryable:!1,recovery:"fix_request"};if(Object.hasOwn(We,e)){let n=We[e];return{retryable:n==="retry_same_request",recovery:n}}let i=ie.safeParse(e);return i.success?{retryable:e==="RATE_LIMITED"||e==="SERVICE_UNAVAILABLE",recovery:Ye[i.data].recovery}:{retryable:!1,recovery:"contact_support"}}function qn(e,r){let i=ie.safeParse(e);if(i.success)return e==="CONFLICT"?[409,412,425].includes(r):e==="SERVICE_UNAVAILABLE"?[408,502,503,504].includes(r):e==="INVALID_REQUEST"?[400,405,415,422].includes(r):e==="NOT_CONFIGURED"?[501,503].includes(r):Ye[i.data].status===r;let n={INVALID_SERVER_RESPONSE:[502],RESPONSE_TOO_LARGE:[502],AMBIGUOUS_AUTHENTICATION:[400],BROWSER_REQUIRED:[403],INVALID_REDIRECT_URI:[403],AUTHORIZATION_UNAVAILABLE:[400],UNREGISTERED_CLIENT:[403],MANAGEMENT_OPERATION_FAILED:[400,422,500]};return Object.hasOwn(n,e)&&(n[e]?.includes(r)??!1)}function ur(e,r=Date.now()){if(e===null)return;let i=e.trim();if(/^\d+$/.test(i)){let a=Number(i);return Number.isSafeInteger(a)?a:void 0}if(!/^[A-Za-z]{3}, \d{2} [A-Za-z]{3} \d{4} \d{2}:\d{2}:\d{2} GMT$/.test(i))return;let n=Date.parse(i);return Number.isFinite(n)?Math.max(0,Math.ceil((n-r)/1e3)):void 0}var Xe=A.object({retryable:A.boolean(),recovery:sr,reason:cr.optional(),retryAfterSeconds:A.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).optional()}),pr=A.object({requestId:A.uuid().optional(),error:A.object({code:A.string().regex(/^[A-Z][A-Z0-9_]{0,95}$/),message:A.string(),...Xe.partial().shape})}),Mn=A.object({error:pr.shape.error.extend({requestId:A.uuid().optional()})}),Fn=A.object({error:A.string(),code:A.string().regex(/^[A-Za-z][A-Za-z0-9_]{0,95}$/),requestId:A.uuid(),...Xe.shape});function Je(e,r,i={}){let n=lr(e,r),a=i.reason==="RESULT_UNKNOWN"?"recover_operation":i.recovery??n.recovery,l=n.retryable&&i.retryable!==!1&&a!=="recover_operation",s=l?ur(i.retryAfter??null):void 0;return{...n,retryable:l,recovery:a,...s===void 0?{}:{retryAfterSeconds:s},...i.reason?{reason:i.reason}:{}}}var et=class extends Error{constructor(i,n,a,l,s){super(n);this.code=i;this.status=a;this.requestId=l;this.name="IndianaError",this.reason=s?.reason;let p=Je(i,a??0,{...s,retryAfter:s?.retryAfterSeconds===void 0?void 0:String(s.retryAfterSeconds)});this.retryable=p.retryable,this.recovery=p.recovery,this.retryAfterSeconds=p.retryAfterSeconds}code;status;requestId;retryable;recovery;retryAfterSeconds;reason};export{ie as a,qn as b,pr as c,Je as d,O as e,nt as f,dr as g,F as h,ue as i,J as j,I as k,it as l,L as m,gn as n,Yt as o,Y as p,yn as q,bn as r,Ge as s,_n as t,He as u,P as v,kn as w,Cn as x,Ln as y,Sr as z,_e as A,Ie as B,Tr as C,ut as D,Ee as E,Ae as F,vr as G,Ne as H,Ur as I,Le as J,De as K,ze as L,qr as M,Mr as N,Qr as O,j as P,y as Q,an as R,ee as S,sn as T,de as U,Me as V,Ht as W,cn as X,ln as Y,Wt as Z,un as _,pn as $,Pn as aa,nr as ba,wn as ca,ar as da,vn as ea,et as fa};
@@ -0,0 +1 @@
1
+ import{a as m,c as p}from"./chunk-7DXL3LHT.js";import{z as d}from"zod";var V=d.enum(["sandbox","live"]),j=d.object({projectId:d.string().min(1),environment:V}).strict();import{z as t}from"zod";var y=t.tuple([t.number().min(0).max(1),t.number().min(0).max(1)]).refine(([n,l])=>n<=l),A=t.strictObject({attribute:t.string().optional(),seed:t.string(),hashVersion:t.literal(2),ranges:t.array(y).max(100)}),E=t.strictObject({id:t.string().min(1).max(255),condition:p,gate:t.boolean().optional()}),$=t.strictObject({key:t.string().optional(),name:t.string().optional(),passthrough:t.boolean().optional()}),R={condition:p.optional(),parentConditions:t.array(E).max(100).optional(),weights:t.array(t.number().min(0).max(1)).max(20).optional(),coverage:t.number().min(0).max(1).optional(),hashAttribute:t.string().optional(),fallbackAttribute:t.string().optional(),hashVersion:t.literal(2).optional(),disableStickyBucketing:t.boolean().optional(),bucketVersion:t.number().int().nonnegative().optional(),minBucketVersion:t.number().int().nonnegative().optional(),filters:t.array(A).max(100).optional(),ranges:t.array(y).max(20).optional(),meta:t.array($).max(20).optional(),seed:t.string().optional(),name:t.string().optional(),phase:t.string().optional()},g=t.strictObject({...R,key:t.string().min(1).max(255),variations:t.tuple([m,m]).rest(m).refine(n=>n.length<=20),urlPatterns:t.array(t.strictObject({include:t.boolean(),type:t.enum(["regex","simple"]),pattern:t.string()})).max(100).optional(),force:t.number().int().nonnegative().optional(),active:t.boolean().optional(),persistQueryString:t.boolean().optional()}),C=t.strictObject({value:m,variationId:t.number().int(),key:t.string(),name:t.string().optional(),bucket:t.number().optional(),passthrough:t.boolean().optional(),inExperiment:t.boolean(),hashUsed:t.boolean().optional(),hashAttribute:t.string(),hashValue:t.string(),featureId:t.string().nullable(),stickyBucketUsed:t.boolean().optional()}),G=t.strictObject({...R,id:t.string().max(255).optional(),force:m.optional(),variations:t.array(m).min(2).max(20).optional(),key:t.string().optional(),range:y.optional(),tracks:t.array(t.strictObject({experiment:g,result:C})).max(100).optional()}),H=t.strictObject({defaultValue:m.optional(),rules:t.array(G).max(500).optional()}),b=t.record(t.string(),t.union([t.strictObject({type:t.literal("hashed"),attributeKey:t.string(),values:t.array(t.string().regex(/^[a-f0-9]{64}$/))}),t.strictObject({type:t.literal("list"),attributeKey:t.string(),values:t.array(t.union([t.string(),t.number()]))}),t.strictObject({type:t.literal("condition"),condition:p})])),Y=t.strictObject({scope:j,generation:t.string().regex(/^[a-f0-9]{64}$/),evaluatedAt:t.iso.datetime({offset:!0}),expiresAt:t.iso.datetime({offset:!0}).nullable(),features:t.record(t.string(),H),savedGroups:b,experiments:t.record(t.uuid(),g)});import{z as a}from"zod";import{z as e}from"zod";import{z as r}from"zod";var k=r.strictObject({schemaVersion:r.literal(1),renderKey:r.string().min(1).max(256),routeTemplate:r.string().startsWith("/").max(2048),selectors:r.array(r.string().regex(/^[a-z][a-z0-9-]*\[(?:id|data-testid|data-test|data-qa|data-indiana-id)="(?:[^"\\\x00-\x1f\x7f]|\\["\\])*"\]$/).max(512)),present:r.array(r.number().int().min(0)).min(1),absent:r.array(r.number().int().min(0))}).superRefine((n,l)=>{let o=[...n.present,...n.absent];(new Set(n.selectors).size!==n.selectors.length||new Set(o).size!==o.length||o.length!==n.selectors.length||o.some(s=>s>=n.selectors.length))&&l.addIssue({code:"custom",message:"Incomplete or ambiguous render signature"})}),O=r.strictObject({renderKey:r.string().min(1).max(256),routeKey:r.string().min(1).max(256),stateKey:r.string().min(1).max(256),documentKey:r.string().min(1).max(256),documentHash:r.string().regex(/^[a-f0-9]{64}$/),compositionKey:r.string().min(1).max(256),entryMode:r.enum(["hard","soft"]),match:r.strictObject({present:r.array(r.number().int().min(0)),absent:r.array(r.number().int().min(0))})});import{z as u}from"zod";var U=["enterprise-internal-indiana-test","tinkerland-indiana-prod"],h="[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}",N=u.string().regex(new RegExp(`^${h}/${h}/${h}/manifest\\.json$`)),M=u.strictObject({kind:u.literal("gcs-resumable"),url:u.url(),bucket:u.enum(U),objectKey:N,byteLength:u.number().int().positive(),expiresAt:u.iso.datetime()}).superRefine((n,l)=>{let o=new URL(n.url),s=o.searchParams,z=["uploadType","upload_id","name","upload_protocol","ifGenerationMatch"];(o.origin!=="https://storage.googleapis.com"||o.username||o.password||o.hash||o.pathname!==`/upload/storage/v1/b/${n.bucket}/o`||[...s.keys()].some(S=>!z.includes(S)||s.getAll(S).length!==1)||s.get("uploadType")!=="resumable"||!/^[A-Za-z0-9_-]{1,4096}$/.test(s.get("upload_id")??"")||s.has("name")&&s.get("name")!==`app-manifests/${n.objectKey}`||s.has("upload_protocol")&&s.get("upload_protocol")!=="resumable"||s.has("ifGenerationMatch")&&s.get("ifGenerationMatch")!=="0")&&l.addIssue({code:"custom",message:"Invalid IAM upload capability"})});var i=e.string().min(1).max(256),c=e.string().regex(/^[a-f0-9]{64}$/),se=e.strictObject({versionId:e.uuid(),manifestDigest:c,sourceGraphDigest:c,pageKey:i,stateKey:i,documentKey:i,documentHash:c,elementKey:i.optional(),nodeId:i.optional(),contentHash:c.optional(),renderKey:i.optional()}),P=e.strictObject({pageKey:i,documentKey:i,expectedDocumentHash:c,renderKey:i.optional(),nodeId:i,elementKey:i,expectedContentHash:c,property:e.enum(["text","fontSize","color"]),value:e.union([e.string().max(4e3),e.number().finite()])}),w=e.strictObject({versionId:e.uuid(),manifestDigest:c,sourceGraphDigest:c,pageKey:i,stateKey:i,documentKey:i,documentHash:c,renderKey:i.optional(),patches:e.array(P.omit({pageKey:!0,documentKey:!0,expectedDocumentHash:!0,renderKey:!0})).min(1).max(200)}),B=/^[a-z][a-z0-9-]{0,39}$/,x=e.string().regex(B),K=e.enum(["web","ios","android"]),oe=e.discriminatedUnion("action",[e.strictObject({action:e.literal("register"),requestId:e.uuid(),client:x,platform:K,label:e.string().trim().min(1).max(100),sha256:c,bytes:e.number().int().min(1),transferBytes:e.number().int().min(1)}),e.strictObject({action:e.literal("complete"),versionId:e.uuid()}),e.strictObject({action:e.literal("current"),versionId:e.uuid(),expectedCurrent:e.uuid().nullable()}),e.strictObject({action:e.literal("delivery"),enabled:e.boolean()}),e.strictObject({action:e.literal("changes"),versionId:e.uuid(),experimentId:e.uuid(),variationId:i,changesetId:e.uuid().nullable(),expectedRevision:c.nullable(),editorUrl:e.string().url().max(2048),patches:e.array(P).max(200)})]),v=e.strictObject({id:e.uuid(),projectId:e.uuid(),environmentId:e.uuid(),clientKey:x,platform:K,label:e.string(),sha256:c,bytes:e.number().int().positive(),objectKey:e.string(),state:e.enum(["uploading","ready","rejected"]),isCurrent:e.boolean(),revision:e.number().int().nonnegative(),createdAt:e.string(),expiresAt:e.string(),readyAt:e.string().nullable(),summary:e.record(e.string(),e.json()),routeTree:e.json().nullable(),validation:e.record(e.string(),e.json())}),_=e.strictObject({key:x,platform:K,currentId:e.uuid().nullable()}),ce=e.strictObject({rows:e.array(v).max(100),nextCursor:e.uuid().nullable(),clients:e.array(_).max(20)}),f=e.strictObject({storedBytes:e.number().int().nonnegative(),reservedBytes:e.number().int().nonnegative(),chargedBytes:e.number().int().nonnegative(),versions:e.number().int().nonnegative(),objects:e.number().int().nonnegative(),orphanObjects:e.number().int().nonnegative(),missingReadyObjects:e.number().int().nonnegative(),unknownObjectSizes:e.number().int().nonnegative(),byteLimit:e.number().int().positive(),versionLimit:e.number().int().positive(),remainingBytes:e.number().int().nonnegative()}),me=e.strictObject({asOf:e.iso.datetime({offset:!0}),reclamation:e.literal("manual-review-required"),buckets:e.strictObject({source:f,runtime:f,previews:f})}),le=e.strictObject({version:v,actorId:e.uuid(),claims:e.record(e.string(),e.json())}),ue=e.strictObject({version:v,upload:M.nullable()}),pe=e.object({format:e.literal("indiana-route-state-index"),schemaVersion:e.literal(3),routes:e.array(e.object({routeKey:i,path:e.string(),documentKey:i,documentHash:c,initialStateKey:i,initialRenderKey:i})),renders:e.array(O)}).loose().superRefine((n,l)=>{(!n.renders||n.routes.some(o=>!n.renders?.some(s=>s.renderKey===o.initialRenderKey&&s.routeKey===o.routeKey&&s.documentKey===o.documentKey&&s.stateKey===o.initialStateKey&&s.documentHash===o.documentHash&&s.entryMode==="hard")))&&l.addIssue({code:"custom",message:"Incomplete render catalog"})}),ge=e.strictObject({rows:e.array(e.object({id:e.uuid(),name:e.string(),status:e.string(),variations:e.array(e.object({id:i,key:i,name:e.string().optional()}).loose())}).loose()),limited:e.boolean()}),de=e.strictObject({enabled:e.boolean(),allowedOrigins:e.array(e.string())});var D=a.strictObject({selector:a.string().min(1).max(2048),action:a.enum(["set","append","remove"]),attribute:a.string().min(1).max(128).refine(n=>["html","class","style","position","href","src","alt","title","id","role","hidden"].includes(n)||/^(aria|data)-[a-z0-9_-]+$/.test(n)),value:a.string().max(5e4).optional(),parentSelector:a.string().max(2048).optional(),insertBeforeSelector:a.string().max(2048).optional()}),T=a.strictObject({variation:a.string().min(1).max(128),description:a.string().max(2e3).default(""),css:a.string().max(1e5).default(""),js:a.string().max(1e5).default(""),domMutations:a.array(D).max(200).default([]),iam:w.optional(),renderGuard:k.optional()}),I=T.omit({variation:!0,description:!0,iam:!0}),F=g.omit({variations:!0,active:!0}).extend({changeId:a.string().regex(/^[a-f0-9]{64}$/),variations:a.tuple([I,I]).rest(I).refine(n=>n.length<=20)}),Ke=a.strictObject({trackExposures:a.boolean(),environmentId:a.uuid(),generation:a.string().regex(/^[a-f0-9]{64}$/),experiments:a.array(F).max(100),savedGroups:b});export{j as a,g as b,C as c,b as d,Y as e,k as f,se as g,x as h,Ke as i};