@everfur/sdk 0.5.0 → 0.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +375 -0
- package/dist/BookedScreen-BJPbXLCG.d.ts +54 -0
- package/dist/BookedScreen-Cnld-jB_.d.cts +54 -0
- package/dist/{Chat-TA-aTcVF.d.cts → Chat-B43wIXCv.d.cts} +3 -3
- package/dist/{Chat-BOX-03ho.d.ts → Chat-my5aJLz5.d.ts} +3 -3
- package/dist/{DepthViews-DSFyaSeL.d.cts → DepthViews-BBTv9VAs.d.cts} +1 -1
- package/dist/{DepthViews-Cviea-ri.d.cts → DepthViews-BLK0kgza.d.cts} +1 -1
- package/dist/{DepthViews-CgjX2AJ5.d.ts → DepthViews-CNqAyjne.d.ts} +1 -1
- package/dist/{DepthViews-D2dRqWRq.d.ts → DepthViews-G-7YRtOX.d.ts} +1 -1
- package/dist/animations/index.cjs +1 -1
- package/dist/animations/index.d.cts +3 -3
- package/dist/animations/index.d.ts +3 -3
- package/dist/animations/index.js +1 -1
- package/dist/{attachments-DHvnITuE.d.cts → attachments-CEmT52IA.d.cts} +5 -5
- package/dist/{attachments-oD5U2fXI.d.ts → attachments-CMNWE6YT.d.ts} +2 -2
- package/dist/{attachments-C_vtFu2f.d.ts → attachments-DU1djTNd.d.ts} +5 -5
- package/dist/{attachments-pIdGOQfm.d.cts → attachments-ZyjWsZdI.d.cts} +2 -2
- package/dist/{bookingCopy-CJir9mjb.d.ts → bookingCopy-BVhEt1bj.d.ts} +38 -200
- package/dist/{bookingCopy-DfuA13dh.d.cts → bookingCopy-ChZR5mtd.d.cts} +38 -200
- package/dist/bookingTypes-DCs8mmBb.d.cts +188 -0
- package/dist/bookingTypes-DCs8mmBb.d.ts +188 -0
- package/dist/{callCopy-rDH9JTFo.d.cts → callCopy-CPe9mbwG.d.cts} +7 -2
- package/dist/{callCopy-rDH9JTFo.d.ts → callCopy-CPe9mbwG.d.ts} +7 -2
- package/dist/{casesRepository-DHgIYKN9.d.ts → casesRepository-C5zrCcaE.d.ts} +1 -1
- package/dist/{casesRepository-B-Eg8ZJ3.d.cts → casesRepository-q2ak9AW0.d.cts} +1 -1
- package/dist/chat/index.cjs +1 -1
- package/dist/chat/index.d.cts +14 -10
- package/dist/chat/index.d.ts +14 -10
- package/dist/chat/index.js +1 -1
- package/dist/client/index.cjs +5 -5
- package/dist/client/index.d.cts +6 -6
- package/dist/client/index.d.ts +6 -6
- package/dist/client/index.js +5 -5
- package/dist/{config-ClI7QxB0.d.ts → config-DBpKJJbg.d.ts} +1 -1
- package/dist/{config-DAFbf721.d.cts → config-jocy3q66.d.cts} +1 -1
- package/dist/consent/index.cjs +1 -1
- package/dist/consent/index.d.cts +5 -5
- package/dist/consent/index.d.ts +5 -5
- package/dist/consent/index.js +1 -1
- package/dist/{context-B-dUM1Qf.d.cts → context-BfVBRgro.d.cts} +5 -5
- package/dist/{context-CZbgF_OH.d.ts → context-C3n9s4aG.d.ts} +5 -5
- package/dist/{copy-CneuYdrO.d.cts → copy-IysFx8yL.d.cts} +2 -2
- package/dist/{copy-CeRH3NXy.d.ts → copy-KP91zgtW.d.ts} +2 -2
- package/dist/core/index.cjs +7 -7
- package/dist/core/index.d.cts +12 -12
- package/dist/core/index.d.ts +12 -12
- package/dist/core/index.js +7 -7
- package/dist/{depth-DO3Ko_qs.d.ts → depth-BsMLLrQo.d.ts} +2 -2
- package/dist/{depth-B3NFKlF9.d.cts → depth-O9kiVUjs.d.cts} +2 -2
- package/dist/{entitlementRepository-74kW5mK0.d.ts → entitlementRepository-CHsY2kF3.d.ts} +2 -2
- package/dist/{entitlementRepository-m6zLUmiB.d.cts → entitlementRepository-DIG16pso.d.cts} +2 -2
- package/dist/{identity-C7uxGwfT.d.cts → identity-D7GKfOE7.d.cts} +1 -1
- package/dist/{identity-CLAUq-K4.d.ts → identity-k8nCQ_qM.d.ts} +1 -1
- package/dist/index.cjs +6 -6
- package/dist/index.d.cts +13 -13
- package/dist/index.d.ts +13 -13
- package/dist/index.js +6 -6
- package/dist/notifications/index.cjs +2 -2
- package/dist/notifications/index.d.cts +2 -2
- package/dist/notifications/index.d.ts +2 -2
- package/dist/notifications/index.js +2 -2
- package/dist/{pets-BoB5B7kp.d.cts → pets-Bod_DDiW.d.cts} +1 -1
- package/dist/{pets-w4M9d-Dn.d.ts → pets-C_QX8s5f.d.ts} +1 -1
- package/dist/{petsRepository-DZZoEG3r.d.cts → petsRepository-B3vr628I.d.cts} +1 -1
- package/dist/{petsRepository-BjKJ8UsN.d.ts → petsRepository-DdzgINfF.d.ts} +1 -1
- package/dist/photo/index.cjs +1 -1
- package/dist/photo/index.js +1 -1
- package/dist/{ports-C2EVK416.d.cts → ports-BSm48zIC.d.cts} +16 -5
- package/dist/{ports-BO3bzTJg.d.ts → ports-DHhxhn95.d.ts} +16 -5
- package/dist/records/depth/index.cjs +2 -2
- package/dist/records/depth/index.d.cts +7 -7
- package/dist/records/depth/index.d.ts +7 -7
- package/dist/records/depth/index.js +2 -2
- package/dist/records/index.cjs +3 -3
- package/dist/records/index.d.cts +10 -10
- package/dist/records/index.d.ts +10 -10
- package/dist/records/index.js +3 -3
- package/dist/{requestFunnel-D7ipek3e.d.ts → requestFunnel-CTG-wNc3.d.ts} +2 -2
- package/dist/{requestFunnel-Djjwgoe9.d.cts → requestFunnel-Dcjyh0j2.d.cts} +2 -2
- package/dist/{runtimeTypes-D2C9uD85.d.cts → runtimeTypes-4qptUulD.d.cts} +4 -4
- package/dist/{runtimeTypes-CTL3yToK.d.ts → runtimeTypes-CmpdQaE2.d.ts} +4 -4
- package/dist/server/events/index.cjs +1 -1
- package/dist/server/events/index.d.cts +2 -2
- package/dist/server/events/index.d.ts +2 -2
- package/dist/server/events/index.js +1 -1
- package/dist/server/index.cjs +2 -2
- package/dist/server/index.d.cts +3 -3
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +2 -2
- package/dist/televet/booking/index.cjs +1 -1
- package/dist/televet/booking/index.d.cts +31 -17
- package/dist/televet/booking/index.d.ts +31 -17
- package/dist/televet/booking/index.js +1 -1
- package/dist/televet/call/index.cjs +1 -1
- package/dist/televet/call/index.d.cts +13 -1
- package/dist/televet/call/index.d.ts +13 -1
- package/dist/televet/call/index.js +1 -1
- package/dist/televet/index.cjs +1 -1
- package/dist/televet/index.js +1 -1
- package/dist/testing/index.cjs +3 -3
- package/dist/testing/index.d.cts +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +3 -3
- package/dist/testing/rn/index.cjs +1 -1
- package/dist/testing/rn/index.d.cts +7 -7
- package/dist/testing/rn/index.d.ts +7 -7
- package/dist/testing/rn/index.js +1 -1
- package/dist/testing/web/index.cjs +1 -1
- package/dist/testing/web/index.d.cts +7 -7
- package/dist/testing/web/index.d.ts +7 -7
- package/dist/testing/web/index.js +1 -1
- package/dist/{timelineRows-CzR1T2DR.d.cts → timelineRows-BkLhRUDt.d.cts} +1 -1
- package/dist/{timelineRows-7yFNK_rU.d.ts → timelineRows-Dp4ZSnAo.d.ts} +1 -1
- package/dist/{uploadTransport-DKJHs3Yj.d.cts → uploadTransport-C1p8FuG8.d.cts} +5 -1
- package/dist/{uploadTransport-D0M0T4hN.d.ts → uploadTransport-bZIKBTyK.d.ts} +5 -1
- package/dist/{useRecordsDepth-Bnw36jPr.d.cts → useRecordsDepth-DRNry1r9.d.cts} +1 -1
- package/dist/{useRecordsDepth-DFF7Faxx.d.ts → useRecordsDepth-DnDhTaUL.d.ts} +1 -1
- package/dist/video/index.cjs +1 -1
- package/dist/video/index.js +1 -1
- package/dist/{view-BqcOYFTr.d.ts → view-CwuOPIJc.d.ts} +7 -4
- package/dist/{view-CaJs8WFH.d.cts → view-D4VdPKCa.d.cts} +7 -4
- package/dist/web/consent/index.cjs +1 -1
- package/dist/web/consent/index.d.cts +5 -5
- package/dist/web/consent/index.d.ts +5 -5
- package/dist/web/consent/index.js +1 -1
- package/dist/web/index.cjs +10 -10
- package/dist/web/index.d.cts +14 -14
- package/dist/web/index.d.ts +14 -14
- package/dist/web/index.js +10 -10
- package/dist/web/notifications/index.cjs +2 -2
- package/dist/web/notifications/index.d.cts +3 -3
- package/dist/web/notifications/index.d.ts +3 -3
- package/dist/web/notifications/index.js +2 -2
- package/dist/web/records/depth/index.cjs +2 -2
- package/dist/web/records/depth/index.d.cts +7 -7
- package/dist/web/records/depth/index.d.ts +7 -7
- package/dist/web/records/depth/index.js +2 -2
- package/dist/web/records/index.cjs +3 -3
- package/dist/web/records/index.d.cts +9 -9
- package/dist/web/records/index.d.ts +9 -9
- package/dist/web/records/index.js +3 -3
- package/dist/web/televet/booking/index.cjs +2 -2
- package/dist/web/televet/booking/index.d.cts +41 -52
- package/dist/web/televet/booking/index.d.ts +41 -52
- package/dist/web/televet/booking/index.js +2 -2
- package/dist/web/televet/call/index.cjs +1 -1
- package/dist/web/televet/call/index.d.cts +12 -5
- package/dist/web/televet/call/index.d.ts +12 -5
- package/dist/web/televet/call/index.js +1 -1
- package/dist/web/televet/index.cjs +4 -1
- package/dist/web/televet/index.d.cts +31 -2
- package/dist/web/televet/index.d.ts +31 -2
- package/dist/web/televet/index.js +4 -1
- package/package.json +4 -3
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var react=require('react');var He=Object.defineProperty;var n=(e,t)=>He(e,"name",{value:t,configurable:true});function T(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(T,"ok");function u(e){return Object.freeze({ok:false,error:e})}n(u,"err");var j=class j extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,j.prototype);}};n(j,"EverfurConfigError");var P=j;var V=Object.freeze([Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"AuthorizationException",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"ConflictException",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"DAILY_QUOTA_EXCEEDED",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"FILE_TOO_LARGE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_IN_FLIGHT",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"INVALID_CONTENT_TYPE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"InternalFailureException",envelope:"http_envelope",httpStatus:500,retryable:true}),Object.freeze({wireCode:"MethodNotAllowedException",envelope:"http_envelope",httpStatus:405,retryable:false}),Object.freeze({wireCode:"NotImplementedException",envelope:"http_envelope",httpStatus:501,retryable:false}),Object.freeze({wireCode:"PaymentRequiredException",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ResourceNotFoundException",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"ServiceUnavailableException",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"TIER_UPGRADE_REQUIRED",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ThrottlingException",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"ValidationException",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"accessDenied",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"access_denied",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"attachment_unreadable",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"authExpired",envelope:"http_envelope",httpStatus:401,retryable:true}),Object.freeze({wireCode:"authRejected",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"consent_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_required",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_scope_wrong_route",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"device_cipher_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"email_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"event_cursor_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_payload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_not_available",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_unknown",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_required",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_reused",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"insufficientCapability",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"insufficient_scope",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"internal_error",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"invalidRequest",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_client",envelope:"oauth_error",httpStatus:401,retryable:false}),Object.freeze({wireCode:"invalid_client_metadata",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_grant",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_redirect_uri",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_request",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_scope",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_target",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"mcp_connection_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"mcp_request_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"mcp_request_gone",envelope:"http_envelope",httpStatus:410,retryable:false}),Object.freeze({wireCode:"mcp_request_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"not_found",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"partner_visit_link_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"partner_visit_owner_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"partner_visit_pet_already_mapped",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"payload_too_large",envelope:"http_envelope",httpStatus:413,retryable:false}),Object.freeze({wireCode:"petRefInUse",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"pet_health_list_removals_unconfirmed",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_health_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_not_registered",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"provider_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"rateLimited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"record_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"record_subject_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"record_upload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"records_consent_required",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"sandbox_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"session_required",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"share_limit_reached",envelope:"http_envelope",httpStatus:429,retryable:false}),Object.freeze({wireCode:"slow_down",envelope:"oauth_error",httpStatus:429,retryable:true}),Object.freeze({wireCode:"species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"tenant_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"tenant_has_no_capabilities",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"tenant_resource_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"tenant_surface_not_enabled",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"timeout",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"token_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"unavailable",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"unsupported_grant_type",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"unsupported_response_type",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"verify_mint_rate_limited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"verify_mint_refused",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"verify_mint_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"verify_user_ref_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_empty",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);Object.freeze(V.map(e=>e.wireCode));var Ge=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",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",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"}),ae=Object.freeze(V.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ge[e.wireCode]}))),We=new Map(ae.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),$e=Object.freeze(["http_envelope",...[...new Set(ae.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function z(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...$e]){let i=We.get(o+r);if(i)return i}}n(z,"contractErrorFor");function Qe(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Qe,"contractDocUrl");function se(e){return null}n(se,"publishedDocUrl");var Xe=Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"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 le(e){return Xe[e]}n(le,"categoryFor");function ue(e){let t=z(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),o=r.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(o){case "DAILYQUOTAEXCEEDED":case "QUOTAEXCEEDED":return "quotaExceeded";case "RATELIMITED":case "TOOMANYREQUESTS":return "rateLimited";case "IDEMPOTENCYKEYCONFLICT":case "IDEMPOTENCYCONFLICT":return "idempotencyConflict";case "ACCESSDENIED":case "FORBIDDEN":return "accessDenied";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"}}n(ue,"fromWire");var Je=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function B(e){return Je.has(e)}n(B,"isAutoRetryable");var Ze=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function de(e){return B(e)||Ze.has(e)}n(de,"isRetryableCode");var et=500,K=8e3,ce=4;function fe(e,t=Math.random){let r=Math.max(0,e),o=Math.min(et*2**r,K);return Math.floor(t()*o)}n(fe,"backoffDelayMs");var tt=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:"This feature isn't available on your account right now.",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:"Something in that request was not right. Check the details and try again.",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.",unknown:"Something went wrong. Please try again."});function rt(e){return tt[e]}n(rt,"userFacingError");function pe(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(pe,"defineHidden");var nt=/^[a-z][a-z0-9_]{0,63}$/;function E(e,t){let r=z(t?.wireCode,t?.wireEnvelope),o={code:e,category:le(e),retryable:t?.retryable??de(e),displayMessage:rt(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&nt.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&pe(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&pe(o,"raw",t.raw),Object.freeze(o)}n(E,"makeEverfurError");function ye(e){return Object.freeze({kind:"error",terminal:true,code:e.code,retryable:e.retryable,wireMessage:e.wireMessage,synthesized:e.synthesized,lastEventId:e.lastEventId,serverRequestId:e.serverRequestId??null})}n(ye,"errorFrame");function at(e){let t={};return e.mode==="personalized"?t.authorization=`Bearer ${e.token}`:t["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(t["x-everfur-user-ref"]=e.userRef),e.sessionId&&(t["x-everfur-session-id"]=e.sessionId),t}n(at,"authHeaders");function N(e,t){return {...e,headers:{...st(e.headers),...at(t)}}}n(N,"withAuthHeaders");function st(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(t[r]=o);}return t}n(st,"stripAuthHeaders");async function ve(e,t){if(t.mode==="anonymous")return t.transport.request(N(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return u(Y())}let o=await t.transport.request(N(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await t.identity.currentToken({forceRefresh:!0});}catch{return u(Y())}let a=await t.transport.request(N(e,{mode:"personalized",token:i,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?u(Y(a.error.httpStatus)):a}n(ve,"authedSend");function Y(e){return E("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(Y,"authRejectedError");function me(e){return E("internalError",{retryable:true,wireMessage:lt(e)})}n(me,"networkError");function lt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(lt,"describeCause");var ut=3e4,dt=K*2,ct="idempotency-key",ft=new Set(["POST","PUT","PATCH","DELETE"]),pt=Object.freeze({onEvent(){}}),yt=Object.freeze({setTimeout:n((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function vt(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}n(vt,"seededIdempotencyKey");function U(e){let t=e.observer??pt,r=e.timers??yt,o=e.rng??Math.random,i=e.sleep??((p,c)=>kt(p,r,c)),a=e.maxAttempts??ce,s=e.unaryTimeoutMs??ut,l=e.newIdempotencyKey??Et(),d=n(p=>{try{t.onEvent(p);}catch{}},"emit");async function g(p,c,b){let S=b?.maxAttempts,A=Math.max(1,S??a),y=b?.idempotent??ft.has(c.method),v=b?.idempotencyKey===void 0?null:vt(b.idempotencyKey),f=y?v??l():null,m=mt(c,f),h=0;for(;;){let x=n(q=>Object.freeze({call:p,method:c.method,path:c.path,attempt:h,...f?{idempotencyKey:f}:{},...q}),"stamp");d(x({phase:"attempt"}));let ne=St(s,r),oe=It(ne.signal,c.signal),F;try{F=await ve({...m,signal:oe.signal},e.auth);}catch(q){F=u(me(q));}finally{oe.dispose(),ne.cancel();}if(F.ok)return d(x({phase:"settled",ok:true,reason:"ok"})),F;let w=F.error,D=gt(w,h,{maxAttempts:A,rng:o,now:r.now(),aborted:c.signal?.aborted===true,...S!==void 0?{perCallMaxAttempts:S}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),L={ok:false,code:w.code,reason:D.reason,...w.httpStatus!==void 0?{httpStatus:w.httpStatus}:{},...w.requestId!==void 0?{requestId:w.requestId}:{}};if(!D.retry)return d(x({phase:"settled",...L})),u(w);if(d(x({phase:"retry",...L,delayMs:D.delayMs})),await i(D.delayMs,c.signal),c.signal?.aborted===true)return d(x({phase:"settled",...L,reason:"aborted"})),u(w);h+=1;}}n(g,"send");async function C(p){return N(p,await Tt(e.auth))}n(C,"authorize");async function*_(p,c,b){d(Object.freeze({call:p,phase:"stream.open",method:c.method,path:c.path,attempt:0}));try{yield*e.auth.transport.stream(c,b);}catch{yield ye({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(_,"stream"),Object.freeze({send:g,authorize:C,stream:_})}n(U,"createRequestFunnel");function mt(e,t){let r={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==ct&&(r[o]=i);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}n(mt,"assembleHeaders");function Et(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(Et,"defaultIdempotencyKeyFactory");var _t=10;function gt(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=ht(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!B(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{if(r.policy===void 0)return false;try{return !r.policy.shouldRetry(e.code,t)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let s=n(()=>{if(r.policy===void 0)return null;let g;try{g=r.policy.maxAttempts(e.code);}catch{return null}return typeof g!="number"||!Number.isFinite(g)?null:Math.max(1,Math.min(_t,Math.floor(g)))},"policyCeiling"),l=r.perCallMaxAttempts??s()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let d=bt(e,r.now);return d!==null?d>dt?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:d}:{retry:true,reason:i,delayMs:fe(t,r.rng)}}n(gt,"decideRetry");function ht(e){let t=e.code==="unknown"?ue(Ct(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}n(ht,"throttleKind");function bt(e,t){let r=Rt(e.raw);if(r===null)return null;let o=r-t;return o>0?o:0}n(bt,"retryOverrideMs");function Rt(e){for(let t of _e(e)){let r=t.resets_at,o=wt(r);if(o!==null)return o}return null}n(Rt,"findResetsAt");function _e(e){if(!Ee(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];Ee(o)&&t.push(o);}return t}n(_e,"candidateScopes");function wt(e){if(typeof e=="number"&&Number.isFinite(e))return e<1e11?Math.round(e*1e3):Math.round(e);if(typeof e=="string"&&e.trim().length>0){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}n(wt,"parseInstantMs");function Ct(e){for(let t of _e(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}n(Ct,"rawWireCode");function Ee(e){return typeof e=="object"&&e!==null}n(Ee,"isRecord");async function Tt(e){return e.mode==="anonymous"?{mode:"anonymous",publishableKey:e.publishableKey,userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}:{mode:"personalized",token:await e.identity.currentToken(),userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}}n(Tt,"resolveDeviceAuth");function St(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:n(()=>t.clearTimeout(o),"cancel")}}n(St,"boundedSignal");function It(e,t){let r=n(()=>{},"noop");if(!t)return {signal:e,dispose:r};let o=new AbortController;if(e.aborted||t.aborted)return o.abort(),{signal:o.signal,dispose:r};let i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),t.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),t.removeEventListener("abort",i);},"dispose")}}n(It,"mergeSignals");function kt(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let i=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=n(()=>{t.clearTimeout(i),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}n(kt,"delayAbortable");function Ot(e){let t=e.raw;if(typeof t!="object"||t===null)return null;let r=t.code;return typeof r=="string"&&r.length>0?r:null}n(Ot,"wireCodeOf");function ge(e,t){let r=Ot(e);if(r===null)return e;let o=t[r];return o===void 0?e:E(o.code,{retryable:o.retryable,...e.httpStatus!==void 0?{httpStatus:e.httpStatus}:{},...e.requestId!==void 0?{requestId:e.requestId}:{},wireCode:r,reasonCode:r,...e.wireMessage!==void 0?{wireMessage:e.wireMessage}:{},raw:e.raw})}n(ge,"foldWireReason");var Ce=Object.freeze({provider_unsupported:"Everfur does not send through this push provider yet. Register an Expo push token (provider expo) or an FCM registration token (provider fcm); APNs direct is not available in this version.",token_invalid:"The token is not a push token of the given provider. Expo tokens look like ExponentPushToken[...]; FCM registration tokens are long opaque strings. Pass the token exactly as your notification library printed it.",device_cipher_unavailable:"Everfur could not seal the token at rest, so nothing was stored. Retry the registration later; the SDK retries it on the next launch and login.",credentials_missing:"Everfur holds no push credential for this provider on your tenant, so deliveries to it are skipped. Expo needs nothing unless you enabled push security (then your Expo access token). A bare app using FCM supplies its Firebase service-account JSON to Everfur; push credentials are set by Everfur on your tenant, never through the SDK."}),xt=new Set(["provider_unsupported","token_invalid","device_cipher_unavailable","credentials_missing"]);function Ft(e){let t=e.reasonCode;return t!==void 0&&xt.has(t)?Ce[t]:null}n(Ft,"explainNotificationsReason");var Te=new Set(["expo","fcm","apns"]),Se=new Set(["ios","android"]),he=4096,be=128,Re=64,Ie=/[- ]/;function R(e,t){return E("validationFailed",{retryable:false,wireMessage:e,...t?{reasonCode:t}:{}})}n(R,"invalid");function Pt(e){if(typeof e!="object"||e===null)return R("registerDevice needs an input object");let{token:t,provider:r,platform:o,installationId:i}=e;return typeof r!="string"||!Te.has(r)?R("provider must be expo, fcm or apns"):typeof o!="string"||!Se.has(o)?R("platform must be ios or android"):typeof t!="string"||t.trim().length===0||t.length>he||Ie.test(t)?R(`token must be a push token of 1..${he} characters with no whitespace`,"token_invalid"):i!==void 0&&(typeof i!="string"||i.length===0||i.length>be)?R(`installationId must be 1..${be} characters`):null}n(Pt,"validateRegister");function Nt(e){return typeof e!="string"||e.length===0||e.length>Re?R(`deviceId must be 1..${Re} characters`):Ie.test(e)||e.includes("/")||e==="."||e===".."?R("deviceId is not a device id"):null}n(Nt,"validateDeviceId");function At(e){if(typeof e!="object"||e===null)return R("setPreferences needs an input object");let{pushEnabled:t,emailEnabled:r}=e;return typeof t!="boolean"||typeof r!="boolean"?R("pushEnabled and emailEnabled must both be booleans: the route replaces both switches"):null}n(At,"validatePreferences");function I(e){return typeof e=="string"&&e.length>0?e:null}n(I,"str");function Dt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.device_id),o=I(t.provider),i=I(t.platform),a=I(t.registered_at),s=I(t.last_seen_at);if(r===null||o===null||i===null||a===null||s===null||!Te.has(o)||!Se.has(i))return null;let l=t.installation_id;return Object.freeze({deviceId:r,provider:o,platform:i,installationId:typeof l=="string"&&l.length>0?l:null,registeredAt:a,lastSeenAt:s})}n(Dt,"parseDevice");function jt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.updated_at);return typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||r===null?null:Object.freeze({pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,updatedAt:r})}n(jt,"parsePreferences");function we(e){return E("internalError",{retryable:false,wireMessage:`${e}: the response was not the documented shape`})}n(we,"malformed");var zt=Object.freeze({provider_unsupported:{code:"validationFailed",retryable:false},token_invalid:{code:"validationFailed",retryable:false},device_cipher_unavailable:{code:"serviceUnavailable",retryable:true}});function H(e){return ge(e,zt)}n(H,"refine");function G(e){return E("validationFailed",{retryable:false,wireMessage:`the Everfur runtime is disposed; ${e} was called after unmount`})}n(G,"disposed");function W(e){let t=n(()=>{let{services:r}=e.registry;return $({auth:r.authFor(null),...r.errorPolicy?{errorPolicy:r.errorPolicy}:{}})},"over");return {registerDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(G("registerDevice"))):t().registerDevice(r,o),"registerDevice"),unregisterDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(G("unregisterDevice"))):t().unregisterDevice(r,o),"unregisterDevice"),setPreferences:n((r,o)=>e.isDisposed?Promise.resolve(u(G("setPreferences"))):t().setPreferences(r,o),"setPreferences")}}n(W,"createNotificationsClient");function $(e){let t=e.funnel??U({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=n((o,i)=>i?{...o,signal:i}:o,"withSignal");return {async registerDevice(o,i){let a=Pt(o);if(a!==null)return u(a);let s={token:o.token,provider:o.provider,platform:o.platform};o.installationId!==void 0&&(s.installation_id=o.installationId);let l=await t.send("notifications.registerDevice",r({method:"POST",path:"/widget/v1/me/devices",body:s},i?.signal));if(!l.ok)return u(H(l.error));let d=Dt(l.value);return d===null?u(we("registerDevice")):T(d)},async unregisterDevice(o,i){let a=Nt(o);if(a!==null)return u(a);let s=await t.send("notifications.unregisterDevice",r({method:"DELETE",path:`/widget/v1/me/devices/${encodeURIComponent(o)}`},i?.signal));return s.ok?T(void 0):u(H(s.error))},async setPreferences(o,i){let a=At(o);if(a!==null)return u(a);let s=await t.send("notifications.setPreferences",r({method:"PUT",path:"/widget/v1/me/notification-preferences",body:{push_enabled:o.pushEnabled,email_enabled:o.emailEnabled}},i?.signal));if(!s.ok)return u(H(s.error));let l=jt(s.value);return l===null?u(we("setPreferences")):T(l)}}}n($,"createNotificationsClientOver");var k="everfur.notifications.device";var ke=3e3;var Oe=Symbol.for("@everfur/sdk#EverfurContext@v1"),xe=globalThis,Fe=xe[Oe]??(xe[Oe]=react.createContext(null));Fe.displayName??="EverfurContext";function Q(){let e=react.useContext(Fe);if(e===null)throw new P("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(Q,"useEverfurContext");var ze=1;async function J(e){try{let t=await e.getItem(k);if(t===null)return null;let r=JSON.parse(t);if(typeof r!="object"||r===null)return null;let{v:o,userRef:i,deviceId:a}=r;return o!==ze||typeof i!="string"||typeof a!="string"||a.length===0?null:{userRef:i,deviceId:a}}catch{return null}}n(J,"readStored");async function qt(e,t){try{await e.setItem(k,JSON.stringify({v:ze,...t}));}catch{}}n(qt,"writeStored");async function Ne(e){try{await e.removeItem(k);}catch{}}n(Ne,"clearStored");var Ae=Object.freeze({status:"signed_out",device:null,error:null}),De=Object.freeze({status:"no_token",device:null,error:null});function Z(){return E("sessionRequired",{retryable:false,wireMessage:"notifications need a signed-in user on the provider"})}n(Z,"noUser");function Ue(){let{runtime:e}=Q();return react.useMemo(()=>W(e),[e])}n(Ue,"useEverfurNotificationsClient");function Vt(e){let{runtime:t,userRef:r}=Q(),{token:o,provider:i,platform:a,installationId:s}=e,l=t.registry.services.kv,d=Ue(),[g,C]=react.useState(r===null?Ae:De),_=react.useRef(null),p=react.useRef(0);react.useEffect(()=>{if(p.current+=1,_.current=null,C(r===null?Ae:De),r===null)return;let y=true;return J(l).then(v=>{if(!y||v===null||v.userRef!==r)return;let f=_.current;if(f===null){_.current=v;return}f.deviceId!==v.deviceId&&d.unregisterDevice(v.deviceId);}),()=>{y=false;}},[d,l,r]);let c=react.useCallback(async(y,v)=>{let f=p.current+=1;C({status:"registering",device:null,error:null});let m=await d.registerDevice({token:v,provider:i,platform:a,...s===void 0?{}:{installationId:s}});if(f!==p.current)return m;if(!m.ok)return C({status:m.error.httpStatus===404?"unavailable":"failed",device:null,error:m.error}),m;let h=_.current;return _.current={userRef:y,deviceId:m.value.deviceId},C({status:"registered",device:m.value,error:null}),await qt(l,_.current),h!==null&&h.userRef===y&&h.deviceId!==m.value.deviceId&&d.unregisterDevice(h.deviceId),m},[d,l,i,a,s]);react.useEffect(()=>{r===null||o===null||c(r,o);},[c,r,o]),react.useEffect(()=>t.onBeforeLogout(async({userRef:y,auth:v})=>{let f=_.current??await J(l);if(f===null||f.userRef!==y)return;_.current=null;let m=U({auth:v,maxAttempts:1,unaryTimeoutMs:ke,...t.registry.services.errorPolicy?{errorPolicy:t.registry.services.errorPolicy}:{}}),h=await $({auth:v,funnel:m}).unregisterDevice(f.deviceId);(h.ok||h.error.httpStatus===404)&&await Ne(l);}),[t,l]);let b=react.useCallback(async()=>r===null?u(Z()):o===null?u(E("validationFailed",{retryable:false,reasonCode:"token_invalid",wireMessage:"no push token was given"})):c(r,o),[c,r,o]),S=react.useCallback(async()=>{if(r===null)return u(Z());let y=_.current??await J(l);if(y===null||y.userRef!==r)return T(void 0);let v=p.current+=1,f=await d.unregisterDevice(y.deviceId);return f.ok||f.error.httpStatus===404?(_.current=null,await Ne(l),v===p.current&&C({status:"unregistered",device:null,error:null}),f.ok?f:T(void 0)):f},[d,l,r]),A=react.useCallback(y=>r===null?Promise.resolve(u(Z())):d.setPreferences(y),[d,r]);return react.useMemo(()=>({status:g.status,device:g.device,error:g.error,register:b,unregister:S,setPreferences:A}),[g,b,S,A])}n(Vt,"useEverfurNotifications");var Me=Object.freeze({"visit.booked":"visit","visit.reminder":"join","visit.rescheduled":"visit","visit.followup_sent":"messages","visit.message_received":"messages","visit.completed":"summary","visit.ended":"visit","visit.cancelled":null,"visit.no_show":null});function Le(e){return Object.prototype.hasOwnProperty.call(Me,e)?Me[e]:"visit"}n(Le,"vetVisitIntentForEvent");var Ve=1,Be=Object.freeze(["record_request","pet","visit","case"]),Ke=Object.freeze(["record_request.updated","record.ready","pet.vaccination.due","visit.booked","visit.cancelled","visit.completed","visit.no_show","visit.rescheduled","visit.reminder","visit.followup_sent","visit.message_received","visit.ended","chat.follow_up_due","chat.reminder_due","record.activation"]),te=["v","event_id","event_type","target"],Bt=new Set(["kind","conversation_id","request_id","visit_ref","case_ref","pet_ref"]),Kt=new Set(Ke),Yt=new Set(Be),Ht=128,Gt=4096,Wt=/^evt_[A-Za-z0-9]{1,64}$/,$t=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Qt=/[-]/;function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}n(O,"isRecord");function Ye(e){return Object.keys(e)}n(Ye,"keysOf");function Xt(e){if(O(e))return e;if(typeof e!="string"||e.length===0||e.length>Gt)return null;let t=JSON.parse(e);return O(t)?t:null}n(Xt,"decodeBlock");function Jt(e,t){let r=e;for(let o of t){if(!O(r))return;r=r[o];}return r}n(Jt,"at");var Zt=[[],["data"],["request","content","data"],["notification","request","content","data"]];function er(e){if(!O(e))return null;for(let t of Zt){let r=Jt(e,t);if(O(r)&&"everfur"in r)return r.everfur}return te.every(t=>t in e)?e:null}n(er,"locateBlock");function re(e){return typeof e!="string"||e.length===0||e.length>Ht||Qt.test(e)||e.includes("://")||e.toLowerCase().startsWith("everfur")?null:e}n(re,"opaqueString");function qe(e,t){if(!(t in e))return {ok:true,value:null};let r=re(e[t]);return r===null?{ok:false}:{ok:true,value:r}}n(qe,"optional");function ee(e,t){return t in e?re(e[t]):null}n(ee,"required");function tr(e,t){if(!O(e))return null;let r=Ye(e);if(!r.includes("kind")||r.some(s=>!Bt.has(s)))return null;let o=e.kind;if(typeof o!="string"||!Yt.has(o))return null;for(let s of r)if(s!=="kind"&&re(e[s])===null)return null;let i=qe(e,"pet_ref");if(!i.ok)return null;let a=i.value;switch(o){case "record_request":{let s=ee(e,"request_id");return s===null?null:Object.freeze({kind:"record_request",requestId:s,petRef:a})}case "pet":return a===null?null:Object.freeze({kind:"pet",petRef:a});case "visit":{let s=ee(e,"visit_ref");return s===null?null:Object.freeze({kind:"visit",visitRef:s,petRef:a,intent:Le(t)})}case "case":{let s=ee(e,"case_ref");if(s===null)return null;let l=qe(e,"conversation_id");return !l.ok||l.value!==null&&!$t.test(l.value)?null:Object.freeze({kind:"case",caseRef:s,conversationId:l.value,petRef:a})}default:return null}}n(tr,"parseTarget");function rr(e){let t=Ye(e);if(t.length!==te.length||te.some(a=>!t.includes(a))||e.v!==Ve)return null;let r=e.event_id;if(typeof r!="string"||!Wt.test(r))return null;let o=e.event_type;if(typeof o!="string"||!Kt.has(o))return null;let i=tr(e.target,o);return i===null?null:Object.freeze({eventId:r,eventType:o,target:i})}n(rr,"parseBlock");function nr(e){try{let t=Xt(er(e));return t===null?null:rr(t)}catch{return null}}n(nr,"parseEverfurNotification");
|
|
2
|
-
exports.EVERFUR_NOTIFICATION_EVENT_TYPES=Ke;exports.EVERFUR_NOTIFICATION_TARGET_KINDS=Be;exports.EVERFUR_NOTIFICATION_VERSION=Ve;exports.NOTIFICATIONS_REASON_MESSAGES=Ce;exports.createNotificationsClient
|
|
1
|
+
'use strict';var react=require('react');var He=Object.defineProperty;var n=(e,t)=>He(e,"name",{value:t,configurable:true});function T(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(T,"ok");function u(e){return Object.freeze({ok:false,error:e})}n(u,"err");var j=class j extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,j.prototype);}};n(j,"EverfurConfigError");var P=j;var V=Object.freeze([Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"AuthorizationException",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"ConflictException",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"DAILY_QUOTA_EXCEEDED",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"FILE_TOO_LARGE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_IN_FLIGHT",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"INVALID_CONTENT_TYPE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"InternalFailureException",envelope:"http_envelope",httpStatus:500,retryable:true}),Object.freeze({wireCode:"MethodNotAllowedException",envelope:"http_envelope",httpStatus:405,retryable:false}),Object.freeze({wireCode:"NotImplementedException",envelope:"http_envelope",httpStatus:501,retryable:false}),Object.freeze({wireCode:"PaymentRequiredException",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ResourceNotFoundException",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"ServiceUnavailableException",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"TIER_UPGRADE_REQUIRED",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ThrottlingException",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"ValidationException",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"accessDenied",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"access_denied",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"attachment_unreadable",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"authExpired",envelope:"http_envelope",httpStatus:401,retryable:true}),Object.freeze({wireCode:"authRejected",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"consent_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_required",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_scope_wrong_route",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"device_cipher_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"email_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"event_cursor_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_payload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_not_available",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_unknown",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_required",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_reused",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"insufficientCapability",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"insufficient_scope",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"internal_error",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"invalidRequest",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_client",envelope:"oauth_error",httpStatus:401,retryable:false}),Object.freeze({wireCode:"invalid_client_metadata",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_grant",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_redirect_uri",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_request",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_scope",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_target",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"mcp_connection_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"mcp_request_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"mcp_request_gone",envelope:"http_envelope",httpStatus:410,retryable:false}),Object.freeze({wireCode:"mcp_request_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"not_found",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"partner_visit_link_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"partner_visit_owner_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"partner_visit_pet_already_mapped",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"payload_too_large",envelope:"http_envelope",httpStatus:413,retryable:false}),Object.freeze({wireCode:"petRefInUse",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"pet_health_list_removals_unconfirmed",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_health_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_not_registered",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"provider_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"rateLimited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"record_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"record_subject_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"record_upload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"records_consent_required",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"sandbox_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"session_required",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"share_limit_reached",envelope:"http_envelope",httpStatus:429,retryable:false}),Object.freeze({wireCode:"slow_down",envelope:"oauth_error",httpStatus:429,retryable:true}),Object.freeze({wireCode:"species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"tenant_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"tenant_has_no_capabilities",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"tenant_resource_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"tenant_surface_not_enabled",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"timeout",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"token_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"unavailable",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"unsupported_grant_type",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"unsupported_response_type",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"verify_mint_rate_limited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"verify_mint_refused",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"verify_mint_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"verify_user_ref_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_empty",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);Object.freeze(V.map(e=>e.wireCode));var Ge=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",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",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"}),se=Object.freeze(V.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ge[e.wireCode]}))),We=new Map(se.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),$e=Object.freeze(["http_envelope",...[...new Set(se.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function z(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...$e]){let i=We.get(o+r);if(i)return i}}n(z,"contractErrorFor");function Qe(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Qe,"contractDocUrl");function le(e){return null}n(le,"publishedDocUrl");var Xe=Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"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 ue(e){return Xe[e]}n(ue,"categoryFor");function de(e){let t=z(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),o=r.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(o){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 "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"}}n(de,"fromWire");var Je=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function B(e){return Je.has(e)}n(B,"isAutoRetryable");var Ze=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function ce(e){return B(e)||Ze.has(e)}n(ce,"isRetryableCode");var et=500,K=8e3,fe=4;function pe(e,t=Math.random){let r=Math.max(0,e),o=Math.min(et*2**r,K);return Math.floor(t()*o)}n(pe,"backoffDelayMs");var tt=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:"This feature isn't available on your account right now.",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:"Something in that request was not right. Check the details and try again.",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.",unknown:"Something went wrong. Please try again."});function rt(e){return tt[e]}n(rt,"userFacingError");function ye(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(ye,"defineHidden");var nt=/^[a-z][a-z0-9_]{0,63}$/;function E(e,t){let r=z(t?.wireCode,t?.wireEnvelope),o={code:e,category:ue(e),retryable:t?.retryable??ce(e),displayMessage:rt(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&nt.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&ye(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&ye(o,"raw",t.raw),Object.freeze(o)}n(E,"makeEverfurError");function ve(e){return Object.freeze({kind:"error",terminal:true,code:e.code,retryable:e.retryable,wireMessage:e.wireMessage,synthesized:e.synthesized,lastEventId:e.lastEventId,serverRequestId:e.serverRequestId??null})}n(ve,"errorFrame");function at(e){let t={};return e.mode==="personalized"?t.authorization=`Bearer ${e.token}`:t["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(t["x-everfur-user-ref"]=e.userRef),e.sessionId&&(t["x-everfur-session-id"]=e.sessionId),t}n(at,"authHeaders");function N(e,t){return {...e,headers:{...st(e.headers),...at(t)}}}n(N,"withAuthHeaders");function st(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(t[r]=o);}return t}n(st,"stripAuthHeaders");async function me(e,t){if(t.mode==="anonymous")return t.transport.request(N(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return u(Y())}let o=await t.transport.request(N(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await t.identity.currentToken({forceRefresh:!0});}catch{return u(Y())}let a=await t.transport.request(N(e,{mode:"personalized",token:i,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?u(Y(a.error.httpStatus)):a}n(me,"authedSend");function Y(e){return E("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(Y,"authRejectedError");function Ee(e){return E("internalError",{retryable:true,wireMessage:lt(e)})}n(Ee,"networkError");function lt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(lt,"describeCause");var ut=3e4,dt=K*2,ct="idempotency-key",ft=new Set(["POST","PUT","PATCH","DELETE"]),pt=Object.freeze({onEvent(){}}),yt=Object.freeze({setTimeout:n((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function vt(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}n(vt,"seededIdempotencyKey");function U(e){let t=e.observer??pt,r=e.timers??yt,o=e.rng??Math.random,i=e.sleep??((p,c)=>Ot(p,r,c)),a=e.maxAttempts??fe,s=e.unaryTimeoutMs??ut,l=e.newIdempotencyKey??Et(),d=n(p=>{try{t.onEvent(p);}catch{}},"emit");async function g(p,c,b){let S=b?.maxAttempts,A=Math.max(1,S??a),y=b?.idempotent??ft.has(c.method),v=b?.idempotencyKey===void 0?null:vt(b.idempotencyKey),f=y?v??l():null,m=mt(c,f),h=0;for(;;){let x=n(q=>Object.freeze({call:p,method:c.method,path:c.path,attempt:h,...f?{idempotencyKey:f}:{},...q}),"stamp");d(x({phase:"attempt"}));let oe=It(s,r),ie=kt(oe.signal,c.signal),F;try{F=await me({...m,signal:ie.signal},e.auth);}catch(q){F=u(Ee(q));}finally{ie.dispose(),oe.cancel();}if(F.ok)return d(x({phase:"settled",ok:true,reason:"ok"})),F;let w=F.error,D=gt(w,h,{maxAttempts:A,rng:o,now:r.now(),aborted:c.signal?.aborted===true,...S!==void 0?{perCallMaxAttempts:S}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),L={ok:false,code:w.code,reason:D.reason,...w.httpStatus!==void 0?{httpStatus:w.httpStatus}:{},...w.requestId!==void 0?{requestId:w.requestId}:{}};if(!D.retry)return d(x({phase:"settled",...L})),u(w);if(d(x({phase:"retry",...L,delayMs:D.delayMs})),await i(D.delayMs,c.signal),c.signal?.aborted===true)return d(x({phase:"settled",...L,reason:"aborted"})),u(w);h+=1;}}n(g,"send");async function C(p){return N(p,await St(e.auth))}n(C,"authorize");async function*_(p,c,b){d(Object.freeze({call:p,phase:"stream.open",method:c.method,path:c.path,attempt:0}));try{yield*e.auth.transport.stream(c,b);}catch{yield ve({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(_,"stream"),Object.freeze({send:g,authorize:C,stream:_})}n(U,"createRequestFunnel");function mt(e,t){let r={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==ct&&(r[o]=i);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}n(mt,"assembleHeaders");function Et(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(Et,"defaultIdempotencyKeyFactory");var _t=10;function gt(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=ht(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!B(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{if(r.policy===void 0)return false;try{return !r.policy.shouldRetry(e.code,t)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let s=n(()=>{if(r.policy===void 0)return null;let g;try{g=r.policy.maxAttempts(e.code);}catch{return null}return typeof g!="number"||!Number.isFinite(g)?null:Math.max(1,Math.min(_t,Math.floor(g)))},"policyCeiling"),l=r.perCallMaxAttempts??s()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let d=bt(e,r.now);return d!==null?d>dt?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:d}:{retry:true,reason:i,delayMs:pe(t,r.rng)}}n(gt,"decideRetry");function ht(e){let t=e.code==="unknown"?de(Tt(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}n(ht,"throttleKind");function bt(e,t){let r=wt(e.raw);if(r!==null){let i=r-t;return i>0?i:0}let o=Rt(e.raw);return o===null?null:Math.round(o*1e3)}n(bt,"retryOverrideMs");function Rt(e){for(let t of H(e)){let r=t.retry_after_seconds;if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return r}return null}n(Rt,"findRetryAfterSeconds");function wt(e){for(let t of H(e)){let r=t.resets_at,o=Ct(r);if(o!==null)return o}return null}n(wt,"findResetsAt");function H(e){if(!_e(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];_e(o)&&t.push(o);}return t}n(H,"candidateScopes");function Ct(e){if(typeof e=="number"&&Number.isFinite(e))return e<1e11?Math.round(e*1e3):Math.round(e);if(typeof e=="string"&&e.trim().length>0){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}n(Ct,"parseInstantMs");function Tt(e){for(let t of H(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}n(Tt,"rawWireCode");function _e(e){return typeof e=="object"&&e!==null}n(_e,"isRecord");async function St(e){return e.mode==="anonymous"?{mode:"anonymous",publishableKey:e.publishableKey,userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}:{mode:"personalized",token:await e.identity.currentToken(),userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}}n(St,"resolveDeviceAuth");function It(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:n(()=>t.clearTimeout(o),"cancel")}}n(It,"boundedSignal");function kt(e,t){let r=n(()=>{},"noop");if(!t)return {signal:e,dispose:r};let o=new AbortController;if(e.aborted||t.aborted)return o.abort(),{signal:o.signal,dispose:r};let i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),t.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),t.removeEventListener("abort",i);},"dispose")}}n(kt,"mergeSignals");function Ot(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let i=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=n(()=>{t.clearTimeout(i),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}n(Ot,"delayAbortable");function xt(e){let t=e.raw;if(typeof t!="object"||t===null)return null;let r=t.code;return typeof r=="string"&&r.length>0?r:null}n(xt,"wireCodeOf");function ge(e,t){let r=xt(e);if(r===null)return e;let o=t[r];return o===void 0?e:E(o.code,{retryable:o.retryable,...e.httpStatus!==void 0?{httpStatus:e.httpStatus}:{},...e.requestId!==void 0?{requestId:e.requestId}:{},wireCode:r,reasonCode:r,...e.wireMessage!==void 0?{wireMessage:e.wireMessage}:{},raw:e.raw})}n(ge,"foldWireReason");var Ce=Object.freeze({provider_unsupported:"Everfur does not send through this push provider yet. Register an Expo push token (provider expo) or an FCM registration token (provider fcm); APNs direct is not available in this version.",token_invalid:"The token is not a push token of the given provider. Expo tokens look like ExponentPushToken[...]; FCM registration tokens are long opaque strings. Pass the token exactly as your notification library printed it.",device_cipher_unavailable:"Everfur could not seal the token at rest, so nothing was stored. Retry the registration later; the SDK retries it on the next launch and login.",credentials_missing:"Everfur holds no push credential for this provider on your tenant, so deliveries to it are skipped. Expo needs nothing unless you enabled push security (then your Expo access token). A bare app using FCM supplies its Firebase service-account JSON to Everfur; push credentials are set by Everfur on your tenant, never through the SDK."}),Ft=new Set(["provider_unsupported","token_invalid","device_cipher_unavailable","credentials_missing"]);function Pt(e){let t=e.reasonCode;return t!==void 0&&Ft.has(t)?Ce[t]:null}n(Pt,"explainNotificationsReason");var Te=new Set(["expo","fcm","apns"]),Se=new Set(["ios","android"]),he=4096,be=128,Re=64,Ie=/[- ]/;function R(e,t){return E("validationFailed",{retryable:false,wireMessage:e,...t?{reasonCode:t}:{}})}n(R,"invalid");function Nt(e){if(typeof e!="object"||e===null)return R("registerDevice needs an input object");let{token:t,provider:r,platform:o,installationId:i}=e;return typeof r!="string"||!Te.has(r)?R("provider must be expo, fcm or apns"):typeof o!="string"||!Se.has(o)?R("platform must be ios or android"):typeof t!="string"||t.trim().length===0||t.length>he||Ie.test(t)?R(`token must be a push token of 1..${he} characters with no whitespace`,"token_invalid"):i!==void 0&&(typeof i!="string"||i.length===0||i.length>be)?R(`installationId must be 1..${be} characters`):null}n(Nt,"validateRegister");function At(e){return typeof e!="string"||e.length===0||e.length>Re?R(`deviceId must be 1..${Re} characters`):Ie.test(e)||e.includes("/")||e==="."||e===".."?R("deviceId is not a device id"):null}n(At,"validateDeviceId");function Dt(e){if(typeof e!="object"||e===null)return R("setPreferences needs an input object");let{pushEnabled:t,emailEnabled:r}=e;return typeof t!="boolean"||typeof r!="boolean"?R("pushEnabled and emailEnabled must both be booleans: the route replaces both switches"):null}n(Dt,"validatePreferences");function I(e){return typeof e=="string"&&e.length>0?e:null}n(I,"str");function jt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.device_id),o=I(t.provider),i=I(t.platform),a=I(t.registered_at),s=I(t.last_seen_at);if(r===null||o===null||i===null||a===null||s===null||!Te.has(o)||!Se.has(i))return null;let l=t.installation_id;return Object.freeze({deviceId:r,provider:o,platform:i,installationId:typeof l=="string"&&l.length>0?l:null,registeredAt:a,lastSeenAt:s})}n(jt,"parseDevice");function zt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.updated_at);return typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||r===null?null:Object.freeze({pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,updatedAt:r})}n(zt,"parsePreferences");function we(e){return E("internalError",{retryable:false,wireMessage:`${e}: the response was not the documented shape`})}n(we,"malformed");var Ut=Object.freeze({provider_unsupported:{code:"validationFailed",retryable:false},token_invalid:{code:"validationFailed",retryable:false},device_cipher_unavailable:{code:"serviceUnavailable",retryable:true}});function G(e){return ge(e,Ut)}n(G,"refine");function W(e){return E("validationFailed",{retryable:false,wireMessage:`the Everfur runtime is disposed; ${e} was called after unmount`})}n(W,"disposed");function $(e){let t=n(()=>{let{services:r}=e.registry;return Q({auth:r.authFor(null),...r.errorPolicy?{errorPolicy:r.errorPolicy}:{}})},"over");return {registerDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(W("registerDevice"))):t().registerDevice(r,o),"registerDevice"),unregisterDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(W("unregisterDevice"))):t().unregisterDevice(r,o),"unregisterDevice"),setPreferences:n((r,o)=>e.isDisposed?Promise.resolve(u(W("setPreferences"))):t().setPreferences(r,o),"setPreferences")}}n($,"createNotificationsClient");function Q(e){let t=e.funnel??U({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=n((o,i)=>i?{...o,signal:i}:o,"withSignal");return {async registerDevice(o,i){let a=Nt(o);if(a!==null)return u(a);let s={token:o.token,provider:o.provider,platform:o.platform};o.installationId!==void 0&&(s.installation_id=o.installationId);let l=await t.send("notifications.registerDevice",r({method:"POST",path:"/widget/v1/me/devices",body:s},i?.signal));if(!l.ok)return u(G(l.error));let d=jt(l.value);return d===null?u(we("registerDevice")):T(d)},async unregisterDevice(o,i){let a=At(o);if(a!==null)return u(a);let s=await t.send("notifications.unregisterDevice",r({method:"DELETE",path:`/widget/v1/me/devices/${encodeURIComponent(o)}`},i?.signal));return s.ok?T(void 0):u(G(s.error))},async setPreferences(o,i){let a=Dt(o);if(a!==null)return u(a);let s=await t.send("notifications.setPreferences",r({method:"PUT",path:"/widget/v1/me/notification-preferences",body:{push_enabled:o.pushEnabled,email_enabled:o.emailEnabled}},i?.signal));if(!s.ok)return u(G(s.error));let l=zt(s.value);return l===null?u(we("setPreferences")):T(l)}}}n(Q,"createNotificationsClientOver");var k="everfur.notifications.device";var ke=3e3;var Oe=Symbol.for("@everfur/sdk#EverfurContext@v1"),xe=globalThis,Fe=xe[Oe]??(xe[Oe]=react.createContext(null));Fe.displayName??="EverfurContext";function X(){let e=react.useContext(Fe);if(e===null)throw new P("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(X,"useEverfurContext");var ze=1;async function Z(e){try{let t=await e.getItem(k);if(t===null)return null;let r=JSON.parse(t);if(typeof r!="object"||r===null)return null;let{v:o,userRef:i,deviceId:a}=r;return o!==ze||typeof i!="string"||typeof a!="string"||a.length===0?null:{userRef:i,deviceId:a}}catch{return null}}n(Z,"readStored");async function Vt(e,t){try{await e.setItem(k,JSON.stringify({v:ze,...t}));}catch{}}n(Vt,"writeStored");async function Ne(e){try{await e.removeItem(k);}catch{}}n(Ne,"clearStored");var Ae=Object.freeze({status:"signed_out",device:null,error:null}),De=Object.freeze({status:"no_token",device:null,error:null});function ee(){return E("sessionRequired",{retryable:false,wireMessage:"notifications need a signed-in user on the provider"})}n(ee,"noUser");function Ue(){let{runtime:e}=X();return react.useMemo(()=>$(e),[e])}n(Ue,"useEverfurNotificationsClient");function Bt(e){let{runtime:t,userRef:r}=X(),{token:o,provider:i,platform:a,installationId:s}=e,l=t.registry.services.kv,d=Ue(),[g,C]=react.useState(r===null?Ae:De),_=react.useRef(null),p=react.useRef(0);react.useEffect(()=>{if(p.current+=1,_.current=null,C(r===null?Ae:De),r===null)return;let y=true;return Z(l).then(v=>{if(!y||v===null||v.userRef!==r)return;let f=_.current;if(f===null){_.current=v;return}f.deviceId!==v.deviceId&&d.unregisterDevice(v.deviceId);}),()=>{y=false;}},[d,l,r]);let c=react.useCallback(async(y,v)=>{let f=p.current+=1;C({status:"registering",device:null,error:null});let m=await d.registerDevice({token:v,provider:i,platform:a,...s===void 0?{}:{installationId:s}});if(f!==p.current)return m;if(!m.ok)return C({status:m.error.httpStatus===404?"unavailable":"failed",device:null,error:m.error}),m;let h=_.current;return _.current={userRef:y,deviceId:m.value.deviceId},C({status:"registered",device:m.value,error:null}),await Vt(l,_.current),h!==null&&h.userRef===y&&h.deviceId!==m.value.deviceId&&d.unregisterDevice(h.deviceId),m},[d,l,i,a,s]);react.useEffect(()=>{r===null||o===null||c(r,o);},[c,r,o]),react.useEffect(()=>t.onBeforeLogout(async({userRef:y,auth:v})=>{let f=_.current??await Z(l);if(f===null||f.userRef!==y)return;_.current=null;let m=U({auth:v,maxAttempts:1,unaryTimeoutMs:ke,...t.registry.services.errorPolicy?{errorPolicy:t.registry.services.errorPolicy}:{}}),h=await Q({auth:v,funnel:m}).unregisterDevice(f.deviceId);(h.ok||h.error.httpStatus===404)&&await Ne(l);}),[t,l]);let b=react.useCallback(async()=>r===null?u(ee()):o===null?u(E("validationFailed",{retryable:false,reasonCode:"token_invalid",wireMessage:"no push token was given"})):c(r,o),[c,r,o]),S=react.useCallback(async()=>{if(r===null)return u(ee());let y=_.current??await Z(l);if(y===null||y.userRef!==r)return T(void 0);let v=p.current+=1,f=await d.unregisterDevice(y.deviceId);return f.ok||f.error.httpStatus===404?(_.current=null,await Ne(l),v===p.current&&C({status:"unregistered",device:null,error:null}),f.ok?f:T(void 0)):f},[d,l,r]),A=react.useCallback(y=>r===null?Promise.resolve(u(ee())):d.setPreferences(y),[d,r]);return react.useMemo(()=>({status:g.status,device:g.device,error:g.error,register:b,unregister:S,setPreferences:A}),[g,b,S,A])}n(Bt,"useEverfurNotifications");var Me=Object.freeze({"visit.booked":"visit","visit.reminder":"join","visit.rescheduled":"visit","visit.followup_sent":"messages","visit.message_received":"messages","visit.completed":"summary","visit.ended":"visit","visit.cancelled":null,"visit.no_show":null});function Le(e){return Object.prototype.hasOwnProperty.call(Me,e)?Me[e]:"visit"}n(Le,"vetVisitIntentForEvent");var Ve=1,Be=Object.freeze(["record_request","pet","visit","case"]),Ke=Object.freeze(["record_request.updated","record.ready","pet.vaccination.due","visit.booked","visit.cancelled","visit.completed","visit.no_show","visit.rescheduled","visit.reminder","visit.followup_sent","visit.message_received","visit.ended","chat.follow_up_due","chat.reminder_due","record.activation"]),re=["v","event_id","event_type","target"],Kt=new Set(["kind","conversation_id","request_id","visit_ref","case_ref","pet_ref"]),Yt=new Set(Ke),Ht=new Set(Be),Gt=128,Wt=4096,$t=/^evt_[A-Za-z0-9]{1,64}$/,Qt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Xt=/[-]/;function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}n(O,"isRecord");function Ye(e){return Object.keys(e)}n(Ye,"keysOf");function Jt(e){if(O(e))return e;if(typeof e!="string"||e.length===0||e.length>Wt)return null;let t=JSON.parse(e);return O(t)?t:null}n(Jt,"decodeBlock");function Zt(e,t){let r=e;for(let o of t){if(!O(r))return;r=r[o];}return r}n(Zt,"at");var er=[[],["data"],["request","content","data"],["notification","request","content","data"]];function tr(e){if(!O(e))return null;for(let t of er){let r=Zt(e,t);if(O(r)&&"everfur"in r)return r.everfur}return re.every(t=>t in e)?e:null}n(tr,"locateBlock");function ne(e){return typeof e!="string"||e.length===0||e.length>Gt||Xt.test(e)||e.includes("://")||e.toLowerCase().startsWith("everfur")?null:e}n(ne,"opaqueString");function qe(e,t){if(!(t in e))return {ok:true,value:null};let r=ne(e[t]);return r===null?{ok:false}:{ok:true,value:r}}n(qe,"optional");function te(e,t){return t in e?ne(e[t]):null}n(te,"required");function rr(e,t){if(!O(e))return null;let r=Ye(e);if(!r.includes("kind")||r.some(s=>!Kt.has(s)))return null;let o=e.kind;if(typeof o!="string"||!Ht.has(o))return null;for(let s of r)if(s!=="kind"&&ne(e[s])===null)return null;let i=qe(e,"pet_ref");if(!i.ok)return null;let a=i.value;switch(o){case "record_request":{let s=te(e,"request_id");return s===null?null:Object.freeze({kind:"record_request",requestId:s,petRef:a})}case "pet":return a===null?null:Object.freeze({kind:"pet",petRef:a});case "visit":{let s=te(e,"visit_ref");return s===null?null:Object.freeze({kind:"visit",visitRef:s,petRef:a,intent:Le(t)})}case "case":{let s=te(e,"case_ref");if(s===null)return null;let l=qe(e,"conversation_id");return !l.ok||l.value!==null&&!Qt.test(l.value)?null:Object.freeze({kind:"case",caseRef:s,conversationId:l.value,petRef:a})}default:return null}}n(rr,"parseTarget");function nr(e){let t=Ye(e);if(t.length!==re.length||re.some(a=>!t.includes(a))||e.v!==Ve)return null;let r=e.event_id;if(typeof r!="string"||!$t.test(r))return null;let o=e.event_type;if(typeof o!="string"||!Yt.has(o))return null;let i=rr(e.target,o);return i===null?null:Object.freeze({eventId:r,eventType:o,target:i})}n(nr,"parseBlock");function or(e){try{let t=Jt(tr(e));return t===null?null:nr(t)}catch{return null}}n(or,"parseEverfurNotification");
|
|
2
|
+
exports.EVERFUR_NOTIFICATION_EVENT_TYPES=Ke;exports.EVERFUR_NOTIFICATION_TARGET_KINDS=Be;exports.EVERFUR_NOTIFICATION_VERSION=Ve;exports.NOTIFICATIONS_REASON_MESSAGES=Ce;exports.createNotificationsClient=$;exports.explainNotificationsReason=Pt;exports.parseEverfurNotification=or;exports.useEverfurNotifications=Bt;exports.useEverfurNotificationsClient=Ue;
|
|
@@ -2,12 +2,12 @@ import { E as EverfurError } from '../../EverfurError-DmELDpXp.cjs';
|
|
|
2
2
|
export { a as EverfurErrorCategory, b as EverfurErrorCode } from '../../EverfurError-DmELDpXp.cjs';
|
|
3
3
|
import { E as EverfurResult } from '../../EverfurResult-ZtH-YV1h.cjs';
|
|
4
4
|
import { E as ErrorPolicyPort } from '../../ErrorPolicyPort-D6CybiqJ.cjs';
|
|
5
|
-
import { A as AuthContext } from '../../identity-
|
|
6
|
-
export { I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../../identity-
|
|
5
|
+
import { A as AuthContext } from '../../identity-D7GKfOE7.cjs';
|
|
6
|
+
export { I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../../identity-D7GKfOE7.cjs';
|
|
7
7
|
import { U as UserRef, R as RecordsRequestId, P as PetRef, C as ConversationId } from '../../ids-B2GAAifq.cjs';
|
|
8
8
|
export { B as Brand, _ as __brand } from '../../ids-B2GAAifq.cjs';
|
|
9
9
|
import { V as VetVisitIntent } from '../../visitIntent-D7_yVp1I.cjs';
|
|
10
|
-
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../../config-
|
|
10
|
+
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../../config-jocy3q66.cjs';
|
|
11
11
|
|
|
12
12
|
/** The push providers the registration route accepts. `apns` is refused with `provider_unsupported` until APNs direct lands. */
|
|
13
13
|
type PushProvider = 'expo' | 'fcm' | 'apns';
|
|
@@ -2,12 +2,12 @@ import { E as EverfurError } from '../../EverfurError-DmELDpXp.js';
|
|
|
2
2
|
export { a as EverfurErrorCategory, b as EverfurErrorCode } from '../../EverfurError-DmELDpXp.js';
|
|
3
3
|
import { E as EverfurResult } from '../../EverfurResult-SGvHKsCB.js';
|
|
4
4
|
import { E as ErrorPolicyPort } from '../../ErrorPolicyPort-D22LUVrK.js';
|
|
5
|
-
import { A as AuthContext } from '../../identity-
|
|
6
|
-
export { I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../../identity-
|
|
5
|
+
import { A as AuthContext } from '../../identity-k8nCQ_qM.js';
|
|
6
|
+
export { I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../../identity-k8nCQ_qM.js';
|
|
7
7
|
import { U as UserRef, R as RecordsRequestId, P as PetRef, C as ConversationId } from '../../ids-B2GAAifq.js';
|
|
8
8
|
export { B as Brand, _ as __brand } from '../../ids-B2GAAifq.js';
|
|
9
9
|
import { V as VetVisitIntent } from '../../visitIntent-D7_yVp1I.js';
|
|
10
|
-
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../../config-
|
|
10
|
+
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../../config-DBpKJJbg.js';
|
|
11
11
|
|
|
12
12
|
/** The push providers the registration route accepts. `apns` is refused with `provider_unsupported` until APNs direct lands. */
|
|
13
13
|
type PushProvider = 'expo' | 'fcm' | 'apns';
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {createContext,useMemo,useState,useRef,useEffect,useCallback,useContext}from'react';var He=Object.defineProperty;var n=(e,t)=>He(e,"name",{value:t,configurable:true});function T(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(T,"ok");function u(e){return Object.freeze({ok:false,error:e})}n(u,"err");var j=class j extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,j.prototype);}};n(j,"EverfurConfigError");var P=j;var V=Object.freeze([Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"AuthorizationException",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"ConflictException",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"DAILY_QUOTA_EXCEEDED",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"FILE_TOO_LARGE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_IN_FLIGHT",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"INVALID_CONTENT_TYPE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"InternalFailureException",envelope:"http_envelope",httpStatus:500,retryable:true}),Object.freeze({wireCode:"MethodNotAllowedException",envelope:"http_envelope",httpStatus:405,retryable:false}),Object.freeze({wireCode:"NotImplementedException",envelope:"http_envelope",httpStatus:501,retryable:false}),Object.freeze({wireCode:"PaymentRequiredException",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ResourceNotFoundException",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"ServiceUnavailableException",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"TIER_UPGRADE_REQUIRED",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ThrottlingException",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"ValidationException",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"accessDenied",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"access_denied",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"attachment_unreadable",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"authExpired",envelope:"http_envelope",httpStatus:401,retryable:true}),Object.freeze({wireCode:"authRejected",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"consent_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_required",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_scope_wrong_route",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"device_cipher_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"email_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"event_cursor_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_payload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_not_available",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_unknown",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_required",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_reused",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"insufficientCapability",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"insufficient_scope",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"internal_error",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"invalidRequest",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_client",envelope:"oauth_error",httpStatus:401,retryable:false}),Object.freeze({wireCode:"invalid_client_metadata",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_grant",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_redirect_uri",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_request",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_scope",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_target",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"mcp_connection_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"mcp_request_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"mcp_request_gone",envelope:"http_envelope",httpStatus:410,retryable:false}),Object.freeze({wireCode:"mcp_request_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"not_found",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"partner_visit_link_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"partner_visit_owner_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"partner_visit_pet_already_mapped",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"payload_too_large",envelope:"http_envelope",httpStatus:413,retryable:false}),Object.freeze({wireCode:"petRefInUse",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"pet_health_list_removals_unconfirmed",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_health_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_not_registered",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"provider_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"rateLimited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"record_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"record_subject_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"record_upload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"records_consent_required",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"sandbox_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"session_required",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"share_limit_reached",envelope:"http_envelope",httpStatus:429,retryable:false}),Object.freeze({wireCode:"slow_down",envelope:"oauth_error",httpStatus:429,retryable:true}),Object.freeze({wireCode:"species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"tenant_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"tenant_has_no_capabilities",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"tenant_resource_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"tenant_surface_not_enabled",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"timeout",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"token_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"unavailable",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"unsupported_grant_type",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"unsupported_response_type",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"verify_mint_rate_limited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"verify_mint_refused",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"verify_mint_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"verify_user_ref_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_empty",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);Object.freeze(V.map(e=>e.wireCode));var Ge=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",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",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"}),ae=Object.freeze(V.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ge[e.wireCode]}))),We=new Map(ae.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),$e=Object.freeze(["http_envelope",...[...new Set(ae.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function z(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...$e]){let i=We.get(o+r);if(i)return i}}n(z,"contractErrorFor");function Qe(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Qe,"contractDocUrl");function se(e){return null}n(se,"publishedDocUrl");var Xe=Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"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 le(e){return Xe[e]}n(le,"categoryFor");function ue(e){let t=z(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),o=r.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(o){case "DAILYQUOTAEXCEEDED":case "QUOTAEXCEEDED":return "quotaExceeded";case "RATELIMITED":case "TOOMANYREQUESTS":return "rateLimited";case "IDEMPOTENCYKEYCONFLICT":case "IDEMPOTENCYCONFLICT":return "idempotencyConflict";case "ACCESSDENIED":case "FORBIDDEN":return "accessDenied";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"}}n(ue,"fromWire");var Je=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function B(e){return Je.has(e)}n(B,"isAutoRetryable");var Ze=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function de(e){return B(e)||Ze.has(e)}n(de,"isRetryableCode");var et=500,K=8e3,ce=4;function fe(e,t=Math.random){let r=Math.max(0,e),o=Math.min(et*2**r,K);return Math.floor(t()*o)}n(fe,"backoffDelayMs");var tt=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:"This feature isn't available on your account right now.",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:"Something in that request was not right. Check the details and try again.",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.",unknown:"Something went wrong. Please try again."});function rt(e){return tt[e]}n(rt,"userFacingError");function pe(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(pe,"defineHidden");var nt=/^[a-z][a-z0-9_]{0,63}$/;function E(e,t){let r=z(t?.wireCode,t?.wireEnvelope),o={code:e,category:le(e),retryable:t?.retryable??de(e),displayMessage:rt(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&nt.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&pe(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&pe(o,"raw",t.raw),Object.freeze(o)}n(E,"makeEverfurError");function ye(e){return Object.freeze({kind:"error",terminal:true,code:e.code,retryable:e.retryable,wireMessage:e.wireMessage,synthesized:e.synthesized,lastEventId:e.lastEventId,serverRequestId:e.serverRequestId??null})}n(ye,"errorFrame");function at(e){let t={};return e.mode==="personalized"?t.authorization=`Bearer ${e.token}`:t["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(t["x-everfur-user-ref"]=e.userRef),e.sessionId&&(t["x-everfur-session-id"]=e.sessionId),t}n(at,"authHeaders");function N(e,t){return {...e,headers:{...st(e.headers),...at(t)}}}n(N,"withAuthHeaders");function st(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(t[r]=o);}return t}n(st,"stripAuthHeaders");async function ve(e,t){if(t.mode==="anonymous")return t.transport.request(N(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return u(Y())}let o=await t.transport.request(N(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await t.identity.currentToken({forceRefresh:!0});}catch{return u(Y())}let a=await t.transport.request(N(e,{mode:"personalized",token:i,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?u(Y(a.error.httpStatus)):a}n(ve,"authedSend");function Y(e){return E("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(Y,"authRejectedError");function me(e){return E("internalError",{retryable:true,wireMessage:lt(e)})}n(me,"networkError");function lt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(lt,"describeCause");var ut=3e4,dt=K*2,ct="idempotency-key",ft=new Set(["POST","PUT","PATCH","DELETE"]),pt=Object.freeze({onEvent(){}}),yt=Object.freeze({setTimeout:n((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function vt(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}n(vt,"seededIdempotencyKey");function U(e){let t=e.observer??pt,r=e.timers??yt,o=e.rng??Math.random,i=e.sleep??((p,c)=>kt(p,r,c)),a=e.maxAttempts??ce,s=e.unaryTimeoutMs??ut,l=e.newIdempotencyKey??Et(),d=n(p=>{try{t.onEvent(p);}catch{}},"emit");async function g(p,c,b){let S=b?.maxAttempts,A=Math.max(1,S??a),y=b?.idempotent??ft.has(c.method),v=b?.idempotencyKey===void 0?null:vt(b.idempotencyKey),f=y?v??l():null,m=mt(c,f),h=0;for(;;){let x=n(q=>Object.freeze({call:p,method:c.method,path:c.path,attempt:h,...f?{idempotencyKey:f}:{},...q}),"stamp");d(x({phase:"attempt"}));let ne=St(s,r),oe=It(ne.signal,c.signal),F;try{F=await ve({...m,signal:oe.signal},e.auth);}catch(q){F=u(me(q));}finally{oe.dispose(),ne.cancel();}if(F.ok)return d(x({phase:"settled",ok:true,reason:"ok"})),F;let w=F.error,D=gt(w,h,{maxAttempts:A,rng:o,now:r.now(),aborted:c.signal?.aborted===true,...S!==void 0?{perCallMaxAttempts:S}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),L={ok:false,code:w.code,reason:D.reason,...w.httpStatus!==void 0?{httpStatus:w.httpStatus}:{},...w.requestId!==void 0?{requestId:w.requestId}:{}};if(!D.retry)return d(x({phase:"settled",...L})),u(w);if(d(x({phase:"retry",...L,delayMs:D.delayMs})),await i(D.delayMs,c.signal),c.signal?.aborted===true)return d(x({phase:"settled",...L,reason:"aborted"})),u(w);h+=1;}}n(g,"send");async function C(p){return N(p,await Tt(e.auth))}n(C,"authorize");async function*_(p,c,b){d(Object.freeze({call:p,phase:"stream.open",method:c.method,path:c.path,attempt:0}));try{yield*e.auth.transport.stream(c,b);}catch{yield ye({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(_,"stream"),Object.freeze({send:g,authorize:C,stream:_})}n(U,"createRequestFunnel");function mt(e,t){let r={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==ct&&(r[o]=i);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}n(mt,"assembleHeaders");function Et(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(Et,"defaultIdempotencyKeyFactory");var _t=10;function gt(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=ht(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!B(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{if(r.policy===void 0)return false;try{return !r.policy.shouldRetry(e.code,t)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let s=n(()=>{if(r.policy===void 0)return null;let g;try{g=r.policy.maxAttempts(e.code);}catch{return null}return typeof g!="number"||!Number.isFinite(g)?null:Math.max(1,Math.min(_t,Math.floor(g)))},"policyCeiling"),l=r.perCallMaxAttempts??s()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let d=bt(e,r.now);return d!==null?d>dt?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:d}:{retry:true,reason:i,delayMs:fe(t,r.rng)}}n(gt,"decideRetry");function ht(e){let t=e.code==="unknown"?ue(Ct(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}n(ht,"throttleKind");function bt(e,t){let r=Rt(e.raw);if(r===null)return null;let o=r-t;return o>0?o:0}n(bt,"retryOverrideMs");function Rt(e){for(let t of _e(e)){let r=t.resets_at,o=wt(r);if(o!==null)return o}return null}n(Rt,"findResetsAt");function _e(e){if(!Ee(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];Ee(o)&&t.push(o);}return t}n(_e,"candidateScopes");function wt(e){if(typeof e=="number"&&Number.isFinite(e))return e<1e11?Math.round(e*1e3):Math.round(e);if(typeof e=="string"&&e.trim().length>0){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}n(wt,"parseInstantMs");function Ct(e){for(let t of _e(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}n(Ct,"rawWireCode");function Ee(e){return typeof e=="object"&&e!==null}n(Ee,"isRecord");async function Tt(e){return e.mode==="anonymous"?{mode:"anonymous",publishableKey:e.publishableKey,userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}:{mode:"personalized",token:await e.identity.currentToken(),userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}}n(Tt,"resolveDeviceAuth");function St(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:n(()=>t.clearTimeout(o),"cancel")}}n(St,"boundedSignal");function It(e,t){let r=n(()=>{},"noop");if(!t)return {signal:e,dispose:r};let o=new AbortController;if(e.aborted||t.aborted)return o.abort(),{signal:o.signal,dispose:r};let i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),t.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),t.removeEventListener("abort",i);},"dispose")}}n(It,"mergeSignals");function kt(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let i=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=n(()=>{t.clearTimeout(i),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}n(kt,"delayAbortable");function Ot(e){let t=e.raw;if(typeof t!="object"||t===null)return null;let r=t.code;return typeof r=="string"&&r.length>0?r:null}n(Ot,"wireCodeOf");function ge(e,t){let r=Ot(e);if(r===null)return e;let o=t[r];return o===void 0?e:E(o.code,{retryable:o.retryable,...e.httpStatus!==void 0?{httpStatus:e.httpStatus}:{},...e.requestId!==void 0?{requestId:e.requestId}:{},wireCode:r,reasonCode:r,...e.wireMessage!==void 0?{wireMessage:e.wireMessage}:{},raw:e.raw})}n(ge,"foldWireReason");var Ce=Object.freeze({provider_unsupported:"Everfur does not send through this push provider yet. Register an Expo push token (provider expo) or an FCM registration token (provider fcm); APNs direct is not available in this version.",token_invalid:"The token is not a push token of the given provider. Expo tokens look like ExponentPushToken[...]; FCM registration tokens are long opaque strings. Pass the token exactly as your notification library printed it.",device_cipher_unavailable:"Everfur could not seal the token at rest, so nothing was stored. Retry the registration later; the SDK retries it on the next launch and login.",credentials_missing:"Everfur holds no push credential for this provider on your tenant, so deliveries to it are skipped. Expo needs nothing unless you enabled push security (then your Expo access token). A bare app using FCM supplies its Firebase service-account JSON to Everfur; push credentials are set by Everfur on your tenant, never through the SDK."}),xt=new Set(["provider_unsupported","token_invalid","device_cipher_unavailable","credentials_missing"]);function Ft(e){let t=e.reasonCode;return t!==void 0&&xt.has(t)?Ce[t]:null}n(Ft,"explainNotificationsReason");var Te=new Set(["expo","fcm","apns"]),Se=new Set(["ios","android"]),he=4096,be=128,Re=64,Ie=/[- ]/;function R(e,t){return E("validationFailed",{retryable:false,wireMessage:e,...t?{reasonCode:t}:{}})}n(R,"invalid");function Pt(e){if(typeof e!="object"||e===null)return R("registerDevice needs an input object");let{token:t,provider:r,platform:o,installationId:i}=e;return typeof r!="string"||!Te.has(r)?R("provider must be expo, fcm or apns"):typeof o!="string"||!Se.has(o)?R("platform must be ios or android"):typeof t!="string"||t.trim().length===0||t.length>he||Ie.test(t)?R(`token must be a push token of 1..${he} characters with no whitespace`,"token_invalid"):i!==void 0&&(typeof i!="string"||i.length===0||i.length>be)?R(`installationId must be 1..${be} characters`):null}n(Pt,"validateRegister");function Nt(e){return typeof e!="string"||e.length===0||e.length>Re?R(`deviceId must be 1..${Re} characters`):Ie.test(e)||e.includes("/")||e==="."||e===".."?R("deviceId is not a device id"):null}n(Nt,"validateDeviceId");function At(e){if(typeof e!="object"||e===null)return R("setPreferences needs an input object");let{pushEnabled:t,emailEnabled:r}=e;return typeof t!="boolean"||typeof r!="boolean"?R("pushEnabled and emailEnabled must both be booleans: the route replaces both switches"):null}n(At,"validatePreferences");function I(e){return typeof e=="string"&&e.length>0?e:null}n(I,"str");function Dt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.device_id),o=I(t.provider),i=I(t.platform),a=I(t.registered_at),s=I(t.last_seen_at);if(r===null||o===null||i===null||a===null||s===null||!Te.has(o)||!Se.has(i))return null;let l=t.installation_id;return Object.freeze({deviceId:r,provider:o,platform:i,installationId:typeof l=="string"&&l.length>0?l:null,registeredAt:a,lastSeenAt:s})}n(Dt,"parseDevice");function jt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.updated_at);return typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||r===null?null:Object.freeze({pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,updatedAt:r})}n(jt,"parsePreferences");function we(e){return E("internalError",{retryable:false,wireMessage:`${e}: the response was not the documented shape`})}n(we,"malformed");var zt=Object.freeze({provider_unsupported:{code:"validationFailed",retryable:false},token_invalid:{code:"validationFailed",retryable:false},device_cipher_unavailable:{code:"serviceUnavailable",retryable:true}});function H(e){return ge(e,zt)}n(H,"refine");function G(e){return E("validationFailed",{retryable:false,wireMessage:`the Everfur runtime is disposed; ${e} was called after unmount`})}n(G,"disposed");function W(e){let t=n(()=>{let{services:r}=e.registry;return $({auth:r.authFor(null),...r.errorPolicy?{errorPolicy:r.errorPolicy}:{}})},"over");return {registerDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(G("registerDevice"))):t().registerDevice(r,o),"registerDevice"),unregisterDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(G("unregisterDevice"))):t().unregisterDevice(r,o),"unregisterDevice"),setPreferences:n((r,o)=>e.isDisposed?Promise.resolve(u(G("setPreferences"))):t().setPreferences(r,o),"setPreferences")}}n(W,"createNotificationsClient");function $(e){let t=e.funnel??U({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=n((o,i)=>i?{...o,signal:i}:o,"withSignal");return {async registerDevice(o,i){let a=Pt(o);if(a!==null)return u(a);let s={token:o.token,provider:o.provider,platform:o.platform};o.installationId!==void 0&&(s.installation_id=o.installationId);let l=await t.send("notifications.registerDevice",r({method:"POST",path:"/widget/v1/me/devices",body:s},i?.signal));if(!l.ok)return u(H(l.error));let d=Dt(l.value);return d===null?u(we("registerDevice")):T(d)},async unregisterDevice(o,i){let a=Nt(o);if(a!==null)return u(a);let s=await t.send("notifications.unregisterDevice",r({method:"DELETE",path:`/widget/v1/me/devices/${encodeURIComponent(o)}`},i?.signal));return s.ok?T(void 0):u(H(s.error))},async setPreferences(o,i){let a=At(o);if(a!==null)return u(a);let s=await t.send("notifications.setPreferences",r({method:"PUT",path:"/widget/v1/me/notification-preferences",body:{push_enabled:o.pushEnabled,email_enabled:o.emailEnabled}},i?.signal));if(!s.ok)return u(H(s.error));let l=jt(s.value);return l===null?u(we("setPreferences")):T(l)}}}n($,"createNotificationsClientOver");var k="everfur.notifications.device";var ke=3e3;var Oe=Symbol.for("@everfur/sdk#EverfurContext@v1"),xe=globalThis,Fe=xe[Oe]??(xe[Oe]=createContext(null));Fe.displayName??="EverfurContext";function Q(){let e=useContext(Fe);if(e===null)throw new P("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(Q,"useEverfurContext");var ze=1;async function J(e){try{let t=await e.getItem(k);if(t===null)return null;let r=JSON.parse(t);if(typeof r!="object"||r===null)return null;let{v:o,userRef:i,deviceId:a}=r;return o!==ze||typeof i!="string"||typeof a!="string"||a.length===0?null:{userRef:i,deviceId:a}}catch{return null}}n(J,"readStored");async function qt(e,t){try{await e.setItem(k,JSON.stringify({v:ze,...t}));}catch{}}n(qt,"writeStored");async function Ne(e){try{await e.removeItem(k);}catch{}}n(Ne,"clearStored");var Ae=Object.freeze({status:"signed_out",device:null,error:null}),De=Object.freeze({status:"no_token",device:null,error:null});function Z(){return E("sessionRequired",{retryable:false,wireMessage:"notifications need a signed-in user on the provider"})}n(Z,"noUser");function Ue(){let{runtime:e}=Q();return useMemo(()=>W(e),[e])}n(Ue,"useEverfurNotificationsClient");function Vt(e){let{runtime:t,userRef:r}=Q(),{token:o,provider:i,platform:a,installationId:s}=e,l=t.registry.services.kv,d=Ue(),[g,C]=useState(r===null?Ae:De),_=useRef(null),p=useRef(0);useEffect(()=>{if(p.current+=1,_.current=null,C(r===null?Ae:De),r===null)return;let y=true;return J(l).then(v=>{if(!y||v===null||v.userRef!==r)return;let f=_.current;if(f===null){_.current=v;return}f.deviceId!==v.deviceId&&d.unregisterDevice(v.deviceId);}),()=>{y=false;}},[d,l,r]);let c=useCallback(async(y,v)=>{let f=p.current+=1;C({status:"registering",device:null,error:null});let m=await d.registerDevice({token:v,provider:i,platform:a,...s===void 0?{}:{installationId:s}});if(f!==p.current)return m;if(!m.ok)return C({status:m.error.httpStatus===404?"unavailable":"failed",device:null,error:m.error}),m;let h=_.current;return _.current={userRef:y,deviceId:m.value.deviceId},C({status:"registered",device:m.value,error:null}),await qt(l,_.current),h!==null&&h.userRef===y&&h.deviceId!==m.value.deviceId&&d.unregisterDevice(h.deviceId),m},[d,l,i,a,s]);useEffect(()=>{r===null||o===null||c(r,o);},[c,r,o]),useEffect(()=>t.onBeforeLogout(async({userRef:y,auth:v})=>{let f=_.current??await J(l);if(f===null||f.userRef!==y)return;_.current=null;let m=U({auth:v,maxAttempts:1,unaryTimeoutMs:ke,...t.registry.services.errorPolicy?{errorPolicy:t.registry.services.errorPolicy}:{}}),h=await $({auth:v,funnel:m}).unregisterDevice(f.deviceId);(h.ok||h.error.httpStatus===404)&&await Ne(l);}),[t,l]);let b=useCallback(async()=>r===null?u(Z()):o===null?u(E("validationFailed",{retryable:false,reasonCode:"token_invalid",wireMessage:"no push token was given"})):c(r,o),[c,r,o]),S=useCallback(async()=>{if(r===null)return u(Z());let y=_.current??await J(l);if(y===null||y.userRef!==r)return T(void 0);let v=p.current+=1,f=await d.unregisterDevice(y.deviceId);return f.ok||f.error.httpStatus===404?(_.current=null,await Ne(l),v===p.current&&C({status:"unregistered",device:null,error:null}),f.ok?f:T(void 0)):f},[d,l,r]),A=useCallback(y=>r===null?Promise.resolve(u(Z())):d.setPreferences(y),[d,r]);return useMemo(()=>({status:g.status,device:g.device,error:g.error,register:b,unregister:S,setPreferences:A}),[g,b,S,A])}n(Vt,"useEverfurNotifications");var Me=Object.freeze({"visit.booked":"visit","visit.reminder":"join","visit.rescheduled":"visit","visit.followup_sent":"messages","visit.message_received":"messages","visit.completed":"summary","visit.ended":"visit","visit.cancelled":null,"visit.no_show":null});function Le(e){return Object.prototype.hasOwnProperty.call(Me,e)?Me[e]:"visit"}n(Le,"vetVisitIntentForEvent");var Ve=1,Be=Object.freeze(["record_request","pet","visit","case"]),Ke=Object.freeze(["record_request.updated","record.ready","pet.vaccination.due","visit.booked","visit.cancelled","visit.completed","visit.no_show","visit.rescheduled","visit.reminder","visit.followup_sent","visit.message_received","visit.ended","chat.follow_up_due","chat.reminder_due","record.activation"]),te=["v","event_id","event_type","target"],Bt=new Set(["kind","conversation_id","request_id","visit_ref","case_ref","pet_ref"]),Kt=new Set(Ke),Yt=new Set(Be),Ht=128,Gt=4096,Wt=/^evt_[A-Za-z0-9]{1,64}$/,$t=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Qt=/[-]/;function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}n(O,"isRecord");function Ye(e){return Object.keys(e)}n(Ye,"keysOf");function Xt(e){if(O(e))return e;if(typeof e!="string"||e.length===0||e.length>Gt)return null;let t=JSON.parse(e);return O(t)?t:null}n(Xt,"decodeBlock");function Jt(e,t){let r=e;for(let o of t){if(!O(r))return;r=r[o];}return r}n(Jt,"at");var Zt=[[],["data"],["request","content","data"],["notification","request","content","data"]];function er(e){if(!O(e))return null;for(let t of Zt){let r=Jt(e,t);if(O(r)&&"everfur"in r)return r.everfur}return te.every(t=>t in e)?e:null}n(er,"locateBlock");function re(e){return typeof e!="string"||e.length===0||e.length>Ht||Qt.test(e)||e.includes("://")||e.toLowerCase().startsWith("everfur")?null:e}n(re,"opaqueString");function qe(e,t){if(!(t in e))return {ok:true,value:null};let r=re(e[t]);return r===null?{ok:false}:{ok:true,value:r}}n(qe,"optional");function ee(e,t){return t in e?re(e[t]):null}n(ee,"required");function tr(e,t){if(!O(e))return null;let r=Ye(e);if(!r.includes("kind")||r.some(s=>!Bt.has(s)))return null;let o=e.kind;if(typeof o!="string"||!Yt.has(o))return null;for(let s of r)if(s!=="kind"&&re(e[s])===null)return null;let i=qe(e,"pet_ref");if(!i.ok)return null;let a=i.value;switch(o){case "record_request":{let s=ee(e,"request_id");return s===null?null:Object.freeze({kind:"record_request",requestId:s,petRef:a})}case "pet":return a===null?null:Object.freeze({kind:"pet",petRef:a});case "visit":{let s=ee(e,"visit_ref");return s===null?null:Object.freeze({kind:"visit",visitRef:s,petRef:a,intent:Le(t)})}case "case":{let s=ee(e,"case_ref");if(s===null)return null;let l=qe(e,"conversation_id");return !l.ok||l.value!==null&&!$t.test(l.value)?null:Object.freeze({kind:"case",caseRef:s,conversationId:l.value,petRef:a})}default:return null}}n(tr,"parseTarget");function rr(e){let t=Ye(e);if(t.length!==te.length||te.some(a=>!t.includes(a))||e.v!==Ve)return null;let r=e.event_id;if(typeof r!="string"||!Wt.test(r))return null;let o=e.event_type;if(typeof o!="string"||!Kt.has(o))return null;let i=tr(e.target,o);return i===null?null:Object.freeze({eventId:r,eventType:o,target:i})}n(rr,"parseBlock");function nr(e){try{let t=Xt(er(e));return t===null?null:rr(t)}catch{return null}}n(nr,"parseEverfurNotification");
|
|
2
|
-
export{Ke as EVERFUR_NOTIFICATION_EVENT_TYPES,Be as EVERFUR_NOTIFICATION_TARGET_KINDS,Ve as EVERFUR_NOTIFICATION_VERSION,Ce as NOTIFICATIONS_REASON_MESSAGES
|
|
1
|
+
import {createContext,useMemo,useState,useRef,useEffect,useCallback,useContext}from'react';var He=Object.defineProperty;var n=(e,t)=>He(e,"name",{value:t,configurable:true});function T(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(T,"ok");function u(e){return Object.freeze({ok:false,error:e})}n(u,"err");var j=class j extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,j.prototype);}};n(j,"EverfurConfigError");var P=j;var V=Object.freeze([Object.freeze({wireCode:"AccessDeniedException",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"AuthorizationException",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"ConflictException",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"DAILY_QUOTA_EXCEEDED",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"FILE_TOO_LARGE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_IN_FLIGHT",envelope:"http_envelope",httpStatus:409,retryable:true}),Object.freeze({wireCode:"IDEMPOTENCY_KEY_REUSED_DIFFERENT_REQUEST",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"INVALID_CONTENT_TYPE",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"InternalFailureException",envelope:"http_envelope",httpStatus:500,retryable:true}),Object.freeze({wireCode:"MethodNotAllowedException",envelope:"http_envelope",httpStatus:405,retryable:false}),Object.freeze({wireCode:"NotImplementedException",envelope:"http_envelope",httpStatus:501,retryable:false}),Object.freeze({wireCode:"PaymentRequiredException",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ResourceNotFoundException",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"ServiceUnavailableException",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"TIER_UPGRADE_REQUIRED",envelope:"http_envelope",httpStatus:402,retryable:false}),Object.freeze({wireCode:"ThrottlingException",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"ValidationException",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"accessDenied",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"access_denied",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"attachment_unreadable",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"authExpired",envelope:"http_envelope",httpStatus:401,retryable:true}),Object.freeze({wireCode:"authRejected",envelope:"http_envelope",httpStatus:401,retryable:false}),Object.freeze({wireCode:"consent_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_required",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"consent_scope_wrong_route",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"device_cipher_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"email_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"event_cursor_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_payload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_not_available",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"event_type_unknown",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_required",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"idempotency_key_reused",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"insufficientCapability",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"insufficient_scope",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"internal_error",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"invalidRequest",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_client",envelope:"oauth_error",httpStatus:401,retryable:false}),Object.freeze({wireCode:"invalid_client_metadata",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_grant",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_redirect_uri",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_request",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_scope",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"invalid_target",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"mcp_connection_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"mcp_request_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"mcp_request_gone",envelope:"http_envelope",httpStatus:410,retryable:false}),Object.freeze({wireCode:"mcp_request_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"not_found",envelope:"sse_frame",httpStatus:200,retryable:false}),Object.freeze({wireCode:"partner_visit_link_conflict",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"partner_visit_owner_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"partner_visit_pet_already_mapped",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"payload_too_large",envelope:"http_envelope",httpStatus:413,retryable:false}),Object.freeze({wireCode:"petRefInUse",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"pet_health_list_removals_unconfirmed",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_health_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"pet_not_registered",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"provider_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"rateLimited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"record_species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"record_subject_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"record_upload_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"records_consent_required",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"sandbox_only",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"session_required",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"share_limit_reached",envelope:"http_envelope",httpStatus:429,retryable:false}),Object.freeze({wireCode:"slow_down",envelope:"oauth_error",httpStatus:429,retryable:true}),Object.freeze({wireCode:"species_unsupported",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"tenant_filter_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"tenant_has_no_capabilities",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"tenant_resource_not_found",envelope:"http_envelope",httpStatus:404,retryable:false}),Object.freeze({wireCode:"tenant_surface_not_enabled",envelope:"http_envelope",httpStatus:409,retryable:false}),Object.freeze({wireCode:"timeout",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"token_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"unavailable",envelope:"sse_frame",httpStatus:200,retryable:true}),Object.freeze({wireCode:"unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"unsupported_grant_type",envelope:"oauth_error",httpStatus:400,retryable:false}),Object.freeze({wireCode:"unsupported_response_type",envelope:"oauth_error",httpStatus:302,retryable:false}),Object.freeze({wireCode:"verify_mint_rate_limited",envelope:"http_envelope",httpStatus:429,retryable:true}),Object.freeze({wireCode:"verify_mint_refused",envelope:"http_envelope",httpStatus:403,retryable:false}),Object.freeze({wireCode:"verify_mint_unavailable",envelope:"http_envelope",httpStatus:503,retryable:true}),Object.freeze({wireCode:"verify_user_ref_invalid",envelope:"http_envelope",httpStatus:422,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_empty",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_endpoint_update_invalid",envelope:"http_envelope",httpStatus:400,retryable:false}),Object.freeze({wireCode:"webhook_url_rejected",envelope:"http_envelope",httpStatus:400,retryable:false})]);Object.freeze(V.map(e=>e.wireCode));var Ge=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",accessDenied:"accessDenied",invalidRequest:"sdkUpdateRequired",authRejected:"authRejected",rateLimited:"rateLimited",insufficientCapability:"accessDenied",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"}),se=Object.freeze(V.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:Ge[e.wireCode]}))),We=new Map(se.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),$e=Object.freeze(["http_envelope",...[...new Set(se.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function z(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...$e]){let i=We.get(o+r);if(i)return i}}n(z,"contractErrorFor");function Qe(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Qe,"contractDocUrl");function le(e){return null}n(le,"publishedDocUrl");var Xe=Object.freeze({authExpired:"authentication",authRejected:"authentication",sessionRequired:"authentication",accessDenied:"authorization",paymentRequired:"entitlement",quotaExceeded:"rateLimit",rateLimited:"rateLimit",validationFailed:"invalidRequest",sdkUpdateRequired:"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 ue(e){return Xe[e]}n(ue,"categoryFor");function de(e){let t=z(e);if(t)return t.normalized;let r=(e??"").trim().toUpperCase(),o=r.replace(/[^A-Z0-9]/g,"");if(o==="AUTHREJECTED")return "authRejected";if(r.startsWith("AUTH"))return "authExpired";switch(o){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 "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"}}n(de,"fromWire");var Je=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function B(e){return Je.has(e)}n(B,"isAutoRetryable");var Ze=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function ce(e){return B(e)||Ze.has(e)}n(ce,"isRetryableCode");var et=500,K=8e3,fe=4;function pe(e,t=Math.random){let r=Math.max(0,e),o=Math.min(et*2**r,K);return Math.floor(t()*o)}n(pe,"backoffDelayMs");var tt=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:"This feature isn't available on your account right now.",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:"Something in that request was not right. Check the details and try again.",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.",unknown:"Something went wrong. Please try again."});function rt(e){return tt[e]}n(rt,"userFacingError");function ye(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(ye,"defineHidden");var nt=/^[a-z][a-z0-9_]{0,63}$/;function E(e,t){let r=z(t?.wireCode,t?.wireEnvelope),o={code:e,category:ue(e),retryable:t?.retryable??ce(e),displayMessage:rt(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&nt.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&ye(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&ye(o,"raw",t.raw),Object.freeze(o)}n(E,"makeEverfurError");function ve(e){return Object.freeze({kind:"error",terminal:true,code:e.code,retryable:e.retryable,wireMessage:e.wireMessage,synthesized:e.synthesized,lastEventId:e.lastEventId,serverRequestId:e.serverRequestId??null})}n(ve,"errorFrame");function at(e){let t={};return e.mode==="personalized"?t.authorization=`Bearer ${e.token}`:t["x-everfur-partner-key"]=e.publishableKey,e.userRef&&(t["x-everfur-user-ref"]=e.userRef),e.sessionId&&(t["x-everfur-session-id"]=e.sessionId),t}n(at,"authHeaders");function N(e,t){return {...e,headers:{...st(e.headers),...at(t)}}}n(N,"withAuthHeaders");function st(e){if(!e)return {};let t={};for(let[r,o]of Object.entries(e)){let i=r.toLowerCase();i==="authorization"||i==="x-everfur-partner-key"||(t[r]=o);}return t}n(st,"stripAuthHeaders");async function me(e,t){if(t.mode==="anonymous")return t.transport.request(N(e,{mode:"anonymous",publishableKey:t.publishableKey,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));let r;try{r=await t.identity.currentToken();}catch{return u(Y())}let o=await t.transport.request(N(e,{mode:"personalized",token:r,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));if(o.ok||o.error.httpStatus!==401)return o;let i;try{i=await t.identity.currentToken({forceRefresh:!0});}catch{return u(Y())}let a=await t.transport.request(N(e,{mode:"personalized",token:i,userRef:t.userRef,...t.sessionId?{sessionId:t.sessionId}:{}}));return !a.ok&&a.error.httpStatus===401?u(Y(a.error.httpStatus)):a}n(me,"authedSend");function Y(e){return E("authRejected",{retryable:false,...e!==void 0?{httpStatus:e}:{}})}n(Y,"authRejectedError");function Ee(e){return E("internalError",{retryable:true,wireMessage:lt(e)})}n(Ee,"networkError");function lt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(lt,"describeCause");var ut=3e4,dt=K*2,ct="idempotency-key",ft=new Set(["POST","PUT","PATCH","DELETE"]),pt=Object.freeze({onEvent(){}}),yt=Object.freeze({setTimeout:n((e,t)=>setTimeout(e,t),"setTimeout"),clearTimeout:n(e=>clearTimeout(e),"clearTimeout"),now:n(()=>Date.now(),"now")});function vt(e){let t=e.trim().replace(/[^A-Za-z0-9_.:-]/g,"-");return t.length===0?null:`efs_${t}`.slice(0,128)}n(vt,"seededIdempotencyKey");function U(e){let t=e.observer??pt,r=e.timers??yt,o=e.rng??Math.random,i=e.sleep??((p,c)=>Ot(p,r,c)),a=e.maxAttempts??fe,s=e.unaryTimeoutMs??ut,l=e.newIdempotencyKey??Et(),d=n(p=>{try{t.onEvent(p);}catch{}},"emit");async function g(p,c,b){let S=b?.maxAttempts,A=Math.max(1,S??a),y=b?.idempotent??ft.has(c.method),v=b?.idempotencyKey===void 0?null:vt(b.idempotencyKey),f=y?v??l():null,m=mt(c,f),h=0;for(;;){let x=n(q=>Object.freeze({call:p,method:c.method,path:c.path,attempt:h,...f?{idempotencyKey:f}:{},...q}),"stamp");d(x({phase:"attempt"}));let oe=It(s,r),ie=kt(oe.signal,c.signal),F;try{F=await me({...m,signal:ie.signal},e.auth);}catch(q){F=u(Ee(q));}finally{ie.dispose(),oe.cancel();}if(F.ok)return d(x({phase:"settled",ok:true,reason:"ok"})),F;let w=F.error,D=gt(w,h,{maxAttempts:A,rng:o,now:r.now(),aborted:c.signal?.aborted===true,...S!==void 0?{perCallMaxAttempts:S}:{},...e.errorPolicy!==void 0?{policy:e.errorPolicy}:{}}),L={ok:false,code:w.code,reason:D.reason,...w.httpStatus!==void 0?{httpStatus:w.httpStatus}:{},...w.requestId!==void 0?{requestId:w.requestId}:{}};if(!D.retry)return d(x({phase:"settled",...L})),u(w);if(d(x({phase:"retry",...L,delayMs:D.delayMs})),await i(D.delayMs,c.signal),c.signal?.aborted===true)return d(x({phase:"settled",...L,reason:"aborted"})),u(w);h+=1;}}n(g,"send");async function C(p){return N(p,await St(e.auth))}n(C,"authorize");async function*_(p,c,b){d(Object.freeze({call:p,phase:"stream.open",method:c.method,path:c.path,attempt:0}));try{yield*e.auth.transport.stream(c,b);}catch{yield ve({code:"internal_error",retryable:true,wireMessage:null,synthesized:true,lastEventId:null,serverRequestId:null});}}return n(_,"stream"),Object.freeze({send:g,authorize:C,stream:_})}n(U,"createRequestFunnel");function mt(e,t){let r={};for(let[o,i]of Object.entries(e.headers??{}))o.toLowerCase()!==ct&&(r[o]=i);return t!==null&&(r["Idempotency-Key"]=t),{...e,headers:r}}n(mt,"assembleHeaders");function Et(){let e=0;return ()=>`efk_${Date.now().toString(36)}_${(e++).toString(36)}_${Math.random().toString(36).slice(2,12)}`}n(Et,"defaultIdempotencyKeyFactory");var _t=10;function gt(e,t,r){if(r.aborted)return {retry:false,reason:"aborted"};let o=ht(e);if(o==="quota")return {retry:false,reason:"daily-quota-exhausted"};if(o!=="burst"&&!B(e.code))return {retry:false,reason:"terminal-code"};let i=o==="burst"?"burst-throttle":"retryable-code";if(n(()=>{if(r.policy===void 0)return false;try{return !r.policy.shouldRetry(e.code,t)}catch{return false}},"policyVetoedRetry")())return {retry:false,reason:"terminal-code"};let s=n(()=>{if(r.policy===void 0)return null;let g;try{g=r.policy.maxAttempts(e.code);}catch{return null}return typeof g!="number"||!Number.isFinite(g)?null:Math.max(1,Math.min(_t,Math.floor(g)))},"policyCeiling"),l=r.perCallMaxAttempts??s()??r.maxAttempts;if(t+1>=l)return {retry:false,reason:"attempts-exhausted"};let d=bt(e,r.now);return d!==null?d>dt?{retry:false,reason:"server-reset-beyond-budget"}:{retry:true,reason:i,delayMs:d}:{retry:true,reason:i,delayMs:pe(t,r.rng)}}n(gt,"decideRetry");function ht(e){let t=e.code==="unknown"?de(Tt(e.raw)):e.code;return t==="quotaExceeded"?"quota":t==="rateLimited"||e.httpStatus===429?"burst":null}n(ht,"throttleKind");function bt(e,t){let r=wt(e.raw);if(r!==null){let i=r-t;return i>0?i:0}let o=Rt(e.raw);return o===null?null:Math.round(o*1e3)}n(bt,"retryOverrideMs");function Rt(e){for(let t of H(e)){let r=t.retry_after_seconds;if(typeof r=="number"&&Number.isFinite(r)&&r>=0)return r}return null}n(Rt,"findRetryAfterSeconds");function wt(e){for(let t of H(e)){let r=t.resets_at,o=Ct(r);if(o!==null)return o}return null}n(wt,"findResetsAt");function H(e){if(!_e(e))return [];let t=[e];for(let r of ["error","detail"]){let o=e[r];_e(o)&&t.push(o);}return t}n(H,"candidateScopes");function Ct(e){if(typeof e=="number"&&Number.isFinite(e))return e<1e11?Math.round(e*1e3):Math.round(e);if(typeof e=="string"&&e.trim().length>0){let t=Date.parse(e);return Number.isFinite(t)?t:null}return null}n(Ct,"parseInstantMs");function Tt(e){for(let t of H(e)){let r=t.code;if(typeof r=="string"&&r.length>0)return r}return null}n(Tt,"rawWireCode");function _e(e){return typeof e=="object"&&e!==null}n(_e,"isRecord");async function St(e){return e.mode==="anonymous"?{mode:"anonymous",publishableKey:e.publishableKey,userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}:{mode:"personalized",token:await e.identity.currentToken(),userRef:e.userRef,...e.sessionId?{sessionId:e.sessionId}:{}}}n(St,"resolveDeviceAuth");function It(e,t){let r=new AbortController,o=t.setTimeout(()=>r.abort(),e);return {signal:r.signal,cancel:n(()=>t.clearTimeout(o),"cancel")}}n(It,"boundedSignal");function kt(e,t){let r=n(()=>{},"noop");if(!t)return {signal:e,dispose:r};let o=new AbortController;if(e.aborted||t.aborted)return o.abort(),{signal:o.signal,dispose:r};let i=n(()=>o.abort(),"onAbort");return e.addEventListener("abort",i,{once:true}),t.addEventListener("abort",i,{once:true}),{signal:o.signal,dispose:n(()=>{e.removeEventListener("abort",i),t.removeEventListener("abort",i);},"dispose")}}n(kt,"mergeSignals");function Ot(e,t,r){return e<=0||r?.aborted===true?Promise.resolve():new Promise(o=>{let i=t.setTimeout(()=>{r?.removeEventListener("abort",a),o();},e),a=n(()=>{t.clearTimeout(i),o();},"onAbort");r?.addEventListener("abort",a,{once:true});})}n(Ot,"delayAbortable");function xt(e){let t=e.raw;if(typeof t!="object"||t===null)return null;let r=t.code;return typeof r=="string"&&r.length>0?r:null}n(xt,"wireCodeOf");function ge(e,t){let r=xt(e);if(r===null)return e;let o=t[r];return o===void 0?e:E(o.code,{retryable:o.retryable,...e.httpStatus!==void 0?{httpStatus:e.httpStatus}:{},...e.requestId!==void 0?{requestId:e.requestId}:{},wireCode:r,reasonCode:r,...e.wireMessage!==void 0?{wireMessage:e.wireMessage}:{},raw:e.raw})}n(ge,"foldWireReason");var Ce=Object.freeze({provider_unsupported:"Everfur does not send through this push provider yet. Register an Expo push token (provider expo) or an FCM registration token (provider fcm); APNs direct is not available in this version.",token_invalid:"The token is not a push token of the given provider. Expo tokens look like ExponentPushToken[...]; FCM registration tokens are long opaque strings. Pass the token exactly as your notification library printed it.",device_cipher_unavailable:"Everfur could not seal the token at rest, so nothing was stored. Retry the registration later; the SDK retries it on the next launch and login.",credentials_missing:"Everfur holds no push credential for this provider on your tenant, so deliveries to it are skipped. Expo needs nothing unless you enabled push security (then your Expo access token). A bare app using FCM supplies its Firebase service-account JSON to Everfur; push credentials are set by Everfur on your tenant, never through the SDK."}),Ft=new Set(["provider_unsupported","token_invalid","device_cipher_unavailable","credentials_missing"]);function Pt(e){let t=e.reasonCode;return t!==void 0&&Ft.has(t)?Ce[t]:null}n(Pt,"explainNotificationsReason");var Te=new Set(["expo","fcm","apns"]),Se=new Set(["ios","android"]),he=4096,be=128,Re=64,Ie=/[- ]/;function R(e,t){return E("validationFailed",{retryable:false,wireMessage:e,...t?{reasonCode:t}:{}})}n(R,"invalid");function Nt(e){if(typeof e!="object"||e===null)return R("registerDevice needs an input object");let{token:t,provider:r,platform:o,installationId:i}=e;return typeof r!="string"||!Te.has(r)?R("provider must be expo, fcm or apns"):typeof o!="string"||!Se.has(o)?R("platform must be ios or android"):typeof t!="string"||t.trim().length===0||t.length>he||Ie.test(t)?R(`token must be a push token of 1..${he} characters with no whitespace`,"token_invalid"):i!==void 0&&(typeof i!="string"||i.length===0||i.length>be)?R(`installationId must be 1..${be} characters`):null}n(Nt,"validateRegister");function At(e){return typeof e!="string"||e.length===0||e.length>Re?R(`deviceId must be 1..${Re} characters`):Ie.test(e)||e.includes("/")||e==="."||e===".."?R("deviceId is not a device id"):null}n(At,"validateDeviceId");function Dt(e){if(typeof e!="object"||e===null)return R("setPreferences needs an input object");let{pushEnabled:t,emailEnabled:r}=e;return typeof t!="boolean"||typeof r!="boolean"?R("pushEnabled and emailEnabled must both be booleans: the route replaces both switches"):null}n(Dt,"validatePreferences");function I(e){return typeof e=="string"&&e.length>0?e:null}n(I,"str");function jt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.device_id),o=I(t.provider),i=I(t.platform),a=I(t.registered_at),s=I(t.last_seen_at);if(r===null||o===null||i===null||a===null||s===null||!Te.has(o)||!Se.has(i))return null;let l=t.installation_id;return Object.freeze({deviceId:r,provider:o,platform:i,installationId:typeof l=="string"&&l.length>0?l:null,registeredAt:a,lastSeenAt:s})}n(jt,"parseDevice");function zt(e){if(typeof e!="object"||e===null)return null;let t=e,r=I(t.updated_at);return typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||r===null?null:Object.freeze({pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,updatedAt:r})}n(zt,"parsePreferences");function we(e){return E("internalError",{retryable:false,wireMessage:`${e}: the response was not the documented shape`})}n(we,"malformed");var Ut=Object.freeze({provider_unsupported:{code:"validationFailed",retryable:false},token_invalid:{code:"validationFailed",retryable:false},device_cipher_unavailable:{code:"serviceUnavailable",retryable:true}});function G(e){return ge(e,Ut)}n(G,"refine");function W(e){return E("validationFailed",{retryable:false,wireMessage:`the Everfur runtime is disposed; ${e} was called after unmount`})}n(W,"disposed");function $(e){let t=n(()=>{let{services:r}=e.registry;return Q({auth:r.authFor(null),...r.errorPolicy?{errorPolicy:r.errorPolicy}:{}})},"over");return {registerDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(W("registerDevice"))):t().registerDevice(r,o),"registerDevice"),unregisterDevice:n((r,o)=>e.isDisposed?Promise.resolve(u(W("unregisterDevice"))):t().unregisterDevice(r,o),"unregisterDevice"),setPreferences:n((r,o)=>e.isDisposed?Promise.resolve(u(W("setPreferences"))):t().setPreferences(r,o),"setPreferences")}}n($,"createNotificationsClient");function Q(e){let t=e.funnel??U({auth:e.auth,...e.errorPolicy?{errorPolicy:e.errorPolicy}:{}}),r=n((o,i)=>i?{...o,signal:i}:o,"withSignal");return {async registerDevice(o,i){let a=Nt(o);if(a!==null)return u(a);let s={token:o.token,provider:o.provider,platform:o.platform};o.installationId!==void 0&&(s.installation_id=o.installationId);let l=await t.send("notifications.registerDevice",r({method:"POST",path:"/widget/v1/me/devices",body:s},i?.signal));if(!l.ok)return u(G(l.error));let d=jt(l.value);return d===null?u(we("registerDevice")):T(d)},async unregisterDevice(o,i){let a=At(o);if(a!==null)return u(a);let s=await t.send("notifications.unregisterDevice",r({method:"DELETE",path:`/widget/v1/me/devices/${encodeURIComponent(o)}`},i?.signal));return s.ok?T(void 0):u(G(s.error))},async setPreferences(o,i){let a=Dt(o);if(a!==null)return u(a);let s=await t.send("notifications.setPreferences",r({method:"PUT",path:"/widget/v1/me/notification-preferences",body:{push_enabled:o.pushEnabled,email_enabled:o.emailEnabled}},i?.signal));if(!s.ok)return u(G(s.error));let l=zt(s.value);return l===null?u(we("setPreferences")):T(l)}}}n(Q,"createNotificationsClientOver");var k="everfur.notifications.device";var ke=3e3;var Oe=Symbol.for("@everfur/sdk#EverfurContext@v1"),xe=globalThis,Fe=xe[Oe]??(xe[Oe]=createContext(null));Fe.displayName??="EverfurContext";function X(){let e=useContext(Fe);if(e===null)throw new P("not-initialized","Everfur hooks must be called inside <EverfurProvider>. Wrap your tree once, high.");return e}n(X,"useEverfurContext");var ze=1;async function Z(e){try{let t=await e.getItem(k);if(t===null)return null;let r=JSON.parse(t);if(typeof r!="object"||r===null)return null;let{v:o,userRef:i,deviceId:a}=r;return o!==ze||typeof i!="string"||typeof a!="string"||a.length===0?null:{userRef:i,deviceId:a}}catch{return null}}n(Z,"readStored");async function Vt(e,t){try{await e.setItem(k,JSON.stringify({v:ze,...t}));}catch{}}n(Vt,"writeStored");async function Ne(e){try{await e.removeItem(k);}catch{}}n(Ne,"clearStored");var Ae=Object.freeze({status:"signed_out",device:null,error:null}),De=Object.freeze({status:"no_token",device:null,error:null});function ee(){return E("sessionRequired",{retryable:false,wireMessage:"notifications need a signed-in user on the provider"})}n(ee,"noUser");function Ue(){let{runtime:e}=X();return useMemo(()=>$(e),[e])}n(Ue,"useEverfurNotificationsClient");function Bt(e){let{runtime:t,userRef:r}=X(),{token:o,provider:i,platform:a,installationId:s}=e,l=t.registry.services.kv,d=Ue(),[g,C]=useState(r===null?Ae:De),_=useRef(null),p=useRef(0);useEffect(()=>{if(p.current+=1,_.current=null,C(r===null?Ae:De),r===null)return;let y=true;return Z(l).then(v=>{if(!y||v===null||v.userRef!==r)return;let f=_.current;if(f===null){_.current=v;return}f.deviceId!==v.deviceId&&d.unregisterDevice(v.deviceId);}),()=>{y=false;}},[d,l,r]);let c=useCallback(async(y,v)=>{let f=p.current+=1;C({status:"registering",device:null,error:null});let m=await d.registerDevice({token:v,provider:i,platform:a,...s===void 0?{}:{installationId:s}});if(f!==p.current)return m;if(!m.ok)return C({status:m.error.httpStatus===404?"unavailable":"failed",device:null,error:m.error}),m;let h=_.current;return _.current={userRef:y,deviceId:m.value.deviceId},C({status:"registered",device:m.value,error:null}),await Vt(l,_.current),h!==null&&h.userRef===y&&h.deviceId!==m.value.deviceId&&d.unregisterDevice(h.deviceId),m},[d,l,i,a,s]);useEffect(()=>{r===null||o===null||c(r,o);},[c,r,o]),useEffect(()=>t.onBeforeLogout(async({userRef:y,auth:v})=>{let f=_.current??await Z(l);if(f===null||f.userRef!==y)return;_.current=null;let m=U({auth:v,maxAttempts:1,unaryTimeoutMs:ke,...t.registry.services.errorPolicy?{errorPolicy:t.registry.services.errorPolicy}:{}}),h=await Q({auth:v,funnel:m}).unregisterDevice(f.deviceId);(h.ok||h.error.httpStatus===404)&&await Ne(l);}),[t,l]);let b=useCallback(async()=>r===null?u(ee()):o===null?u(E("validationFailed",{retryable:false,reasonCode:"token_invalid",wireMessage:"no push token was given"})):c(r,o),[c,r,o]),S=useCallback(async()=>{if(r===null)return u(ee());let y=_.current??await Z(l);if(y===null||y.userRef!==r)return T(void 0);let v=p.current+=1,f=await d.unregisterDevice(y.deviceId);return f.ok||f.error.httpStatus===404?(_.current=null,await Ne(l),v===p.current&&C({status:"unregistered",device:null,error:null}),f.ok?f:T(void 0)):f},[d,l,r]),A=useCallback(y=>r===null?Promise.resolve(u(ee())):d.setPreferences(y),[d,r]);return useMemo(()=>({status:g.status,device:g.device,error:g.error,register:b,unregister:S,setPreferences:A}),[g,b,S,A])}n(Bt,"useEverfurNotifications");var Me=Object.freeze({"visit.booked":"visit","visit.reminder":"join","visit.rescheduled":"visit","visit.followup_sent":"messages","visit.message_received":"messages","visit.completed":"summary","visit.ended":"visit","visit.cancelled":null,"visit.no_show":null});function Le(e){return Object.prototype.hasOwnProperty.call(Me,e)?Me[e]:"visit"}n(Le,"vetVisitIntentForEvent");var Ve=1,Be=Object.freeze(["record_request","pet","visit","case"]),Ke=Object.freeze(["record_request.updated","record.ready","pet.vaccination.due","visit.booked","visit.cancelled","visit.completed","visit.no_show","visit.rescheduled","visit.reminder","visit.followup_sent","visit.message_received","visit.ended","chat.follow_up_due","chat.reminder_due","record.activation"]),re=["v","event_id","event_type","target"],Kt=new Set(["kind","conversation_id","request_id","visit_ref","case_ref","pet_ref"]),Yt=new Set(Ke),Ht=new Set(Be),Gt=128,Wt=4096,$t=/^evt_[A-Za-z0-9]{1,64}$/,Qt=/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i,Xt=/[-]/;function O(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}n(O,"isRecord");function Ye(e){return Object.keys(e)}n(Ye,"keysOf");function Jt(e){if(O(e))return e;if(typeof e!="string"||e.length===0||e.length>Wt)return null;let t=JSON.parse(e);return O(t)?t:null}n(Jt,"decodeBlock");function Zt(e,t){let r=e;for(let o of t){if(!O(r))return;r=r[o];}return r}n(Zt,"at");var er=[[],["data"],["request","content","data"],["notification","request","content","data"]];function tr(e){if(!O(e))return null;for(let t of er){let r=Zt(e,t);if(O(r)&&"everfur"in r)return r.everfur}return re.every(t=>t in e)?e:null}n(tr,"locateBlock");function ne(e){return typeof e!="string"||e.length===0||e.length>Gt||Xt.test(e)||e.includes("://")||e.toLowerCase().startsWith("everfur")?null:e}n(ne,"opaqueString");function qe(e,t){if(!(t in e))return {ok:true,value:null};let r=ne(e[t]);return r===null?{ok:false}:{ok:true,value:r}}n(qe,"optional");function te(e,t){return t in e?ne(e[t]):null}n(te,"required");function rr(e,t){if(!O(e))return null;let r=Ye(e);if(!r.includes("kind")||r.some(s=>!Kt.has(s)))return null;let o=e.kind;if(typeof o!="string"||!Ht.has(o))return null;for(let s of r)if(s!=="kind"&&ne(e[s])===null)return null;let i=qe(e,"pet_ref");if(!i.ok)return null;let a=i.value;switch(o){case "record_request":{let s=te(e,"request_id");return s===null?null:Object.freeze({kind:"record_request",requestId:s,petRef:a})}case "pet":return a===null?null:Object.freeze({kind:"pet",petRef:a});case "visit":{let s=te(e,"visit_ref");return s===null?null:Object.freeze({kind:"visit",visitRef:s,petRef:a,intent:Le(t)})}case "case":{let s=te(e,"case_ref");if(s===null)return null;let l=qe(e,"conversation_id");return !l.ok||l.value!==null&&!Qt.test(l.value)?null:Object.freeze({kind:"case",caseRef:s,conversationId:l.value,petRef:a})}default:return null}}n(rr,"parseTarget");function nr(e){let t=Ye(e);if(t.length!==re.length||re.some(a=>!t.includes(a))||e.v!==Ve)return null;let r=e.event_id;if(typeof r!="string"||!$t.test(r))return null;let o=e.event_type;if(typeof o!="string"||!Yt.has(o))return null;let i=rr(e.target,o);return i===null?null:Object.freeze({eventId:r,eventType:o,target:i})}n(nr,"parseBlock");function or(e){try{let t=Jt(tr(e));return t===null?null:nr(t)}catch{return null}}n(or,"parseEverfurNotification");
|
|
2
|
+
export{Ke as EVERFUR_NOTIFICATION_EVENT_TYPES,Be as EVERFUR_NOTIFICATION_TARGET_KINDS,Ve as EVERFUR_NOTIFICATION_VERSION,Ce as NOTIFICATIONS_REASON_MESSAGES,$ as createNotificationsClient,Pt as explainNotificationsReason,or as parseEverfurNotification,Bt as useEverfurNotifications,Ue as useEverfurNotificationsClient};
|