@everfur/sdk 0.16.0 → 0.16.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 (186) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +3 -1
  3. package/chat/lite/package.json +8 -0
  4. package/dist/Chat.d-CzI2228d.d.ts +11 -0
  5. package/dist/Chat.d-D3ScVQ22.d.cts +11 -0
  6. package/dist/{DepthViews.d-DapfRz1S.d.cts → DepthViews.d-6U4QqaW3.d.cts} +1 -1
  7. package/dist/{DepthViews.d-C4TIZDfz.d.cts → DepthViews.d-BLx_ZTwa.d.cts} +1 -1
  8. package/dist/{DepthViews.d-CNjaHLAS.d.ts → DepthViews.d-Cwbel5o4.d.ts} +1 -1
  9. package/dist/{DepthViews.d-A7S-XYiI.d.ts → DepthViews.d-DVIydPLt.d.ts} +1 -1
  10. package/dist/{RecordsPage.d-6WMbieaV.d.ts → RecordsPage.d-Bwalb0wU.d.ts} +1 -1
  11. package/dist/{RecordsPage.d-B2gLf8RH.d.cts → RecordsPage.d-Do7T8Fns.d.cts} +1 -1
  12. package/dist/animations/index.d.cts +3 -3
  13. package/dist/animations/index.d.ts +3 -3
  14. package/dist/{appStateLifecycle.d-B7L427MF.d.ts → appStateLifecycle.d-Bd-rNy6K.d.ts} +6 -11
  15. package/dist/{appStateLifecycle.d-CWedOJq4.d.cts → appStateLifecycle.d-_mh4CEAq.d.cts} +6 -11
  16. package/dist/attachmentTransport.d-Syrvv5zH.d.ts +41 -0
  17. package/dist/attachmentTransport.d-r1XCCdUB.d.cts +41 -0
  18. package/dist/{attachments.d-CB0R1_vK.d.ts → attachments.d-BiBGBE4o.d.ts} +5 -5
  19. package/dist/{attachments.d-CPgp4_W-.d.ts → attachments.d-CyB8hzDo.d.ts} +2 -2
  20. package/dist/{attachments.d-BARh-PrJ.d.cts → attachments.d-GlO5UP7H.d.cts} +5 -5
  21. package/dist/{attachments.d-DeoaCEMD.d.cts → attachments.d-Y-qvSHVU.d.cts} +2 -2
  22. package/dist/{bookingCopy.d-CVmpuk9C.d.cts → bookingCopy.d-BIaCiRuW.d.cts} +2 -2
  23. package/dist/{bookingCopy.d-BakTjvWw.d.ts → bookingCopy.d-DgWvNKD5.d.ts} +2 -2
  24. package/dist/{casesRepository.d-CuokarTU.d.ts → casesRepository.d-BW8DTYeN.d.ts} +1 -1
  25. package/dist/{casesRepository.d-DKRLtYb8.d.cts → casesRepository.d-_0AO2YrL.d.cts} +1 -1
  26. package/dist/chat/index.cjs +32 -31
  27. package/dist/chat/index.d.cts +16 -51
  28. package/dist/chat/index.d.ts +16 -51
  29. package/dist/chat/index.js +32 -31
  30. package/dist/chat/lite/index.cjs +430 -0
  31. package/dist/chat/lite/index.d.cts +35 -0
  32. package/dist/chat/lite/index.d.ts +35 -0
  33. package/dist/chat/lite/index.js +430 -0
  34. package/dist/client/index.cjs +4 -4
  35. package/dist/client/index.d.cts +6 -6
  36. package/dist/client/index.d.ts +6 -6
  37. package/dist/client/index.js +4 -4
  38. package/dist/{clinicBatch.d-BP_Rpvcy.d.ts → clinicBatch.d-BXwATY3-.d.ts} +2 -2
  39. package/dist/{clinicBatch.d-BTDdhMQ2.d.cts → clinicBatch.d-BcuSaOkv.d.cts} +2 -2
  40. package/dist/{config.d-84fNJFv9.d.cts → config.d-D1xcxALX.d.cts} +1 -1
  41. package/dist/{config.d-B4-Mrwq2.d.ts → config.d-jTVsAeky.d.ts} +1 -1
  42. package/dist/consent/index.d.cts +5 -5
  43. package/dist/consent/index.d.ts +5 -5
  44. package/dist/{context.d-87MMrNm6.d.cts → context.d-C3x-z665.d.cts} +5 -5
  45. package/dist/{context.d-rNGMZH8T.d.ts → context.d-goZeZO2I.d.ts} +5 -5
  46. package/dist/{copy.d-CJOLhJac.d.cts → copy.d-DPwFY4r5.d.cts} +2 -2
  47. package/dist/{copy.d-DbwWriBp.d.ts → copy.d-yfJv7fl6.d.ts} +2 -2
  48. package/dist/core/index.cjs +10 -10
  49. package/dist/core/index.d.cts +13 -13
  50. package/dist/core/index.d.ts +13 -13
  51. package/dist/core/index.js +10 -10
  52. package/dist/{depth.d-Dca1T_RH.d.ts → depth.d-SJzknw_P.d.ts} +2 -2
  53. package/dist/{depth.d-CXpPxNSK.d.cts → depth.d-e_8_icip.d.cts} +2 -2
  54. package/dist/{entitlementRepository.d-BBRYTUlp.d.ts → entitlementRepository.d-BNgZhwoE.d.ts} +2 -2
  55. package/dist/{entitlementRepository.d-DBhzBQjZ.d.cts → entitlementRepository.d-C_LdzINM.d.cts} +2 -2
  56. package/dist/{focus.d-BQnOVAql.d.cts → focus.d-CXpIkIuU.d.cts} +2 -2
  57. package/dist/{focus.d-BZ2sEpbU.d.ts → focus.d-DzIgOqNB.d.ts} +2 -2
  58. package/dist/health-plan/index.cjs +7 -7
  59. package/dist/health-plan/index.d.cts +10 -10
  60. package/dist/health-plan/index.d.ts +10 -10
  61. package/dist/health-plan/index.js +7 -7
  62. package/dist/{idempotency.d-9wNNohIA.d.cts → idempotency.d-0biUa_Vw.d.cts} +1 -1
  63. package/dist/{idempotency.d-BdB17veP.d.ts → idempotency.d-DcqIqmf9.d.ts} +1 -1
  64. package/dist/{identity.d-DxNvhj3a.d.ts → identity.d-BEJcHY-5.d.ts} +1 -1
  65. package/dist/{identity.d-nRZBzkG2.d.cts → identity.d-COcNGuCJ.d.cts} +1 -1
  66. package/dist/index.cjs +27 -26
  67. package/dist/index.d.cts +15 -14
  68. package/dist/index.d.ts +15 -14
  69. package/dist/index.js +28 -27
  70. package/dist/{introEvents.d-CQeiUeLn.d.cts → introEvents.d-D8N9bbGO.d.cts} +1 -1
  71. package/dist/{introEvents.d-bkIxpIKr.d.ts → introEvents.d-GCdyQyUG.d.ts} +1 -1
  72. package/dist/notifications/index.d.cts +4 -4
  73. package/dist/notifications/index.d.ts +4 -4
  74. package/dist/{optInView.d-DVJcB4Gp.d.ts → optInView.d-CY2IueSZ.d.ts} +2 -2
  75. package/dist/{optInView.d-BbVUUeoG.d.cts → optInView.d-DVuuWDRw.d.cts} +2 -2
  76. package/dist/{parse.d-CGeJrcAC.d.ts → parse.d--ztmWIIP.d.ts} +1 -1
  77. package/dist/{parse.d-Dk0BasyK.d.cts → parse.d-B-WrkW2C.d.cts} +1 -1
  78. package/dist/{pets.d-DVptPgi0.d.cts → pets.d-BSW0oEYx.d.cts} +1 -1
  79. package/dist/{pets.d-DBopbeRe.d.ts → pets.d-DwsImaHU.d.ts} +1 -1
  80. package/dist/{petsRepository.d-Daef7u0o.d.cts → petsRepository.d-BQfWC3d4.d.cts} +1 -1
  81. package/dist/{petsRepository.d-BtuooSOW.d.ts → petsRepository.d-BudLFHVe.d.ts} +1 -1
  82. package/dist/photo/index.cjs +2 -2
  83. package/dist/photo/index.js +2 -2
  84. package/dist/{ports.d-BxCVSbSi.d.ts → ports.d-B6kDPKF7.d.ts} +4 -4
  85. package/dist/{ports.d-CAT70bVD.d.cts → ports.d-DzPbmiDT.d.cts} +4 -4
  86. package/dist/records/depth/index.cjs +9 -9
  87. package/dist/records/depth/index.d.cts +9 -9
  88. package/dist/records/depth/index.d.ts +9 -9
  89. package/dist/records/depth/index.js +9 -9
  90. package/dist/records/index.cjs +13 -13
  91. package/dist/records/index.d.cts +10 -10
  92. package/dist/records/index.d.ts +10 -10
  93. package/dist/records/index.js +13 -13
  94. package/dist/{requestFunnel.d-Cxt0JqYx.d.ts → requestFunnel.d-BPsCHJWf.d.ts} +2 -2
  95. package/dist/{requestFunnel.d-mEu6B-n8.d.cts → requestFunnel.d-BdpL7gwg.d.cts} +2 -2
  96. package/dist/{runtimeTypes.d-Bkcj_XQy.d.ts → runtimeTypes.d-C_Pcxn-n.d.ts} +4 -4
  97. package/dist/{runtimeTypes.d-D_qHJROH.d.cts → runtimeTypes.d-Cfq3IrZG.d.cts} +4 -4
  98. package/dist/{screenProps.d-CR1lrpzR.d.cts → screenProps.d-BJMn1kTR.d.cts} +1 -1
  99. package/dist/{screenProps.d-D9n-ancr.d.ts → screenProps.d-DGrfO17l.d.ts} +1 -1
  100. package/dist/server/events/index.cjs +3 -3
  101. package/dist/server/events/index.d.cts +48 -6
  102. package/dist/server/events/index.d.ts +48 -6
  103. package/dist/server/events/index.js +3 -3
  104. package/dist/server/index.cjs +2 -2
  105. package/dist/server/index.d.cts +3 -3
  106. package/dist/server/index.d.ts +3 -3
  107. package/dist/server/index.js +2 -2
  108. package/dist/shop/index.cjs +1 -1
  109. package/dist/shop/index.d.cts +3 -3
  110. package/dist/shop/index.d.ts +3 -3
  111. package/dist/shop/index.js +1 -1
  112. package/dist/tabs/index.d.cts +8 -8
  113. package/dist/tabs/index.d.ts +8 -8
  114. package/dist/televet/booking/index.cjs +2 -2
  115. package/dist/televet/booking/index.d.cts +6 -6
  116. package/dist/televet/booking/index.d.ts +6 -6
  117. package/dist/televet/booking/index.js +2 -2
  118. package/dist/televet/call/index.cjs +1 -1
  119. package/dist/televet/call/index.js +1 -1
  120. package/dist/televet/index.cjs +4 -3
  121. package/dist/televet/index.d.cts +1 -0
  122. package/dist/televet/index.d.ts +1 -0
  123. package/dist/televet/index.js +5 -4
  124. package/dist/testing/index.d.cts +1 -1
  125. package/dist/testing/index.d.ts +1 -1
  126. package/dist/testing/rn/index.d.cts +7 -7
  127. package/dist/testing/rn/index.d.ts +7 -7
  128. package/dist/testing/web/index.d.cts +7 -7
  129. package/dist/testing/web/index.d.ts +7 -7
  130. package/dist/texting/index.d.cts +5 -5
  131. package/dist/texting/index.d.ts +5 -5
  132. package/dist/{threadOptions.d-BEG-LZrC.d.cts → threadOptions.d-B0folrKm.d.cts} +1 -1
  133. package/dist/{threadOptions.d-P9v7I7va.d.cts → threadOptions.d-B8HTJa9A.d.cts} +3 -3
  134. package/dist/{threadOptions.d-BgBvSIw8.d.ts → threadOptions.d-BnhE7T8Y.d.ts} +3 -3
  135. package/dist/{threadOptions.d-BerQM1Ql.d.ts → threadOptions.d-DTsJFkL-.d.ts} +1 -1
  136. package/dist/{threadOptions.d-6hfQS1x7.d.cts → threadOptions.d-GPJPprkn.d.cts} +1 -1
  137. package/dist/{threadOptions.d-6hfQS1x7.d.ts → threadOptions.d-GPJPprkn.d.ts} +1 -1
  138. package/dist/{timelineRows.d-C04lp_Vj.d.cts → timelineRows.d-BTcUdNeI.d.cts} +1 -1
  139. package/dist/{timelineRows.d-_7JemrY-.d.ts → timelineRows.d-kmBms1W5.d.ts} +1 -1
  140. package/dist/{useHealthPlanSubscription.d-OhLZpn-n.d.cts → useHealthPlanSubscription.d-B_cth_iF.d.cts} +3 -3
  141. package/dist/{useHealthPlanSubscription.d-CUbHE6eK.d.ts → useHealthPlanSubscription.d-BzNaVl89.d.ts} +3 -3
  142. package/dist/{usePresentation.d-CBtBx38t.d.ts → usePresentation.d-B7Uf44Ax.d.ts} +1 -1
  143. package/dist/{usePresentation.d-YkJeq9mf.d.cts → usePresentation.d-BkAMOfb5.d.cts} +1 -1
  144. package/dist/{useRecordsDepth.d-_rqDIvoq.d.ts → useRecordsDepth.d-BHkZi0tM.d.ts} +1 -1
  145. package/dist/{useRecordsDepth.d-FTImzp6T.d.cts → useRecordsDepth.d-BxHpKipf.d.cts} +1 -1
  146. package/dist/video/index.cjs +2 -2
  147. package/dist/video/index.js +2 -2
  148. package/dist/{view.d-gmYinlac.d.ts → view.d-2BYMRnWj.d.ts} +3 -3
  149. package/dist/{view.d-Dd6AfMvG.d.cts → view.d-CoDbnv0f.d.cts} +3 -3
  150. package/dist/web/consent/index.d.cts +5 -5
  151. package/dist/web/consent/index.d.ts +5 -5
  152. package/dist/web/health-plan/index.cjs +4 -4
  153. package/dist/web/health-plan/index.d.cts +12 -12
  154. package/dist/web/health-plan/index.d.ts +12 -12
  155. package/dist/web/health-plan/index.js +4 -4
  156. package/dist/web/index.cjs +4 -4
  157. package/dist/web/index.d.cts +23 -23
  158. package/dist/web/index.d.ts +23 -23
  159. package/dist/web/index.js +4 -4
  160. package/dist/web/intro/index.d.cts +6 -6
  161. package/dist/web/intro/index.d.ts +6 -6
  162. package/dist/web/notifications/index.d.cts +3 -3
  163. package/dist/web/notifications/index.d.ts +3 -3
  164. package/dist/web/records/depth/index.cjs +9 -9
  165. package/dist/web/records/depth/index.d.cts +9 -9
  166. package/dist/web/records/depth/index.d.ts +9 -9
  167. package/dist/web/records/depth/index.js +9 -9
  168. package/dist/web/records/index.cjs +12 -12
  169. package/dist/web/records/index.d.cts +11 -11
  170. package/dist/web/records/index.d.ts +11 -11
  171. package/dist/web/records/index.js +12 -12
  172. package/dist/web/records-sheet/index.cjs +9 -9
  173. package/dist/web/records-sheet/index.js +9 -9
  174. package/dist/web/shop/index.cjs +1 -1
  175. package/dist/web/shop/index.d.cts +3 -3
  176. package/dist/web/shop/index.d.ts +3 -3
  177. package/dist/web/shop/index.js +1 -1
  178. package/dist/web/televet/booking/index.cjs +2 -2
  179. package/dist/web/televet/booking/index.d.cts +6 -6
  180. package/dist/web/televet/booking/index.d.ts +6 -6
  181. package/dist/web/televet/booking/index.js +2 -2
  182. package/dist/web/televet/call/index.cjs +1 -1
  183. package/dist/web/televet/call/index.js +1 -1
  184. package/dist/web/texting/index.d.cts +5 -5
  185. package/dist/web/texting/index.d.ts +5 -5
  186. package/package.json +17 -26
@@ -427,4 +427,4 @@ return jsx(LiveCard,{handoff:cardHandoff,...route.then?{then:route.then}:{}});ca
427
427
  return jsx(LiveBuy,{route:route});case"consent":/* @__PURE__ */
428
428
  return jsx(LiveConsent,{route:route});case"cart":/* @__PURE__ */
429
429
  return jsx(LiveCart,{});case"placed":/* @__PURE__ */
430
- return jsx(LivePlaced,{orderIds:route.orderIds},route.orderIds.join(","))}}var SECRET_IN_URL=/(client_secret|_secret_|[?&#](sk|rk)_(live|test)_)/i,FAILED={ok:false,message:null},CLOSED={ok:false,message:null,closed:true};function safePageUrl(raw){if(!raw)return null;let u;try{u=new URL(raw)}catch{return null}return u.protocol!=="https:"||u.username||u.password||SECRET_IN_URL.test(raw)?null:u.toString()}function returnedParam(result,returnUrl,key){if(result.type!=="success"||typeof result.url!="string"||!result.url.startsWith(returnUrl))return;let queryAt=result.url.indexOf("?");if(queryAt===-1)return null;let query=result.url.slice(queryAt+1).split("#")[0]??"";for(let pair of query.split("&")){let[k,v=""]=pair.split("=");if(k===key)try{return decodeURIComponent(v)}catch{return null}}return null}async function runInBrowser(openAuthSession,url,returnUrl,read){let result;try{result=await openAuthSession(url,returnUrl)}catch{return FAILED}return result.type!=="success"?CLOSED:read(result)}function createInAppBrowserCardSetup(options){let{openAuthSession:openAuthSession,pageUrl:pageUrl,client:client,returnUrl:returnUrl}=options,makePage=async()=>{if(pageUrl)return pageUrl();if(!client)return null;let res=await client.startCardSetupSession({idempotencyKey:newIdempotencyKey(),returnUrl:returnUrl});return res.ok?res.value.url:null};return async()=>{let url;try{url=safePageUrl(await makePage())}catch{url=null}return url?runInBrowser(openAuthSession,url,returnUrl,result=>{let outcome=returnedParam(result,returnUrl,"oms_card");return outcome===void 0?FAILED:outcome==="canceled"?CLOSED:outcome===null||outcome==="done"?{ok:true}:FAILED}):FAILED}}function createInAppBrowserPayments(options){let{openAuthSession:openAuthSession,client:client,returnUrl:returnUrl}=options;return{confirmCardSetup:()=>Promise.resolve(FAILED),async handleNextAction(_clientSecret,context){if(!context?.orderId)return FAILED;let url;try{let res=await client.cardActionLink(context.orderId,{returnUrl:returnUrl});url=res.ok?safePageUrl(res.value.url):null}catch{url=null}return url?runInBrowser(openAuthSession,url,returnUrl,result=>{let outcome=returnedParam(result,returnUrl,"oms_card_action");return outcome==="succeeded"?{ok:true}:outcome==="canceled"?CLOSED:FAILED}):FAILED}}}function createInAppBrowserCard(options){return{cardHandoff:createInAppBrowserCardSetup({openAuthSession:options.openAuthSession,client:options.client,returnUrl:options.returnUrl}),payments:createInAppBrowserPayments(options)}}var OmsWireError=class _OmsWireError extends Error{constructor(field){super(`OMS answer could not be read: ${field}`);this.field=field;this.name="OmsWireError",Object.setPrototypeOf(this,_OmsWireError.prototype)}};function obj(value,field){if(value===null||typeof value!="object"||Array.isArray(value))throw new OmsWireError(field);return value}function arr(value,field){if(value==null)return[];if(!Array.isArray(value))throw new OmsWireError(field);return value}function str2(o,key,field=key){let v=o[key];if(typeof v!="string"||v.length===0)throw new OmsWireError(field);return v}function optStr(o,key){let v=o[key];return typeof v=="string"&&v.length>0?v:null}function int(o,key,field=key){let v=o[key];if(typeof v!="number"||!Number.isFinite(v))throw new OmsWireError(field);return Math.trunc(v)}function optInt(o,key){let v=o[key];return typeof v=="number"&&Number.isFinite(v)?Math.trunc(v):null}function bool(o,key){return o[key]===true}function petIdOf(value){if(!value||typeof value!="object")return null;let id=value.pet_id;return typeof id=="string"&&id.length>0?id:null}var PACK_UNITS=["each","gram","milliliter"],SPEEDS=["ground","two_day","next_day"];function packUnit(o){let v=o.pack_unit;return typeof v=="string"&&PACK_UNITS.includes(v)?v:null}function speed(v){return typeof v=="string"&&SPEEDS.includes(v)?v:null}function httpsUrl(o,key){let v=optStr(o,key);if(!v)return null;try{return new URL(v).protocol==="https:"?v:null}catch{return null}}function shopConfigFromWire(raw){let o=obj(raw,"shop-config"),delivery=o.delivery&&typeof o.delivery=="object"?o.delivery:null,key=optStr(o,"stripe_publishable_key");return{recurringTermsVersion:optStr(o,"recurring_terms_version"),recurringTermsUrl:httpsUrl(o,"recurring_terms_url"),stripePublishableKey:key&&/^pk_(test|live)_[A-Za-z0-9]+$/.test(key)?key:null,delivery:delivery?{firstFill:speed(delivery.first_fill),refill:speed(delivery.refill)}:null,rxContactMissing:Array.isArray(o.rx_contact_missing)?o.rx_contact_missing.filter(p=>typeof p=="string"):null}}function offerFromWire(raw){let o=obj(raw,"offer"),qty=o.pack_quantity;return{offerId:str2(o,"offer_id"),sku:optStr(o,"sku")??"",title:str2(o,"title"),fulfillmentType:optStr(o,"fulfillment_type")??"physical",requiresRx:bool(o,"requires_rx"),compounded:bool(o,"compounded"),packQuantity:typeof qty=="string"&&/^\d+(\.\d+)?$/.test(qty)?qty:null,packUnit:packUnit(o),price:optInt(o,"price"),imageUrl:httpsUrl(o,"image_url")}}function offerPageFromWire(raw){let o=obj(raw,"offers");return{offers:arr(o.offers,"offers").map(offerFromWire),nextCursor:optStr(o,"next_cursor")}}function quoteFromWire(raw){let o=obj(raw,"quote");return{lines:arr(o.lines,"lines").map(l=>{let line=obj(l,"line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet),unitPrice:int(line,"unit_price"),discount:optInt(line,"discount")??0,tax:optInt(line,"tax")??0}}),shipping:int(o,"shipping"),tax:optInt(o,"tax")??0,total:int(o,"total"),expiresAt:str2(o,"expires_at")}}function checkoutFromWire(raw){let o=obj(raw,"checkout");return{checkoutId:str2(o,"checkout_id"),state:optStr(o,"state")??"draft",orderIds:arr(o.order_ids,"order_ids").filter(id=>typeof id=="string"),createdAt:optStr(o,"created_at")??"",total:int(o,"total"),shipping:optInt(o,"shipping")??0,tax:optInt(o,"tax")??0}}function confirmationFromWire(raw){let o=obj(raw,"confirmation");return{checkoutId:str2(o,"checkout_id"),resale:arr(o.resale,"resale").map(r=>{let entry=obj(r,"resale"),outcome=str2(entry,"outcome");if(outcome!=="confirmed"&&outcome!=="action_required")throw new OmsWireError("resale.outcome");let payerAction=optStr(entry,"payer_action");if(outcome==="action_required"&&!payerAction)throw new OmsWireError("resale.payer_action");return{outcome:outcome,orderId:str2(entry,"order_id"),payerAction:outcome==="confirmed"?null:payerAction}})}}function orderSummaryFromWire(raw){let o=obj(raw,"order"),ref=o.reference&&typeof o.reference=="object"?o.reference:null;return{orderId:str2(o,"order_id"),referenceNumber:ref?optStr(ref,"number"):null,status:str2(o,"status"),total:int(o,"total"),placedAt:optStr(o,"placed_at"),itemCount:optInt(o,"item_count"),items:Array.isArray(o.items)?o.items.flatMap(orderItemFromWire):null}}function orderItemFromWire(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return[];let o=raw,offerId=optStr(o,"offer_id"),title=optStr(o,"title"),quantity=optInt(o,"quantity");return offerId&&title&&quantity!==null?[{offerId:offerId,title:title,quantity:quantity}]:[]}function orderStepFromWire(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return[];let o=raw,key=optStr(o,"key");return key?[{key:key,done:o.done===true,at:optStr(o,"at")}]:[]}function optTrackingFromWire(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return null;try{return trackingFromWire(raw)}catch{return null}}function orderPageFromWire(raw){let o=obj(raw,"orders");return{orders:arr(o.orders,"orders").map(orderSummaryFromWire),nextCursor:optStr(o,"next_cursor")}}function orderLineFromWire(raw){let o=obj(raw,"line"),qty=o.pack_quantity;return{lineId:str2(o,"line_id"),offerId:str2(o,"offer_id"),sku:optStr(o,"sku")??"",title:str2(o,"title"),requiresRx:bool(o,"requires_rx"),compounded:bool(o,"compounded"),packQuantity:typeof qty=="string"&&/^\d+(\.\d+)?$/.test(qty)?qty:null,packUnit:packUnit(o),quantity:int(o,"quantity"),unitPrice:int(o,"unit_price"),discount:optInt(o,"discount")??0,tax:optInt(o,"tax")??0,fulfillmentType:optStr(o,"fulfillment_type")??"physical",petId:petIdOf(o.pet)}}function trackingFromWire(raw){let o=obj(raw,"tracking");return{carrier:optStr(o,"carrier"),trackingNumber:optStr(o,"tracking_number"),status:str2(o,"status"),occurredAt:optStr(o,"occurred_at"),trackingUrl:httpsUrl(o,"tracking_url"),deliveryBy:optStr(o,"delivery_by")}}function shipmentFromWire(raw){let o=obj(raw,"shipment");return{shipmentId:str2(o,"shipment_id"),state:str2(o,"state"),lines:arr(o.lines,"shipment.lines").map(l=>{let line=obj(l,"shipment.line");return{lineId:str2(line,"line_id"),quantity:int(line,"quantity")}}),tracking:arr(o.tracking,"tracking").map(trackingFromWire)}}function orderFromWire(raw){let o=obj(raw,"order");return{summary:orderSummaryFromWire(o.summary),lines:arr(o.lines,"lines").map(orderLineFromWire),shipping:optInt(o,"shipping")??0,shippingTax:optInt(o,"shipping_tax")??0,shipments:arr(o.shipments,"shipments").map(shipmentFromWire),canCancel:bool(o,"can_cancel"),canReturn:bool(o,"can_return"),canPay:bool(o,"can_pay"),paymentStatus:optStr(o,"payment_status"),refunds:arr(o.refunds,"refunds").map(r=>{let refund=obj(r,"refund");return{refundId:str2(refund,"refund_id"),amount:int(refund,"amount"),state:str2(refund,"state")}}),returnIds:arr(o.return_ids,"return_ids").filter(id=>typeof id=="string"),subtotal:optInt(o,"subtotal"),discount:optInt(o,"discount"),tax:optInt(o,"tax"),arrivesBy:optStr(o,"arrives_by"),tracking:optTrackingFromWire(o.tracking),steps:Array.isArray(o.steps)?o.steps.flatMap(orderStepFromWire):null,paymentMethodId:optStr(o,"payment_method_id")}}function cancelOutcomeFromWire(raw){let o=obj(raw,"cancel");return{outcome:str2(o,"outcome"),refunded:optInt(o,"refunded"),reasonCode:optStr(o,"reason_code")}}function payOutcomeFromWire(raw){let o=obj(raw,"pay"),outcome=str2(o,"outcome");if(outcome!=="authorized"&&outcome!=="action_required")throw new OmsWireError("pay.outcome");let payerAction=optStr(o,"payer_action");if(outcome==="action_required"&&!payerAction)throw new OmsWireError("pay.payer_action");return{outcome:outcome,orderId:str2(o,"order_id"),payerAction:outcome==="authorized"?null:payerAction}}function returnFromWire(raw){let o=obj(raw,"return");return{returnId:str2(o,"return_id"),orderId:str2(o,"order_id"),lines:arr(o.lines,"return.lines").map(l=>{let line=obj(l,"return.line");return{lineId:str2(line,"line_id"),quantity:int(line,"quantity"),reasonCode:str2(line,"reason_code")}}),state:str2(o,"state"),rma:optStr(o,"rma"),labelUrl:httpsUrl(o,"label_url")}}function caseFromWire(raw){let o=obj(raw,"case");return{caseId:str2(o,"case_id"),orderId:str2(o,"order_id"),reasonCode:str2(o,"reason_code"),message:typeof o.message=="string"?o.message:"",openedAt:str2(o,"opened_at"),closedAt:optStr(o,"closed_at")}}function casesFromWire(raw){return arr(obj(raw,"cases").cases,"cases").map(caseFromWire)}function prescriptionsFromWire(raw){return arr(obj(raw,"prescriptions").prescriptions,"prescriptions").map(r=>{let o=obj(r,"prescription");return{rxId:str2(o,"rx_id"),petId:str2(o,"pet_id"),drug:optStr(o,"drug")??"",strength:optStr(o,"strength"),form:optStr(o,"form"),status:str2(o,"status"),offerId:optStr(o,"offer_id"),packCount:optInt(o,"pack_count"),fillsUsed:optInt(o,"fills_used"),fillsTotal:optInt(o,"fills_total"),expiresOn:optStr(o,"expires_on"),nextFillOn:optStr(o,"next_fill_on")}})}function addressEntryFromWire(raw){let o=obj(raw,"address");return{ref:str2(o,"ref"),label:optStr(o,"label")??"",isDefault:bool(o,"is_default"),isComplete:bool(o,"is_complete")}}function addressesFromWire(raw){return arr(obj(raw,"addresses").addresses,"addresses").map(addressEntryFromWire)}function addressDetailFromWire(raw){let o=obj(raw,"address"),a=obj(o.address,"address.address"),address={recipientName:optStr(a,"recipient_name"),line1:str2(a,"line1","address.line1"),line2:optStr(a,"line2"),city:str2(a,"city","address.city"),region:optStr(a,"region")??"",postalCode:str2(a,"postal_code","address.postal_code"),country:str2(a,"country","address.country")};return{...addressEntryFromWire(o),address:address}}function paymentMethodsFromWire(raw){return arr(obj(raw,"payment_methods").payment_methods,"payment_methods").map(r=>{let o=obj(r,"payment_method");return{paymentMethodId:str2(o,"payment_method_id"),brand:optStr(o,"brand")??"",last4:optStr(o,"last4")??"",wallet:optStr(o,"wallet")}})}function paymentSetupFromWire(raw){let o=obj(raw,"setup");return{setupId:str2(o,"setup_id"),payerAction:str2(o,"payer_action")}}function cardSetupLinkFromWire(raw){let o=obj(raw,"card_setup");return{url:str2(o,"url")}}function cardActionLinkFromWire(raw){let o=obj(raw,"card_action");return{url:str2(o,"url"),expiresAt:str2(o,"expires_at")}}function planFromWire(raw){let o=obj(raw,"plan");return{planId:str2(o,"plan_id"),lines:arr(o.lines,"plan.lines").map(l=>{let line=obj(l,"plan.line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet)}}),cadenceDays:int(o,"cadence_days"),destination:optStr(o,"destination"),paymentMethodId:optStr(o,"payment_method_id"),discountBps:optInt(o,"discount_bps")??0,nextRun:optStr(o,"next_run"),state:str2(o,"state"),stopReason:optStr(o,"stop_reason")}}function planPageFromWire(raw){let o=obj(raw,"plans");return{plans:arr(o.plans,"plans").map(planFromWire),nextCursor:optStr(o,"next_cursor")}}function cartLineToWire(line){let wire={offer_id:line.offerId,quantity:line.quantity};return line.petId&&(wire.pet={namespace:"consumer",pet_id:line.petId}),line.rxId&&(wire.rx_id=line.rxId),wire}function addressInputToWire(input){let a=input.address;return{label:input.label,make_default:input.makeDefault===true,address:{recipient_name:a.recipientName,line1:a.line1,line2:a.line2,city:a.city,region:a.region,postal_code:a.postalCode,country:a.country}}}function cycleReviewFromWire(raw){let o=obj(raw,"cycle"),review=o.review&&typeof o.review=="object"&&!Array.isArray(o.review)?o.review:null,pick=key=>review&&review[key]!==void 0&&review[key]!==null?review[key]:o[key];return{planId:str2(o,"plan_id"),reviewId:optStr(o,"review_id")??(review?optStr(review,"review_id"):null),cycle:int(o,"cycle"),state:review?optStr(review,"state")??optStr(o,"state"):optStr(o,"state"),lines:arr(pick("lines"),"cycle.lines").map(l=>{let line=obj(l,"cycle.line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet)}}),shipsOn:review?optStr(review,"ships_on")??optStr(o,"ships_on"):optStr(o,"ships_on"),approveBy:review?optStr(review,"approve_by")??optStr(o,"approve_by"):optStr(o,"approve_by"),quoteLines:arr(o.quote&&typeof o.quote=="object"?o.quote.lines:null,"cycle.quote.lines").map(l=>{let line=obj(l,"cycle.quote.line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet),unitPrice:int(line,"unit_price"),discount:optInt(line,"discount")??0,tax:optInt(line,"tax")??0}})}}function cycleDraftFromWire(raw){let o=obj(raw,"cycle-draft");return{checkoutId:str2(o,"checkout_id"),shipping:optInt(o,"shipping")??0,tax:optInt(o,"tax")??0,total:int(o,"total"),expiresAt:optStr(o,"expires_at")}}var DEFAULT_PATH="/api/v1/oms",DEFAULT_TIMEOUT_MS=3e4,PAYMENT_METHOD_ID=/^[A-Za-z0-9_]+$/,REASON_CODE=/^[a-z][a-z0-9_]{0,63}$/;function checkBaseUrl(raw){let url;try{url=new URL(raw)}catch{throw new EverfurConfigError("invalid-argument","createOmsClient: baseUrl is not a URL")}let local=url.hostname==="localhost"||url.hostname==="127.0.0.1"||url.hostname==="[::1]";if(url.protocol!=="https:"&&!(local&&url.protocol==="http:"))throw new EverfurConfigError("invalid-argument","createOmsClient: baseUrl must be https");if(url.username||url.password||url.search||url.hash)throw new EverfurConfigError("invalid-argument","createOmsClient: baseUrl must be a bare origin or path");return url.origin+url.pathname.replace(/\/+$/,"")}function seg(id){return encodeURIComponent(id)}function isValidId(id){return typeof id=="string"&&id.length>0&&id.length<=256}function createOmsClient(config){let base=checkBaseUrl(config.baseUrl)+(config.path??DEFAULT_PATH).replace(/\/+$/,""),fetchImpl=config.fetch??(typeof globalThis.fetch=="function"?globalThis.fetch.bind(globalThis):void 0);if(!fetchImpl)throw new EverfurConfigError("missing-peer-dependency","createOmsClient: no fetch available; pass config.fetch");if(!config.auth||config.auth.kind!=="everfur_consumer"||typeof config.auth.getToken!="function")throw new EverfurConfigError("invalid-argument",'createOmsClient: auth must be { kind: "everfur_consumer", getToken }');let getToken=config.auth.getToken,channel=config.channel??"web",timeoutMs=config.timeoutMs??DEFAULT_TIMEOUT_MS;async function token(){try{let t=await getToken();return typeof t=="string"&&t.length>0?t:null}catch{return null}}async function send(call){let bearer=await token();if(!bearer)return omsErr({kind:"signedOut"});let url=base+call.path;if(call.query){let params=new URLSearchParams;for(let[k,v]of Object.entries(call.query))v!==void 0&&params.set(k,String(v));let qs=params.toString();qs&&(url+=`?${qs}`)}let headers={accept:"application/json",authorization:`Bearer ${bearer}`},init={method:call.method,headers:headers};call.body!==void 0&&(headers["content-type"]="application/json",init.body=JSON.stringify(call.body));let controller=typeof AbortController=="function"?new AbortController:null;controller&&(init.signal=controller.signal);let timedOut=false,timer=setTimeout(()=>{timedOut=true,controller?.abort()},timeoutMs),res;try{res=await fetchImpl(url,init)}catch{return clearTimeout(timer),omsErr({kind:timedOut?"timeout":"network"})}try{let requestId=res.headers.get("x-request-id")??void 0,rid=requestId?{requestId:requestId}:{};if(res.status<200||res.status>=300){let body=res.status===402||res.status===409||res.status===422?await res.json().catch(()=>null):null;return omsErr(omsErrorFromStatus(res.status,body,{...rid,retryAfter:res.headers.get("retry-after")}))}if(call.read===null||res.status===204)return omsOk(void 0);let raw;try{raw=await res.json()}catch{return omsErr({kind:"badResponse",...rid})}try{return omsOk(call.read(raw))}catch{return omsErr({kind:"badResponse",...rid})}}catch{return omsErr({kind:timedOut?"timeout":"network"})}finally{clearTimeout(timer)}}let invalid=()=>Promise.resolve(omsErr({kind:"invalidRequest"}));function withId(id,run){return isValidId(id)?run(seg(id)):invalid()}let lines=ls=>ls.map(cartLineToWire);return{shopConfig:()=>send({method:"GET",path:"/shop-config",read:shopConfigFromWire}),offers:(q={})=>send({method:"GET",path:"/catalog/offers",query:{text:q.text,requires_rx:q.requiresRx,cursor:q.cursor,limit:q.limit},read:offerPageFromWire}),offer:offerId=>withId(offerId,id=>send({method:"GET",path:`/catalog/offers/${id}`,read:offerFromWire})),prescriptions:()=>send({method:"GET",path:"/prescriptions",read:prescriptionsFromWire}),addresses:()=>send({method:"GET",path:"/addresses",read:addressesFromWire}),address:ref=>withId(ref,id=>send({method:"GET",path:`/addresses/${id}`,read:addressDetailFromWire})),addAddress:input=>send({method:"POST",path:"/addresses",body:addressInputToWire(input),read:addressEntryFromWire}),updateAddress:(ref,input)=>withId(ref,id=>send({method:"PUT",path:`/addresses/${id}`,body:addressInputToWire(input),read:addressEntryFromWire})),removeAddress:ref=>withId(ref,id=>send({method:"DELETE",path:`/addresses/${id}`,read:null})),makeDefaultAddress:ref=>withId(ref,id=>send({method:"POST",path:`/addresses/${id}/default`,read:addressEntryFromWire})),paymentMethods:()=>send({method:"GET",path:"/payment-methods",read:paymentMethodsFromWire}),setupPaymentMethod:()=>send({method:"POST",path:"/payment-methods/setup",read:paymentSetupFromWire}),startCardSetupSession:r=>send({method:"POST",path:"/payment-methods/setup-session",body:{idempotency_key:r.idempotencyKey,return_url:r.returnUrl},read:cardSetupLinkFromWire}),removePaymentMethod:pm=>PAYMENT_METHOD_ID.test(pm)?send({method:"DELETE",path:`/payment-methods/${pm}`,read:null}):invalid(),quote:r=>send({method:"POST",path:"/cart/quote",body:{lines:lines(r.lines),ship_to:r.shipTo,promo_code:r.promoCode??null},read:quoteFromWire}),createCheckout:r=>send({method:"POST",path:"/checkouts",body:{idempotency_key:r.idempotencyKey,channel:channel,lines:lines(r.lines),ship_to:r.shipTo,receipt_email:r.receiptEmail??null,promo_code:r.promoCode??null},read:checkoutFromWire}),confirmCheckout:(checkoutId,r)=>PAYMENT_METHOD_ID.test(r.paymentMethodId)&&Number.isInteger(r.expectedTotal)?withId(checkoutId,id=>send({method:"POST",path:`/checkouts/${id}/confirm`,body:{idempotency_key:r.idempotencyKey,expected_total:r.expectedTotal,payment_method_id:r.paymentMethodId},read:confirmationFromWire})):invalid(),orders:(q={})=>send({method:"GET",path:"/orders",query:{cursor:q.cursor,limit:q.limit,reference:q.reference},read:orderPageFromWire}),order:orderId=>withId(orderId,id=>send({method:"GET",path:`/orders/${id}`,read:orderFromWire})),cancelOrder:(orderId,r)=>REASON_CODE.test(r.reasonCode)?withId(orderId,id=>send({method:"POST",path:`/orders/${id}/cancel`,body:{idempotency_key:r.idempotencyKey,reason_code:r.reasonCode},read:cancelOutcomeFromWire})):invalid(),payOrder:(orderId,r)=>{if(r.paymentMethodId!==void 0&&!PAYMENT_METHOD_ID.test(r.paymentMethodId))return invalid();let body={idempotency_key:r.idempotencyKey};return r.paymentMethodId&&(body.payment_method_id=r.paymentMethodId),withId(orderId,id=>send({method:"POST",path:`/orders/${id}/pay`,body:body,read:payOutcomeFromWire}))},cardActionLink:(orderId,r)=>withId(orderId,id=>send({method:"POST",path:`/orders/${id}/card-action-link`,body:{return_url:r.returnUrl},read:cardActionLinkFromWire})),requestReturn:(orderId,r)=>r.lines.every(l=>REASON_CODE.test(l.reasonCode))?withId(orderId,id=>send({method:"POST",path:`/orders/${id}/returns`,body:{idempotency_key:r.idempotencyKey,lines:r.lines.map(l=>({line_id:l.lineId,quantity:l.quantity,reason_code:l.reasonCode}))},read:returnFromWire})):invalid(),getReturn:returnId=>withId(returnId,id=>send({method:"GET",path:`/returns/${id}`,read:returnFromWire})),cancelReturn:returnId=>withId(returnId,id=>send({method:"POST",path:`/returns/${id}/cancel`,read:returnFromWire})),openCase:(orderId,r)=>REASON_CODE.test(r.reasonCode)&&r.message.length<=4e3?withId(orderId,id=>send({method:"POST",path:`/orders/${id}/cases`,body:{idempotency_key:r.idempotencyKey,reason_code:r.reasonCode,message:r.message},read:caseFromWire})):invalid(),orderCases:orderId=>withId(orderId,id=>send({method:"GET",path:`/orders/${id}/cases`,read:casesFromWire})),plans:(q={})=>send({method:"GET",path:"/subscriptions",query:{cursor:q.cursor,limit:q.limit},read:planPageFromWire}),createPlan:input=>PAYMENT_METHOD_ID.test(input.paymentMethodId)?send({method:"POST",path:"/subscriptions",body:{idempotency_key:input.idempotencyKey,cadence_days:input.cadenceDays,destination:input.destination,payment_method_id:input.paymentMethodId,consent_terms_version:input.consentTermsVersion,lines:lines(input.lines)},read:planFromWire}):invalid(),updatePlan:(planId,patch)=>{if(patch.paymentMethodId!==void 0&&!PAYMENT_METHOD_ID.test(patch.paymentMethodId))return invalid();let body={idempotency_key:patch.idempotencyKey};return patch.lines&&(body.lines=lines(patch.lines)),patch.cadenceDays!==void 0&&(body.cadence_days=patch.cadenceDays),patch.destination!==void 0&&(body.destination=patch.destination),patch.paymentMethodId!==void 0&&(body.payment_method_id=patch.paymentMethodId),withId(planId,id=>send({method:"PATCH",path:`/subscriptions/${id}`,body:body,read:planFromWire}))},planAction:(planId,r)=>withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/actions`,body:{idempotency_key:r.idempotencyKey,operation:r.operation},read:planFromWire})),cancelPlan:planId=>withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cancel`,read:planFromWire})),cycleReview:planId=>withId(planId,id=>send({method:"GET",path:`/subscriptions/${id}/cycle`,read:cycleReviewFromWire})),editCycle:(planId,cycle,r)=>Number.isInteger(cycle)&&cycle>0?withId(planId,id=>send({method:"PUT",path:`/subscriptions/${id}/cycles/${cycle}/lines`,body:{idempotency_key:r.idempotencyKey,lines:lines(r.lines)},read:cycleReviewFromWire})):invalid(),draftCycle:(planId,cycle)=>Number.isInteger(cycle)&&cycle>0?withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cycles/${cycle}/draft`,read:cycleDraftFromWire})):invalid(),approveCycle:(planId,cycle,r)=>Number.isInteger(cycle)&&cycle>0&&Number.isInteger(r.expectedTotal)?withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cycles/${cycle}/approve`,body:{idempotency_key:r.idempotencyKey,checkout_id:r.checkoutId,expected_total:r.expectedTotal},read:confirmationFromWire})):invalid(),skipCycle:(planId,cycle,r)=>Number.isInteger(cycle)&&cycle>0?withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cycles/${cycle}/skip`,body:{idempotency_key:r.idempotencyKey},read:planFromWire})):invalid()}}export{EverfurShop,SHOP_COPY,SHOP_COPY_PLACEHOLDERS,SHOP_V3_COPY,SHOP_V3_COPY_PLACEHOLDERS,ShopSwitchCard,UNAVAILABLE_PACKAGE_SOURCE,createInAppBrowserCard,createInAppBrowserCardSetup,createInAppBrowserPayments,createOmsClient,createOmsPackageSource,isOmsRefusal,isOmsRetryable,isOmsUnavailable,newIdempotencyKey,shopBackRoute,shopCopy,shopV3Copy};
430
+ return jsx(LivePlaced,{orderIds:route.orderIds},route.orderIds.join(","))}}function parseUrl(raw,base){let Url=globalThis.URL;if(typeof Url=="function"){let url;try{url=base===void 0?new Url(raw):new Url(raw,base)}catch{return null}try{if(url.protocol)return url}catch{}}return parseByPattern(raw)}var WHOLE_URL=/^([a-z][a-z0-9+.-]*):\/\/(?:([^:@/?#]*)(?::([^@/?#]*))?@)?(\[[0-9a-f:.]+\]|[\w.~-]+)(?::(\d*))?(\/[^?#]*)?(\?[^#]*)?(#.*)?$/i,REWRITTEN_BY_STANDARD_PARSER=/[\s\u0000-\u001f\u007f\\]/,DEFAULT_PORTS={"http:":"80","https:":"443"};function parseByPattern(raw,base){let input=raw.trim();let match=REWRITTEN_BY_STANDARD_PARSER.test(input)?null:WHOLE_URL.exec(input);if(match===null)return null;let[,scheme="",username="",password="",host="",portText="",path="",query="",fragment=""]=match,protocol=`${scheme.toLowerCase()}:`,portNumber=Number(portText);if(portNumber>65535)return null;let port=portText===""||String(portNumber)===DEFAULT_PORTS[protocol]?"":String(portNumber),special=DEFAULT_PORTS[protocol]!==void 0,hostPort=host.toLowerCase()+(port&&`:${port}`),pathname=path||(special?"/":""),credentials=username||password?`${username}${password&&`:${password}`}@`:"";return{href:`${protocol}//${credentials}${hostPort}${pathname}${query}${fragment}`,protocol:protocol,username:username,password:password,hostname:host.toLowerCase(),port:port,origin:special?`${protocol}//${hostPort}`:"null",pathname:pathname,search:query==="?"?"":query,hash:fragment==="#"?"":fragment}}var SECRET_IN_URL=/(client_secret|_secret_|[?&#](sk|rk)_(live|test)_)/i,FAILED={ok:false,message:null},CLOSED={ok:false,message:null,closed:true};function safePageUrl(raw){if(!raw)return null;let u=parseUrl(raw);return u===null||u.protocol!=="https:"||u.username||u.password||SECRET_IN_URL.test(raw)?null:u.href}function returnedParam(result,returnUrl,key){if(result.type!=="success"||typeof result.url!="string"||!result.url.startsWith(returnUrl))return;let queryAt=result.url.indexOf("?");if(queryAt===-1)return null;let query=result.url.slice(queryAt+1).split("#")[0]??"";for(let pair of query.split("&")){let[k,v=""]=pair.split("=");if(k===key)try{return decodeURIComponent(v)}catch{return null}}return null}async function runInBrowser(openAuthSession,url,returnUrl,read){let result;try{result=await openAuthSession(url,returnUrl)}catch{return FAILED}return result.type!=="success"?CLOSED:read(result)}function createInAppBrowserCardSetup(options){let{openAuthSession:openAuthSession,pageUrl:pageUrl,client:client,returnUrl:returnUrl}=options,makePage=async()=>{if(pageUrl)return pageUrl();if(!client)return null;let res=await client.startCardSetupSession({idempotencyKey:newIdempotencyKey(),returnUrl:returnUrl});return res.ok?res.value.url:null};return async()=>{let url;try{url=safePageUrl(await makePage())}catch{url=null}return url?runInBrowser(openAuthSession,url,returnUrl,result=>{let outcome=returnedParam(result,returnUrl,"oms_card");return outcome===void 0?FAILED:outcome==="canceled"?CLOSED:outcome===null||outcome==="done"?{ok:true}:FAILED}):FAILED}}function createInAppBrowserPayments(options){let{openAuthSession:openAuthSession,client:client,returnUrl:returnUrl}=options;return{confirmCardSetup:()=>Promise.resolve(FAILED),async handleNextAction(_clientSecret,context){if(!context?.orderId)return FAILED;let url;try{let res=await client.cardActionLink(context.orderId,{returnUrl:returnUrl});url=res.ok?safePageUrl(res.value.url):null}catch{url=null}return url?runInBrowser(openAuthSession,url,returnUrl,result=>{let outcome=returnedParam(result,returnUrl,"oms_card_action");return outcome==="succeeded"?{ok:true}:outcome==="canceled"?CLOSED:FAILED}):FAILED}}}function createInAppBrowserCard(options){return{cardHandoff:createInAppBrowserCardSetup({openAuthSession:options.openAuthSession,client:options.client,returnUrl:options.returnUrl}),payments:createInAppBrowserPayments(options)}}var OmsWireError=class _OmsWireError extends Error{constructor(field){super(`OMS answer could not be read: ${field}`);this.field=field;this.name="OmsWireError",Object.setPrototypeOf(this,_OmsWireError.prototype)}};function obj(value,field){if(value===null||typeof value!="object"||Array.isArray(value))throw new OmsWireError(field);return value}function arr(value,field){if(value==null)return[];if(!Array.isArray(value))throw new OmsWireError(field);return value}function str2(o,key,field=key){let v=o[key];if(typeof v!="string"||v.length===0)throw new OmsWireError(field);return v}function optStr(o,key){let v=o[key];return typeof v=="string"&&v.length>0?v:null}function int(o,key,field=key){let v=o[key];if(typeof v!="number"||!Number.isFinite(v))throw new OmsWireError(field);return Math.trunc(v)}function optInt(o,key){let v=o[key];return typeof v=="number"&&Number.isFinite(v)?Math.trunc(v):null}function bool(o,key){return o[key]===true}function petIdOf(value){if(!value||typeof value!="object")return null;let id=value.pet_id;return typeof id=="string"&&id.length>0?id:null}var PACK_UNITS=["each","gram","milliliter"],SPEEDS=["ground","two_day","next_day"];function packUnit(o){let v=o.pack_unit;return typeof v=="string"&&PACK_UNITS.includes(v)?v:null}function speed(v){return typeof v=="string"&&SPEEDS.includes(v)?v:null}function httpsUrl(o,key){let v=optStr(o,key);return v&&parseUrl(v)?.protocol==="https:"?v:null}function shopConfigFromWire(raw){let o=obj(raw,"shop-config"),delivery=o.delivery&&typeof o.delivery=="object"?o.delivery:null,key=optStr(o,"stripe_publishable_key");return{recurringTermsVersion:optStr(o,"recurring_terms_version"),recurringTermsUrl:httpsUrl(o,"recurring_terms_url"),stripePublishableKey:key&&/^pk_(test|live)_[A-Za-z0-9]+$/.test(key)?key:null,delivery:delivery?{firstFill:speed(delivery.first_fill),refill:speed(delivery.refill)}:null,rxContactMissing:Array.isArray(o.rx_contact_missing)?o.rx_contact_missing.filter(p=>typeof p=="string"):null}}function offerFromWire(raw){let o=obj(raw,"offer"),qty=o.pack_quantity;return{offerId:str2(o,"offer_id"),sku:optStr(o,"sku")??"",title:str2(o,"title"),fulfillmentType:optStr(o,"fulfillment_type")??"physical",requiresRx:bool(o,"requires_rx"),compounded:bool(o,"compounded"),packQuantity:typeof qty=="string"&&/^\d+(\.\d+)?$/.test(qty)?qty:null,packUnit:packUnit(o),price:optInt(o,"price"),imageUrl:httpsUrl(o,"image_url")}}function offerPageFromWire(raw){let o=obj(raw,"offers");return{offers:arr(o.offers,"offers").map(offerFromWire),nextCursor:optStr(o,"next_cursor")}}function quoteFromWire(raw){let o=obj(raw,"quote");return{lines:arr(o.lines,"lines").map(l=>{let line=obj(l,"line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet),unitPrice:int(line,"unit_price"),discount:optInt(line,"discount")??0,tax:optInt(line,"tax")??0}}),shipping:int(o,"shipping"),tax:optInt(o,"tax")??0,total:int(o,"total"),expiresAt:str2(o,"expires_at")}}function checkoutFromWire(raw){let o=obj(raw,"checkout");return{checkoutId:str2(o,"checkout_id"),state:optStr(o,"state")??"draft",orderIds:arr(o.order_ids,"order_ids").filter(id=>typeof id=="string"),createdAt:optStr(o,"created_at")??"",total:int(o,"total"),shipping:optInt(o,"shipping")??0,tax:optInt(o,"tax")??0}}function confirmationFromWire(raw){let o=obj(raw,"confirmation");return{checkoutId:str2(o,"checkout_id"),resale:arr(o.resale,"resale").map(r=>{let entry=obj(r,"resale"),outcome=str2(entry,"outcome");if(outcome!=="confirmed"&&outcome!=="action_required")throw new OmsWireError("resale.outcome");let payerAction=optStr(entry,"payer_action");if(outcome==="action_required"&&!payerAction)throw new OmsWireError("resale.payer_action");return{outcome:outcome,orderId:str2(entry,"order_id"),payerAction:outcome==="confirmed"?null:payerAction}})}}function orderSummaryFromWire(raw){let o=obj(raw,"order"),ref=o.reference&&typeof o.reference=="object"?o.reference:null;return{orderId:str2(o,"order_id"),referenceNumber:ref?optStr(ref,"number"):null,status:str2(o,"status"),total:int(o,"total"),placedAt:optStr(o,"placed_at"),itemCount:optInt(o,"item_count"),items:Array.isArray(o.items)?o.items.flatMap(orderItemFromWire):null}}function orderItemFromWire(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return[];let o=raw,offerId=optStr(o,"offer_id"),title=optStr(o,"title"),quantity=optInt(o,"quantity");return offerId&&title&&quantity!==null?[{offerId:offerId,title:title,quantity:quantity}]:[]}function orderStepFromWire(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return[];let o=raw,key=optStr(o,"key");return key?[{key:key,done:o.done===true,at:optStr(o,"at")}]:[]}function optTrackingFromWire(raw){if(raw===null||typeof raw!="object"||Array.isArray(raw))return null;try{return trackingFromWire(raw)}catch{return null}}function orderPageFromWire(raw){let o=obj(raw,"orders");return{orders:arr(o.orders,"orders").map(orderSummaryFromWire),nextCursor:optStr(o,"next_cursor")}}function orderLineFromWire(raw){let o=obj(raw,"line"),qty=o.pack_quantity;return{lineId:str2(o,"line_id"),offerId:str2(o,"offer_id"),sku:optStr(o,"sku")??"",title:str2(o,"title"),requiresRx:bool(o,"requires_rx"),compounded:bool(o,"compounded"),packQuantity:typeof qty=="string"&&/^\d+(\.\d+)?$/.test(qty)?qty:null,packUnit:packUnit(o),quantity:int(o,"quantity"),unitPrice:int(o,"unit_price"),discount:optInt(o,"discount")??0,tax:optInt(o,"tax")??0,fulfillmentType:optStr(o,"fulfillment_type")??"physical",petId:petIdOf(o.pet)}}function trackingFromWire(raw){let o=obj(raw,"tracking");return{carrier:optStr(o,"carrier"),trackingNumber:optStr(o,"tracking_number"),status:str2(o,"status"),occurredAt:optStr(o,"occurred_at"),trackingUrl:httpsUrl(o,"tracking_url"),deliveryBy:optStr(o,"delivery_by")}}function shipmentFromWire(raw){let o=obj(raw,"shipment");return{shipmentId:str2(o,"shipment_id"),state:str2(o,"state"),lines:arr(o.lines,"shipment.lines").map(l=>{let line=obj(l,"shipment.line");return{lineId:str2(line,"line_id"),quantity:int(line,"quantity")}}),tracking:arr(o.tracking,"tracking").map(trackingFromWire)}}function orderFromWire(raw){let o=obj(raw,"order");return{summary:orderSummaryFromWire(o.summary),lines:arr(o.lines,"lines").map(orderLineFromWire),shipping:optInt(o,"shipping")??0,shippingTax:optInt(o,"shipping_tax")??0,shipments:arr(o.shipments,"shipments").map(shipmentFromWire),canCancel:bool(o,"can_cancel"),canReturn:bool(o,"can_return"),canPay:bool(o,"can_pay"),paymentStatus:optStr(o,"payment_status"),refunds:arr(o.refunds,"refunds").map(r=>{let refund=obj(r,"refund");return{refundId:str2(refund,"refund_id"),amount:int(refund,"amount"),state:str2(refund,"state")}}),returnIds:arr(o.return_ids,"return_ids").filter(id=>typeof id=="string"),subtotal:optInt(o,"subtotal"),discount:optInt(o,"discount"),tax:optInt(o,"tax"),arrivesBy:optStr(o,"arrives_by"),tracking:optTrackingFromWire(o.tracking),steps:Array.isArray(o.steps)?o.steps.flatMap(orderStepFromWire):null,paymentMethodId:optStr(o,"payment_method_id")}}function cancelOutcomeFromWire(raw){let o=obj(raw,"cancel");return{outcome:str2(o,"outcome"),refunded:optInt(o,"refunded"),reasonCode:optStr(o,"reason_code")}}function payOutcomeFromWire(raw){let o=obj(raw,"pay"),outcome=str2(o,"outcome");if(outcome!=="authorized"&&outcome!=="action_required")throw new OmsWireError("pay.outcome");let payerAction=optStr(o,"payer_action");if(outcome==="action_required"&&!payerAction)throw new OmsWireError("pay.payer_action");return{outcome:outcome,orderId:str2(o,"order_id"),payerAction:outcome==="authorized"?null:payerAction}}function returnFromWire(raw){let o=obj(raw,"return");return{returnId:str2(o,"return_id"),orderId:str2(o,"order_id"),lines:arr(o.lines,"return.lines").map(l=>{let line=obj(l,"return.line");return{lineId:str2(line,"line_id"),quantity:int(line,"quantity"),reasonCode:str2(line,"reason_code")}}),state:str2(o,"state"),rma:optStr(o,"rma"),labelUrl:httpsUrl(o,"label_url")}}function caseFromWire(raw){let o=obj(raw,"case");return{caseId:str2(o,"case_id"),orderId:str2(o,"order_id"),reasonCode:str2(o,"reason_code"),message:typeof o.message=="string"?o.message:"",openedAt:str2(o,"opened_at"),closedAt:optStr(o,"closed_at")}}function casesFromWire(raw){return arr(obj(raw,"cases").cases,"cases").map(caseFromWire)}function prescriptionsFromWire(raw){return arr(obj(raw,"prescriptions").prescriptions,"prescriptions").map(r=>{let o=obj(r,"prescription");return{rxId:str2(o,"rx_id"),petId:str2(o,"pet_id"),drug:optStr(o,"drug")??"",strength:optStr(o,"strength"),form:optStr(o,"form"),status:str2(o,"status"),offerId:optStr(o,"offer_id"),packCount:optInt(o,"pack_count"),fillsUsed:optInt(o,"fills_used"),fillsTotal:optInt(o,"fills_total"),expiresOn:optStr(o,"expires_on"),nextFillOn:optStr(o,"next_fill_on")}})}function addressEntryFromWire(raw){let o=obj(raw,"address");return{ref:str2(o,"ref"),label:optStr(o,"label")??"",isDefault:bool(o,"is_default"),isComplete:bool(o,"is_complete")}}function addressesFromWire(raw){return arr(obj(raw,"addresses").addresses,"addresses").map(addressEntryFromWire)}function addressDetailFromWire(raw){let o=obj(raw,"address"),a=obj(o.address,"address.address"),address={recipientName:optStr(a,"recipient_name"),line1:str2(a,"line1","address.line1"),line2:optStr(a,"line2"),city:str2(a,"city","address.city"),region:optStr(a,"region")??"",postalCode:str2(a,"postal_code","address.postal_code"),country:str2(a,"country","address.country")};return{...addressEntryFromWire(o),address:address}}function paymentMethodsFromWire(raw){return arr(obj(raw,"payment_methods").payment_methods,"payment_methods").map(r=>{let o=obj(r,"payment_method");return{paymentMethodId:str2(o,"payment_method_id"),brand:optStr(o,"brand")??"",last4:optStr(o,"last4")??"",wallet:optStr(o,"wallet")}})}function paymentSetupFromWire(raw){let o=obj(raw,"setup");return{setupId:str2(o,"setup_id"),payerAction:str2(o,"payer_action")}}function cardSetupLinkFromWire(raw){let o=obj(raw,"card_setup");return{url:str2(o,"url")}}function cardActionLinkFromWire(raw){let o=obj(raw,"card_action");return{url:str2(o,"url"),expiresAt:str2(o,"expires_at")}}function planFromWire(raw){let o=obj(raw,"plan");return{planId:str2(o,"plan_id"),lines:arr(o.lines,"plan.lines").map(l=>{let line=obj(l,"plan.line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet)}}),cadenceDays:int(o,"cadence_days"),destination:optStr(o,"destination"),paymentMethodId:optStr(o,"payment_method_id"),discountBps:optInt(o,"discount_bps")??0,nextRun:optStr(o,"next_run"),state:str2(o,"state"),stopReason:optStr(o,"stop_reason")}}function planPageFromWire(raw){let o=obj(raw,"plans");return{plans:arr(o.plans,"plans").map(planFromWire),nextCursor:optStr(o,"next_cursor")}}function cartLineToWire(line){let wire={offer_id:line.offerId,quantity:line.quantity};return line.petId&&(wire.pet={namespace:"consumer",pet_id:line.petId}),line.rxId&&(wire.rx_id=line.rxId),wire}function addressInputToWire(input){let a=input.address;return{label:input.label,make_default:input.makeDefault===true,address:{recipient_name:a.recipientName,line1:a.line1,line2:a.line2,city:a.city,region:a.region,postal_code:a.postalCode,country:a.country}}}function cycleReviewFromWire(raw){let o=obj(raw,"cycle"),review=o.review&&typeof o.review=="object"&&!Array.isArray(o.review)?o.review:null,pick=key=>review&&review[key]!==void 0&&review[key]!==null?review[key]:o[key];return{planId:str2(o,"plan_id"),reviewId:optStr(o,"review_id")??(review?optStr(review,"review_id"):null),cycle:int(o,"cycle"),state:review?optStr(review,"state")??optStr(o,"state"):optStr(o,"state"),lines:arr(pick("lines"),"cycle.lines").map(l=>{let line=obj(l,"cycle.line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet)}}),shipsOn:review?optStr(review,"ships_on")??optStr(o,"ships_on"):optStr(o,"ships_on"),approveBy:review?optStr(review,"approve_by")??optStr(o,"approve_by"):optStr(o,"approve_by"),quoteLines:arr(o.quote&&typeof o.quote=="object"?o.quote.lines:null,"cycle.quote.lines").map(l=>{let line=obj(l,"cycle.quote.line");return{offerId:str2(line,"offer_id"),quantity:int(line,"quantity"),petId:petIdOf(line.pet),unitPrice:int(line,"unit_price"),discount:optInt(line,"discount")??0,tax:optInt(line,"tax")??0}})}}function cycleDraftFromWire(raw){let o=obj(raw,"cycle-draft");return{checkoutId:str2(o,"checkout_id"),shipping:optInt(o,"shipping")??0,tax:optInt(o,"tax")??0,total:int(o,"total"),expiresAt:optStr(o,"expires_at")}}var DEFAULT_PATH="/api/v1/oms",DEFAULT_TIMEOUT_MS=3e4,PAYMENT_METHOD_ID=/^[A-Za-z0-9_]+$/,REASON_CODE=/^[a-z][a-z0-9_]{0,63}$/;function checkBaseUrl(raw){let url=parseUrl(raw);if(url===null)throw new EverfurConfigError("invalid-argument","createOmsClient: baseUrl is not a URL");let local=url.hostname==="localhost"||url.hostname==="127.0.0.1"||url.hostname==="[::1]";if(url.protocol!=="https:"&&!(local&&url.protocol==="http:"))throw new EverfurConfigError("invalid-argument","createOmsClient: baseUrl must be https");if(url.username||url.password||url.search||url.hash)throw new EverfurConfigError("invalid-argument","createOmsClient: baseUrl must be a bare origin or path");return url.origin+url.pathname.replace(/\/+$/,"")}function seg(id){return encodeURIComponent(id)}function isValidId(id){return typeof id=="string"&&id.length>0&&id.length<=256}function createOmsClient(config){let base=checkBaseUrl(config.baseUrl)+(config.path??DEFAULT_PATH).replace(/\/+$/,""),fetchImpl=config.fetch??(typeof globalThis.fetch=="function"?globalThis.fetch.bind(globalThis):void 0);if(!fetchImpl)throw new EverfurConfigError("missing-peer-dependency","createOmsClient: no fetch available; pass config.fetch");if(!config.auth||config.auth.kind!=="everfur_consumer"||typeof config.auth.getToken!="function")throw new EverfurConfigError("invalid-argument",'createOmsClient: auth must be { kind: "everfur_consumer", getToken }');let getToken=config.auth.getToken,channel=config.channel??"web",timeoutMs=config.timeoutMs??DEFAULT_TIMEOUT_MS;async function token(){try{let t=await getToken();return typeof t=="string"&&t.length>0?t:null}catch{return null}}async function send(call){let bearer=await token();if(!bearer)return omsErr({kind:"signedOut"});let url=base+call.path;if(call.query){let params=new URLSearchParams;for(let[k,v]of Object.entries(call.query))v!==void 0&&params.set(k,String(v));let qs=params.toString();qs&&(url+=`?${qs}`)}let headers={accept:"application/json",authorization:`Bearer ${bearer}`},init={method:call.method,headers:headers};call.body!==void 0&&(headers["content-type"]="application/json",init.body=JSON.stringify(call.body));let controller=typeof AbortController=="function"?new AbortController:null;controller&&(init.signal=controller.signal);let timedOut=false,timer=setTimeout(()=>{timedOut=true,controller?.abort()},timeoutMs),res;try{res=await fetchImpl(url,init)}catch{return clearTimeout(timer),omsErr({kind:timedOut?"timeout":"network"})}try{let requestId=res.headers.get("x-request-id")??void 0,rid=requestId?{requestId:requestId}:{};if(res.status<200||res.status>=300){let body=res.status===402||res.status===409||res.status===422?await res.json().catch(()=>null):null;return omsErr(omsErrorFromStatus(res.status,body,{...rid,retryAfter:res.headers.get("retry-after")}))}if(call.read===null||res.status===204)return omsOk(void 0);let raw;try{raw=await res.json()}catch{return omsErr({kind:"badResponse",...rid})}try{return omsOk(call.read(raw))}catch{return omsErr({kind:"badResponse",...rid})}}catch{return omsErr({kind:timedOut?"timeout":"network"})}finally{clearTimeout(timer)}}let invalid=()=>Promise.resolve(omsErr({kind:"invalidRequest"}));function withId(id,run){return isValidId(id)?run(seg(id)):invalid()}let lines=ls=>ls.map(cartLineToWire);return{shopConfig:()=>send({method:"GET",path:"/shop-config",read:shopConfigFromWire}),offers:(q={})=>send({method:"GET",path:"/catalog/offers",query:{text:q.text,requires_rx:q.requiresRx,cursor:q.cursor,limit:q.limit},read:offerPageFromWire}),offer:offerId=>withId(offerId,id=>send({method:"GET",path:`/catalog/offers/${id}`,read:offerFromWire})),prescriptions:()=>send({method:"GET",path:"/prescriptions",read:prescriptionsFromWire}),addresses:()=>send({method:"GET",path:"/addresses",read:addressesFromWire}),address:ref=>withId(ref,id=>send({method:"GET",path:`/addresses/${id}`,read:addressDetailFromWire})),addAddress:input=>send({method:"POST",path:"/addresses",body:addressInputToWire(input),read:addressEntryFromWire}),updateAddress:(ref,input)=>withId(ref,id=>send({method:"PUT",path:`/addresses/${id}`,body:addressInputToWire(input),read:addressEntryFromWire})),removeAddress:ref=>withId(ref,id=>send({method:"DELETE",path:`/addresses/${id}`,read:null})),makeDefaultAddress:ref=>withId(ref,id=>send({method:"POST",path:`/addresses/${id}/default`,read:addressEntryFromWire})),paymentMethods:()=>send({method:"GET",path:"/payment-methods",read:paymentMethodsFromWire}),setupPaymentMethod:()=>send({method:"POST",path:"/payment-methods/setup",read:paymentSetupFromWire}),startCardSetupSession:r=>send({method:"POST",path:"/payment-methods/setup-session",body:{idempotency_key:r.idempotencyKey,return_url:r.returnUrl},read:cardSetupLinkFromWire}),removePaymentMethod:pm=>PAYMENT_METHOD_ID.test(pm)?send({method:"DELETE",path:`/payment-methods/${pm}`,read:null}):invalid(),quote:r=>send({method:"POST",path:"/cart/quote",body:{lines:lines(r.lines),ship_to:r.shipTo,promo_code:r.promoCode??null},read:quoteFromWire}),createCheckout:r=>send({method:"POST",path:"/checkouts",body:{idempotency_key:r.idempotencyKey,channel:channel,lines:lines(r.lines),ship_to:r.shipTo,receipt_email:r.receiptEmail??null,promo_code:r.promoCode??null},read:checkoutFromWire}),confirmCheckout:(checkoutId,r)=>PAYMENT_METHOD_ID.test(r.paymentMethodId)&&Number.isInteger(r.expectedTotal)?withId(checkoutId,id=>send({method:"POST",path:`/checkouts/${id}/confirm`,body:{idempotency_key:r.idempotencyKey,expected_total:r.expectedTotal,payment_method_id:r.paymentMethodId},read:confirmationFromWire})):invalid(),orders:(q={})=>send({method:"GET",path:"/orders",query:{cursor:q.cursor,limit:q.limit,reference:q.reference},read:orderPageFromWire}),order:orderId=>withId(orderId,id=>send({method:"GET",path:`/orders/${id}`,read:orderFromWire})),cancelOrder:(orderId,r)=>REASON_CODE.test(r.reasonCode)?withId(orderId,id=>send({method:"POST",path:`/orders/${id}/cancel`,body:{idempotency_key:r.idempotencyKey,reason_code:r.reasonCode},read:cancelOutcomeFromWire})):invalid(),payOrder:(orderId,r)=>{if(r.paymentMethodId!==void 0&&!PAYMENT_METHOD_ID.test(r.paymentMethodId))return invalid();let body={idempotency_key:r.idempotencyKey};return r.paymentMethodId&&(body.payment_method_id=r.paymentMethodId),withId(orderId,id=>send({method:"POST",path:`/orders/${id}/pay`,body:body,read:payOutcomeFromWire}))},cardActionLink:(orderId,r)=>withId(orderId,id=>send({method:"POST",path:`/orders/${id}/card-action-link`,body:{return_url:r.returnUrl},read:cardActionLinkFromWire})),requestReturn:(orderId,r)=>r.lines.every(l=>REASON_CODE.test(l.reasonCode))?withId(orderId,id=>send({method:"POST",path:`/orders/${id}/returns`,body:{idempotency_key:r.idempotencyKey,lines:r.lines.map(l=>({line_id:l.lineId,quantity:l.quantity,reason_code:l.reasonCode}))},read:returnFromWire})):invalid(),getReturn:returnId=>withId(returnId,id=>send({method:"GET",path:`/returns/${id}`,read:returnFromWire})),cancelReturn:returnId=>withId(returnId,id=>send({method:"POST",path:`/returns/${id}/cancel`,read:returnFromWire})),openCase:(orderId,r)=>REASON_CODE.test(r.reasonCode)&&r.message.length<=4e3?withId(orderId,id=>send({method:"POST",path:`/orders/${id}/cases`,body:{idempotency_key:r.idempotencyKey,reason_code:r.reasonCode,message:r.message},read:caseFromWire})):invalid(),orderCases:orderId=>withId(orderId,id=>send({method:"GET",path:`/orders/${id}/cases`,read:casesFromWire})),plans:(q={})=>send({method:"GET",path:"/subscriptions",query:{cursor:q.cursor,limit:q.limit},read:planPageFromWire}),createPlan:input=>PAYMENT_METHOD_ID.test(input.paymentMethodId)?send({method:"POST",path:"/subscriptions",body:{idempotency_key:input.idempotencyKey,cadence_days:input.cadenceDays,destination:input.destination,payment_method_id:input.paymentMethodId,consent_terms_version:input.consentTermsVersion,lines:lines(input.lines)},read:planFromWire}):invalid(),updatePlan:(planId,patch)=>{if(patch.paymentMethodId!==void 0&&!PAYMENT_METHOD_ID.test(patch.paymentMethodId))return invalid();let body={idempotency_key:patch.idempotencyKey};return patch.lines&&(body.lines=lines(patch.lines)),patch.cadenceDays!==void 0&&(body.cadence_days=patch.cadenceDays),patch.destination!==void 0&&(body.destination=patch.destination),patch.paymentMethodId!==void 0&&(body.payment_method_id=patch.paymentMethodId),withId(planId,id=>send({method:"PATCH",path:`/subscriptions/${id}`,body:body,read:planFromWire}))},planAction:(planId,r)=>withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/actions`,body:{idempotency_key:r.idempotencyKey,operation:r.operation},read:planFromWire})),cancelPlan:planId=>withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cancel`,read:planFromWire})),cycleReview:planId=>withId(planId,id=>send({method:"GET",path:`/subscriptions/${id}/cycle`,read:cycleReviewFromWire})),editCycle:(planId,cycle,r)=>Number.isInteger(cycle)&&cycle>0?withId(planId,id=>send({method:"PUT",path:`/subscriptions/${id}/cycles/${cycle}/lines`,body:{idempotency_key:r.idempotencyKey,lines:lines(r.lines)},read:cycleReviewFromWire})):invalid(),draftCycle:(planId,cycle)=>Number.isInteger(cycle)&&cycle>0?withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cycles/${cycle}/draft`,read:cycleDraftFromWire})):invalid(),approveCycle:(planId,cycle,r)=>Number.isInteger(cycle)&&cycle>0&&Number.isInteger(r.expectedTotal)?withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cycles/${cycle}/approve`,body:{idempotency_key:r.idempotencyKey,checkout_id:r.checkoutId,expected_total:r.expectedTotal},read:confirmationFromWire})):invalid(),skipCycle:(planId,cycle,r)=>Number.isInteger(cycle)&&cycle>0?withId(planId,id=>send({method:"POST",path:`/subscriptions/${id}/cycles/${cycle}/skip`,body:{idempotency_key:r.idempotencyKey},read:planFromWire})):invalid()}}export{EverfurShop,SHOP_COPY,SHOP_COPY_PLACEHOLDERS,SHOP_V3_COPY,SHOP_V3_COPY_PLACEHOLDERS,ShopSwitchCard,UNAVAILABLE_PACKAGE_SOURCE,createInAppBrowserCard,createInAppBrowserCardSetup,createInAppBrowserPayments,createOmsClient,createOmsPackageSource,isOmsRefusal,isOmsRetryable,isOmsUnavailable,newIdempotencyKey,shopBackRoute,shopCopy,shopV3Copy};
@@ -6,24 +6,24 @@ import { ReactNode } from 'react';
6
6
  import { StyleProp, ViewStyle } from 'react-native';
7
7
  import { P as PetRef } from '../ids.d-B2GAAifq.cjs';
8
8
  import { E as EverfurStarterPrompt } from '../quickPrompts.d-NM_81Jc1.cjs';
9
- import { E as EverfurIntroCopy, a as EverfurIntroBlank, b as EverfurRecordsRequested, d as EverfurRecordsLanded, I as IntroText } from '../introEvents.d-CQeiUeLn.cjs';
10
- export { c as EVERFUR_INTRO_COPY, e as IntroFacts, f as IntroPetWords, g as IntroTextInput, h as defaultIntroBlanks, i as introFacts, j as introPetWords, k as introText, n as numberWord } from '../introEvents.d-CQeiUeLn.cjs';
9
+ import { E as EverfurIntroCopy, a as EverfurIntroBlank, b as EverfurRecordsRequested, d as EverfurRecordsLanded, I as IntroText } from '../introEvents.d-D8N9bbGO.cjs';
10
+ export { c as EVERFUR_INTRO_COPY, e as IntroFacts, f as IntroPetWords, g as IntroTextInput, h as defaultIntroBlanks, i as introFacts, j as introPetWords, k as introText, n as numberWord } from '../introEvents.d-D8N9bbGO.cjs';
11
11
  import { C as CaptureRecordsSignature } from '../clinicRequestProps.d-1dCtouGA.cjs';
12
- import { g as EverfurChatOpeningCard } from '../threadOptions.d-BEG-LZrC.cjs';
12
+ import { g as EverfurChatOpeningCard } from '../threadOptions.d-B0folrKm.cjs';
13
13
  import { E as EverfurTabId, a as EverfurTabsCopy } from '../tabsModel.d-B7QMug1u.cjs';
14
14
  export { b as EVERFUR_TABS_COPY } from '../tabsModel.d-B7QMug1u.cjs';
15
- import { H as HealthPlanPage } from '../focus.d-BQnOVAql.cjs';
15
+ import { H as HealthPlanPage } from '../focus.d-CXpIkIuU.cjs';
16
16
  import { E as EverfurIntroMode, a as EverfurIntroFrame, b as EverfurIntroClose, c as EverfurIntroTabLabels } from '../useIntroSeen.d-CTWFUthO.cjs';
17
17
  export { d as EverfurIntroExit, e as EverfurIntroSeen, i as isIntroSwipeOut, u as useEverfurIntroSeen } from '../useIntroSeen.d-CTWFUthO.cjs';
18
18
  import '../EverfurResult.d-BFH-3s6E.cjs';
19
19
  import '../EverfurError.d-8NHtlgzA.cjs';
20
20
  import '../clinicModels.d-BXgKZqDb.cjs';
21
21
  import '../models.d-BSqvbTE1.cjs';
22
- import '../threadOptions.d-6hfQS1x7.cjs';
23
- import '../requestFunnel.d-mEu6B-n8.cjs';
22
+ import '../threadOptions.d-GPJPprkn.cjs';
23
+ import '../requestFunnel.d-BdpL7gwg.cjs';
24
24
  import '../ErrorPolicyPort.d-DirW9hgO.cjs';
25
- import '../config.d-84fNJFv9.cjs';
26
- import '../identity.d-nRZBzkG2.cjs';
25
+ import '../config.d-D1xcxALX.cjs';
26
+ import '../identity.d-COcNGuCJ.cjs';
27
27
 
28
28
  /**
29
29
  * How the member got here, said by the host (explicit, owner decision (a)): a plain open from your app's own tab bar,
@@ -6,24 +6,24 @@ import { ReactNode } from 'react';
6
6
  import { StyleProp, ViewStyle } from 'react-native';
7
7
  import { P as PetRef } from '../ids.d-B2GAAifq.js';
8
8
  import { E as EverfurStarterPrompt } from '../quickPrompts.d-NM_81Jc1.js';
9
- import { E as EverfurIntroCopy, a as EverfurIntroBlank, b as EverfurRecordsRequested, d as EverfurRecordsLanded, I as IntroText } from '../introEvents.d-bkIxpIKr.js';
10
- export { c as EVERFUR_INTRO_COPY, e as IntroFacts, f as IntroPetWords, g as IntroTextInput, h as defaultIntroBlanks, i as introFacts, j as introPetWords, k as introText, n as numberWord } from '../introEvents.d-bkIxpIKr.js';
9
+ import { E as EverfurIntroCopy, a as EverfurIntroBlank, b as EverfurRecordsRequested, d as EverfurRecordsLanded, I as IntroText } from '../introEvents.d-GCdyQyUG.js';
10
+ export { c as EVERFUR_INTRO_COPY, e as IntroFacts, f as IntroPetWords, g as IntroTextInput, h as defaultIntroBlanks, i as introFacts, j as introPetWords, k as introText, n as numberWord } from '../introEvents.d-GCdyQyUG.js';
11
11
  import { C as CaptureRecordsSignature } from '../clinicRequestProps.d-CjsMg_OD.js';
12
- import { g as EverfurChatOpeningCard } from '../threadOptions.d-BerQM1Ql.js';
12
+ import { g as EverfurChatOpeningCard } from '../threadOptions.d-DTsJFkL-.js';
13
13
  import { E as EverfurTabId, a as EverfurTabsCopy } from '../tabsModel.d-B7QMug1u.js';
14
14
  export { b as EVERFUR_TABS_COPY } from '../tabsModel.d-B7QMug1u.js';
15
- import { H as HealthPlanPage } from '../focus.d-BZ2sEpbU.js';
15
+ import { H as HealthPlanPage } from '../focus.d-DzIgOqNB.js';
16
16
  import { E as EverfurIntroMode, a as EverfurIntroFrame, b as EverfurIntroClose, c as EverfurIntroTabLabels } from '../useIntroSeen.d-CTWFUthO.js';
17
17
  export { d as EverfurIntroExit, e as EverfurIntroSeen, i as isIntroSwipeOut, u as useEverfurIntroSeen } from '../useIntroSeen.d-CTWFUthO.js';
18
18
  import '../EverfurResult.d-D_-254ZY.js';
19
19
  import '../EverfurError.d-8NHtlgzA.js';
20
20
  import '../clinicModels.d-CaS64-P-.js';
21
21
  import '../models.d-DOwnr8fi.js';
22
- import '../threadOptions.d-6hfQS1x7.js';
23
- import '../requestFunnel.d-Cxt0JqYx.js';
22
+ import '../threadOptions.d-GPJPprkn.js';
23
+ import '../requestFunnel.d-BPsCHJWf.js';
24
24
  import '../ErrorPolicyPort.d-68yrE3BE.js';
25
- import '../config.d-B4-Mrwq2.js';
26
- import '../identity.d-DxNvhj3a.js';
25
+ import '../config.d-jTVsAeky.js';
26
+ import '../identity.d-BEJcHY-5.js';
27
27
 
28
28
  /**
29
29
  * How the member got here, said by the host (explicit, owner decision (a)): a plain open from your app's own tab bar,
@@ -97,7 +97,7 @@ return Object.freeze({active:bool(r?.active,false)})}var CANCEL_REASON_MAX=240;f
97
97
  /* @__PURE__ */Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),
98
98
  /* @__PURE__ */Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);/* @__PURE__ */Object.freeze(CONTRACT_RETRYABILITY.map(row2=>row2.wireCode));var NORMALIZED_FOLD=/* @__PURE__ */Object.freeze({ValidationException:"validationFailed",AuthorizationException:"authRejected",PaymentRequiredException:"paymentRequired",AccessDeniedException:"accessDenied",ResourceNotFoundException:"resourceNotFound",ConflictException:"conflict",ThrottlingException:"rateLimited",InternalFailureException:"internalError",NotImplementedException:"notImplemented",ServiceUnavailableException:"serviceUnavailable",MethodNotAllowedException:"validationFailed",authExpired:"authExpired",unavailable:"serviceUnavailable",session_required:"sessionRequired",session_revoked:"authExpired",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",unrestrictedKeyRequired:"accessDenied",user_ref_invalid:"validationFailed",event_cursor_invalid:"validationFailed",event_filter_invalid:"validationFailed",event_payload_invalid:"validationFailed",event_type_unknown:"validationFailed",idempotency_key_invalid:"validationFailed",idempotency_key_required:"validationFailed",idempotency_key_reused:"idempotencyConflict",payload_too_large:"validationFailed",webhook_url_rejected:"validationFailed",webhook_endpoint_update_empty:"validationFailed",webhook_endpoint_update_invalid:"validationFailed",event_type_not_available:"conflict",record_subject_not_found:"resourceNotFound",records_consent_required:"conflict",record_species_unsupported:"validationFailed",record_upload_invalid:"validationFailed",FILE_TOO_LARGE:"validationFailed",INVALID_CONTENT_TYPE:"validationFailed",attachment_unreadable:"validationFailed",provider_unsupported:"validationFailed",token_invalid:"validationFailed",device_cipher_unavailable:"serviceUnavailable",email_invalid:"validationFailed",consent_required:"validationFailed",consent_invalid:"validationFailed",consent_scope_wrong_route:"validationFailed",IDEMPOTENCY_KEY_IN_FLIGHT:"idempotencyInFlight",IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST:"idempotencyConflict",DAILY_QUOTA_EXCEEDED:"quotaExceeded",TIER_UPGRADE_REQUIRED:"paymentRequired",not_found:"conversationNotFound",timeout:"streamTimeout",internal_error:"internalError",invalid_request:"validationFailed",invalid_client:"authRejected",invalid_grant:"authRejected",unsupported_grant_type:"validationFailed",invalid_scope:"validationFailed",invalid_target:"validationFailed",invalid_redirect_uri:"validationFailed",invalid_client_metadata:"validationFailed",unsupported_response_type:"validationFailed",access_denied:"accessDenied",slow_down:"rateLimited",mcp_request_not_found:"resourceNotFound",mcp_request_gone:"resourceNotFound",mcp_connection_not_found:"resourceNotFound",mcp_request_conflict:"conflict",sandbox_only:"accessDenied",tenant_has_no_capabilities:"conflict",verify_mint_refused:"accessDenied",verify_mint_rate_limited:"rateLimited",verify_mint_unavailable:"serviceUnavailable",verify_user_ref_invalid:"validationFailed",insufficient_scope:"accessDenied",tenant_filter_invalid:"validationFailed",tenant_resource_not_found:"resourceNotFound",tenant_surface_not_enabled:"conflict",pet_health_species_unsupported:"validationFailed",pet_health_list_removals_unconfirmed:"validationFailed",petRefInUse:"conflict",share_limit_reached:"conflict",pet_not_registered:"resourceNotFound",species_unsupported:"validationFailed",partner_visit_owner_only:"accessDenied",partner_visit_link_conflict:"conflict",partner_visit_pet_already_mapped:"conflict",linked_account_read_only:"conflict",catalog_empty_refused:"conflict",catalog_shrink_refused:"conflict"}),CONTRACT_ERROR_ROWS=/* @__PURE__ */Object.freeze(CONTRACT_RETRYABILITY.map(generated=>/* @__PURE__ */Object.freeze({wireCode:generated.wireCode,envelope:generated.envelope,retryable:generated.retryable,normalized:NORMALIZED_FOLD[generated.wireCode]}))),BY_KEY=new Map(CONTRACT_ERROR_ROWS.map(r=>[r.envelope+r.wireCode.toUpperCase(),r])),ENVELOPE_LOOKUP_ORDER=/* @__PURE__ */Object.freeze(["http_envelope",...[...new Set(CONTRACT_ERROR_ROWS.map(r=>r.envelope))].filter(e=>e!=="http_envelope").sort()]);function contractErrorFor(wireCode,envelope){if(typeof wireCode!="string")return;let key=wireCode.trim().toUpperCase();if(key.length!==0)for(let candidate of[envelope??"http_envelope",...ENVELOPE_LOOKUP_ORDER]){let row2=BY_KEY.get(candidate+key);if(row2)return row2}}var CATEGORY_OF=/* @__PURE__ */Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",identitySignatureRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"invalidRequest",runtimeDisposed:"invalidRequest",conversationNotFound:"notFound",petNotFound:"notFound",resourceNotFound:"notFound",conflict:"conflict",idempotencyConflict:"conflict",idempotencyInFlight:"conflict",streamTimeout:"connection",streamIncomplete:"connection",upstreamLlmTimeout:"connection",serviceUnavailable:"connection",internalError:"server",notImplemented:"server",mediaUploadFailed:"media",moderationBlocked:"policy",unknown:"unknown"});function categoryFor(code){return CATEGORY_OF[code]}function fromWire(wire){let contractRow=contractErrorFor(wire);if(contractRow)return contractRow.normalized;let upper=(wire??"").trim().toUpperCase(),canonical=upper.replace(/[^A-Z0-9]/g,"");if(canonical==="AUTHREJECTED")return"authRejected";if(upper.startsWith("AUTH"))return"authExpired";switch(canonical){case"DAILYQUOTAEXCEEDED":case"QUOTAEXCEEDED":return"quotaExceeded";case"RATELIMITED":case"TOOMANYREQUESTS":case"TELEVETRATELIMITED":return"rateLimited";case"IDEMPOTENCYKEYCONFLICT":case"IDEMPOTENCYCONFLICT":return"idempotencyConflict";case"ACCESSDENIED":case"FORBIDDEN":return"accessDenied";case"IDENTITYSIGNATUREREQUIRED":return"identitySignatureRequired";case"RUNTIMEDISPOSED":return"runtimeDisposed";case"NOTFOUND":case"CONVERSATIONNOTFOUND":return"conversationNotFound";case"PETNOTFOUND":return"petNotFound";case"TIMEOUT":case"STREAMTIMEOUT":return"streamTimeout";case"MEDIAUPLOADFAILED":case"UNRECOGNIZEDVIDEOFORMAT":case"FILETOOSMALL":return"mediaUploadFailed";case"MODERATIONBLOCKED":return"moderationBlocked";case"UPSTREAMLLMTIMEOUT":return"upstreamLlmTimeout";case"INTERNALERROR":case"INTERNALSERVERERROR":return"internalError";case"STREAMINCOMPLETE":case"CHATSTREAMINCOMPLETE":return"streamIncomplete";case"INVALIDANALYSISTYPE":case"INVALIDUPLOADPURPOSE":return"unknown";default:return"unknown"}}var AUTO_RETRYABLE_CODES=/* @__PURE__ */new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function isAutoRetryable(code){return AUTO_RETRYABLE_CODES.has(code)}var RETRYABLE_CONTRACT_CODES=/* @__PURE__ */new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function isRetryableCode(code){return isAutoRetryable(code)||RETRYABLE_CONTRACT_CODES.has(code)}var BACKOFF_BASE_MS=500,BACKOFF_CAP_MS=8e3,MAX_RETRY_ATTEMPTS=4;function backoffDelayMs(attempt,rng=Math.random){let bounded=Math.max(0,attempt),ceiling=Math.min(BACKOFF_BASE_MS*2**bounded,BACKOFF_CAP_MS);return Math.floor(rng()*ceiling)}var ACCESS_DENIED_COPY="This feature isn't available on your account right now.",VALIDATION_FAILED_COPY="Something in that request was not right. Check the details and try again.",USER_FACING_COPY=/* @__PURE__ */Object.freeze({authExpired:"Please sign in again to continue.",authRejected:"Please sign in again to continue.",sessionRequired:"This app needs to be updated to keep using Everfur.",accessDenied:ACCESS_DENIED_COPY,paymentRequired:"This is part of a paid plan.",quotaExceeded:"You have used today's messages. This resets tomorrow.",rateLimited:"You are sending messages quickly. Try again in a few seconds.",validationFailed:VALIDATION_FAILED_COPY,sdkUpdateRequired:"This app needs to be updated to keep using Everfur.",conflict:"That is already running. Wait for it to finish, then try again.",idempotencyConflict:"That message was already delivered.",idempotencyInFlight:"That is still processing. Give it a moment.",conversationNotFound:"This conversation is no longer available.",petNotFound:"We could not find that pet. Please pick a pet and try again.",resourceNotFound:"We could not find that.",streamTimeout:"The response timed out. Tap retry to try again.",mediaUploadFailed:"We could not upload that photo. Please attach it again.",moderationBlocked:"This request cannot be answered here.",upstreamLlmTimeout:"The response timed out. Tap retry to try again.",internalError:"We hit a snag on our end. Please try again.",notImplemented:"That is not available yet.",serviceUnavailable:"That service is briefly unavailable. Try again shortly.",streamIncomplete:"The connection dropped mid-answer. Tap retry to continue.",identitySignatureRequired:ACCESS_DENIED_COPY,runtimeDisposed:VALIDATION_FAILED_COPY,unknown:"Something went wrong. Please try again."}),SESSION_REVOKED_COPY="This session has ended. Please sign in again.",LINKED_ACCOUNT_READ_ONLY="linked_account_read_only";function displayFor(code,wireCode,reasonCode){return code==="conflict"&&reasonCode===LINKED_ACCOUNT_READ_ONLY?ACCESS_DENIED_COPY:(code==="authRejected"||code==="authExpired")&&typeof wireCode=="string"&&wireCode.trim().toLowerCase()==="session_revoked"?SESSION_REVOKED_COPY:userFacingError(code)}function userFacingError(code){return USER_FACING_COPY[code]}function defineHidden(target,key,value){Object.defineProperty(target,key,{value:value,enumerable:false,writable:false,configurable:false})}var REASON_CODE_SHAPE=/^[a-z][a-z0-9_]{0,63}$/;function makeEverfurError(code,opts){let row2=contractErrorFor(opts?.wireCode,opts?.wireEnvelope),linkedReadOnly=code==="conflict"&&opts?.reasonCode===LINKED_ACCOUNT_READ_ONLY,error={code:code,category:categoryFor(code),retryable:opts?.retryable??(linkedReadOnly?false:isRetryableCode(code)),displayMessage:displayFor(code,opts?.wireCode,linkedReadOnly?LINKED_ACCOUNT_READ_ONLY:null)};opts?.httpStatus!==void 0&&(error.httpStatus=opts.httpStatus),opts?.requestId&&(error.requestId=opts.requestId),typeof opts?.reasonCode=="string"&&REASON_CODE_SHAPE.test(opts.reasonCode)&&(error.reasonCode=opts.reasonCode);let wait=opts?.retryAfterSeconds;if(typeof wait=="number"&&Number.isFinite(wait)&&wait>=0&&(error.retryAfterSeconds=Math.round(wait)),row2);return opts?.wireMessage&&defineHidden(error,"wireMessage",opts.wireMessage),opts?.raw!==void 0&&opts.raw!==null&&defineHidden(error,"raw",opts.raw),/* @__PURE__ */Object.freeze(error)}function ok(value,warning){/* @__PURE__ */
99
99
  return Object.freeze({ok:true,value:value})}function err(error){/* @__PURE__ */
100
- return Object.freeze({ok:false,error:error})}var EverfurConfigError=class _EverfurConfigError extends Error{constructor(kind,message){super(message),this.name="EverfurConfigError",this.kind=kind,Object.setPrototypeOf(this,_EverfurConfigError.prototype)}};function mintFailedError(cause,refusal){let message=cause instanceof Error?cause.message:typeof cause=="string"?cause:null;return makeEverfurError("authRejected",{retryable:false,...refusal?.wireCode?{wireCode:refusal.wireCode}:{},...refusal?.requestId?{requestId:refusal.requestId}:{},...message?{wireMessage:message}:{},...cause!=null?{raw:cause}:{}})}function authHeaders(auth){let headers={};return auth.mode==="personalized"?headers.authorization=`Bearer ${auth.token}`:headers["x-everfur-partner-key"]=auth.publishableKey,auth.userRef&&(headers["x-everfur-user-ref"]=auth.userRef),auth.sessionId&&(headers["x-everfur-session-id"]=auth.sessionId),headers}function withAuthHeaders(req,auth){return{...req,headers:{...stripAuthHeaders(req.headers),...authHeaders(auth)}}}function stripAuthHeaders(headers){if(!headers)return{};let out={};for(let[key,value]of Object.entries(headers)){let lower=key.toLowerCase();lower==="authorization"||lower==="x-everfur-partner-key"||(out[key]=value)}return out}async function authedSend(req,ctx){if(ctx.mode==="anonymous")return ctx.transport.request(withAuthHeaders(req,{mode:"anonymous",publishableKey:ctx.publishableKey,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));let token;try{token=await ctx.identity.currentToken()}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause))}let first=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:token,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));if(first.ok||first.error.httpStatus!==401)return first;let refreshed;try{refreshed=await ctx.identity.currentToken({forceRefresh:!0})}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause,{wireCode:wireCodeOf(first.error.raw),requestId:first.error.requestId}))}let retry=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:refreshed,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));return!retry.ok&&retry.error.httpStatus===401?(ctx.identity.reportRejected?.(),err(refusedAfterRemintError(retry.error))):retry}function refusedAfterRemintError(refusal){let raw=refusal.raw,wireCode=wireCodeOf(raw);return makeEverfurError("authRejected",{retryable:false,...refusal.httpStatus!==void 0?{httpStatus:refusal.httpStatus}:{},...refusal.requestId?{requestId:refusal.requestId}:{},...wireCode?{wireCode:wireCode}:{},...refusal.reasonCode?{reasonCode:refusal.reasonCode}:{},...refusal.wireMessage?{wireMessage:refusal.wireMessage}:{},...raw!=null?{raw:raw}:{}})}function wireCodeOf(body){if(typeof body!="object"||body===null)return null;let b=body,code=(typeof b.error=="object"&&b.error!==null?b.error.code:void 0)??b.code;return typeof code=="string"&&code.length>0?code:null}function networkError(cause){return makeEverfurError("internalError",{retryable:true,wireMessage:describeCause(cause)})}function describeCause(cause){return cause instanceof Error?cause.message:typeof cause=="string"?cause:"network request failed"}var FUNNEL_UNARY_TIMEOUT_MS=3e4,RETRY_OVERRIDE_MAX_MS=BACKOFF_CAP_MS*2,IDEMPOTENCY_HEADER="idempotency-key",MUTATING_METHODS=/* @__PURE__ */new Set(["POST","PUT","PATCH","DELETE"]),NOOP_OBSERVER=/* @__PURE__ */Object.freeze({onEvent(){}}),defaultFunnelTimers=/* @__PURE__ */Object.freeze({setTimeout:(handler,ms)=>setTimeout(handler,ms),clearTimeout:handle=>clearTimeout(handle),now:()=>Date.now()});function seededIdempotencyKey(seed){let safe=seed.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return safe.length===0?null:`efs_${safe}`.slice(0,128)}function createRequestFunnel(deps){let observer=deps.observer??NOOP_OBSERVER,timers=deps.timers??defaultFunnelTimers,rng=deps.rng??Math.random,sleep=deps.sleep??((ms,signal)=>delayAbortable(ms,timers,signal)),ceiling=deps.maxAttempts??MAX_RETRY_ATTEMPTS,timeoutMs=deps.unaryTimeoutMs??FUNNEL_UNARY_TIMEOUT_MS,mintKey=deps.newIdempotencyKey??defaultIdempotencyKeyFactory(),emit=event=>{try{observer.onEvent(event)}catch{}};async function send(call,req,opts){let perCallMaxAttempts=opts?.maxAttempts,maxAttempts=Math.max(1,perCallMaxAttempts??ceiling),idempotent=opts?.idempotent??MUTATING_METHODS.has(req.method),seeded=opts?.idempotencyKey===void 0?null:seededIdempotencyKey(opts.idempotencyKey),idempotencyKey=idempotent?seeded??mintKey():null,base=assembleHeaders(req,idempotencyKey),attempt=0;for(;;){let stamp2=extra=>/* @__PURE__ */Object.freeze({call:call,method:req.method,path:req.path,attempt:attempt,...idempotencyKey?{idempotencyKey:idempotencyKey}:{},...extra});emit(stamp2({phase:"attempt"}));let deadline=boundedSignal(timeoutMs,timers),merged=mergeSignals(deadline.signal,req.signal),settled;try{settled=await authedSend({...base,signal:merged.signal},deps.auth)}catch(cause){settled=err(networkError(cause))}finally{merged.dispose(),deadline.cancel()}if(settled.ok)return emit(stamp2({phase:"settled",ok:true,reason:"ok"})),settled;let error=settled.error,decision=decideRetry(error,attempt,{maxAttempts:maxAttempts,rng:rng,now:timers.now(),aborted:req.signal?.aborted===true,...perCallMaxAttempts!==void 0?{perCallMaxAttempts:perCallMaxAttempts}:{},...deps.errorPolicy!==void 0?{policy:deps.errorPolicy}:{}}),settledEvent={ok:false,code:error.code,reason:decision.reason,...error.httpStatus!==void 0?{httpStatus:error.httpStatus}:{},...error.requestId!==void 0?{requestId:error.requestId}:{}};if(!decision.retry)return emit(stamp2({phase:"settled",...settledEvent})),err(error);if(emit(stamp2({phase:"retry",...settledEvent,delayMs:decision.delayMs})),await sleep(decision.delayMs,req.signal),req.signal?.aborted===true)return emit(stamp2({phase:"settled",...settledEvent,reason:"aborted"})),err(error);attempt+=1}}async function authorize(req){return withAuthHeaders(req,await resolveDeviceAuth(deps.auth))}async function*stream(call,req,signal){emit(
100
+ return Object.freeze({ok:false,error:error})}var EverfurConfigError=class _EverfurConfigError extends Error{constructor(kind,message){super(message),this.name="EverfurConfigError",this.kind=kind,Object.setPrototypeOf(this,_EverfurConfigError.prototype)}};function mintFailedError(cause,refusal){let message=cause instanceof Error?cause.message:typeof cause=="string"?cause:null;return makeEverfurError("authRejected",{retryable:false,...refusal?.wireCode?{wireCode:refusal.wireCode}:{},...refusal?.requestId?{requestId:refusal.requestId}:{},...message?{wireMessage:message}:{},...cause!=null?{raw:cause}:{}})}function authHeaders(auth){let headers={};return auth.mode==="personalized"?headers.authorization=`Bearer ${auth.token}`:headers["x-everfur-partner-key"]=auth.publishableKey,auth.userRef&&(headers["x-everfur-user-ref"]=auth.userRef),auth.sessionId&&(headers["x-everfur-session-id"]=auth.sessionId),headers}function withAuthHeaders(req,auth){return{...req,headers:{...stripAuthHeaders(req.headers),...authHeaders(auth)}}}function stripAuthHeaders(headers){if(!headers)return{};let out={};for(let[key,value]of Object.entries(headers)){let lower=key.toLowerCase();lower==="authorization"||lower==="x-everfur-partner-key"||(out[key]=value)}return out}async function authedSend(req,ctx){if(ctx.mode==="anonymous")return ctx.transport.request(withAuthHeaders(req,{mode:"anonymous",publishableKey:ctx.publishableKey,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));let token;try{token=await ctx.identity.currentToken()}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause))}let first=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:token,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));if(first.ok||first.error.httpStatus!==401)return first;let refreshed;try{refreshed=await ctx.identity.currentToken({forceRefresh:!0})}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause,{wireCode:wireCodeOf(first.error.raw),requestId:first.error.requestId}))}let retry=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:refreshed,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));return!retry.ok&&retry.error.httpStatus===401?(ctx.identity.reportRejected?.(),err(refusedAfterRemintError(retry.error))):retry}function refusedAfterRemintError(refusal){let raw=refusal.raw,wireCode=wireCodeOf(raw);return makeEverfurError("authRejected",{retryable:false,...refusal.httpStatus!==void 0?{httpStatus:refusal.httpStatus}:{},...refusal.requestId?{requestId:refusal.requestId}:{},...wireCode?{wireCode:wireCode}:{},...refusal.reasonCode?{reasonCode:refusal.reasonCode}:{},...refusal.wireMessage?{wireMessage:refusal.wireMessage}:{},...raw!=null?{raw:raw}:{}})}function wireCodeOf(body){if(typeof body!="object"||body===null)return null;let b=body,code=(typeof b.error=="object"&&b.error!==null?b.error.code:void 0)??b.code;return typeof code=="string"&&code.length>0?code:null}function parseUrl(raw,base){let Url=globalThis.URL;if(typeof Url=="function"){let url;try{url=base===void 0?new Url(raw):new Url(raw,base)}catch{return null}try{if(url.protocol)return url}catch{}}return parseByPattern(raw)}var WHOLE_URL=/^([a-z][a-z0-9+.-]*):\/\/(?:([^:@/?#]*)(?::([^@/?#]*))?@)?(\[[0-9a-f:.]+\]|[\w.~-]+)(?::(\d*))?(\/[^?#]*)?(\?[^#]*)?(#.*)?$/i,REWRITTEN_BY_STANDARD_PARSER=/[\s\u0000-\u001f\u007f\\]/,DEFAULT_PORTS={"http:":"80","https:":"443"};function parseByPattern(raw,base){let input=raw.trim();let match=REWRITTEN_BY_STANDARD_PARSER.test(input)?null:WHOLE_URL.exec(input);if(match===null)return null;let[,scheme="",username="",password="",host="",portText="",path="",query="",fragment=""]=match,protocol=`${scheme.toLowerCase()}:`,portNumber=Number(portText);if(portNumber>65535)return null;let port=portText===""||String(portNumber)===DEFAULT_PORTS[protocol]?"":String(portNumber),special=DEFAULT_PORTS[protocol]!==void 0,hostPort=host.toLowerCase()+(port&&`:${port}`),pathname=path||(special?"/":""),credentials=username||password?`${username}${password&&`:${password}`}@`:"";return{href:`${protocol}//${credentials}${hostPort}${pathname}${query}${fragment}`,protocol:protocol,username:username,password:password,hostname:host.toLowerCase(),port:port,origin:special?`${protocol}//${hostPort}`:"null",pathname:pathname,search:query==="?"?"":query,hash:fragment==="#"?"":fragment}}function networkError(cause){return makeEverfurError("internalError",{retryable:true,wireMessage:describeCause(cause)})}function describeCause(cause){return cause instanceof Error?cause.message:typeof cause=="string"?cause:"network request failed"}var FUNNEL_UNARY_TIMEOUT_MS=3e4,RETRY_OVERRIDE_MAX_MS=BACKOFF_CAP_MS*2,IDEMPOTENCY_HEADER="idempotency-key",MUTATING_METHODS=/* @__PURE__ */new Set(["POST","PUT","PATCH","DELETE"]),NOOP_OBSERVER=/* @__PURE__ */Object.freeze({onEvent(){}}),defaultFunnelTimers=/* @__PURE__ */Object.freeze({setTimeout:(handler,ms)=>setTimeout(handler,ms),clearTimeout:handle=>clearTimeout(handle),now:()=>Date.now()});function seededIdempotencyKey(seed){let safe=seed.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return safe.length===0?null:`efs_${safe}`.slice(0,128)}function createRequestFunnel(deps){let observer=deps.observer??NOOP_OBSERVER,timers=deps.timers??defaultFunnelTimers,rng=deps.rng??Math.random,sleep=deps.sleep??((ms,signal)=>delayAbortable(ms,timers,signal)),ceiling=deps.maxAttempts??MAX_RETRY_ATTEMPTS,timeoutMs=deps.unaryTimeoutMs??FUNNEL_UNARY_TIMEOUT_MS,mintKey=deps.newIdempotencyKey??defaultIdempotencyKeyFactory(),emit=event=>{try{observer.onEvent(event)}catch{}};async function send(call,req,opts){let perCallMaxAttempts=opts?.maxAttempts,maxAttempts=Math.max(1,perCallMaxAttempts??ceiling),idempotent=opts?.idempotent??MUTATING_METHODS.has(req.method),seeded=opts?.idempotencyKey===void 0?null:seededIdempotencyKey(opts.idempotencyKey),idempotencyKey=idempotent?seeded??mintKey():null,base=assembleHeaders(req,idempotencyKey),attempt=0;for(;;){let stamp2=extra=>/* @__PURE__ */Object.freeze({call:call,method:req.method,path:req.path,attempt:attempt,...idempotencyKey?{idempotencyKey:idempotencyKey}:{},...extra});emit(stamp2({phase:"attempt"}));let deadline=boundedSignal(timeoutMs,timers),merged=mergeSignals(deadline.signal,req.signal),settled;try{settled=await authedSend({...base,signal:merged.signal},deps.auth)}catch(cause){settled=err(networkError(cause))}finally{merged.dispose(),deadline.cancel()}if(settled.ok)return emit(stamp2({phase:"settled",ok:true,reason:"ok"})),settled;let error=settled.error,decision=decideRetry(error,attempt,{maxAttempts:maxAttempts,rng:rng,now:timers.now(),aborted:req.signal?.aborted===true,...perCallMaxAttempts!==void 0?{perCallMaxAttempts:perCallMaxAttempts}:{},...deps.errorPolicy!==void 0?{policy:deps.errorPolicy}:{}}),settledEvent={ok:false,code:error.code,reason:decision.reason,...error.httpStatus!==void 0?{httpStatus:error.httpStatus}:{},...error.requestId!==void 0?{requestId:error.requestId}:{}};if(!decision.retry)return emit(stamp2({phase:"settled",...settledEvent})),err(error);if(emit(stamp2({phase:"retry",...settledEvent,delayMs:decision.delayMs})),await sleep(decision.delayMs,req.signal),req.signal?.aborted===true)return emit(stamp2({phase:"settled",...settledEvent,reason:"aborted"})),err(error);attempt+=1}}async function authorize(req){return withAuthHeaders(req,await resolveDeviceAuth(deps.auth))}async function*stream(call,req,signal){emit(
101
101
  /* @__PURE__ */Object.freeze({call:call,phase:"stream.open",method:req.method,path:req.path,attempt:0}));try{yield*deps.auth.transport.stream(req,signal)}catch{yield errorFrame({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null})}}/* @__PURE__ */
102
102
  return Object.freeze({send:send,authorize:authorize,stream:stream})}function assembleHeaders(req,idempotencyKey){let headers={};for(let[key,value]of Object.entries(req.headers??{}))key.toLowerCase()!==IDEMPOTENCY_HEADER&&(headers[key]=value);return idempotencyKey!==null&&(headers["Idempotency-Key"]=idempotencyKey),{...req,headers:headers}}function defaultIdempotencyKeyFactory(){let counter=0;return()=>`efk_${Date.now().toString(36)}_${(counter++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}var POLICY_MAX_ATTEMPTS_CAP=10;function decideRetry(error,attempt,ctx){if(ctx.aborted)return{retry:false,reason:"aborted"};let throttle=throttleKind(error);if(throttle==="quota")return{retry:false,reason:"daily-quota-exhausted"};if(throttle!=="burst"&&!isAutoRetryable(error.code))return{retry:false,reason:"terminal-code"};let reason=throttle==="burst"?"burst-throttle":"retryable-code";if((()=>{if(ctx.policy===void 0)return false;try{return!ctx.policy.shouldRetry(error.code,attempt)}catch{return false}})())return{retry:false,reason:"terminal-code"};let policyCeiling=()=>{if(ctx.policy===void 0)return null;let raw;try{raw=ctx.policy.maxAttempts(error.code)}catch{return null}return typeof raw!="number"||!Number.isFinite(raw)?null:Math.max(1,Math.min(POLICY_MAX_ATTEMPTS_CAP,Math.floor(raw)))},ceiling=ctx.perCallMaxAttempts??policyCeiling()??ctx.maxAttempts;if(attempt+1>=ceiling)return{retry:false,reason:"attempts-exhausted"};let override=retryOverrideMs(error,ctx.now);return override!==null?override>RETRY_OVERRIDE_MAX_MS?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:reason,delayMs:override}:{retry:true,reason:reason,delayMs:backoffDelayMs(attempt,ctx.rng)}}function throttleKind(error){let code=error.code==="unknown"?fromWire(rawWireCode(error.raw)):error.code;return code==="quotaExceeded"?"quota":code==="rateLimited"||error.httpStatus===429?"burst":null}function retryOverrideMs(error,now){let at=findResetsAt(error.raw);if(at!==null){let delta=at-now;return delta>0?delta:0}let wait=findRetryAfterSeconds(error.raw);return wait===null?null:Math.round(wait*1e3)}function findRetryAfterSeconds(raw){for(let scope of candidateScopes(raw)){let value=scope.retry_after_seconds;if(typeof value=="number"&&Number.isFinite(value)&&value>=0)return value}return null}function findResetsAt(raw){for(let scope of candidateScopes(raw)){let value=scope.resets_at,parsed=parseInstantMs(value);if(parsed!==null)return parsed}return null}function candidateScopes(raw){if(!isRecord(raw))return[];let out=[raw];for(let nested of["error","detail"]){let value=raw[nested];isRecord(value)&&out.push(value)}return out}function parseInstantMs(value){if(typeof value=="number"&&Number.isFinite(value))return value<1e11?Math.round(value*1e3):Math.round(value);if(typeof value=="string"&&value.trim().length>0){let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}return null}function rawWireCode(raw){for(let scope of candidateScopes(raw)){let code=scope.code;if(typeof code=="string"&&code.length>0)return code}return null}function isRecord(value){return typeof value=="object"&&value!==null}async function resolveDeviceAuth(auth){return auth.mode==="anonymous"?{mode:"anonymous",publishableKey:auth.publishableKey,userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}:{mode:"personalized",token:await auth.identity.currentToken(),userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}}function boundedSignal(ms,timers){let ctrl=new AbortController,handle=timers.setTimeout(()=>ctrl.abort(),ms);return{signal:ctrl.signal,cancel:()=>timers.clearTimeout(handle)}}function mergeSignals(deadline,caller){let noop=()=>{};if(!caller)return{signal:deadline,dispose:noop};let ctrl=new AbortController;if(deadline.aborted||caller.aborted)return ctrl.abort(),{signal:ctrl.signal,dispose:noop};let onAbort=()=>ctrl.abort();return deadline.addEventListener("abort",onAbort,{once:true}),caller.addEventListener("abort",onAbort,{once:true}),{signal:ctrl.signal,dispose:()=>{deadline.removeEventListener("abort",onAbort),caller.removeEventListener("abort",onAbort)}}}function delayAbortable(ms,timers,signal){return ms<=0||signal?.aborted===true?Promise.resolve():new Promise(resolve=>{let handle=timers.setTimeout(()=>{signal?.removeEventListener("abort",onAbort),resolve()},ms),onAbort=()=>{timers.clearTimeout(handle),resolve()};signal?.addEventListener("abort",onAbort,{once:true})})}var TELEVET_ATTACHMENT_MIME_TYPES=/* @__PURE__ */Object.freeze(["image/jpeg","image/png","image/webp","image/heic","image/heif","application/pdf","text/csv","video/mp4","video/quicktime"]),TELEVET_ATTACHMENT_MAX_BYTES=25*1024*1024,TELEVET_ATTACHMENT_VIDEO_MAX_BYTES=200*1024*1024,SUFFIX_TYPES=[[".jpg","image/jpeg"],[".jpeg","image/jpeg"],[".png","image/png"],[".webp","image/webp"],[".heic","image/heic"],[".heif","image/heif"],[".pdf","application/pdf"],[".csv","text/csv"],[".mp4","video/mp4"],[".mov","video/quicktime"]];function televetAttachmentContentType(filename,mimeType){let direct=(mimeType??"").trim().toLowerCase();if(direct==="image/jpg")return"image/jpeg";if(TELEVET_ATTACHMENT_MIME_TYPES.includes(direct))return direct;if(direct.length>0)return null;let name=filename.toLowerCase();return SUFFIX_TYPES.find(([suffix])=>name.endsWith(suffix))?.[1]??null}function televetAttachmentRefusal(pick2){let type=televetAttachmentContentType(pick2.filename,pick2.mimeType);if(type===null)return"type";if(!Number.isFinite(pick2.fileSize)||pick2.fileSize<=0)return"unreadable";let ceiling=type.startsWith("video/")?TELEVET_ATTACHMENT_VIDEO_MAX_BYTES:TELEVET_ATTACHMENT_MAX_BYTES;return pick2.fileSize<=ceiling?null:"size"}function parseTelevetAttachmentPolicy(raw){if(typeof raw!="object"||raw===null)return null;let o=raw,str4=v=>typeof v=="string"&&v.length>0?v:null,num3=v=>typeof v=="number"&&Number.isFinite(v)?v:null,uploadUrl=str4(o.upload_url),s3Key=str4(o.s3_key);if(uploadUrl===null||s3Key===null)return null;let fields={},rawFields=o.upload_fields;if(typeof rawFields=="object"&&rawFields!==null)for(let[key,value]of Object.entries(rawFields))typeof value=="string"&&(fields[key]=value);/* @__PURE__ */
103
103
  return Object.freeze({upload_id:str4(o.upload_id)??"",upload_url:uploadUrl,upload_fields:/* @__PURE__ */Object.freeze(fields),expires_in_seconds:num3(o.expires_in_seconds)??0,max_content_length:num3(o.max_content_length)??TELEVET_ATTACHMENT_MAX_BYTES,s3_key:s3Key,purpose:str4(o.purpose)})}function wireCodeOf2(raw){if(typeof raw!="object"||raw===null)return null;let scopes=[raw,raw.detail,raw.error];for(let scope of scopes)if(!(typeof scope!="object"||scope===null))for(let key of["error","code"]){let value=scope[key];if(typeof value=="string"&&value.length>0)return value}return null}function televetAttachmentInitiateFailure(error){if(error.httpStatus===404)return"dark";if(error.httpStatus===400){let code=wireCodeOf2(error.raw);if(code==="FILE_TOO_LARGE")return"size";if(code==="INVALID_CONTENT_TYPE")return"type"}return"failed"}var TELEVET_BOOKING_NOT_LIVE="televet_booking_not_live";function televetBookingNotLiveError(status){return makeEverfurError("conflict",{retryable:false,reasonCode:TELEVET_BOOKING_NOT_LIVE,wireMessage:`the booking was answered with a consult whose status is ${status}, which is not a live visit`})}var TELEVET_BOOKING_KEY_REUSED="televet_booking_key_reused",KEY_REUSED_WIRE_CODE="IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST";function foldTelevetBookingKeyReused(error){return error.httpStatus!==409||error.reasonCode===TELEVET_BOOKING_KEY_REUSED||details(error)?.code!==KEY_REUSED_WIRE_CODE?error:makeEverfurError(error.code,{retryable:false,httpStatus:409,...error.requestId!==void 0?{requestId:error.requestId}:{},wireCode:KEY_REUSED_WIRE_CODE,reasonCode:TELEVET_BOOKING_KEY_REUSED,...error.wireMessage!==void 0?{wireMessage:error.wireMessage}:{},raw:error.raw})}function details(error){let raw=error.raw;if(typeof raw!="object"||raw===null)return null;let direct=raw,nested=direct.detail??direct.error;return typeof nested=="object"&&nested!==null?nested:direct}function categoriesOf(error){let raw=details(error)?.categories;return Array.isArray(raw)?/* @__PURE__ */Object.freeze(raw.filter(c=>typeof c=="string")):/* @__PURE__ */Object.freeze([])}function retryAfterOf(error){let raw=details(error)?.retry_after_seconds;return typeof raw=="number"&&Number.isFinite(raw)&&raw>0?raw:null}function messageOf(error){let wire=error.wireMessage;if(typeof wire=="string"&&wire.trim().length>0)return wire.trim();let raw=details(error)?.message;return typeof raw=="string"&&raw.trim().length>0?raw.trim():null}function codeOf(error){let reason=error.reasonCode;if(typeof reason=="string"&&reason.length>0)return reason;let raw=details(error),code=raw?.code??raw?.error_code;return typeof code=="string"&&code.length>0?code:null}function televetBookingRefusal(error){let status=error.httpStatus;if(status===402)/* @__PURE__ */return Object.freeze({kind:"not_entitled"});if(status===429||error.code==="rateLimited"||error.code==="quotaExceeded")/* @__PURE__ */
@@ -112,7 +112,7 @@ return Object.freeze({kind:"slot_taken"});case"televet_clinician_cannot_prescrib
112
112
  return Object.freeze({kind:"clinician_unavailable"});case"televet_membership_conflict":/* @__PURE__ */
113
113
  return Object.freeze({kind:"not_entitled"});case"televet_registry_unavailable":/* @__PURE__ */
114
114
  return Object.freeze({kind:"failed"})}/* @__PURE__ */
115
- return Object.freeze({kind:"failed"})}function isSafeRoomUrl(url){try{return new URL(url.trim()).protocol==="https:"}catch{return false}}function isUsableRoomCredential(roomUrl,token){return isSafeRoomUrl(roomUrl)&&token.trim().length>0}function isRecord2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function wholeNumber(value,min){return typeof value=="number"&&Number.isInteger(value)&&value>=min?value:null}function parseCallLimits(wire){if(!isRecord2(wire))return null;let consultMinutes=wholeNumber(wire.consult_minutes,1),autoEndMinutes=wholeNumber(wire.auto_end_minutes,0),warnBeforeSeconds=wholeNumber(wire.warn_before_seconds,0);return consultMinutes===null||autoEndMinutes===null||warnBeforeSeconds===null?null:/* @__PURE__ */Object.freeze({consultMinutes:consultMinutes,autoEndMinutes:autoEndMinutes,warnBeforeSeconds:warnBeforeSeconds})}function parseVetCallCredential(wire){if(!isRecord2(wire))return null;let room=wire.room_url??wire.url,token=wire.token;if(typeof room!="string"||typeof token!="string"||!isUsableRoomCredential(room,token))return null;let notice=wire.recording_notice;/* @__PURE__ */
115
+ return Object.freeze({kind:"failed"})}function isRecord2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function isSafeRoomUrl(url){return parseUrl(url.trim())?.protocol==="https:"}function isUsableRoomCredential(roomUrl,token){return isSafeRoomUrl(roomUrl)&&token.trim().length>0}function wholeNumber(value,min){return typeof value=="number"&&Number.isInteger(value)&&value>=min?value:null}function parseCallLimits(wire){if(!isRecord2(wire))return null;let consultMinutes=wholeNumber(wire.consult_minutes,1),autoEndMinutes=wholeNumber(wire.auto_end_minutes,0),warnBeforeSeconds=wholeNumber(wire.warn_before_seconds,0);return consultMinutes===null||autoEndMinutes===null||warnBeforeSeconds===null?null:/* @__PURE__ */Object.freeze({consultMinutes:consultMinutes,autoEndMinutes:autoEndMinutes,warnBeforeSeconds:warnBeforeSeconds})}function parseVetCallCredential(wire){if(!isRecord2(wire))return null;let room=wire.room_url??wire.url,token=wire.token;if(typeof room!="string"||typeof token!="string"||!isUsableRoomCredential(room,token))return null;let notice=wire.recording_notice;/* @__PURE__ */
116
116
  return Object.freeze({roomUrl:room.trim(),token:token,recordingNotice:typeof notice=="boolean"?notice:true,callLimits:parseCallLimits(wire.call_limits)})}function vetCallJoinReason(error){let reason=reasonOf(error.raw);return reason!==null&&reason.length>0?reason:null}function reasonOf(raw){if(!isRecord2(raw))return null;let nested=raw.detail??raw.error,reason=(isRecord2(nested)?nested:raw).reason;return typeof reason=="string"?reason:null}function vetCallJoinRefusal(error){if(error.httpStatus===404)return"unavailable";let reason=reasonOf(error.raw);return reason==="too_early"||reason==="too_late"||reason==="room_not_ready"?reason:reason!==null&&reason.startsWith("status_")?"not_joinable":"unknown"}var BASE="/widget/v1/televet",TELEVET_MESSAGE_THREADS_PATH=`${BASE}/messages/threads`;function televetThreadMessagesCall(petRef){return`${TELEVET_MESSAGE_THREADS_PATH}/${encodeURIComponent(petRef)}/messages`}function televetThreadReadCall(petRef){return`${TELEVET_MESSAGE_THREADS_PATH}/${encodeURIComponent(petRef)}/read`}function televetVisitSummaryCall(consultId){return`${BASE}/consults/${encodeURIComponent(consultId)}/summary`}var VET_MESSAGE_CONTENT_MAX=4e3,VET_MESSAGE_PAGE_DEFAULT=50,VET_MESSAGE_PAGE_MAX=100,stamp=/* @__PURE__ */zod.z.string().min(1).refine(value=>!Number.isNaN(Date.parse(value))),optionalText=/* @__PURE__ */zod.z.string().nullish(),messageSchema=/* @__PURE__ */zod.z.object({message_id:/* @__PURE__ */zod.z.string().min(1),pet_ref:/* @__PURE__ */zod.z.string().min(1),role:/* @__PURE__ */zod.z.enum(["owner","vet","system"]),content:/* @__PURE__ */zod.z.string(),created_at:stamp,sender:/* @__PURE__ */zod.z.object({display_name:optionalText,specialty:optionalText}).nullish(),sender_display_name:optionalText,attachment_count:/* @__PURE__ */zod.z.number().int().nonnegative().nullish()}),threadSchema=/* @__PURE__ */zod.z.object({pet_ref:/* @__PURE__ */zod.z.string().min(1),last_message_at:stamp,unread_count:/* @__PURE__ */zod.z.number().int().nonnegative().nullish(),owner_can_start:/* @__PURE__ */zod.z.boolean().nullish(),last_message:/* @__PURE__ */messageSchema.nullish()}),medicationSchema=/* @__PURE__ */zod.z.object({drug:/* @__PURE__ */zod.z.string().nullish(),strength:optionalText,form:optionalText,sig:optionalText,quantity:/* @__PURE__ */zod.z.union([/* @__PURE__ */zod.z.string(),/* @__PURE__ */zod.z.number()]).nullish(),refills:/* @__PURE__ */zod.z.number().int().nonnegative().nullish()}).passthrough(),summarySchema=/* @__PURE__ */zod.z.object({consult_id:/* @__PURE__ */zod.z.string().min(1),findings_text:/* @__PURE__ */zod.z.string().nullish(),next_steps_text:/* @__PURE__ */zod.z.string().nullish(),medications:/* @__PURE__ */zod.z.array(/* @__PURE__ */zod.z.unknown()).nullish(),product_refs:/* @__PURE__ */zod.z.array(/* @__PURE__ */zod.z.string()).nullish(),action_items:/* @__PURE__ */zod.z.array(/* @__PURE__ */zod.z.string()).nullish(),approved_at:stamp,approved_by_display_name:optionalText,credentials_text:optionalText});function nonBlank(value){let trimmed=value?.trim()??"";return trimmed.length>0?trimmed:null}function toMessage(wire){let vet=wire.role==="vet";/* @__PURE__ */
117
117
  return Object.freeze({messageId:wire.message_id,petRef:wire.pet_ref,role:wire.role,content:wire.content,createdAt:wire.created_at,senderName:vet?nonBlank(wire.sender?.display_name)??nonBlank(wire.sender_display_name):null,senderSpecialty:vet?nonBlank(wire.sender?.specialty):null,attachmentCount:wire.attachment_count??0})}function mapVetMessage(wire){let parsed=messageSchema.safeParse(wire);return parsed.success?toMessage(parsed.data):null}function mapVetMessages(wire){let parsed=zod.z.array(messageSchema).safeParse(wire);return parsed.success?/* @__PURE__ */Object.freeze(parsed.data.map(toMessage)):null}function mapVetThreads(wire){let parsed=zod.z.array(threadSchema).safeParse(wire);return parsed.success?/* @__PURE__ */Object.freeze(parsed.data.map(row2=>/* @__PURE__ */Object.freeze({petRef:row2.pet_ref,lastMessageAt:row2.last_message_at,unreadCount:row2.unread_count??0,ownerCanStart:row2.owner_can_start??true,lastMessage:row2.last_message?toMessage(row2.last_message):null}))):null}function toMedication(wire){let parsed=medicationSchema.safeParse(wire);if(!parsed.success)return null;let drug=nonBlank(parsed.data.drug);if(drug===null)return null;let quantity=parsed.data.quantity;/* @__PURE__ */
118
118
  return Object.freeze({drug:drug,strength:nonBlank(parsed.data.strength),form:nonBlank(parsed.data.form),sig:nonBlank(parsed.data.sig),quantity:quantity==null?null:nonBlank(String(quantity)),refills:parsed.data.refills??null})}function mapVisitSummary(wire){let parsed=summarySchema.safeParse(wire);if(!parsed.success)return null;let s=parsed.data;/* @__PURE__ */
@@ -3,8 +3,8 @@ import { ReactNode, ComponentType, ReactElement } from 'react';
3
3
  import { StyleProp, ViewStyle } from 'react-native';
4
4
  import { P as PetRef } from '../../ids.d-B2GAAifq.cjs';
5
5
  export { B as Brand, _ as __brand } from '../../ids.d-B2GAAifq.cjs';
6
- import { T as TelevetEmptyRosterCause, a as TelevetStateInterestAction$1, b as TelevetMediaShortfall, c as TelevetBookingStep, d as TelevetBookingContext, e as TelevetBookingController, f as TelevetTriageRead, g as TelevetStateInterestWrite, h as TelevetVetThreadTarget, i as TelevetDayPeriod } from '../../bookingCopy.d-CVmpuk9C.cjs';
7
- export { C as CONSULT_MINUTES, N as NO_MEDIA_SHORTFALL, j as TELEVET_BOOKING_BASE, k as TELEVET_BOOKING_COPY, l as TELEVET_BOOKING_STEPS, m as TELEVET_CONSULT_PAGE_LIMIT, n as TELEVET_JOIN_CLOSES_MINUTES_AFTER, o as TELEVET_JOIN_OPENS_MINUTES_BEFORE, p as TELEVET_MESSAGE_THREADS_PATH, q as TelevetAttachmentMeta, r as TelevetAttachmentPolicy, s as TelevetBookingAction, t as TelevetBookingControllerDeps, u as TelevetBookingCopy, v as TelevetBookingDraft, w as TelevetBookingFailure, x as TelevetBookingRefusal, y as TelevetBookingState, z as TelevetEarlyTriage, A as TelevetEmptyRosterView, B as TelevetJoinReadiness, D as TelevetJoinState, E as TelevetMediaRefusal, F as TelevetRead, G as TelevetStateInterestReason, H as TelevetWrite, U as UpcomingTelevetVisitState, I as UseVetThreadOptions, V as VET_MESSAGES_COPY, J as VET_MESSAGE_CONTENT_MAX, K as VET_MESSAGE_PAGE_DEFAULT, L as VET_MESSAGE_PAGE_MAX, M as VetMessage, O as VetMessagePage, P as VetMessageRole, Q as VetMessagesAvailability, R as VetSendFailure, S as VetThread, W as VetThreadState, X as VetThreadsState, Y as VisitSummary, Z as VisitSummaryMedication, _ as VisitSummaryState, $ as attestation, a0 as canConfirm, a1 as canManageTelevetVisit, a2 as createTelevetBookingController, a3 as currentStep, a4 as emptyTelevetDraft, a5 as formatVisitRange, a6 as formatWhen, a7 as formatWhenWithDay, a8 as hasPreviousStep, a9 as initialTelevetBookingState, aa as isHoldExpired, ab as isMediaShortfallEmpty, ac as isSkipped, ad as isTelevetBookingCopyReady, ae as isVetMessagesDark, af as isVetThreadVetFirst, ag as mediaShortfallFromUnsentPicks, ah as splitTelevetVisits, ai as televetBookingKey, aj as televetBookingReducer, ak as televetBookingRefusal, al as televetCancelCall, am as televetConsultCall, an as televetEmptyRosterCause, ao as televetEmptyRosterView, ap as televetHoldCall, aq as televetJoinCall, ar as televetJoinOpensAtMs, as as televetJoinReadiness, at as televetMediaShortfallLines, au as televetRescheduleCall, av as televetThreadMessagesCall, aw as televetThreadReadCall, ax as televetVisitSummaryCall, ay as useEarlyTriage, az as useStateInterest, aA as useTelevetBookConsult, aB as useTelevetBookingAvailable, aC as useTelevetBookingController, aD as useTelevetBookingEntitlement, aE as useTelevetCancellationPolicy, aF as useTelevetClinicians, aG as useTelevetHoldSlot, aH as useTelevetJoin, aI as useTelevetNextSlot, aJ as useTelevetRescheduleConsult, aK as useTelevetSlots, aL as useTelevetStatePolicy, aM as useUpcomingTelevetVisit, aN as useVetThread, aO as useVetThreads, aP as useVisitSummary, aQ as validateBookingBody, aR as vetThreadPetRef, aS as withUnsentPicks } from '../../bookingCopy.d-CVmpuk9C.cjs';
6
+ import { T as TelevetEmptyRosterCause, a as TelevetStateInterestAction$1, b as TelevetMediaShortfall, c as TelevetBookingStep, d as TelevetBookingContext, e as TelevetBookingController, f as TelevetTriageRead, g as TelevetStateInterestWrite, h as TelevetVetThreadTarget, i as TelevetDayPeriod } from '../../bookingCopy.d-BIaCiRuW.cjs';
7
+ export { C as CONSULT_MINUTES, N as NO_MEDIA_SHORTFALL, j as TELEVET_BOOKING_BASE, k as TELEVET_BOOKING_COPY, l as TELEVET_BOOKING_STEPS, m as TELEVET_CONSULT_PAGE_LIMIT, n as TELEVET_JOIN_CLOSES_MINUTES_AFTER, o as TELEVET_JOIN_OPENS_MINUTES_BEFORE, p as TELEVET_MESSAGE_THREADS_PATH, q as TelevetAttachmentMeta, r as TelevetAttachmentPolicy, s as TelevetBookingAction, t as TelevetBookingControllerDeps, u as TelevetBookingCopy, v as TelevetBookingDraft, w as TelevetBookingFailure, x as TelevetBookingRefusal, y as TelevetBookingState, z as TelevetEarlyTriage, A as TelevetEmptyRosterView, B as TelevetJoinReadiness, D as TelevetJoinState, E as TelevetMediaRefusal, F as TelevetRead, G as TelevetStateInterestReason, H as TelevetWrite, U as UpcomingTelevetVisitState, I as UseVetThreadOptions, V as VET_MESSAGES_COPY, J as VET_MESSAGE_CONTENT_MAX, K as VET_MESSAGE_PAGE_DEFAULT, L as VET_MESSAGE_PAGE_MAX, M as VetMessage, O as VetMessagePage, P as VetMessageRole, Q as VetMessagesAvailability, R as VetSendFailure, S as VetThread, W as VetThreadState, X as VetThreadsState, Y as VisitSummary, Z as VisitSummaryMedication, _ as VisitSummaryState, $ as attestation, a0 as canConfirm, a1 as canManageTelevetVisit, a2 as createTelevetBookingController, a3 as currentStep, a4 as emptyTelevetDraft, a5 as formatVisitRange, a6 as formatWhen, a7 as formatWhenWithDay, a8 as hasPreviousStep, a9 as initialTelevetBookingState, aa as isHoldExpired, ab as isMediaShortfallEmpty, ac as isSkipped, ad as isTelevetBookingCopyReady, ae as isVetMessagesDark, af as isVetThreadVetFirst, ag as mediaShortfallFromUnsentPicks, ah as splitTelevetVisits, ai as televetBookingKey, aj as televetBookingReducer, ak as televetBookingRefusal, al as televetCancelCall, am as televetConsultCall, an as televetEmptyRosterCause, ao as televetEmptyRosterView, ap as televetHoldCall, aq as televetJoinCall, ar as televetJoinOpensAtMs, as as televetJoinReadiness, at as televetMediaShortfallLines, au as televetRescheduleCall, av as televetThreadMessagesCall, aw as televetThreadReadCall, ax as televetVisitSummaryCall, ay as useEarlyTriage, az as useStateInterest, aA as useTelevetBookConsult, aB as useTelevetBookingAvailable, aC as useTelevetBookingController, aD as useTelevetBookingEntitlement, aE as useTelevetCancellationPolicy, aF as useTelevetClinicians, aG as useTelevetHoldSlot, aH as useTelevetJoin, aI as useTelevetNextSlot, aJ as useTelevetRescheduleConsult, aK as useTelevetSlots, aL as useTelevetStatePolicy, aM as useUpcomingTelevetVisit, aN as useVetThread, aO as useVetThreads, aP as useVisitSummary, aQ as validateBookingBody, aR as vetThreadPetRef, aS as withUnsentPicks } from '../../bookingCopy.d-BIaCiRuW.cjs';
8
8
  import { T as TelevetConsult, E as EverfurTelevetFlowRequest, b as TelevetCancelReceipt, c as TelevetSlot } from '../../televetGlobal.d-CKwDCbmN.cjs';
9
9
  export { C as CANCELLATION_POLICY_VERSION_MAX, d as CANCEL_REASON_MAX, e as CONSULT_KINDS, f as CONSULT_STATUSES, g as ConsultKind, h as ConsultStatus, M as MEDIA_REFS_MAX, R as REASON_TEXT_MAX, i as TERMINAL_CONSULT_STATUSES, j as TelevetBookingBody, k as TelevetBookingEntitlement, l as TelevetCancellationPolicy, m as TelevetClinician, n as TelevetSlotHold, o as TelevetStatePolicy, p as TelevetTriageVerdict, q as isWellFormedStateCode } from '../../televetGlobal.d-CKwDCbmN.cjs';
10
10
  import { V as VetVisitIntent } from '../../visitIntent.d-D7_yVp1I.cjs';
@@ -13,11 +13,11 @@ export { e as TelevetBookedScreen, f as TelevetBookedScreenProps, c as TelevetCa
13
13
  export { b as VetCallCredential, c as VetCallJoinRefusal, d as VetCallLimits, p as parseVetCallCredential, v as vetCallJoinReason, e as vetCallJoinRefusal } from '../../callRoom.d-B1DoYdJe.cjs';
14
14
  export { E as EverfurError, a as EverfurErrorCategory, b as EverfurErrorCode } from '../../EverfurError.d-8NHtlgzA.cjs';
15
15
  export { E as EverfurResult } from '../../EverfurResult.d-BFH-3s6E.cjs';
16
- export { W as WidgetPet } from '../../petsRepository.d-Daef7u0o.cjs';
17
- import '../../requestFunnel.d-mEu6B-n8.cjs';
16
+ export { W as WidgetPet } from '../../petsRepository.d-BQfWC3d4.cjs';
17
+ import '../../requestFunnel.d-BdpL7gwg.cjs';
18
18
  import '../../ErrorPolicyPort.d-DirW9hgO.cjs';
19
- import '../../config.d-84fNJFv9.cjs';
20
- import '../../identity.d-nRZBzkG2.cjs';
19
+ import '../../config.d-D1xcxALX.cjs';
20
+ import '../../identity.d-COcNGuCJ.cjs';
21
21
  import '../../TelemetryPort.d-BDNr00hu.cjs';
22
22
  import '../../profile.d-CSs1wlXT.cjs';
23
23
 
@@ -3,8 +3,8 @@ import { ReactNode, ComponentType, ReactElement } from 'react';
3
3
  import { StyleProp, ViewStyle } from 'react-native';
4
4
  import { P as PetRef } from '../../ids.d-B2GAAifq.js';
5
5
  export { B as Brand, _ as __brand } from '../../ids.d-B2GAAifq.js';
6
- import { T as TelevetEmptyRosterCause, a as TelevetStateInterestAction$1, b as TelevetMediaShortfall, c as TelevetBookingStep, d as TelevetBookingContext, e as TelevetBookingController, f as TelevetTriageRead, g as TelevetStateInterestWrite, h as TelevetVetThreadTarget, i as TelevetDayPeriod } from '../../bookingCopy.d-BakTjvWw.js';
7
- export { C as CONSULT_MINUTES, N as NO_MEDIA_SHORTFALL, j as TELEVET_BOOKING_BASE, k as TELEVET_BOOKING_COPY, l as TELEVET_BOOKING_STEPS, m as TELEVET_CONSULT_PAGE_LIMIT, n as TELEVET_JOIN_CLOSES_MINUTES_AFTER, o as TELEVET_JOIN_OPENS_MINUTES_BEFORE, p as TELEVET_MESSAGE_THREADS_PATH, q as TelevetAttachmentMeta, r as TelevetAttachmentPolicy, s as TelevetBookingAction, t as TelevetBookingControllerDeps, u as TelevetBookingCopy, v as TelevetBookingDraft, w as TelevetBookingFailure, x as TelevetBookingRefusal, y as TelevetBookingState, z as TelevetEarlyTriage, A as TelevetEmptyRosterView, B as TelevetJoinReadiness, D as TelevetJoinState, E as TelevetMediaRefusal, F as TelevetRead, G as TelevetStateInterestReason, H as TelevetWrite, U as UpcomingTelevetVisitState, I as UseVetThreadOptions, V as VET_MESSAGES_COPY, J as VET_MESSAGE_CONTENT_MAX, K as VET_MESSAGE_PAGE_DEFAULT, L as VET_MESSAGE_PAGE_MAX, M as VetMessage, O as VetMessagePage, P as VetMessageRole, Q as VetMessagesAvailability, R as VetSendFailure, S as VetThread, W as VetThreadState, X as VetThreadsState, Y as VisitSummary, Z as VisitSummaryMedication, _ as VisitSummaryState, $ as attestation, a0 as canConfirm, a1 as canManageTelevetVisit, a2 as createTelevetBookingController, a3 as currentStep, a4 as emptyTelevetDraft, a5 as formatVisitRange, a6 as formatWhen, a7 as formatWhenWithDay, a8 as hasPreviousStep, a9 as initialTelevetBookingState, aa as isHoldExpired, ab as isMediaShortfallEmpty, ac as isSkipped, ad as isTelevetBookingCopyReady, ae as isVetMessagesDark, af as isVetThreadVetFirst, ag as mediaShortfallFromUnsentPicks, ah as splitTelevetVisits, ai as televetBookingKey, aj as televetBookingReducer, ak as televetBookingRefusal, al as televetCancelCall, am as televetConsultCall, an as televetEmptyRosterCause, ao as televetEmptyRosterView, ap as televetHoldCall, aq as televetJoinCall, ar as televetJoinOpensAtMs, as as televetJoinReadiness, at as televetMediaShortfallLines, au as televetRescheduleCall, av as televetThreadMessagesCall, aw as televetThreadReadCall, ax as televetVisitSummaryCall, ay as useEarlyTriage, az as useStateInterest, aA as useTelevetBookConsult, aB as useTelevetBookingAvailable, aC as useTelevetBookingController, aD as useTelevetBookingEntitlement, aE as useTelevetCancellationPolicy, aF as useTelevetClinicians, aG as useTelevetHoldSlot, aH as useTelevetJoin, aI as useTelevetNextSlot, aJ as useTelevetRescheduleConsult, aK as useTelevetSlots, aL as useTelevetStatePolicy, aM as useUpcomingTelevetVisit, aN as useVetThread, aO as useVetThreads, aP as useVisitSummary, aQ as validateBookingBody, aR as vetThreadPetRef, aS as withUnsentPicks } from '../../bookingCopy.d-BakTjvWw.js';
6
+ import { T as TelevetEmptyRosterCause, a as TelevetStateInterestAction$1, b as TelevetMediaShortfall, c as TelevetBookingStep, d as TelevetBookingContext, e as TelevetBookingController, f as TelevetTriageRead, g as TelevetStateInterestWrite, h as TelevetVetThreadTarget, i as TelevetDayPeriod } from '../../bookingCopy.d-DgWvNKD5.js';
7
+ export { C as CONSULT_MINUTES, N as NO_MEDIA_SHORTFALL, j as TELEVET_BOOKING_BASE, k as TELEVET_BOOKING_COPY, l as TELEVET_BOOKING_STEPS, m as TELEVET_CONSULT_PAGE_LIMIT, n as TELEVET_JOIN_CLOSES_MINUTES_AFTER, o as TELEVET_JOIN_OPENS_MINUTES_BEFORE, p as TELEVET_MESSAGE_THREADS_PATH, q as TelevetAttachmentMeta, r as TelevetAttachmentPolicy, s as TelevetBookingAction, t as TelevetBookingControllerDeps, u as TelevetBookingCopy, v as TelevetBookingDraft, w as TelevetBookingFailure, x as TelevetBookingRefusal, y as TelevetBookingState, z as TelevetEarlyTriage, A as TelevetEmptyRosterView, B as TelevetJoinReadiness, D as TelevetJoinState, E as TelevetMediaRefusal, F as TelevetRead, G as TelevetStateInterestReason, H as TelevetWrite, U as UpcomingTelevetVisitState, I as UseVetThreadOptions, V as VET_MESSAGES_COPY, J as VET_MESSAGE_CONTENT_MAX, K as VET_MESSAGE_PAGE_DEFAULT, L as VET_MESSAGE_PAGE_MAX, M as VetMessage, O as VetMessagePage, P as VetMessageRole, Q as VetMessagesAvailability, R as VetSendFailure, S as VetThread, W as VetThreadState, X as VetThreadsState, Y as VisitSummary, Z as VisitSummaryMedication, _ as VisitSummaryState, $ as attestation, a0 as canConfirm, a1 as canManageTelevetVisit, a2 as createTelevetBookingController, a3 as currentStep, a4 as emptyTelevetDraft, a5 as formatVisitRange, a6 as formatWhen, a7 as formatWhenWithDay, a8 as hasPreviousStep, a9 as initialTelevetBookingState, aa as isHoldExpired, ab as isMediaShortfallEmpty, ac as isSkipped, ad as isTelevetBookingCopyReady, ae as isVetMessagesDark, af as isVetThreadVetFirst, ag as mediaShortfallFromUnsentPicks, ah as splitTelevetVisits, ai as televetBookingKey, aj as televetBookingReducer, ak as televetBookingRefusal, al as televetCancelCall, am as televetConsultCall, an as televetEmptyRosterCause, ao as televetEmptyRosterView, ap as televetHoldCall, aq as televetJoinCall, ar as televetJoinOpensAtMs, as as televetJoinReadiness, at as televetMediaShortfallLines, au as televetRescheduleCall, av as televetThreadMessagesCall, aw as televetThreadReadCall, ax as televetVisitSummaryCall, ay as useEarlyTriage, az as useStateInterest, aA as useTelevetBookConsult, aB as useTelevetBookingAvailable, aC as useTelevetBookingController, aD as useTelevetBookingEntitlement, aE as useTelevetCancellationPolicy, aF as useTelevetClinicians, aG as useTelevetHoldSlot, aH as useTelevetJoin, aI as useTelevetNextSlot, aJ as useTelevetRescheduleConsult, aK as useTelevetSlots, aL as useTelevetStatePolicy, aM as useUpcomingTelevetVisit, aN as useVetThread, aO as useVetThreads, aP as useVisitSummary, aQ as validateBookingBody, aR as vetThreadPetRef, aS as withUnsentPicks } from '../../bookingCopy.d-DgWvNKD5.js';
8
8
  import { T as TelevetConsult, E as EverfurTelevetFlowRequest, b as TelevetCancelReceipt, c as TelevetSlot } from '../../televetGlobal.d-CC-DrqkQ.js';
9
9
  export { C as CANCELLATION_POLICY_VERSION_MAX, d as CANCEL_REASON_MAX, e as CONSULT_KINDS, f as CONSULT_STATUSES, g as ConsultKind, h as ConsultStatus, M as MEDIA_REFS_MAX, R as REASON_TEXT_MAX, i as TERMINAL_CONSULT_STATUSES, j as TelevetBookingBody, k as TelevetBookingEntitlement, l as TelevetCancellationPolicy, m as TelevetClinician, n as TelevetSlotHold, o as TelevetStatePolicy, p as TelevetTriageVerdict, q as isWellFormedStateCode } from '../../televetGlobal.d-CC-DrqkQ.js';
10
10
  import { V as VetVisitIntent } from '../../visitIntent.d-D7_yVp1I.js';
@@ -13,11 +13,11 @@ export { e as TelevetBookedScreen, f as TelevetBookedScreenProps, c as TelevetCa
13
13
  export { b as VetCallCredential, c as VetCallJoinRefusal, d as VetCallLimits, p as parseVetCallCredential, v as vetCallJoinReason, e as vetCallJoinRefusal } from '../../callRoom.d-Dqm1rUqT.js';
14
14
  export { E as EverfurError, a as EverfurErrorCategory, b as EverfurErrorCode } from '../../EverfurError.d-8NHtlgzA.js';
15
15
  export { E as EverfurResult } from '../../EverfurResult.d-D_-254ZY.js';
16
- export { W as WidgetPet } from '../../petsRepository.d-BtuooSOW.js';
17
- import '../../requestFunnel.d-Cxt0JqYx.js';
16
+ export { W as WidgetPet } from '../../petsRepository.d-BudLFHVe.js';
17
+ import '../../requestFunnel.d-BPsCHJWf.js';
18
18
  import '../../ErrorPolicyPort.d-68yrE3BE.js';
19
- import '../../config.d-B4-Mrwq2.js';
20
- import '../../identity.d-DxNvhj3a.js';
19
+ import '../../config.d-jTVsAeky.js';
20
+ import '../../identity.d-BEJcHY-5.js';
21
21
  import '../../TelemetryPort.d-BDNr00hu.js';
22
22
  import '../../profile.d-CSs1wlXT.js';
23
23
 
@@ -97,7 +97,7 @@ return Object.freeze({active:bool(r?.active,false)})}var CANCEL_REASON_MAX=240;f
97
97
  /* @__PURE__ */Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),
98
98
  /* @__PURE__ */Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);/* @__PURE__ */Object.freeze(CONTRACT_RETRYABILITY.map(row2=>row2.wireCode));var NORMALIZED_FOLD=/* @__PURE__ */Object.freeze({ValidationException:"validationFailed",AuthorizationException:"authRejected",PaymentRequiredException:"paymentRequired",AccessDeniedException:"accessDenied",ResourceNotFoundException:"resourceNotFound",ConflictException:"conflict",ThrottlingException:"rateLimited",InternalFailureException:"internalError",NotImplementedException:"notImplemented",ServiceUnavailableException:"serviceUnavailable",MethodNotAllowedException:"validationFailed",authExpired:"authExpired",unavailable:"serviceUnavailable",session_required:"sessionRequired",session_revoked:"authExpired",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",unrestrictedKeyRequired:"accessDenied",user_ref_invalid:"validationFailed",event_cursor_invalid:"validationFailed",event_filter_invalid:"validationFailed",event_payload_invalid:"validationFailed",event_type_unknown:"validationFailed",idempotency_key_invalid:"validationFailed",idempotency_key_required:"validationFailed",idempotency_key_reused:"idempotencyConflict",payload_too_large:"validationFailed",webhook_url_rejected:"validationFailed",webhook_endpoint_update_empty:"validationFailed",webhook_endpoint_update_invalid:"validationFailed",event_type_not_available:"conflict",record_subject_not_found:"resourceNotFound",records_consent_required:"conflict",record_species_unsupported:"validationFailed",record_upload_invalid:"validationFailed",FILE_TOO_LARGE:"validationFailed",INVALID_CONTENT_TYPE:"validationFailed",attachment_unreadable:"validationFailed",provider_unsupported:"validationFailed",token_invalid:"validationFailed",device_cipher_unavailable:"serviceUnavailable",email_invalid:"validationFailed",consent_required:"validationFailed",consent_invalid:"validationFailed",consent_scope_wrong_route:"validationFailed",IDEMPOTENCY_KEY_IN_FLIGHT:"idempotencyInFlight",IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST:"idempotencyConflict",DAILY_QUOTA_EXCEEDED:"quotaExceeded",TIER_UPGRADE_REQUIRED:"paymentRequired",not_found:"conversationNotFound",timeout:"streamTimeout",internal_error:"internalError",invalid_request:"validationFailed",invalid_client:"authRejected",invalid_grant:"authRejected",unsupported_grant_type:"validationFailed",invalid_scope:"validationFailed",invalid_target:"validationFailed",invalid_redirect_uri:"validationFailed",invalid_client_metadata:"validationFailed",unsupported_response_type:"validationFailed",access_denied:"accessDenied",slow_down:"rateLimited",mcp_request_not_found:"resourceNotFound",mcp_request_gone:"resourceNotFound",mcp_connection_not_found:"resourceNotFound",mcp_request_conflict:"conflict",sandbox_only:"accessDenied",tenant_has_no_capabilities:"conflict",verify_mint_refused:"accessDenied",verify_mint_rate_limited:"rateLimited",verify_mint_unavailable:"serviceUnavailable",verify_user_ref_invalid:"validationFailed",insufficient_scope:"accessDenied",tenant_filter_invalid:"validationFailed",tenant_resource_not_found:"resourceNotFound",tenant_surface_not_enabled:"conflict",pet_health_species_unsupported:"validationFailed",pet_health_list_removals_unconfirmed:"validationFailed",petRefInUse:"conflict",share_limit_reached:"conflict",pet_not_registered:"resourceNotFound",species_unsupported:"validationFailed",partner_visit_owner_only:"accessDenied",partner_visit_link_conflict:"conflict",partner_visit_pet_already_mapped:"conflict",linked_account_read_only:"conflict",catalog_empty_refused:"conflict",catalog_shrink_refused:"conflict"}),CONTRACT_ERROR_ROWS=/* @__PURE__ */Object.freeze(CONTRACT_RETRYABILITY.map(generated=>/* @__PURE__ */Object.freeze({wireCode:generated.wireCode,envelope:generated.envelope,retryable:generated.retryable,normalized:NORMALIZED_FOLD[generated.wireCode]}))),BY_KEY=new Map(CONTRACT_ERROR_ROWS.map(r=>[r.envelope+r.wireCode.toUpperCase(),r])),ENVELOPE_LOOKUP_ORDER=/* @__PURE__ */Object.freeze(["http_envelope",...[...new Set(CONTRACT_ERROR_ROWS.map(r=>r.envelope))].filter(e=>e!=="http_envelope").sort()]);function contractErrorFor(wireCode,envelope){if(typeof wireCode!="string")return;let key=wireCode.trim().toUpperCase();if(key.length!==0)for(let candidate of[envelope??"http_envelope",...ENVELOPE_LOOKUP_ORDER]){let row2=BY_KEY.get(candidate+key);if(row2)return row2}}var CATEGORY_OF=/* @__PURE__ */Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",identitySignatureRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"invalidRequest",runtimeDisposed:"invalidRequest",conversationNotFound:"notFound",petNotFound:"notFound",resourceNotFound:"notFound",conflict:"conflict",idempotencyConflict:"conflict",idempotencyInFlight:"conflict",streamTimeout:"connection",streamIncomplete:"connection",upstreamLlmTimeout:"connection",serviceUnavailable:"connection",internalError:"server",notImplemented:"server",mediaUploadFailed:"media",moderationBlocked:"policy",unknown:"unknown"});function categoryFor(code){return CATEGORY_OF[code]}function fromWire(wire){let contractRow=contractErrorFor(wire);if(contractRow)return contractRow.normalized;let upper=(wire??"").trim().toUpperCase(),canonical=upper.replace(/[^A-Z0-9]/g,"");if(canonical==="AUTHREJECTED")return"authRejected";if(upper.startsWith("AUTH"))return"authExpired";switch(canonical){case"DAILYQUOTAEXCEEDED":case"QUOTAEXCEEDED":return"quotaExceeded";case"RATELIMITED":case"TOOMANYREQUESTS":case"TELEVETRATELIMITED":return"rateLimited";case"IDEMPOTENCYKEYCONFLICT":case"IDEMPOTENCYCONFLICT":return"idempotencyConflict";case"ACCESSDENIED":case"FORBIDDEN":return"accessDenied";case"IDENTITYSIGNATUREREQUIRED":return"identitySignatureRequired";case"RUNTIMEDISPOSED":return"runtimeDisposed";case"NOTFOUND":case"CONVERSATIONNOTFOUND":return"conversationNotFound";case"PETNOTFOUND":return"petNotFound";case"TIMEOUT":case"STREAMTIMEOUT":return"streamTimeout";case"MEDIAUPLOADFAILED":case"UNRECOGNIZEDVIDEOFORMAT":case"FILETOOSMALL":return"mediaUploadFailed";case"MODERATIONBLOCKED":return"moderationBlocked";case"UPSTREAMLLMTIMEOUT":return"upstreamLlmTimeout";case"INTERNALERROR":case"INTERNALSERVERERROR":return"internalError";case"STREAMINCOMPLETE":case"CHATSTREAMINCOMPLETE":return"streamIncomplete";case"INVALIDANALYSISTYPE":case"INVALIDUPLOADPURPOSE":return"unknown";default:return"unknown"}}var AUTO_RETRYABLE_CODES=/* @__PURE__ */new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function isAutoRetryable(code){return AUTO_RETRYABLE_CODES.has(code)}var RETRYABLE_CONTRACT_CODES=/* @__PURE__ */new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function isRetryableCode(code){return isAutoRetryable(code)||RETRYABLE_CONTRACT_CODES.has(code)}var BACKOFF_BASE_MS=500,BACKOFF_CAP_MS=8e3,MAX_RETRY_ATTEMPTS=4;function backoffDelayMs(attempt,rng=Math.random){let bounded=Math.max(0,attempt),ceiling=Math.min(BACKOFF_BASE_MS*2**bounded,BACKOFF_CAP_MS);return Math.floor(rng()*ceiling)}var ACCESS_DENIED_COPY="This feature isn't available on your account right now.",VALIDATION_FAILED_COPY="Something in that request was not right. Check the details and try again.",USER_FACING_COPY=/* @__PURE__ */Object.freeze({authExpired:"Please sign in again to continue.",authRejected:"Please sign in again to continue.",sessionRequired:"This app needs to be updated to keep using Everfur.",accessDenied:ACCESS_DENIED_COPY,paymentRequired:"This is part of a paid plan.",quotaExceeded:"You have used today's messages. This resets tomorrow.",rateLimited:"You are sending messages quickly. Try again in a few seconds.",validationFailed:VALIDATION_FAILED_COPY,sdkUpdateRequired:"This app needs to be updated to keep using Everfur.",conflict:"That is already running. Wait for it to finish, then try again.",idempotencyConflict:"That message was already delivered.",idempotencyInFlight:"That is still processing. Give it a moment.",conversationNotFound:"This conversation is no longer available.",petNotFound:"We could not find that pet. Please pick a pet and try again.",resourceNotFound:"We could not find that.",streamTimeout:"The response timed out. Tap retry to try again.",mediaUploadFailed:"We could not upload that photo. Please attach it again.",moderationBlocked:"This request cannot be answered here.",upstreamLlmTimeout:"The response timed out. Tap retry to try again.",internalError:"We hit a snag on our end. Please try again.",notImplemented:"That is not available yet.",serviceUnavailable:"That service is briefly unavailable. Try again shortly.",streamIncomplete:"The connection dropped mid-answer. Tap retry to continue.",identitySignatureRequired:ACCESS_DENIED_COPY,runtimeDisposed:VALIDATION_FAILED_COPY,unknown:"Something went wrong. Please try again."}),SESSION_REVOKED_COPY="This session has ended. Please sign in again.",LINKED_ACCOUNT_READ_ONLY="linked_account_read_only";function displayFor(code,wireCode,reasonCode){return code==="conflict"&&reasonCode===LINKED_ACCOUNT_READ_ONLY?ACCESS_DENIED_COPY:(code==="authRejected"||code==="authExpired")&&typeof wireCode=="string"&&wireCode.trim().toLowerCase()==="session_revoked"?SESSION_REVOKED_COPY:userFacingError(code)}function userFacingError(code){return USER_FACING_COPY[code]}function defineHidden(target,key,value){Object.defineProperty(target,key,{value:value,enumerable:false,writable:false,configurable:false})}var REASON_CODE_SHAPE=/^[a-z][a-z0-9_]{0,63}$/;function makeEverfurError(code,opts){let row2=contractErrorFor(opts?.wireCode,opts?.wireEnvelope),linkedReadOnly=code==="conflict"&&opts?.reasonCode===LINKED_ACCOUNT_READ_ONLY,error={code:code,category:categoryFor(code),retryable:opts?.retryable??(linkedReadOnly?false:isRetryableCode(code)),displayMessage:displayFor(code,opts?.wireCode,linkedReadOnly?LINKED_ACCOUNT_READ_ONLY:null)};opts?.httpStatus!==void 0&&(error.httpStatus=opts.httpStatus),opts?.requestId&&(error.requestId=opts.requestId),typeof opts?.reasonCode=="string"&&REASON_CODE_SHAPE.test(opts.reasonCode)&&(error.reasonCode=opts.reasonCode);let wait=opts?.retryAfterSeconds;if(typeof wait=="number"&&Number.isFinite(wait)&&wait>=0&&(error.retryAfterSeconds=Math.round(wait)),row2);return opts?.wireMessage&&defineHidden(error,"wireMessage",opts.wireMessage),opts?.raw!==void 0&&opts.raw!==null&&defineHidden(error,"raw",opts.raw),/* @__PURE__ */Object.freeze(error)}function ok(value,warning){/* @__PURE__ */
99
99
  return Object.freeze({ok:true,value:value})}function err(error){/* @__PURE__ */
100
- return Object.freeze({ok:false,error:error})}var EverfurConfigError=class _EverfurConfigError extends Error{constructor(kind,message){super(message),this.name="EverfurConfigError",this.kind=kind,Object.setPrototypeOf(this,_EverfurConfigError.prototype)}};function mintFailedError(cause,refusal){let message=cause instanceof Error?cause.message:typeof cause=="string"?cause:null;return makeEverfurError("authRejected",{retryable:false,...refusal?.wireCode?{wireCode:refusal.wireCode}:{},...refusal?.requestId?{requestId:refusal.requestId}:{},...message?{wireMessage:message}:{},...cause!=null?{raw:cause}:{}})}function authHeaders(auth){let headers={};return auth.mode==="personalized"?headers.authorization=`Bearer ${auth.token}`:headers["x-everfur-partner-key"]=auth.publishableKey,auth.userRef&&(headers["x-everfur-user-ref"]=auth.userRef),auth.sessionId&&(headers["x-everfur-session-id"]=auth.sessionId),headers}function withAuthHeaders(req,auth){return{...req,headers:{...stripAuthHeaders(req.headers),...authHeaders(auth)}}}function stripAuthHeaders(headers){if(!headers)return{};let out={};for(let[key,value]of Object.entries(headers)){let lower=key.toLowerCase();lower==="authorization"||lower==="x-everfur-partner-key"||(out[key]=value)}return out}async function authedSend(req,ctx){if(ctx.mode==="anonymous")return ctx.transport.request(withAuthHeaders(req,{mode:"anonymous",publishableKey:ctx.publishableKey,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));let token;try{token=await ctx.identity.currentToken()}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause))}let first=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:token,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));if(first.ok||first.error.httpStatus!==401)return first;let refreshed;try{refreshed=await ctx.identity.currentToken({forceRefresh:!0})}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause,{wireCode:wireCodeOf(first.error.raw),requestId:first.error.requestId}))}let retry=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:refreshed,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));return!retry.ok&&retry.error.httpStatus===401?(ctx.identity.reportRejected?.(),err(refusedAfterRemintError(retry.error))):retry}function refusedAfterRemintError(refusal){let raw=refusal.raw,wireCode=wireCodeOf(raw);return makeEverfurError("authRejected",{retryable:false,...refusal.httpStatus!==void 0?{httpStatus:refusal.httpStatus}:{},...refusal.requestId?{requestId:refusal.requestId}:{},...wireCode?{wireCode:wireCode}:{},...refusal.reasonCode?{reasonCode:refusal.reasonCode}:{},...refusal.wireMessage?{wireMessage:refusal.wireMessage}:{},...raw!=null?{raw:raw}:{}})}function wireCodeOf(body){if(typeof body!="object"||body===null)return null;let b=body,code=(typeof b.error=="object"&&b.error!==null?b.error.code:void 0)??b.code;return typeof code=="string"&&code.length>0?code:null}function networkError(cause){return makeEverfurError("internalError",{retryable:true,wireMessage:describeCause(cause)})}function describeCause(cause){return cause instanceof Error?cause.message:typeof cause=="string"?cause:"network request failed"}var FUNNEL_UNARY_TIMEOUT_MS=3e4,RETRY_OVERRIDE_MAX_MS=BACKOFF_CAP_MS*2,IDEMPOTENCY_HEADER="idempotency-key",MUTATING_METHODS=/* @__PURE__ */new Set(["POST","PUT","PATCH","DELETE"]),NOOP_OBSERVER=/* @__PURE__ */Object.freeze({onEvent(){}}),defaultFunnelTimers=/* @__PURE__ */Object.freeze({setTimeout:(handler,ms)=>setTimeout(handler,ms),clearTimeout:handle=>clearTimeout(handle),now:()=>Date.now()});function seededIdempotencyKey(seed){let safe=seed.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return safe.length===0?null:`efs_${safe}`.slice(0,128)}function createRequestFunnel(deps){let observer=deps.observer??NOOP_OBSERVER,timers=deps.timers??defaultFunnelTimers,rng=deps.rng??Math.random,sleep=deps.sleep??((ms,signal)=>delayAbortable(ms,timers,signal)),ceiling=deps.maxAttempts??MAX_RETRY_ATTEMPTS,timeoutMs=deps.unaryTimeoutMs??FUNNEL_UNARY_TIMEOUT_MS,mintKey=deps.newIdempotencyKey??defaultIdempotencyKeyFactory(),emit=event=>{try{observer.onEvent(event)}catch{}};async function send(call,req,opts){let perCallMaxAttempts=opts?.maxAttempts,maxAttempts=Math.max(1,perCallMaxAttempts??ceiling),idempotent=opts?.idempotent??MUTATING_METHODS.has(req.method),seeded=opts?.idempotencyKey===void 0?null:seededIdempotencyKey(opts.idempotencyKey),idempotencyKey=idempotent?seeded??mintKey():null,base=assembleHeaders(req,idempotencyKey),attempt=0;for(;;){let stamp2=extra=>/* @__PURE__ */Object.freeze({call:call,method:req.method,path:req.path,attempt:attempt,...idempotencyKey?{idempotencyKey:idempotencyKey}:{},...extra});emit(stamp2({phase:"attempt"}));let deadline=boundedSignal(timeoutMs,timers),merged=mergeSignals(deadline.signal,req.signal),settled;try{settled=await authedSend({...base,signal:merged.signal},deps.auth)}catch(cause){settled=err(networkError(cause))}finally{merged.dispose(),deadline.cancel()}if(settled.ok)return emit(stamp2({phase:"settled",ok:true,reason:"ok"})),settled;let error=settled.error,decision=decideRetry(error,attempt,{maxAttempts:maxAttempts,rng:rng,now:timers.now(),aborted:req.signal?.aborted===true,...perCallMaxAttempts!==void 0?{perCallMaxAttempts:perCallMaxAttempts}:{},...deps.errorPolicy!==void 0?{policy:deps.errorPolicy}:{}}),settledEvent={ok:false,code:error.code,reason:decision.reason,...error.httpStatus!==void 0?{httpStatus:error.httpStatus}:{},...error.requestId!==void 0?{requestId:error.requestId}:{}};if(!decision.retry)return emit(stamp2({phase:"settled",...settledEvent})),err(error);if(emit(stamp2({phase:"retry",...settledEvent,delayMs:decision.delayMs})),await sleep(decision.delayMs,req.signal),req.signal?.aborted===true)return emit(stamp2({phase:"settled",...settledEvent,reason:"aborted"})),err(error);attempt+=1}}async function authorize(req){return withAuthHeaders(req,await resolveDeviceAuth(deps.auth))}async function*stream(call,req,signal){emit(
100
+ return Object.freeze({ok:false,error:error})}var EverfurConfigError=class _EverfurConfigError extends Error{constructor(kind,message){super(message),this.name="EverfurConfigError",this.kind=kind,Object.setPrototypeOf(this,_EverfurConfigError.prototype)}};function mintFailedError(cause,refusal){let message=cause instanceof Error?cause.message:typeof cause=="string"?cause:null;return makeEverfurError("authRejected",{retryable:false,...refusal?.wireCode?{wireCode:refusal.wireCode}:{},...refusal?.requestId?{requestId:refusal.requestId}:{},...message?{wireMessage:message}:{},...cause!=null?{raw:cause}:{}})}function authHeaders(auth){let headers={};return auth.mode==="personalized"?headers.authorization=`Bearer ${auth.token}`:headers["x-everfur-partner-key"]=auth.publishableKey,auth.userRef&&(headers["x-everfur-user-ref"]=auth.userRef),auth.sessionId&&(headers["x-everfur-session-id"]=auth.sessionId),headers}function withAuthHeaders(req,auth){return{...req,headers:{...stripAuthHeaders(req.headers),...authHeaders(auth)}}}function stripAuthHeaders(headers){if(!headers)return{};let out={};for(let[key,value]of Object.entries(headers)){let lower=key.toLowerCase();lower==="authorization"||lower==="x-everfur-partner-key"||(out[key]=value)}return out}async function authedSend(req,ctx){if(ctx.mode==="anonymous")return ctx.transport.request(withAuthHeaders(req,{mode:"anonymous",publishableKey:ctx.publishableKey,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));let token;try{token=await ctx.identity.currentToken()}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause))}let first=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:token,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));if(first.ok||first.error.httpStatus!==401)return first;let refreshed;try{refreshed=await ctx.identity.currentToken({forceRefresh:!0})}catch(cause){return ctx.identity.reportRejected?.(),err(mintFailedError(cause,{wireCode:wireCodeOf(first.error.raw),requestId:first.error.requestId}))}let retry=await ctx.transport.request(withAuthHeaders(req,{mode:"personalized",token:refreshed,userRef:ctx.userRef,...ctx.sessionId?{sessionId:ctx.sessionId}:{}}));return!retry.ok&&retry.error.httpStatus===401?(ctx.identity.reportRejected?.(),err(refusedAfterRemintError(retry.error))):retry}function refusedAfterRemintError(refusal){let raw=refusal.raw,wireCode=wireCodeOf(raw);return makeEverfurError("authRejected",{retryable:false,...refusal.httpStatus!==void 0?{httpStatus:refusal.httpStatus}:{},...refusal.requestId?{requestId:refusal.requestId}:{},...wireCode?{wireCode:wireCode}:{},...refusal.reasonCode?{reasonCode:refusal.reasonCode}:{},...refusal.wireMessage?{wireMessage:refusal.wireMessage}:{},...raw!=null?{raw:raw}:{}})}function wireCodeOf(body){if(typeof body!="object"||body===null)return null;let b=body,code=(typeof b.error=="object"&&b.error!==null?b.error.code:void 0)??b.code;return typeof code=="string"&&code.length>0?code:null}function parseUrl(raw,base){let Url=globalThis.URL;if(typeof Url=="function"){let url;try{url=base===void 0?new Url(raw):new Url(raw,base)}catch{return null}try{if(url.protocol)return url}catch{}}return parseByPattern(raw)}var WHOLE_URL=/^([a-z][a-z0-9+.-]*):\/\/(?:([^:@/?#]*)(?::([^@/?#]*))?@)?(\[[0-9a-f:.]+\]|[\w.~-]+)(?::(\d*))?(\/[^?#]*)?(\?[^#]*)?(#.*)?$/i,REWRITTEN_BY_STANDARD_PARSER=/[\s\u0000-\u001f\u007f\\]/,DEFAULT_PORTS={"http:":"80","https:":"443"};function parseByPattern(raw,base){let input=raw.trim();let match=REWRITTEN_BY_STANDARD_PARSER.test(input)?null:WHOLE_URL.exec(input);if(match===null)return null;let[,scheme="",username="",password="",host="",portText="",path="",query="",fragment=""]=match,protocol=`${scheme.toLowerCase()}:`,portNumber=Number(portText);if(portNumber>65535)return null;let port=portText===""||String(portNumber)===DEFAULT_PORTS[protocol]?"":String(portNumber),special=DEFAULT_PORTS[protocol]!==void 0,hostPort=host.toLowerCase()+(port&&`:${port}`),pathname=path||(special?"/":""),credentials=username||password?`${username}${password&&`:${password}`}@`:"";return{href:`${protocol}//${credentials}${hostPort}${pathname}${query}${fragment}`,protocol:protocol,username:username,password:password,hostname:host.toLowerCase(),port:port,origin:special?`${protocol}//${hostPort}`:"null",pathname:pathname,search:query==="?"?"":query,hash:fragment==="#"?"":fragment}}function networkError(cause){return makeEverfurError("internalError",{retryable:true,wireMessage:describeCause(cause)})}function describeCause(cause){return cause instanceof Error?cause.message:typeof cause=="string"?cause:"network request failed"}var FUNNEL_UNARY_TIMEOUT_MS=3e4,RETRY_OVERRIDE_MAX_MS=BACKOFF_CAP_MS*2,IDEMPOTENCY_HEADER="idempotency-key",MUTATING_METHODS=/* @__PURE__ */new Set(["POST","PUT","PATCH","DELETE"]),NOOP_OBSERVER=/* @__PURE__ */Object.freeze({onEvent(){}}),defaultFunnelTimers=/* @__PURE__ */Object.freeze({setTimeout:(handler,ms)=>setTimeout(handler,ms),clearTimeout:handle=>clearTimeout(handle),now:()=>Date.now()});function seededIdempotencyKey(seed){let safe=seed.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return safe.length===0?null:`efs_${safe}`.slice(0,128)}function createRequestFunnel(deps){let observer=deps.observer??NOOP_OBSERVER,timers=deps.timers??defaultFunnelTimers,rng=deps.rng??Math.random,sleep=deps.sleep??((ms,signal)=>delayAbortable(ms,timers,signal)),ceiling=deps.maxAttempts??MAX_RETRY_ATTEMPTS,timeoutMs=deps.unaryTimeoutMs??FUNNEL_UNARY_TIMEOUT_MS,mintKey=deps.newIdempotencyKey??defaultIdempotencyKeyFactory(),emit=event=>{try{observer.onEvent(event)}catch{}};async function send(call,req,opts){let perCallMaxAttempts=opts?.maxAttempts,maxAttempts=Math.max(1,perCallMaxAttempts??ceiling),idempotent=opts?.idempotent??MUTATING_METHODS.has(req.method),seeded=opts?.idempotencyKey===void 0?null:seededIdempotencyKey(opts.idempotencyKey),idempotencyKey=idempotent?seeded??mintKey():null,base=assembleHeaders(req,idempotencyKey),attempt=0;for(;;){let stamp2=extra=>/* @__PURE__ */Object.freeze({call:call,method:req.method,path:req.path,attempt:attempt,...idempotencyKey?{idempotencyKey:idempotencyKey}:{},...extra});emit(stamp2({phase:"attempt"}));let deadline=boundedSignal(timeoutMs,timers),merged=mergeSignals(deadline.signal,req.signal),settled;try{settled=await authedSend({...base,signal:merged.signal},deps.auth)}catch(cause){settled=err(networkError(cause))}finally{merged.dispose(),deadline.cancel()}if(settled.ok)return emit(stamp2({phase:"settled",ok:true,reason:"ok"})),settled;let error=settled.error,decision=decideRetry(error,attempt,{maxAttempts:maxAttempts,rng:rng,now:timers.now(),aborted:req.signal?.aborted===true,...perCallMaxAttempts!==void 0?{perCallMaxAttempts:perCallMaxAttempts}:{},...deps.errorPolicy!==void 0?{policy:deps.errorPolicy}:{}}),settledEvent={ok:false,code:error.code,reason:decision.reason,...error.httpStatus!==void 0?{httpStatus:error.httpStatus}:{},...error.requestId!==void 0?{requestId:error.requestId}:{}};if(!decision.retry)return emit(stamp2({phase:"settled",...settledEvent})),err(error);if(emit(stamp2({phase:"retry",...settledEvent,delayMs:decision.delayMs})),await sleep(decision.delayMs,req.signal),req.signal?.aborted===true)return emit(stamp2({phase:"settled",...settledEvent,reason:"aborted"})),err(error);attempt+=1}}async function authorize(req){return withAuthHeaders(req,await resolveDeviceAuth(deps.auth))}async function*stream(call,req,signal){emit(
101
101
  /* @__PURE__ */Object.freeze({call:call,phase:"stream.open",method:req.method,path:req.path,attempt:0}));try{yield*deps.auth.transport.stream(req,signal)}catch{yield errorFrame({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null})}}/* @__PURE__ */
102
102
  return Object.freeze({send:send,authorize:authorize,stream:stream})}function assembleHeaders(req,idempotencyKey){let headers={};for(let[key,value]of Object.entries(req.headers??{}))key.toLowerCase()!==IDEMPOTENCY_HEADER&&(headers[key]=value);return idempotencyKey!==null&&(headers["Idempotency-Key"]=idempotencyKey),{...req,headers:headers}}function defaultIdempotencyKeyFactory(){let counter=0;return()=>`efk_${Date.now().toString(36)}_${(counter++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}var POLICY_MAX_ATTEMPTS_CAP=10;function decideRetry(error,attempt,ctx){if(ctx.aborted)return{retry:false,reason:"aborted"};let throttle=throttleKind(error);if(throttle==="quota")return{retry:false,reason:"daily-quota-exhausted"};if(throttle!=="burst"&&!isAutoRetryable(error.code))return{retry:false,reason:"terminal-code"};let reason=throttle==="burst"?"burst-throttle":"retryable-code";if((()=>{if(ctx.policy===void 0)return false;try{return!ctx.policy.shouldRetry(error.code,attempt)}catch{return false}})())return{retry:false,reason:"terminal-code"};let policyCeiling=()=>{if(ctx.policy===void 0)return null;let raw;try{raw=ctx.policy.maxAttempts(error.code)}catch{return null}return typeof raw!="number"||!Number.isFinite(raw)?null:Math.max(1,Math.min(POLICY_MAX_ATTEMPTS_CAP,Math.floor(raw)))},ceiling=ctx.perCallMaxAttempts??policyCeiling()??ctx.maxAttempts;if(attempt+1>=ceiling)return{retry:false,reason:"attempts-exhausted"};let override=retryOverrideMs(error,ctx.now);return override!==null?override>RETRY_OVERRIDE_MAX_MS?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:reason,delayMs:override}:{retry:true,reason:reason,delayMs:backoffDelayMs(attempt,ctx.rng)}}function throttleKind(error){let code=error.code==="unknown"?fromWire(rawWireCode(error.raw)):error.code;return code==="quotaExceeded"?"quota":code==="rateLimited"||error.httpStatus===429?"burst":null}function retryOverrideMs(error,now){let at=findResetsAt(error.raw);if(at!==null){let delta=at-now;return delta>0?delta:0}let wait=findRetryAfterSeconds(error.raw);return wait===null?null:Math.round(wait*1e3)}function findRetryAfterSeconds(raw){for(let scope of candidateScopes(raw)){let value=scope.retry_after_seconds;if(typeof value=="number"&&Number.isFinite(value)&&value>=0)return value}return null}function findResetsAt(raw){for(let scope of candidateScopes(raw)){let value=scope.resets_at,parsed=parseInstantMs(value);if(parsed!==null)return parsed}return null}function candidateScopes(raw){if(!isRecord(raw))return[];let out=[raw];for(let nested of["error","detail"]){let value=raw[nested];isRecord(value)&&out.push(value)}return out}function parseInstantMs(value){if(typeof value=="number"&&Number.isFinite(value))return value<1e11?Math.round(value*1e3):Math.round(value);if(typeof value=="string"&&value.trim().length>0){let parsed=Date.parse(value);return Number.isFinite(parsed)?parsed:null}return null}function rawWireCode(raw){for(let scope of candidateScopes(raw)){let code=scope.code;if(typeof code=="string"&&code.length>0)return code}return null}function isRecord(value){return typeof value=="object"&&value!==null}async function resolveDeviceAuth(auth){return auth.mode==="anonymous"?{mode:"anonymous",publishableKey:auth.publishableKey,userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}:{mode:"personalized",token:await auth.identity.currentToken(),userRef:auth.userRef,...auth.sessionId?{sessionId:auth.sessionId}:{}}}function boundedSignal(ms,timers){let ctrl=new AbortController,handle=timers.setTimeout(()=>ctrl.abort(),ms);return{signal:ctrl.signal,cancel:()=>timers.clearTimeout(handle)}}function mergeSignals(deadline,caller){let noop=()=>{};if(!caller)return{signal:deadline,dispose:noop};let ctrl=new AbortController;if(deadline.aborted||caller.aborted)return ctrl.abort(),{signal:ctrl.signal,dispose:noop};let onAbort=()=>ctrl.abort();return deadline.addEventListener("abort",onAbort,{once:true}),caller.addEventListener("abort",onAbort,{once:true}),{signal:ctrl.signal,dispose:()=>{deadline.removeEventListener("abort",onAbort),caller.removeEventListener("abort",onAbort)}}}function delayAbortable(ms,timers,signal){return ms<=0||signal?.aborted===true?Promise.resolve():new Promise(resolve=>{let handle=timers.setTimeout(()=>{signal?.removeEventListener("abort",onAbort),resolve()},ms),onAbort=()=>{timers.clearTimeout(handle),resolve()};signal?.addEventListener("abort",onAbort,{once:true})})}var TELEVET_ATTACHMENT_MIME_TYPES=/* @__PURE__ */Object.freeze(["image/jpeg","image/png","image/webp","image/heic","image/heif","application/pdf","text/csv","video/mp4","video/quicktime"]),TELEVET_ATTACHMENT_MAX_BYTES=25*1024*1024,TELEVET_ATTACHMENT_VIDEO_MAX_BYTES=200*1024*1024,SUFFIX_TYPES=[[".jpg","image/jpeg"],[".jpeg","image/jpeg"],[".png","image/png"],[".webp","image/webp"],[".heic","image/heic"],[".heif","image/heif"],[".pdf","application/pdf"],[".csv","text/csv"],[".mp4","video/mp4"],[".mov","video/quicktime"]];function televetAttachmentContentType(filename,mimeType){let direct=(mimeType??"").trim().toLowerCase();if(direct==="image/jpg")return"image/jpeg";if(TELEVET_ATTACHMENT_MIME_TYPES.includes(direct))return direct;if(direct.length>0)return null;let name=filename.toLowerCase();return SUFFIX_TYPES.find(([suffix])=>name.endsWith(suffix))?.[1]??null}function televetAttachmentRefusal(pick2){let type=televetAttachmentContentType(pick2.filename,pick2.mimeType);if(type===null)return"type";if(!Number.isFinite(pick2.fileSize)||pick2.fileSize<=0)return"unreadable";let ceiling=type.startsWith("video/")?TELEVET_ATTACHMENT_VIDEO_MAX_BYTES:TELEVET_ATTACHMENT_MAX_BYTES;return pick2.fileSize<=ceiling?null:"size"}function parseTelevetAttachmentPolicy(raw){if(typeof raw!="object"||raw===null)return null;let o=raw,str4=v=>typeof v=="string"&&v.length>0?v:null,num3=v=>typeof v=="number"&&Number.isFinite(v)?v:null,uploadUrl=str4(o.upload_url),s3Key=str4(o.s3_key);if(uploadUrl===null||s3Key===null)return null;let fields={},rawFields=o.upload_fields;if(typeof rawFields=="object"&&rawFields!==null)for(let[key,value]of Object.entries(rawFields))typeof value=="string"&&(fields[key]=value);/* @__PURE__ */
103
103
  return Object.freeze({upload_id:str4(o.upload_id)??"",upload_url:uploadUrl,upload_fields:/* @__PURE__ */Object.freeze(fields),expires_in_seconds:num3(o.expires_in_seconds)??0,max_content_length:num3(o.max_content_length)??TELEVET_ATTACHMENT_MAX_BYTES,s3_key:s3Key,purpose:str4(o.purpose)})}function wireCodeOf2(raw){if(typeof raw!="object"||raw===null)return null;let scopes=[raw,raw.detail,raw.error];for(let scope of scopes)if(!(typeof scope!="object"||scope===null))for(let key of["error","code"]){let value=scope[key];if(typeof value=="string"&&value.length>0)return value}return null}function televetAttachmentInitiateFailure(error){if(error.httpStatus===404)return"dark";if(error.httpStatus===400){let code=wireCodeOf2(error.raw);if(code==="FILE_TOO_LARGE")return"size";if(code==="INVALID_CONTENT_TYPE")return"type"}return"failed"}var TELEVET_BOOKING_NOT_LIVE="televet_booking_not_live";function televetBookingNotLiveError(status){return makeEverfurError("conflict",{retryable:false,reasonCode:TELEVET_BOOKING_NOT_LIVE,wireMessage:`the booking was answered with a consult whose status is ${status}, which is not a live visit`})}var TELEVET_BOOKING_KEY_REUSED="televet_booking_key_reused",KEY_REUSED_WIRE_CODE="IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST";function foldTelevetBookingKeyReused(error){return error.httpStatus!==409||error.reasonCode===TELEVET_BOOKING_KEY_REUSED||details(error)?.code!==KEY_REUSED_WIRE_CODE?error:makeEverfurError(error.code,{retryable:false,httpStatus:409,...error.requestId!==void 0?{requestId:error.requestId}:{},wireCode:KEY_REUSED_WIRE_CODE,reasonCode:TELEVET_BOOKING_KEY_REUSED,...error.wireMessage!==void 0?{wireMessage:error.wireMessage}:{},raw:error.raw})}function details(error){let raw=error.raw;if(typeof raw!="object"||raw===null)return null;let direct=raw,nested=direct.detail??direct.error;return typeof nested=="object"&&nested!==null?nested:direct}function categoriesOf(error){let raw=details(error)?.categories;return Array.isArray(raw)?/* @__PURE__ */Object.freeze(raw.filter(c=>typeof c=="string")):/* @__PURE__ */Object.freeze([])}function retryAfterOf(error){let raw=details(error)?.retry_after_seconds;return typeof raw=="number"&&Number.isFinite(raw)&&raw>0?raw:null}function messageOf(error){let wire=error.wireMessage;if(typeof wire=="string"&&wire.trim().length>0)return wire.trim();let raw=details(error)?.message;return typeof raw=="string"&&raw.trim().length>0?raw.trim():null}function codeOf(error){let reason=error.reasonCode;if(typeof reason=="string"&&reason.length>0)return reason;let raw=details(error),code=raw?.code??raw?.error_code;return typeof code=="string"&&code.length>0?code:null}function televetBookingRefusal(error){let status=error.httpStatus;if(status===402)/* @__PURE__ */return Object.freeze({kind:"not_entitled"});if(status===429||error.code==="rateLimited"||error.code==="quotaExceeded")/* @__PURE__ */
@@ -112,7 +112,7 @@ return Object.freeze({kind:"slot_taken"});case"televet_clinician_cannot_prescrib
112
112
  return Object.freeze({kind:"clinician_unavailable"});case"televet_membership_conflict":/* @__PURE__ */
113
113
  return Object.freeze({kind:"not_entitled"});case"televet_registry_unavailable":/* @__PURE__ */
114
114
  return Object.freeze({kind:"failed"})}/* @__PURE__ */
115
- return Object.freeze({kind:"failed"})}function isSafeRoomUrl(url){try{return new URL(url.trim()).protocol==="https:"}catch{return false}}function isUsableRoomCredential(roomUrl,token){return isSafeRoomUrl(roomUrl)&&token.trim().length>0}function isRecord2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function wholeNumber(value,min){return typeof value=="number"&&Number.isInteger(value)&&value>=min?value:null}function parseCallLimits(wire){if(!isRecord2(wire))return null;let consultMinutes=wholeNumber(wire.consult_minutes,1),autoEndMinutes=wholeNumber(wire.auto_end_minutes,0),warnBeforeSeconds=wholeNumber(wire.warn_before_seconds,0);return consultMinutes===null||autoEndMinutes===null||warnBeforeSeconds===null?null:/* @__PURE__ */Object.freeze({consultMinutes:consultMinutes,autoEndMinutes:autoEndMinutes,warnBeforeSeconds:warnBeforeSeconds})}function parseVetCallCredential(wire){if(!isRecord2(wire))return null;let room=wire.room_url??wire.url,token=wire.token;if(typeof room!="string"||typeof token!="string"||!isUsableRoomCredential(room,token))return null;let notice=wire.recording_notice;/* @__PURE__ */
115
+ return Object.freeze({kind:"failed"})}function isRecord2(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function isSafeRoomUrl(url){return parseUrl(url.trim())?.protocol==="https:"}function isUsableRoomCredential(roomUrl,token){return isSafeRoomUrl(roomUrl)&&token.trim().length>0}function wholeNumber(value,min){return typeof value=="number"&&Number.isInteger(value)&&value>=min?value:null}function parseCallLimits(wire){if(!isRecord2(wire))return null;let consultMinutes=wholeNumber(wire.consult_minutes,1),autoEndMinutes=wholeNumber(wire.auto_end_minutes,0),warnBeforeSeconds=wholeNumber(wire.warn_before_seconds,0);return consultMinutes===null||autoEndMinutes===null||warnBeforeSeconds===null?null:/* @__PURE__ */Object.freeze({consultMinutes:consultMinutes,autoEndMinutes:autoEndMinutes,warnBeforeSeconds:warnBeforeSeconds})}function parseVetCallCredential(wire){if(!isRecord2(wire))return null;let room=wire.room_url??wire.url,token=wire.token;if(typeof room!="string"||typeof token!="string"||!isUsableRoomCredential(room,token))return null;let notice=wire.recording_notice;/* @__PURE__ */
116
116
  return Object.freeze({roomUrl:room.trim(),token:token,recordingNotice:typeof notice=="boolean"?notice:true,callLimits:parseCallLimits(wire.call_limits)})}function vetCallJoinReason(error){let reason=reasonOf(error.raw);return reason!==null&&reason.length>0?reason:null}function reasonOf(raw){if(!isRecord2(raw))return null;let nested=raw.detail??raw.error,reason=(isRecord2(nested)?nested:raw).reason;return typeof reason=="string"?reason:null}function vetCallJoinRefusal(error){if(error.httpStatus===404)return"unavailable";let reason=reasonOf(error.raw);return reason==="too_early"||reason==="too_late"||reason==="room_not_ready"?reason:reason!==null&&reason.startsWith("status_")?"not_joinable":"unknown"}var BASE="/widget/v1/televet",TELEVET_MESSAGE_THREADS_PATH=`${BASE}/messages/threads`;function televetThreadMessagesCall(petRef){return`${TELEVET_MESSAGE_THREADS_PATH}/${encodeURIComponent(petRef)}/messages`}function televetThreadReadCall(petRef){return`${TELEVET_MESSAGE_THREADS_PATH}/${encodeURIComponent(petRef)}/read`}function televetVisitSummaryCall(consultId){return`${BASE}/consults/${encodeURIComponent(consultId)}/summary`}var VET_MESSAGE_CONTENT_MAX=4e3,VET_MESSAGE_PAGE_DEFAULT=50,VET_MESSAGE_PAGE_MAX=100,stamp=/* @__PURE__ */z.string().min(1).refine(value=>!Number.isNaN(Date.parse(value))),optionalText=/* @__PURE__ */z.string().nullish(),messageSchema=/* @__PURE__ */z.object({message_id:/* @__PURE__ */z.string().min(1),pet_ref:/* @__PURE__ */z.string().min(1),role:/* @__PURE__ */z.enum(["owner","vet","system"]),content:/* @__PURE__ */z.string(),created_at:stamp,sender:/* @__PURE__ */z.object({display_name:optionalText,specialty:optionalText}).nullish(),sender_display_name:optionalText,attachment_count:/* @__PURE__ */z.number().int().nonnegative().nullish()}),threadSchema=/* @__PURE__ */z.object({pet_ref:/* @__PURE__ */z.string().min(1),last_message_at:stamp,unread_count:/* @__PURE__ */z.number().int().nonnegative().nullish(),owner_can_start:/* @__PURE__ */z.boolean().nullish(),last_message:/* @__PURE__ */messageSchema.nullish()}),medicationSchema=/* @__PURE__ */z.object({drug:/* @__PURE__ */z.string().nullish(),strength:optionalText,form:optionalText,sig:optionalText,quantity:/* @__PURE__ */z.union([/* @__PURE__ */z.string(),/* @__PURE__ */z.number()]).nullish(),refills:/* @__PURE__ */z.number().int().nonnegative().nullish()}).passthrough(),summarySchema=/* @__PURE__ */z.object({consult_id:/* @__PURE__ */z.string().min(1),findings_text:/* @__PURE__ */z.string().nullish(),next_steps_text:/* @__PURE__ */z.string().nullish(),medications:/* @__PURE__ */z.array(/* @__PURE__ */z.unknown()).nullish(),product_refs:/* @__PURE__ */z.array(/* @__PURE__ */z.string()).nullish(),action_items:/* @__PURE__ */z.array(/* @__PURE__ */z.string()).nullish(),approved_at:stamp,approved_by_display_name:optionalText,credentials_text:optionalText});function nonBlank(value){let trimmed=value?.trim()??"";return trimmed.length>0?trimmed:null}function toMessage(wire){let vet=wire.role==="vet";/* @__PURE__ */
117
117
  return Object.freeze({messageId:wire.message_id,petRef:wire.pet_ref,role:wire.role,content:wire.content,createdAt:wire.created_at,senderName:vet?nonBlank(wire.sender?.display_name)??nonBlank(wire.sender_display_name):null,senderSpecialty:vet?nonBlank(wire.sender?.specialty):null,attachmentCount:wire.attachment_count??0})}function mapVetMessage(wire){let parsed=messageSchema.safeParse(wire);return parsed.success?toMessage(parsed.data):null}function mapVetMessages(wire){let parsed=z.array(messageSchema).safeParse(wire);return parsed.success?/* @__PURE__ */Object.freeze(parsed.data.map(toMessage)):null}function mapVetThreads(wire){let parsed=z.array(threadSchema).safeParse(wire);return parsed.success?/* @__PURE__ */Object.freeze(parsed.data.map(row2=>/* @__PURE__ */Object.freeze({petRef:row2.pet_ref,lastMessageAt:row2.last_message_at,unreadCount:row2.unread_count??0,ownerCanStart:row2.owner_can_start??true,lastMessage:row2.last_message?toMessage(row2.last_message):null}))):null}function toMedication(wire){let parsed=medicationSchema.safeParse(wire);if(!parsed.success)return null;let drug=nonBlank(parsed.data.drug);if(drug===null)return null;let quantity=parsed.data.quantity;/* @__PURE__ */
118
118
  return Object.freeze({drug:drug,strength:nonBlank(parsed.data.strength),form:nonBlank(parsed.data.form),sig:nonBlank(parsed.data.sig),quantity:quantity==null?null:nonBlank(String(quantity)),refills:parsed.data.refills??null})}function mapVisitSummary(wire){let parsed=summarySchema.safeParse(wire);if(!parsed.success)return null;let s=parsed.data;/* @__PURE__ */