@tinkerlandai/indiana-sdk 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +18 -13
  3. package/README.zh-CN.md +7 -4
  4. package/THIRD_PARTY_NOTICES.md +27 -0
  5. package/dist/ai-usage-BzydP8eN.d.ts +11085 -0
  6. package/dist/chunk-3OSMEG44.js +17 -0
  7. package/dist/chunk-GA6X57BO.js +1 -0
  8. package/dist/chunk-GTBD4BJ4.js +11 -0
  9. package/dist/chunk-QUW4UOKZ.js +4 -0
  10. package/dist/chunk-RMFH5TWV.js +1 -0
  11. package/dist/chunk-YNUVRZRQ.js +1 -0
  12. package/dist/chunk-ZT523F45.js +1 -0
  13. package/dist/funnel-runtime-host-RZRB2CY6.js +1 -0
  14. package/dist/{funnel-runtime-start-CQhy2kx1.d.ts → funnel-runtime-start-JHA9ES24.d.ts} +68 -29
  15. package/dist/index.d.ts +109 -53
  16. package/dist/index.js +1 -1
  17. package/dist/native-shell.js +1 -1
  18. package/dist/openrouter.d.ts +3 -2
  19. package/dist/openrouter.js +1 -1
  20. package/dist/page.d.ts +13 -12
  21. package/dist/page.js +1 -4
  22. package/dist/{paywall-Y3FIG43H.js → paywall-MYBEOVTQ.js} +1 -1
  23. package/dist/popup.d.ts +254 -1
  24. package/dist/popup.js +8 -7
  25. package/dist/{screen-Keau_Qa2.d.ts → screen-16d-xADb.d.ts} +354 -463
  26. package/dist/server.d.ts +4 -3
  27. package/dist/server.js +1 -1
  28. package/dist/src-E2GXK6WA.js +1 -0
  29. package/dist/visual-editor-agent-FDCV3BXP.js +1 -0
  30. package/dist/visual.d.ts +38 -0
  31. package/dist/visual.js +1 -0
  32. package/package.json +8 -2
  33. package/dist/ai-usage-D_mBF5Gp.d.ts +0 -9942
  34. package/dist/chunk-CRJJ4EA2.js +0 -1
  35. package/dist/chunk-D37O6FAW.js +0 -11
  36. package/dist/chunk-G5ZGWOLJ.js +0 -1
  37. package/dist/chunk-MJG7X7LM.js +0 -17
  38. package/dist/funnel-runtime-host-X7AGEGHN.js +0 -1
  39. package/dist/src-RZJKF6LQ.js +0 -1
@@ -0,0 +1,4 @@
1
+ import{e as U,f as L,i as A}from"./chunk-3OSMEG44.js";function T(e){if(!/^[A-Za-z0-9_-]{1,64}$/.test(e))throw new Error("Invalid device cookie name");let t="";for(let i of document.cookie.split(";"))if(i.trim().startsWith(`${e}=`))try{t=decodeURIComponent(i.trim().slice(e.length+1))}catch{}return/^[A-Za-z0-9_-]{8,128}$/.test(t)||(t=crypto.randomUUID(),document.cookie=`${e}=${encodeURIComponent(t)}; path=/; max-age=${400*24*3600}; SameSite=Lax`),t}function V(){try{let e=sessionStorage.getItem("indiana_sid");return e||(e=crypto.randomUUID(),sessionStorage.setItem("indiana_sid",e)),e}catch{return}}function $(e){let t=new URL(e);if(t.protocol!=="https:"&&!(t.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(t.hostname))||t.username||t.password||t.search||t.hash)throw new Error("baseUrl must be an https origin without credentials");return t.origin}var v=new Set,x;function D(e){if(v.add(e),!x){let t=history.pushState,i=history.replaceState,r=()=>{for(let s of v)s()},o=function(...s){t.apply(this,s),r()},c=function(...s){i.apply(this,s),r()};history.pushState=o,history.replaceState=c,addEventListener("popstate",r),addEventListener("hashchange",r),x=()=>{history.pushState===o&&(history.pushState=t),history.replaceState===c&&(history.replaceState=i),removeEventListener("popstate",r),removeEventListener("hashchange",r)}}return()=>{v.delete(e),v.size||(x?.(),x=void 0)}}var C="__indiana_visual_editor",d;function M(e,t){if(d&&d.origin===e&&d.environmentId===t&&d.expiresAt>Date.now())return d;try{let i=new URL(location.href).searchParams.get(C);if(!i||i.length>2048)return null;let r=JSON.parse(i);return r.origin!==e||r.environmentId!==t||!/^[a-f0-9-]{36}$/i.test(r.nonce)||r.expiresAt<=Date.now()||r.expiresAt>Date.now()+900*1e3?null:(d=r,r)}catch{return null}}function O(e,t){return!!M(e,t)}function Q(){let e=new URL(location.href);e.searchParams.delete(C),history.replaceState(history.state,"",e.href)}/*!
2
+ Portions ported from GrowthBook sdk-js @ ed29827 (GrowthBook.ts auto experiments, util.ts mergeQueryStrings,
3
+ plugins/auto-attributes.ts). Copyright (c) GrowthBook, Inc. MIT License.
4
+ */function z(e,t){let i,r;try{i=new URL(e),r=new URL(t)}catch{return t}return i.searchParams.forEach((o,c)=>{r.searchParams.has(c)||r.searchParams.set(c,o)}),r.toString()}function W(e,t){let i=navigator.userAgent,r=new URLSearchParams(t.search),o={};for(let c of["source","medium","campaign","term","content"]){let s=r.get(`utm_${c}`);s!==null&&(o[`utm${c[0].toUpperCase()}${c.slice(1)}`]=s)}return{id:e,deviceId:e,url:t.href,path:t.pathname,host:t.host,query:t.search,pageTitle:typeof document>"u"?"":document.title,browser:/Edg/.test(i)?"edge":/Chrome/.test(i)?"chrome":/Firefox/.test(i)?"firefox":/Safari/.test(i)?"safari":"unknown",deviceType:/Mobi/.test(i)?"mobile":"desktop",...o}}function F(e){let t=e;if(!(!!t&&typeof t=="object"&&typeof t.environmentId=="string"&&typeof t.trackExposures=="boolean"&&/^[a-f0-9]{64}$/.test(t.generation??"")&&Array.isArray(t.experiments)&&t.experiments.length<=100&&t.experiments.every(r=>!!r&&!["namespace","status","url","groups"].some(o=>Object.hasOwn(r,o))&&(r.hashVersion===void 0||r.hashVersion===2)&&typeof r.key=="string"&&Array.isArray(r.variations)&&r.variations.length>=2&&r.variations.every(o=>!!o&&typeof o.urlRedirect=="string")&&(r.urlPatterns===void 0||Array.isArray(r.urlPatterns)))&&!!t.savedGroups&&typeof t.savedGroups=="object"&&!Array.isArray(t.savedGroups)))throw new Error("Invalid page experiment payload");return t}function ee(e){let t=$(e.baseUrl);if(!/^[0-9a-f-]{36}$/i.test(e.environmentId))throw new Error("environmentId must be the App environment ID");let i=e.fetch??globalThis.fetch.bind(globalThis),r=`${t}/api/v1/page-experiments/${e.environmentId}`,o=T(e.deviceIdCookie??"indiana_did"),c=V(),s=null,R={...e.attributes??{}},m="",E=!1,I=new Map,P=[],g;function _(n){return n.length?i(`${r}/events`,{method:"POST",body:JSON.stringify({events:n}),headers:{"Content-Type":"text/plain"},keepalive:!0,credentials:"omit"}).then(()=>{}).catch(a=>e.log?.("Exposure not sent",{error:a})):Promise.resolve()}function f(){return clearTimeout(g),g=void 0,_(P.splice(0,20))}let l={trackedExperiments:new Set,log:e.log,onExperimentViewed:(n,a)=>{e.trackExposures===!1||s?.trackExposures===!1||(P.push({eventUuid:crypto.randomUUID(),timestamp:new Date().toISOString(),deviceId:o,...c?{sessionId:c}:{},url:location.href,pageTitle:document.title.slice(0,512),experimentKey:n.key,variationKey:a.key}),g||(g=setTimeout(()=>{f()},1e3)))}},N=()=>{l.url=location.href,l.attributes={...W(o,location),...R}};function G(n){if(!e.disableCrossOriginUrlRedirects)return!1;try{let a=new URL(location.href);return n.variations.some(u=>{if(!u.urlRedirect)return!1;let y=new URL(u.urlRedirect);return y.protocol!==a.protocol||y.host!==a.host})}catch{return!0}}function J(n,a){m=n;let u=e.navigate??(p=>location.replace(p)),y=e.navigateDelay??(e.navigate?0:100),q=e.maxNavigateDelay??1e3;Promise.all([Promise.race([a,new Promise(p=>setTimeout(p,q))]),new Promise(p=>setTimeout(p,y))]).then(()=>{E||u(n)})}function h(){if(!(!s||E||O(t,e.environmentId))){N();for(let n of s.experiments){if(G(n)){e.log?.("Auto experiment blocked",{id:n.key});continue}let a;try{a=A(n,l)}catch(u){e.log?.("Skipping page experiment",{id:n.key,error:String(u)});continue}if(I.set(n.key,a),!!a.inExperiment){if(a.value.urlRedirect){let u=n.persistQueryString?z(location.href,a.value.urlRedirect):a.value.urlRedirect;U(u,n.urlPatterns??[])?e.log?.("Skipping redirect because original URL matches redirect URL",{id:n.key}):u!==m&&J(u,f())}break}}}}let w="",H=()=>{location.href!==w&&(w=location.href,m="",h())},b;function j(){b??=D(H),addEventListener("pagehide",S)}let S=()=>{f()};async function k(){let n=await i(r,{cache:"no-cache",credentials:"omit"});if(!n.ok)throw new Error(`Page experiments unavailable (${n.status})`);let a=F(await n.json());if(a.environmentId.toLowerCase()!==e.environmentId.toLowerCase())throw new Error("Page experiment payload scope changed");s?.trackExposures===!1&&a.trackExposures&&l.trackedExperiments?.clear(),s=a,l.savedGroups=L(a.savedGroups)}return{async start(){await k(),j(),w=location.href,h()},async refresh(){await k(),m="",h()},setAttributes(n){R={...n},h()},getResults(){return new Map(I)},get generation(){return s?.generation??null},destroy(){E=!0,b?.(),removeEventListener("pagehide",S),f()}}}export{T as a,V as b,$ as c,D as d,M as e,Q as f,z as g,W as h,F as i,ee as j};
@@ -0,0 +1 @@
1
+ import{a as u}from"./chunk-YNUVRZRQ.js";import{G as w,Hg as E,Ig as M,Jg as j,Kg as O,Lg as T}from"./chunk-GTBD4BJ4.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{Fb as k,Fi as V,Nb as C,Qb as j,Tb as T,Ub as v,Vb as L,Yb as R}from"./chunk-GTBD4BJ4.js";import{b as S}from"./chunk-3OSMEG44.js";var U={name:"@tinkerlandai/indiana-sdk",version:"0.5.0",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:{".":{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/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.5"},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"},peerDependencies:{"@openrouter/sdk":"^1.4.25"},peerDependenciesMeta:{"@openrouter/sdk":{optional:!0}}};var e=class extends Error{constructor(h,d,n,N,i){super(d);this.code=h;this.status=n;this.requestId=N;this.name="IndianaError",this.reason=i?.reason;let c=T(h,n??0,{...i,retryAfter:i?.retryAfterSeconds===void 0?void 0:String(i.retryAfterSeconds)});this.retryable=c.retryable,this.recovery=c.recovery,this.retryAfterSeconds=c.retryAfterSeconds}code;status;requestId;retryable;recovery;retryAfterSeconds;reason},$=Symbol("IndianaNoContent");function J(l,A){let h=l.webView??"hosted";if(!["hosted","embedded"].includes(h))throw new e("INVALID_REQUEST","Invalid Web View mode");let d=l.scope?S.parse(l.scope):void 0,n=new URL(l.baseUrl);if(n.username||n.password||n.search||n.hash)throw new e("INVALID_URL","baseUrl must not contain credentials, query, or fragment");if(n.protocol!=="https:"&&!(n.protocol==="http:"&&["localhost","127.0.0.1","[::1]"].includes(n.hostname)))throw new e("INVALID_URL","Use HTTPS, or HTTP on localhost during development");let N=l.fetch??globalThis.fetch.bind(globalThis),i=l.timeoutMs??1e4;if(!Number.isFinite(i)||i<=0||i>12e4)throw new e("INVALID_TIMEOUT","timeoutMs must be between 1 and 120000");let c=null,b,u=0,p=null,f=new Set;function D(){u+=1,c=null,p=null;for(let s of f)s.abort();f.clear()}async function M(s,q={},O="POST",H={}){if(!c)throw new e("NOT_IDENTIFIED","Call identify with a server-issued customer token first");let g=u,o=new AbortController;f.add(o);let y=()=>g!==u?new e("IDENTITY_CHANGED","Customer identity changed while the request was in flight"):new e("TIMEOUT","Indiana request timed out"),I,x=new Promise((r,a)=>{I=()=>a(y()),o.signal.addEventListener("abort",I,{once:!0})}),K=setTimeout(()=>o.abort(),i),G=async()=>{let r=await N(`${n.href.replace(/\/$/,"")}/api/v1/${s}`,{method:O,headers:{"Content-Type":"application/json",Authorization:`Bearer ${c}`,[v]:R.current,[L]:U.version,...d?{"X-Indiana-Project":d.projectId,"X-Indiana-Environment":d.environment}:{}},body:O==="POST"?JSON.stringify(q):void 0,signal:o.signal,credentials:"omit",cache:"no-store",redirect:"error",...H.keepalive?{keepalive:!0}:{}});if(o.signal.aborted)throw y();let a;try{a=r.status===204?$:await r.json()}catch{throw o.signal.aborted?y():new e(r.ok?"INVALID_RESPONSE":"HTTP_ERROR","The gateway returned an unreadable response",r.status,r.headers.get("X-Request-Id")??void 0)}if(o.signal.aborted)throw y();if(g!==u)throw new e("IDENTITY_CHANGED","Customer identity changed while the request was in flight");if(!r.ok){let t=j.safeParse(a),m=t.success&&(!k.safeParse(t.data.error.code).success||C(t.data.error.code,r.status)),_=m?t.data.error.code:"HTTP_ERROR",P=T(_,r.status,{retryAfter:r.headers.get("Retry-After"),recovery:m?t.data.error.recovery:void 0,reason:m?t.data.error.reason:void 0});throw new e(_,m?t.data.error.message:"Indiana request failed",r.status,r.headers.get("X-Request-Id")??(t.success?t.data.requestId:void 0),{...P,...t.success&&t.data.error.retryable===!1?{retryable:!1}:{},...P.retryAfterSeconds===void 0&&t.success&&t.data.error.retryAfterSeconds!==void 0?{retryAfterSeconds:t.data.error.retryAfterSeconds}:{}})}if(r.headers.get(v)!==R.current)throw new e("PROTOCOL_MISMATCH","Response protocol does not match this SDK");if(d&&a&&typeof a=="object"&&"scope"in a){let t=S.safeParse(a.scope);if(!t.success||t.data.projectId!==d.projectId||t.data.environment!==d.environment)throw new e("SCOPE_MISMATCH","Response scope does not match this SDK instance")}let E=r.headers.get("X-Indiana-Web-View");if(E){if(!/^\/web-view\/renderer\/[a-f0-9]{64}$/.test(E))throw new e("INVALID_RESPONSE","Invalid Web View renderer metadata");b=E}let w=r.headers.get("X-Indiana-Telemetry-Subject");if(w){if(!/^[a-f0-9]{64}$/.test(w))throw new e("INVALID_RESPONSE","Invalid telemetry identity");p!==w&&(p=w,A?.(p))}return a};try{return await Promise.race([G(),x])}catch(r){throw g!==u?new e("IDENTITY_CHANGED","Customer identity changed while the request was in flight"):r instanceof e?r:new e(o.signal.aborted?"TIMEOUT":"NETWORK_ERROR",o.signal.aborted?"Indiana request timed out":"Unable to read the Indiana response")}finally{clearTimeout(K),o.signal.removeEventListener("abort",I),f.delete(o)}}return{subjectKey:()=>p,screenUrl(s){if(!V.safeParse(s).success)throw new e("INVALID_RESPONSE","Invalid published screen render address");return new URL(s,n).href},webViewUrl(){if(h!=="embedded"){if(!b)throw new e("INVALID_RESPONSE","The gateway did not provide a hosted Web View renderer");return new URL(b,n).href}},identify(s){if(!s.trim()||/\s/.test(s)||s.length>4096)throw new e("INVALID_TOKEN","A nonempty server-issued token is required");D(),c=s},reset:D,request:M}}export{e as a,J as b};
@@ -0,0 +1 @@
1
+ var p=e=>!!e&&typeof e=="object"&&!Array.isArray(e),f=(e,t)=>typeof e=="string"&&e.length<=t,x=e=>typeof e=="string"&&(["html","class","style","position","href","src","alt","title","id","role","hidden"].includes(e)||/^(aria|data)-[a-z0-9_-]+$/.test(e));function z(e){if(!p(e)||!f(e.css??"",1e5)||!f(e.js??"",1e5)||!Array.isArray(e.domMutations??[])||Array.isArray(e.domMutations)&&e.domMutations.length>200)throw new Error("Invalid visual variation");let t=e.domMutations??[];for(let r of t)if(!p(r)||!f(r.selector,2048)||!r.selector||!x(r.attribute)||!["set","append","remove"].includes(String(r.action))||r.value!==void 0&&!f(r.value,5e4)||r.parentSelector!==void 0&&!f(r.parentSelector,2048)||r.insertBeforeSelector!==void 0&&!f(r.insertBeforeSelector,2048))throw new Error("Invalid visual mutation");return{css:e.css??"",js:e.js??"",domMutations:t}}function he(e){if(!p(e)||typeof e.environmentId!="string"||!/^[-a-f0-9]{36}$/i.test(e.environmentId)||typeof e.generation!="string"||!/^[a-f0-9]{64}$/.test(e.generation)||!Array.isArray(e.experiments)||e.experiments.length>100||!p(e.savedGroups))throw new Error("Invalid visual experiment payload");let t=e.experiments.map(r=>{if(!p(r)||!["key","changeId"].every(n=>typeof r[n]=="string"&&r[n])||!/^[a-f0-9]{64}$/.test(String(r.changeId))||["namespace","status","groups","url"].some(n=>Object.hasOwn(r,n))||r.hashVersion!==void 0&&r.hashVersion!==2||!Array.isArray(r.variations)||r.variations.length<2||r.variations.length>20||r.urlPatterns!==void 0&&!Array.isArray(r.urlPatterns))throw new Error("Invalid visual experiment");return{...r,variations:r.variations.map(z)}});return{...e,experiments:t}}var G=/^[a-zA-Z:_][a-zA-Z0-9:_.-]*$/,N={revert:function(){}},y=new Map,B=new Set;function F(e){return e==="html"?{childList:!0,subtree:!0,attributes:!0,characterData:!0}:{childList:!1,subtree:!1,attributes:!0,attributeFilter:[e]}}function w(e){var t=y.get(e);return t||(t={element:e,attributes:{}},y.set(e,t)),t}function V(e,t,r,n,i){var u=r(e),s={isDirty:!1,originalValue:u,virtualValue:u,mutations:[],el:e,_positionTimeout:null,observer:new MutationObserver(function(){if(!le&&!(t==="position"&&s._positionTimeout)){t==="position"&&(s._positionTimeout=setTimeout(function(){s._positionTimeout=null},1e3));var o=r(e);t==="position"&&o.parentNode===s.virtualValue.parentNode&&o.insertBeforeNode===s.virtualValue.insertBeforeNode||o!==s.virtualValue&&(s.originalValue=o,i(s))}}),mutationRunner:i,setValue:n,getCurrentValue:r};return t==="position"&&e.parentNode?s.observer.observe(e.parentNode,{childList:!0,subtree:!0,attributes:!1,characterData:!1}):s.observer.observe(e,F(t)),s}function E(e,t){var r=t.getCurrentValue(t.el);t.virtualValue=e,e&&typeof e!="string"?(!r||e.parentNode!==r.parentNode||e.insertBeforeNode!==r.insertBeforeNode)&&(t.isDirty=!0,O()):e!==r&&(t.isDirty=!0,O())}function U(e){var t=e.originalValue;e.mutations.forEach(function(r){return t=r.mutate(t)}),E(ie(t),e)}function J(e){var t=new Set(e.originalValue.split(/\s+/).filter(Boolean));e.mutations.forEach(function(r){return r.mutate(t)}),E(Array.from(t).filter(Boolean).join(" "),e)}function W(e){var t=e.originalValue;e.mutations.forEach(function(r){return t=r.mutate(t)}),E(t,e)}function Z(e){var t=e.parentSelector,r=e.insertBeforeSelector,n=document.querySelector(t);if(!n)return null;var i=r?document.querySelector(r):null;return r&&!i?null:{parentNode:n,insertBeforeNode:i}}function Y(e){var t=e.originalValue;e.mutations.forEach(function(r){var n=r.mutate(),i=Z(n);t=i||t}),E(t,e)}var K=function(t){return t.innerHTML},Q=function(t,r){return t.innerHTML=r};function P(e){var t=w(e);return t.html||(t.html=V(e,"html",K,Q,U)),t.html}var X=function(t){return{parentNode:t.parentElement,insertBeforeNode:t.nextElementSibling}},_=function(t,r){r.insertBeforeNode&&!r.parentNode.contains(r.insertBeforeNode)||r.parentNode.insertBefore(t,r.insertBeforeNode)};function L(e){var t=w(e);return t.position||(t.position=V(e,"position",X,_,Y)),t.position}var $=function(t,r){return r?t.className=r:t.removeAttribute("class")},ee=function(t){return t.className};function D(e){var t=w(e);return t.classes||(t.classes=V(e,"class",ee,$,J)),t.classes}var te=function(t){return function(r){var n;return(n=r.getAttribute(t))!=null?n:null}},re=function(t){return function(r,n){return n!==null?r.setAttribute(t,n):r.removeAttribute(t)}};function H(e,t){var r=w(e);return r.attributes[t]||(r.attributes[t]=V(e,t,te(t),re(t),W)),r.attributes[t]}function ne(e,t){var r=y.get(e);if(r)if(t==="html"){var n,i;(n=r.html)==null||(i=n.observer)==null||i.disconnect(),delete r.html}else if(t==="class"){var u,s;(u=r.classes)==null||(s=u.observer)==null||s.disconnect(),delete r.classes}else if(t==="position"){var o,d;(o=r.position)==null||(d=o.observer)==null||d.disconnect(),delete r.position}else{var l,c,a;(l=r.attributes)==null||(c=l[t])==null||(a=c.observer)==null||a.disconnect(),delete r.attributes[t]}}var h;function ie(e){return h||(h=document.createElement("div")),h.innerHTML=e,h.innerHTML}function b(e,t,r){if(r.isDirty){r.isDirty=!1;var n=r.virtualValue;r.mutations.length||ne(e,t),r.setValue(e,n)}}function oe(e,t){e.html&&b(t,"html",e.html),e.classes&&b(t,"class",e.classes),e.position&&b(t,"position",e.position),Object.keys(e.attributes).forEach(function(r){b(t,r,e.attributes[r])})}function O(){y.forEach(oe)}function se(e,t){var r=null;e.kind==="html"?r=P(t):e.kind==="class"?r=D(t):e.kind==="attribute"?r=H(t,e.attribute):e.kind==="position"&&(r=L(t)),r&&(r.mutations.push(e),r.mutationRunner(r))}function ae(e,t){var r=null;if(e.kind==="html"?r=P(t):e.kind==="class"?r=D(t):e.kind==="attribute"?r=H(t,e.attribute):e.kind==="position"&&(r=L(t)),!!r){var n=r.mutations.indexOf(e);n!==-1&&r.mutations.splice(n,1),r.mutationRunner(r)}}function I(e){if(!(e.kind==="position"&&e.elements.size===1)){var t=new Set(e.elements),r=document.querySelectorAll(e.selector);r.forEach(function(n){t.has(n)||(e.elements.add(n),se(e,n))})}}function ue(e){e.elements.forEach(function(t){return ae(e,t)}),e.elements.clear(),B.delete(e)}function T(){B.forEach(I)}var le=!1;var S;function ce(){typeof document>"u"||(S||(S=new MutationObserver(function(){T()})),T(),S.observe(document.documentElement,{childList:!0,subtree:!0,attributes:!1,characterData:!1}))}ce();function M(e){return typeof document>"u"?N:(B.add(e),I(e),{revert:function(){ue(e)}})}function A(e,t){return M({kind:"html",elements:new Set,mutate:t,selector:e})}function C(e,t){return M({kind:"position",elements:new Set,mutate:t,selector:e})}function m(e,t){return M({kind:"class",elements:new Set,mutate:t,selector:e})}function g(e,t,r){return G.test(t)?t==="class"||t==="className"?m(e,function(n){var i=r(Array.from(n).join(" "));n.clear(),i&&i.split(/\s+/g).filter(Boolean).forEach(function(u){return n.add(u)})}):M({kind:"attribute",attribute:t,elements:new Set,mutate:r,selector:e}):N}function fe(e){var t=e.selector,r=e.action,n=e.value,i=e.attribute,u=e.parentSelector,s=e.insertBeforeSelector;if(i==="html"){if(r==="append")return A(t,function(o){return o+(n??"")});if(r==="set")return A(t,function(){return n??""})}else if(i==="class"){if(r==="append")return m(t,function(o){n&&o.add(n)});if(r==="remove")return m(t,function(o){n&&o.delete(n)});if(r==="set")return m(t,function(o){o.clear(),n&&o.add(n)})}else if(i==="position"){if(r==="set"&&u)return C(t,function(){return{insertBeforeSelector:s,parentSelector:u}})}else{if(r==="append")return g(t,i,function(o){return o!==null?o+(n??""):n??""});if(r==="set")return g(t,i,function(){return n??""});if(r==="remove")return g(t,i,function(){return null})}return N}var de={html:A,classes:m,attribute:g,position:C,declarative:fe},j=de;import pe from"dompurify";var R,q;function me(e){return(!R||q!==window)&&(R=pe(window),q=window),R.sanitize(e,{USE_PROFILES:{html:!0},FORBID_TAGS:["form","input","textarea","select","button","style"]})}function ve(e){let t={...e};if(!["html","class","style","position","href","src","alt","title","id","role","hidden"].includes(t.attribute)&&!/^(aria|data)-[a-z0-9_-]+$/.test(t.attribute))throw new Error("Unsupported visual attribute");document.querySelector(t.selector);for(let r of document.querySelectorAll(t.selector))if(["SCRIPT","IFRAME","OBJECT","EMBED","HTML","HEAD"].includes(r.tagName)||r.tagName==="BODY"&&t.attribute==="html")throw new Error("Protected visual target");if(t.attribute==="html"&&(t.value=me(t.value??"")),["href","src"].includes(t.attribute)&&t.action!=="remove"){let r=new URL(t.value??"",location.href);if(!["https:","http:","mailto:","tel:"].includes(r.protocol)||t.attribute==="src"&&!["https:","http:"].includes(r.protocol))throw new Error("Unsafe visual URL")}return t.parentSelector&&document.querySelector(t.parentSelector),t.insertBeforeSelector&&document.querySelector(t.insertBeforeSelector),t}function Ve(e,t={}){let r=e.domMutations.map(ve),n=[],i=!1,u=!1,s,o=()=>{if(!i){i=!0,s?.disconnect();for(let l of n.reverse())l()}},d=()=>{i||u||(!r.length||e.css||t.allowJs&&e.js||r.some(l=>document.querySelector(l.selector)))&&(u=!0,t.onApplied?.())};try{if(e.css){let a=document.createElement("style");t.nonce&&(a.nonce=t.nonce),a.textContent=e.css,document.head.append(a),n.push(()=>a.remove())}for(let a of r){let v=j.declarative(a);n.push(()=>v.revert())}if(t.allowJs&&e.js){let a=document.createElement("script");t.nonce&&(a.nonce=t.nonce),a.textContent=e.js,document.head.append(a),n.push(()=>a.remove())}let l=performance.now(),c=new WeakMap;s=new MutationObserver(a=>{if(!i){performance.now()-l>1e3&&(l=performance.now(),c=new WeakMap);for(let v of a){let k=(c.get(v.target)??0)+1;if(c.set(v.target,k),k>40){o(),t.onError?.(new Error("Visual changes conflict with repeated page rendering"));return}}d()}}),s.observe(document.documentElement,{subtree:!0,childList:!0,attributes:!0,characterData:!0}),d()}catch(l){throw o(),l}return{revert:o,get applied(){return u}}}export{z as a,he as b,Ve as c};
@@ -0,0 +1 @@
1
+ import{a as V}from"./chunk-6X42DWOM.js";import{a}from"./chunk-YNUVRZRQ.js";import{Te as oe,lg as se}from"./chunk-GTBD4BJ4.js";import"./chunk-3OSMEG44.js";function le(b){let n=b.view;if(!n?.paywall)throw new a("INVALID_REQUEST","The current node is not a Paywall");let A=n.paywall.receiptId,z=n.nodeId,m=n.visit,P=n.paywall.resolution,s=n.paywall.quote,f=n.paywall.operation,x=!1,O=n.paywall.purchaseRequestId,g=null,D=new Map,_=new Map;function R(t){let u=t.run.paywall;if(u?.receiptId===A){if(u.resolution.id!==P.id||u.resolution.offering.id!==P.offering.id)throw new a("INVALID_RESPONSE","The pinned Paywall binding changed");P=u.resolution}if(t.purchase&&t.purchase.receiptId!==A)throw new a("INVALID_RESPONSE","Purchase receipt changed");let c=t.purchase??(u?.receiptId===A?u:null),p=c?.quote??s,o=c?.operation??(p?.operationId===s?.operationId?f:null);if(p&&o&&p.operationId!==o.operationId)throw new a("INVALID_RESPONSE","Purchase operation changed");s=p,(f?.operationId!==o?.operationId||f?.status==="pending"||o?.status==="complete")&&(f=o)}async function I(t,u){if(x)throw new a("IDENTITY_CHANGED","Paywall presentation has closed");let c=D.get(t);if(c){if(JSON.stringify(c.input)!==JSON.stringify(u))throw new a("CONFLICT","A purchase request cannot change its input")}else{let h=b.view;if(!h||h.nodeId!==z||h.visit!==m||h.paywall?.receiptId!==A)throw new a("PRECONDITION_FAILED","The Paywall visit has changed");c={operation:"submit",requestId:t,nodeId:z,visit:m,revision:h.revision,input:u},D.set(t,c)}let p=await b.submit(c),o=Date.now()+3e4;for(;p.run.pendingRequest?.requestId===t&&Date.now()<o&&!x;)await new Promise(h=>setTimeout(h,1e3)),p=await b.resume(t);if(p.run.pendingRequest?.requestId===t)throw new a("COMMAND_PENDING","The purchase command is still pending; retry the original request",202);R(p)}async function E(t){if(!s)throw new a("INVALID_REQUEST","A quoted purchase is required");let u=`${t}:${s.operationId}`,c=_.get(u);if(c||(c=crypto.randomUUID(),_.set(u,c)),await I(c,{type:t==="confirm"?"paywall_confirm":"paywall_cancel",operationId:s.operationId}),!f)throw new a("INVALID_RESPONSE","The accepted purchase result is missing");return structuredClone(f)}return{get view(){return structuredClone(P)},get quote(){return s?structuredClone(s):null},get operation(){return f?structuredClone(f):null},get webViewUrl(){return b.webViewUrl},async refresh(){return R(await b.get()),structuredClone(P)},preview(t){if(O&&O!==t.requestId&&(!f||f.status==="pending"))return Promise.reject(new a("COMMAND_PENDING","Retry the original purchase before starting another"));if(O===t.requestId&&g)return g;let u=P.document.buttons[t.actionId],c=u?.type==="checkout"?oe(u.product,t.selection,P.capabilities):null;if(!c)return Promise.reject(new a("PRODUCT_UNAVAILABLE","Choose an available Product in this purchase area"));O=t.requestId;let p=(async()=>{if(await I(t.requestId,{type:"paywall_quote",actionId:t.actionId,productVersionId:c,...t.offerId?{offerId:t.offerId}:{},...t.nativeOffer?{nativeOffer:t.nativeOffer}:{}}),!s)throw new a("INVALID_RESPONSE","The accepted quote is missing");return structuredClone(s)})();return g=p,p.then(()=>{g===p&&(g=null)},o=>{g===p&&(g=null),o instanceof a&&o.status!==void 0&&o.status<500&&![401,425].includes(o.status)&&(O=null)}),p},confirm:()=>E("confirm"),cancel:()=>E("cancel"),async read(){if(!s)throw new a("INVALID_REQUEST","A quoted purchase is required");if(R(await b.get(void 0,{receiptId:A,operationId:s.operationId})),!f)throw new a("INVALID_RESPONSE","The current purchase result is missing");return structuredClone(f)},destroy(){x=!0,D.clear(),_.clear()}}}async function Ee(b,n){let{mountScreenPreview:A}=await import("./popup.js"),{showPaywall:z}=await import("./paywall-MYBEOVTQ.js"),m=b.ownerDocument,P=m.activeElement,s=m.createElement("section"),f=m.createElement("div"),x=m.createElement("div"),O=m.createElement("p"),g=m.createElement("p"),D=m.createElement("button"),_=m.createElement("button"),R=m.createElement("button"),I=m.createElement("dialog");s.dataset.indianaFunnel="",s.setAttribute("aria-busy","false"),s.style.cssText="box-sizing:border-box;width:100%;min-width:0;font:14px/1.5 system-ui,sans-serif;color:#172033;background:#fff",x.style.cssText="display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:12px 20px",O.setAttribute("role","status"),g.setAttribute("role","alert"),g.hidden=!0,D.type=_.type=R.type="button",x.append(D,O,g,R,_),s.append(f,x),b.append(s);let E=null,t=null,u=null,c="",p="",o=!1,h=0,Y=!1,ne="",k=null,X=Promise.resolve(),L=null,$=null,Q={},Z=new Map,te=new Set,W=new Set,B=new Set,H=null,S={},F=(e,r=null)=>{o||($=r,g.textContent=e instanceof Error?e.message:"Request failed",g.hidden=!1,R.hidden=n.client.pendingCommand===null,V(n.onError,e))};function T(){let e=n.client.view;if(!e)throw new a("INVALID_REQUEST","No current Run is available");return{requestId:crypto.randomUUID(),nodeId:e.nodeId,visit:e.visit,revision:e.revision}}async function U(e,r=!1){if(!(h&&!r||o)){h++,s.setAttribute("aria-busy","true"),g.hidden=!0,$=null;try{if(!r&&H){let i=n.client.view;await H;let l=n.client.view;if(!i||!l||l.id!==i.id||l.nodeId!==i.nodeId||l.visit!==i.visit||l.stopped||!["running","waiting"].includes(l.status))throw new a("PRECONDITION_FAILED","The screen changed while its display was acknowledged")}if(o)return;let w=await e();o||await M(n.client.view??w.run)}catch(w){F(w,n.client.pendingCommand?.requestId??null)}finally{h=Math.max(0,h-1),s.setAttribute("aria-busy",String(h>0)),o||(R.hidden=n.client.pendingCommand===null,D.disabled=h>0||!!n.client.pendingCommand||!n.client.view?.canBack)}}}function ie(e){if(te.has(e)||W.has(e)||o)return;W.add(e);let r=async()=>{if(o||c!==e){W.delete(e);return}if(h||n.client.pendingCommand){setTimeout(()=>{r()},250);return}let w=(async()=>{await n.client.submit({operation:"shown",...T()}),te.add(e)})();H=w;let i=()=>{H===w&&(H=null),W.delete(e)};w.then(i,l=>{i(),h||F(l)})};r()}function K(){k&&clearTimeout(k),!(o||!u||!["running","waiting"].includes(u.status))&&(k=setTimeout(()=>{k=null,re().finally(K)},u.pendingRequest?1500:5e3))}async function re(){if(!(o||Y||h)){Y=!0;try{let e=await n.client.get();o||await M(n.client.view??e.run)}catch(e){F(e)}finally{Y=!1}}}async function ae(e){let r=n.client.view,w=r?.screen,i=w?.customerData.nodes[e.nodeId];if(!r||!w||!i)return;if(!["refresh","next","previous","filter","sources_next","sources_previous"].includes(e.action)){let C=E?.document,q=C?se(C,e.nodeId):null,ee=q?.type==="customer_data"?q.data.outputs?.[e.action]:void 0;ee&&w.outputs.includes(ee)?await U(()=>n.client.submit({operation:"submit",...T(),input:{type:"screen",output:ee,answers:S,selection:e.value?{[e.nodeId]:e.value}:{}}})):await n.onCustomerDataIntent?.(e,r);return}let d=e.action.startsWith("sources_")?i.resources.find(C=>C.key===e.value):null;if(e.action.startsWith("sources_")&&!d)throw new a("INVALID_REQUEST","Choose a current resource");let N=`${r.visit}:${e.nodeId}:${d?.key??""}`,y=Z.get(N)??[null],v=Q[e.nodeId]??{page:1,after:null,filter:"all",...d?{resourceKey:d.key}:{}};if(e.action==="filter"){let C=e.value;if(!C||!(i.source==="offer_history"?["all","issued","reserved","redeemed","expired","revoked"]:["all","purchase","refund","source","usage","debt","settlement"]).includes(C))throw new a("INVALID_REQUEST","Unknown data filter");v={page:1,after:null,filter:C},y.splice(0,y.length,null)}else if(e.action==="next"||e.action==="sources_next"){let C=d?.sources.at(-1),q=d?C?{kind:"ledger",cursor:{at:C.detail[0],id:C.id,type:"source"}}:null:w.dataCursors[e.nodeId];if(!q||!d&&!i.hasNext)return;y[v.page]=q,v={...v,page:v.page+1,after:q}}else if(e.action==="previous"||e.action==="sources_previous"){if(v.page<=1)return;v={...v,page:v.page-1,after:y[v.page-2]??null}}Z.set(N,y),Q={...Q,[e.nodeId]:v},await U(()=>n.client.get({nodeId:r.nodeId,visit:r.visit,revision:r.revision,components:Q}))}function ue(e){let r=e.screen?.presentation;if(!r||r.type==="inline"){I.open&&I.close(),s.parentElement!==b&&b.append(s);return}s.parentElement!==I&&(I.append(s),b.append(I));let w={sm:420,md:640,lg:900};I.style.cssText=`padding:0;border:0;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto;width:${"size"in r?w[r.size]+"px":"100vw"}`,I.setAttribute("aria-label",E?.document?.name??(e.screen?.content.type==="document"?e.screen.content.document.name:"Funnel")),I.open||I.showModal()}async function ce(e){if(o)return;u=e,$&&n.client.pendingCommand?.requestId!==$&&(g.hidden=!0,$=null);let r=e.locale.startsWith("zh");if(D.textContent=r?"\u8FD4\u56DE":"Back",_.textContent=r?"\u5173\u95ED":"Close",R.textContent=r?"\u91CD\u8BD5":"Retry",D.disabled=h>0||!!n.client.pendingCommand||!e.canBack,R.hidden=n.client.pendingCommand===null,O.textContent=e.pendingRequest?r?"\u6B63\u5728\u5904\u7406":"Processing":e.instruction?.type==="wait"?r?"\u7B49\u5F85\u4E2D":"Waiting":"",ne!==`${e.revision}:${e.visit}:${e.status}:${e.stopped}`&&(ne=`${e.revision}:${e.visit}:${e.status}:${e.stopped}`,V(n.onState,structuredClone(e))),e.stopped){E?.destroy(),E=null,t?.destroy(),t=null,f.replaceChildren(),c="",p="",I.open&&I.close(),s.hidden=!0,K();return}s.hidden=!1;let w=e.screen||e.paywall?`${e.id}:${e.nodeId}:${e.visit}`:"";if(w!==c&&(E?.destroy(),E=null,t?.destroy(),t=null,f.replaceChildren(),c=w,p="",S={...e.answers},Q={},Z.clear()),ue(e),e.screen){let l=e.screen.content;E||(E=A(f,{mode:"live",...l.type==="render"?{screenUrl:pe(l.url)}:{rendererUrl:n.client.webViewUrl,title:l.document.name},onAction(y,J={},v={}){S={...S,...v},U(()=>n.client.submit({operation:"submit",...T(),input:{type:"screen",output:y,answers:S,selection:J}}))},onAnswers:y=>{S={...S,...y}},onCustomerDataIntent:y=>{ae(y).catch(F)},onEscape:()=>{j()},onError:y=>F(new Error(y)),onRendered:()=>ie(w)}));let d={capabilities:e.screen.capabilities,customerData:e.screen.customerData,parameters:e.parameters,serverInput:{bindings:e.screen.inputs,answers:S}},N=JSON.stringify([l,e.locale,d.capabilities,d.customerData,d.parameters,e.screen.inputs]);N!==p&&(E.update(l.type==="document"?l.document:null,e.locale,d),p=N),await E.ready}else if(e.paywall&&!t){let l=await z(f,{start:async()=>le(n.client),onPurchase:n.onPurchase,onCheckoutUrl:n.onCheckoutUrl,resolveOfferId:n.resolveOfferId,onEvent:n.onEvent,onOpenUrl:d=>n.onOpenUrl?n.onOpenUrl({receiptId:e.paywall.receiptId,url:d,openIn:"same_window"}):m.defaultView?.location.assign(d),onAction:async d=>{let N=await n.client.submit({operation:"submit",requestId:crypto.randomUUID(),nodeId:e.nodeId,visit:e.visit,revision:e.revision,input:{type:"screen",output:d,answers:{}}});await M(n.client.view??N.run)},onError:F,onDismiss:()=>{!o&&n.client.view?.visit===e.visit&&j()}});o?l.host?.destroy():t=l.host,ie(w)}let i=e.instruction;if(i&&["open_url","event"].includes(i.type)&&!B.has(i.receiptId)){let l=m.createElement("button");l.type="button",l.textContent=i.type==="open_url"?`${r?"\u524D\u5F80":"Continue to"} ${new URL(i.url).host}`:r?"\u7EE7\u7EED":"Continue",l.onclick=()=>{let d=T(),N=i.type==="open_url"&&!n.onOpenUrl&&i.openIn==="new_window"?de(i.url):null;U(async()=>{let y="success";if(i.type==="open_url")if(n.onOpenUrl)try{y=await n.onOpenUrl({receiptId:i.receiptId,url:i.url,openIn:i.openIn})===!1?"failed":"opened"}catch(v){V(n.onError,v),y="failed"}else y=i.openIn==="new_window"&&!N?"failed":"opened";if(i.type==="event"){if(!n.onEvent)throw new a("EVENT_HANDLER_REQUIRED","Provide the event handler");await n.onEvent(i.event)}if(o||n.client.view?.nodeId!==d.nodeId||n.client.view.visit!==d.visit)throw new a("PRECONDITION_FAILED","The client action visit changed");let J=await n.client.submit({operation:"submit",...d,input:{type:"client_action",receiptId:i.receiptId,outcome:y}});return B.add(i.receiptId),i.type==="open_url"&&!n.onOpenUrl&&i.openIn==="same_window"&&m.defaultView?.location.assign(i.url),J})},f.replaceChildren(l)}!e.pendingRequest&&e.status==="completed"&&!B.has(`complete:${e.id}`)&&(B.add(`complete:${e.id}`),V(n.onComplete,structuredClone(e))),K()}function de(e){let r=m.defaultView?.open(e,"_blank")??null;return r&&(r.opener=null),r}function pe(e){return n.client.screenUrl?n.client.screenUrl(e):new URL(e,m.defaultView?.location.href).href}function M(e){return X=X.catch(()=>{}).then(()=>ce(e)),X}let fe=n.client.subscribe(e=>{M(e).catch(F)});function j(){return L||(o?Promise.resolve():n.client.view&&!["running","waiting"].includes(n.client.view.status)?(G(),Promise.resolve()):(L=U(()=>n.client.submit({operation:"close",...T()}),!0).then(()=>{n.client.view?.status==="closed"&&G()}).finally(()=>{L=null}),L))}function G(){o||(o=!0,k&&clearTimeout(k),fe(),E?.destroy(),t?.destroy(),I.close(),I.remove(),s.remove(),P instanceof HTMLElement&&P.isConnected&&P.focus(),V(n.onDismiss,u?structuredClone(u):null))}D.onclick=()=>{U(()=>n.client.submit({operation:"back",...T()}))},_.onclick=()=>{j()},R.onclick=()=>{U(()=>n.client.retry())},I.addEventListener("cancel",e=>{e.preventDefault(),j()});try{let e=await n.client.get();await M(n.client.view??e.run)}catch(e){throw G(),e}return{destroy:G,refresh:re}}export{Ee as showFunnelRun};
@@ -1,7 +1,7 @@
1
1
  import * as zod from 'zod';
2
2
  import { z } from 'zod';
3
- import { O as OfferingItem, A as ApiInput, F as FoundationApi } from './ai-usage-D_mBF5Gp.js';
4
- import { S as StackNode, e as ScreenSelection } from './screen-Keau_Qa2.js';
3
+ import { O as OfferingItem, I as InvoiceModeParams, e as InvoiceModeParamsInput, A as ApiInput, F as FoundationApi } from './ai-usage-BzydP8eN.js';
4
+ import { S as StackNode, d as ScreenSelection } from './screen-16d-xADb.js';
5
5
  import { J as JsonValue, E as EvaluationContext, F as FeatureResult } from './growth-rules-D64pEvg9.js';
6
6
 
7
7
  declare const scopeSchema: z.ZodObject<{
@@ -92,9 +92,9 @@ declare const funnelDataQueriesSchema: z.ZodObject<{
92
92
  at: z.ZodISODateTime;
93
93
  id: z.ZodUUID;
94
94
  type: z.ZodEnum<{
95
+ invoice: "invoice";
95
96
  source: "source";
96
97
  usage: "usage";
97
- invoice: "invoice";
98
98
  debt: "debt";
99
99
  transaction: "transaction";
100
100
  settlement: "settlement";
@@ -107,10 +107,15 @@ declare const funnelDataQueriesSchema: z.ZodObject<{
107
107
  filter: z.ZodEnum<{
108
108
  source: "source";
109
109
  usage: "usage";
110
+ revoked: "revoked";
111
+ expired: "expired";
112
+ reserved: "reserved";
110
113
  refund: "refund";
111
114
  purchase: "purchase";
112
115
  debt: "debt";
113
116
  settlement: "settlement";
117
+ issued: "issued";
118
+ redeemed: "redeemed";
114
119
  all: "all";
115
120
  }>;
116
121
  }, z.core.$strict>>;
@@ -152,9 +157,9 @@ declare const funnelCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
152
157
  at: z.ZodISODateTime;
153
158
  id: z.ZodUUID;
154
159
  type: z.ZodEnum<{
160
+ invoice: "invoice";
155
161
  source: "source";
156
162
  usage: "usage";
157
- invoice: "invoice";
158
163
  debt: "debt";
159
164
  transaction: "transaction";
160
165
  settlement: "settlement";
@@ -167,10 +172,15 @@ declare const funnelCommandSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
167
172
  filter: z.ZodEnum<{
168
173
  source: "source";
169
174
  usage: "usage";
175
+ revoked: "revoked";
176
+ expired: "expired";
177
+ reserved: "reserved";
170
178
  refund: "refund";
171
179
  purchase: "purchase";
172
180
  debt: "debt";
173
181
  settlement: "settlement";
182
+ issued: "issued";
183
+ redeemed: "redeemed";
174
184
  all: "all";
175
185
  }>;
176
186
  }, z.core.$strict>>;
@@ -264,8 +274,8 @@ declare const funnelRunViewSchema: z.ZodObject<{
264
274
  nodeId: z.ZodString;
265
275
  nodeType: z.ZodEnum<{
266
276
  output: "output";
267
- condition: "condition";
268
277
  action: "action";
278
+ condition: "condition";
269
279
  split: "split";
270
280
  end: "end";
271
281
  coupon: "coupon";
@@ -277,8 +287,8 @@ declare const funnelRunViewSchema: z.ZodObject<{
277
287
  wait: "wait";
278
288
  }>;
279
289
  status: z.ZodEnum<{
280
- failed: "failed";
281
290
  running: "running";
291
+ failed: "failed";
282
292
  completed: "completed";
283
293
  closed: "closed";
284
294
  ineligible: "ineligible";
@@ -791,9 +801,9 @@ declare const funnelRunViewSchema: z.ZodObject<{
791
801
  at: z.ZodISODateTime;
792
802
  id: z.ZodUUID;
793
803
  type: z.ZodEnum<{
804
+ invoice: "invoice";
794
805
  source: "source";
795
806
  usage: "usage";
796
- invoice: "invoice";
797
807
  debt: "debt";
798
808
  transaction: "transaction";
799
809
  settlement: "settlement";
@@ -1573,6 +1583,7 @@ declare const funnelRunViewSchema: z.ZodObject<{
1573
1583
  catalogAmountMinor: z.ZodNumber;
1574
1584
  automaticTax: z.ZodBoolean;
1575
1585
  execution: z.ZodNullable<z.ZodObject<{
1586
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
1576
1587
  append: z.ZodOptional<z.ZodObject<{
1577
1588
  subscriptionId: z.ZodString;
1578
1589
  customerId: z.ZodString;
@@ -1660,11 +1671,12 @@ declare const funnelRunViewSchema: z.ZodObject<{
1660
1671
  operationId: z.ZodUUID;
1661
1672
  orderId: z.ZodUUID;
1662
1673
  append: z.ZodOptional<z.ZodBoolean>;
1674
+ invoiceMode: z.ZodOptional<z.ZodBoolean>;
1663
1675
  status: z.ZodEnum<{
1676
+ complete: "complete";
1664
1677
  pending: "pending";
1665
1678
  cancelled: "cancelled";
1666
1679
  failed: "failed";
1667
- complete: "complete";
1668
1680
  }>;
1669
1681
  executor: z.ZodEnum<{
1670
1682
  merchant: "merchant";
@@ -1672,6 +1684,7 @@ declare const funnelRunViewSchema: z.ZodObject<{
1672
1684
  }>;
1673
1685
  checkoutUrl: z.ZodNullable<z.ZodURL>;
1674
1686
  execution: z.ZodNullable<z.ZodObject<{
1687
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
1675
1688
  append: z.ZodOptional<z.ZodObject<{
1676
1689
  subscriptionId: z.ZodString;
1677
1690
  customerId: z.ZodString;
@@ -1930,8 +1943,8 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
1930
1943
  nodeId: z.ZodString;
1931
1944
  nodeType: z.ZodEnum<{
1932
1945
  output: "output";
1933
- condition: "condition";
1934
1946
  action: "action";
1947
+ condition: "condition";
1935
1948
  split: "split";
1936
1949
  end: "end";
1937
1950
  coupon: "coupon";
@@ -1943,8 +1956,8 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
1943
1956
  wait: "wait";
1944
1957
  }>;
1945
1958
  status: z.ZodEnum<{
1946
- failed: "failed";
1947
1959
  running: "running";
1960
+ failed: "failed";
1948
1961
  completed: "completed";
1949
1962
  closed: "closed";
1950
1963
  ineligible: "ineligible";
@@ -2727,6 +2740,7 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
2727
2740
  catalogAmountMinor: z.ZodNumber;
2728
2741
  automaticTax: z.ZodBoolean;
2729
2742
  execution: z.ZodNullable<z.ZodObject<{
2743
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
2730
2744
  append: z.ZodOptional<z.ZodObject<{
2731
2745
  subscriptionId: z.ZodString;
2732
2746
  customerId: z.ZodString;
@@ -2814,11 +2828,12 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
2814
2828
  operationId: z.ZodUUID;
2815
2829
  orderId: z.ZodUUID;
2816
2830
  append: z.ZodOptional<z.ZodBoolean>;
2831
+ invoiceMode: z.ZodOptional<z.ZodBoolean>;
2817
2832
  status: z.ZodEnum<{
2833
+ complete: "complete";
2818
2834
  pending: "pending";
2819
2835
  cancelled: "cancelled";
2820
2836
  failed: "failed";
2821
- complete: "complete";
2822
2837
  }>;
2823
2838
  executor: z.ZodEnum<{
2824
2839
  merchant: "merchant";
@@ -2826,6 +2841,7 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
2826
2841
  }>;
2827
2842
  checkoutUrl: z.ZodNullable<z.ZodURL>;
2828
2843
  execution: z.ZodNullable<z.ZodObject<{
2844
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
2829
2845
  append: z.ZodOptional<z.ZodObject<{
2830
2846
  subscriptionId: z.ZodString;
2831
2847
  customerId: z.ZodString;
@@ -3448,9 +3464,9 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3448
3464
  at: z.ZodISODateTime;
3449
3465
  id: z.ZodUUID;
3450
3466
  type: z.ZodEnum<{
3467
+ invoice: "invoice";
3451
3468
  source: "source";
3452
3469
  usage: "usage";
3453
- invoice: "invoice";
3454
3470
  debt: "debt";
3455
3471
  transaction: "transaction";
3456
3472
  settlement: "settlement";
@@ -3690,6 +3706,7 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3690
3706
  catalogAmountMinor: z.ZodNumber;
3691
3707
  automaticTax: z.ZodBoolean;
3692
3708
  execution: z.ZodNullable<z.ZodObject<{
3709
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
3693
3710
  append: z.ZodOptional<z.ZodObject<{
3694
3711
  subscriptionId: z.ZodString;
3695
3712
  customerId: z.ZodString;
@@ -3777,11 +3794,12 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3777
3794
  operationId: z.ZodUUID;
3778
3795
  orderId: z.ZodUUID;
3779
3796
  append: z.ZodOptional<z.ZodBoolean>;
3797
+ invoiceMode: z.ZodOptional<z.ZodBoolean>;
3780
3798
  status: z.ZodEnum<{
3799
+ complete: "complete";
3781
3800
  pending: "pending";
3782
3801
  cancelled: "cancelled";
3783
3802
  failed: "failed";
3784
- complete: "complete";
3785
3803
  }>;
3786
3804
  executor: z.ZodEnum<{
3787
3805
  merchant: "merchant";
@@ -3789,6 +3807,7 @@ declare const funnelRuntimeResponseSchema: z.ZodObject<{
3789
3807
  }>;
3790
3808
  checkoutUrl: z.ZodNullable<z.ZodURL>;
3791
3809
  execution: z.ZodNullable<z.ZodObject<{
3810
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
3792
3811
  append: z.ZodOptional<z.ZodObject<{
3793
3812
  subscriptionId: z.ZodString;
3794
3813
  customerId: z.ZodString;
@@ -4455,8 +4474,8 @@ declare const funnelConfigurationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4455
4474
  id: z.ZodString;
4456
4475
  type: z.ZodEnum<{
4457
4476
  output: "output";
4458
- condition: "condition";
4459
4477
  action: "action";
4478
+ condition: "condition";
4460
4479
  split: "split";
4461
4480
  end: "end";
4462
4481
  coupon: "coupon";
@@ -4497,8 +4516,8 @@ declare const funnelConfigurationSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
4497
4516
  id: z.ZodString;
4498
4517
  type: z.ZodEnum<{
4499
4518
  output: "output";
4500
- condition: "condition";
4501
4519
  action: "action";
4520
+ condition: "condition";
4502
4521
  split: "split";
4503
4522
  end: "end";
4504
4523
  coupon: "coupon";
@@ -5313,6 +5332,7 @@ declare const subscriptionAttachQuoteSchema: z.ZodObject<{
5313
5332
  catalogAmountMinor: z.ZodNumber;
5314
5333
  automaticTax: z.ZodBoolean;
5315
5334
  execution: z.ZodNullable<z.ZodObject<{
5335
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
5316
5336
  append: z.ZodOptional<z.ZodObject<{
5317
5337
  subscriptionId: z.ZodString;
5318
5338
  customerId: z.ZodString;
@@ -5401,11 +5421,12 @@ declare const subscriptionOperationSchema: z.ZodObject<{
5401
5421
  operationId: z.ZodUUID;
5402
5422
  orderId: z.ZodUUID;
5403
5423
  append: z.ZodOptional<z.ZodBoolean>;
5424
+ invoiceMode: z.ZodOptional<z.ZodBoolean>;
5404
5425
  status: z.ZodEnum<{
5426
+ complete: "complete";
5405
5427
  pending: "pending";
5406
5428
  cancelled: "cancelled";
5407
5429
  failed: "failed";
5408
- complete: "complete";
5409
5430
  }>;
5410
5431
  executor: z.ZodEnum<{
5411
5432
  merchant: "merchant";
@@ -5413,6 +5434,7 @@ declare const subscriptionOperationSchema: z.ZodObject<{
5413
5434
  }>;
5414
5435
  checkoutUrl: z.ZodNullable<z.ZodURL>;
5415
5436
  execution: z.ZodNullable<z.ZodObject<{
5437
+ invoiceMode: z.ZodOptional<z.ZodType<InvoiceModeParams, InvoiceModeParamsInput, z.core.$ZodTypeInternals<InvoiceModeParams, InvoiceModeParamsInput>>>;
5416
5438
  append: z.ZodOptional<z.ZodObject<{
5417
5439
  subscriptionId: z.ZodString;
5418
5440
  customerId: z.ZodString;
@@ -5802,6 +5824,11 @@ declare const featureDeliveryPayloadSchema: z.ZodObject<{
5802
5824
  name: z.ZodOptional<z.ZodString>;
5803
5825
  phase: z.ZodOptional<z.ZodString>;
5804
5826
  }, z.core.$strict>>;
5827
+ analyticsConfig: z.ZodObject<{
5828
+ eventsEnabled: z.ZodBoolean;
5829
+ experimentViewsEnabled: z.ZodBoolean;
5830
+ featureUsageEnabled: z.ZodBoolean;
5831
+ }, z.core.$strict>;
5805
5832
  remoteFeatures: z.ZodArray<z.ZodString>;
5806
5833
  }, z.core.$strict>;
5807
5834
  type FeatureDeliveryPayload = z.infer<typeof featureDeliveryPayloadSchema>;
@@ -6475,7 +6502,7 @@ declare function createFunnelDecisionClient(options: IndianaServerOptions & {
6475
6502
  entry: string;
6476
6503
  nodes: {
6477
6504
  id: string;
6478
- type: "output" | "condition" | "action" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
6505
+ type: "output" | "action" | "condition" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
6479
6506
  outputs: Record<string, string>;
6480
6507
  resources: {
6481
6508
  screenId?: string | undefined;
@@ -6501,7 +6528,7 @@ declare function createFunnelDecisionClient(options: IndianaServerOptions & {
6501
6528
  entry: string;
6502
6529
  nodes: {
6503
6530
  id: string;
6504
- type: "output" | "condition" | "action" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
6531
+ type: "output" | "action" | "condition" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
6505
6532
  outputs: Record<string, string>;
6506
6533
  resources: {
6507
6534
  screenId?: string | undefined;
@@ -6901,7 +6928,7 @@ declare function createNativeReceiptClient(options: IndianaServerOptions): {
6901
6928
  requestId: string;
6902
6929
  orderId: string;
6903
6930
  receiptId: string;
6904
- orderStatus: "created" | "pending" | "trialing" | "paid" | "cancelled" | "failed";
6931
+ orderStatus: "paid" | "created" | "pending" | "trialing" | "cancelled" | "failed";
6905
6932
  refunded: boolean;
6906
6933
  nativeCompletion?: {
6907
6934
  orderId: string;
@@ -6969,8 +6996,8 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
6969
6996
  revision: number;
6970
6997
  visit: number;
6971
6998
  nodeId: string;
6972
- nodeType: "output" | "condition" | "action" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
6973
- status: "failed" | "running" | "completed" | "closed" | "ineligible" | "waiting";
6999
+ nodeType: "output" | "action" | "condition" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
7000
+ status: "running" | "failed" | "completed" | "closed" | "ineligible" | "waiting";
6974
7001
  stopped: boolean;
6975
7002
  canBack: boolean;
6976
7003
  authenticated: boolean;
@@ -7387,6 +7414,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7387
7414
  grooveCustomerId: string;
7388
7415
  };
7389
7416
  expiresAt: string;
7417
+ invoiceMode?: InvoiceModeParams | undefined;
7390
7418
  append?: {
7391
7419
  subscriptionId: string;
7392
7420
  customerId: string;
@@ -7417,7 +7445,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7417
7445
  operation: {
7418
7446
  operationId: string;
7419
7447
  orderId: string;
7420
- status: "pending" | "cancelled" | "failed" | "complete";
7448
+ status: "complete" | "pending" | "cancelled" | "failed";
7421
7449
  executor: "merchant" | "indiana";
7422
7450
  checkoutUrl: string | null;
7423
7451
  execution: {
@@ -7462,6 +7490,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7462
7490
  grooveCustomerId: string;
7463
7491
  };
7464
7492
  expiresAt: string;
7493
+ invoiceMode?: InvoiceModeParams | undefined;
7465
7494
  append?: {
7466
7495
  subscriptionId: string;
7467
7496
  customerId: string;
@@ -7524,6 +7553,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7524
7553
  offerId?: string | undefined;
7525
7554
  } | null;
7526
7555
  append?: boolean | undefined;
7556
+ invoiceMode?: boolean | undefined;
7527
7557
  } | null;
7528
7558
  purchaseRequestId: string | null;
7529
7559
  } | null;
@@ -7744,7 +7774,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7744
7774
  cursor: {
7745
7775
  at: string;
7746
7776
  id: string;
7747
- type: "source" | "usage" | "invoice" | "debt" | "transaction" | "settlement";
7777
+ type: "invoice" | "source" | "usage" | "debt" | "transaction" | "settlement";
7748
7778
  };
7749
7779
  } | {
7750
7780
  kind: "billing";
@@ -7894,6 +7924,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7894
7924
  grooveCustomerId: string;
7895
7925
  };
7896
7926
  expiresAt: string;
7927
+ invoiceMode?: InvoiceModeParams | undefined;
7897
7928
  append?: {
7898
7929
  subscriptionId: string;
7899
7930
  customerId: string;
@@ -7924,7 +7955,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7924
7955
  operation: {
7925
7956
  operationId: string;
7926
7957
  orderId: string;
7927
- status: "pending" | "cancelled" | "failed" | "complete";
7958
+ status: "complete" | "pending" | "cancelled" | "failed";
7928
7959
  executor: "merchant" | "indiana";
7929
7960
  checkoutUrl: string | null;
7930
7961
  execution: {
@@ -7969,6 +8000,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
7969
8000
  grooveCustomerId: string;
7970
8001
  };
7971
8002
  expiresAt: string;
8003
+ invoiceMode?: InvoiceModeParams | undefined;
7972
8004
  append?: {
7973
8005
  subscriptionId: string;
7974
8006
  customerId: string;
@@ -8031,6 +8063,7 @@ declare function createFunnelCampaignClient(options: IndianaServerOptions & {
8031
8063
  offerId?: string | undefined;
8032
8064
  } | null;
8033
8065
  append?: boolean | undefined;
8066
+ invoiceMode?: boolean | undefined;
8034
8067
  } | null;
8035
8068
  } | undefined;
8036
8069
  runToken?: string | undefined;
@@ -8073,8 +8106,8 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8073
8106
  revision: number;
8074
8107
  visit: number;
8075
8108
  nodeId: string;
8076
- nodeType: "output" | "condition" | "action" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
8077
- status: "failed" | "running" | "completed" | "closed" | "ineligible" | "waiting";
8109
+ nodeType: "output" | "action" | "condition" | "split" | "end" | "coupon" | "screen" | "offering" | "feature" | "entry" | "external_page" | "wait";
8110
+ status: "running" | "failed" | "completed" | "closed" | "ineligible" | "waiting";
8078
8111
  stopped: boolean;
8079
8112
  canBack: boolean;
8080
8113
  authenticated: boolean;
@@ -8491,6 +8524,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8491
8524
  grooveCustomerId: string;
8492
8525
  };
8493
8526
  expiresAt: string;
8527
+ invoiceMode?: InvoiceModeParams | undefined;
8494
8528
  append?: {
8495
8529
  subscriptionId: string;
8496
8530
  customerId: string;
@@ -8521,7 +8555,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8521
8555
  operation: {
8522
8556
  operationId: string;
8523
8557
  orderId: string;
8524
- status: "pending" | "cancelled" | "failed" | "complete";
8558
+ status: "complete" | "pending" | "cancelled" | "failed";
8525
8559
  executor: "merchant" | "indiana";
8526
8560
  checkoutUrl: string | null;
8527
8561
  execution: {
@@ -8566,6 +8600,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8566
8600
  grooveCustomerId: string;
8567
8601
  };
8568
8602
  expiresAt: string;
8603
+ invoiceMode?: InvoiceModeParams | undefined;
8569
8604
  append?: {
8570
8605
  subscriptionId: string;
8571
8606
  customerId: string;
@@ -8628,6 +8663,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8628
8663
  offerId?: string | undefined;
8629
8664
  } | null;
8630
8665
  append?: boolean | undefined;
8666
+ invoiceMode?: boolean | undefined;
8631
8667
  } | null;
8632
8668
  purchaseRequestId: string | null;
8633
8669
  } | null;
@@ -8848,7 +8884,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8848
8884
  cursor: {
8849
8885
  at: string;
8850
8886
  id: string;
8851
- type: "source" | "usage" | "invoice" | "debt" | "transaction" | "settlement";
8887
+ type: "invoice" | "source" | "usage" | "debt" | "transaction" | "settlement";
8852
8888
  };
8853
8889
  } | {
8854
8890
  kind: "billing";
@@ -8998,6 +9034,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
8998
9034
  grooveCustomerId: string;
8999
9035
  };
9000
9036
  expiresAt: string;
9037
+ invoiceMode?: InvoiceModeParams | undefined;
9001
9038
  append?: {
9002
9039
  subscriptionId: string;
9003
9040
  customerId: string;
@@ -9028,7 +9065,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
9028
9065
  operation: {
9029
9066
  operationId: string;
9030
9067
  orderId: string;
9031
- status: "pending" | "cancelled" | "failed" | "complete";
9068
+ status: "complete" | "pending" | "cancelled" | "failed";
9032
9069
  executor: "merchant" | "indiana";
9033
9070
  checkoutUrl: string | null;
9034
9071
  execution: {
@@ -9073,6 +9110,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
9073
9110
  grooveCustomerId: string;
9074
9111
  };
9075
9112
  expiresAt: string;
9113
+ invoiceMode?: InvoiceModeParams | undefined;
9076
9114
  append?: {
9077
9115
  subscriptionId: string;
9078
9116
  customerId: string;
@@ -9135,6 +9173,7 @@ declare function renewFunnelRun(options: IndianaServerOptions, input: {
9135
9173
  offerId?: string | undefined;
9136
9174
  } | null;
9137
9175
  append?: boolean | undefined;
9176
+ invoiceMode?: boolean | undefined;
9138
9177
  } | null;
9139
9178
  } | undefined;
9140
9179
  runToken?: string | undefined;