@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
package/dist/server/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
'use strict';var Ae=Object.defineProperty;var n=(e,t)=>Ae(e,"name",{value:t,configurable:true});function g(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(g,"ok");function f(e){return Object.freeze({ok:false,error:e})}n(f,"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 s=j;var C="0.5.0",S="react-native",w="2026-09-19",W="EVERFUR_API_BASE_URL";function I(e,t){return Object.freeze({ok:false,failure:Object.freeze({reason:e,message:t})})}n(I,"configFailure");function je(e){let t=e?.trim(),r=t&&t.length>0?t:Be(W);return r?ze(r):I("missing-api-base-url",`apiBaseUrl is required: pass config.apiBaseUrl or set ${W}. The SDK never ships a hardcoded host.`)}n(je,"tryResolveApiBaseUrl");function P(e){let t=je(e);if(!t.ok)throw new s("invalid-argument",t.failure.message);return t.value}n(P,"resolveApiBaseUrl");function O(e){return {"X-Everfur-SDK-Version":e.sdkVersion,"X-Everfur-SDK-Platform":e.platform,"X-Everfur-Contract":e.contractVersion}}n(O,"buildBaseHeaders");var De=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/;function Ne(e){return e.slice(e.lastIndexOf("@")+1).replace(/:\d+$/,"").toLowerCase()}n(Ne,"hostOf");function Le(e){return e.length===0||e.includes("@")?false:e.startsWith("[")&&e.endsWith("]")?true:!e.includes(":")}n(Le,"isPrintableHost");function Me(e,t){let r=e.indexOf("://");return r<0||e.slice(r+3).includes("@")?false:Le(t)}n(Me,"canEchoOrigin");function Ue(e,t){return `${e}://${t}`}n(Ue,"safeOrigin");function ze(e){let t=e.trim(),r=De.exec(t);if(r===null||r[2]===void 0||r[2].length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let o=(r[1]??"").toLowerCase(),i=Ne(r[2]);if(i.length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let a=Me(t,i)?`: ${Ue(o,i)}`:"";if(o!=="https"){if(!(o==="http"&&qe(i)))return o==="http"?I("insecure-api-base-url",`apiBaseUrl must use https (cleartext http is only allowed for localhost)${a}`):I("unsupported-api-base-url-scheme",`apiBaseUrl must be http(s)${a}`)}let l=t.endsWith("/")?t.slice(0,-1):t;return Object.freeze({ok:true,value:l})}n(ze,"normalizeBaseUrl");function qe(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"||t==="::1"}n(qe,"isLoopbackHost");function Be(e){let r=globalThis.process?.env?.[e];return typeof r=="string"&&r.trim().length>0?r.trim():void 0}n(Be,"readEnv");var U=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(U.map(e=>e.wireCode));var $e=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"}),G=Object.freeze(U.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:$e[e.wireCode]}))),Ve=new Map(G.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),He=Object.freeze(["http_envelope",...[...new Set(G.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function D(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...He]){let i=Ve.get(o+r);if(i)return i}}n(D,"contractErrorFor");function Ke(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Ke,"contractDocUrl");function Q(e){return null}n(Q,"publishedDocUrl");var Ye=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 J(e){return Ye[e]}n(J,"categoryFor");function Z(e){let t=D(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(Z,"fromWire");function ee(e){return e===401?"authExpired":e===403?"accessDenied":e===404?"conversationNotFound":e===409?"idempotencyConflict":e===421?"unknown":e===429?"rateLimited":e===400||e===422?"unknown":e>=500?"internalError":"unknown"}n(ee,"fromHttpStatus");var We=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function te(e){return We.has(e)}n(te,"isAutoRetryable");var Xe=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function re(e){return te(e)||Xe.has(e)}n(re,"isRetryableCode");var Ge=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 Qe(e){return Ge[e]}n(Qe,"userFacingError");function ne(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(ne,"defineHidden");var Je=/^[a-z][a-z0-9_]{0,63}$/;function x(e,t){let r=D(t?.wireCode,t?.wireEnvelope),o={code:e,category:J(e),retryable:t?.retryable??re(e),displayMessage:Qe(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&Je.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&ne(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&ne(o,"raw",t.raw),Object.freeze(o)}n(x,"makeEverfurError");var Ze="x-request-id";function m(e,t,r){let o=et(t),i=o?Z(o):ee(e),a=tt(t);return x(i,{httpStatus:e,...rt(t)?{retryable:true}:{},...r?{requestId:r}:{},...o?{wireCode:o}:{},...oe(t)?{reasonCode:oe(t)}:{},...a?{wireMessage:a}:{},...t!=null?{raw:t}:{}})}n(m,"errorFromResponse");function k(e){return x("internalError",{retryable:true,wireMessage:nt(e)})}n(k,"networkError");function h(e){let t=e.headers.get(Ze);return typeof t=="string"&&t.length>0?t:null}n(h,"requestIdOf");function T(){let e=globalThis.fetch;if(typeof e!="function")throw new s("missing-peer-dependency","global fetch is unavailable; provide config.transport or an injected fetch implementation");return e}n(T,"getGlobalFetch");function oe(e){let t=e,r=t?.error?.reason_code??t?.reason_code;return typeof r=="string"&&r.length>0?r:null}n(oe,"extractReasonCode");function et(e){let t=e,r=t?.error?.code??t?.code;return typeof r=="string"&&r.length>0?r:null}n(et,"extractWireCode");function tt(e){let t=e,r=t?.error?.message??t?.message;return typeof r=="string"&&r.length>0?r:null}n(tt,"extractWireMessage");function rt(e){let t=e;return t?.error?.retryable===true||t?.retryable===true}n(rt,"extractRetryable");function nt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(nt,"describeCause");var ie=128;function R(e){let t=typeof e=="string"?[...e].length:0;if(typeof e!="string"||t<1||t>ie)throw new s("invalid-argument",`user_ref must be 1..${ie} characters`);if(e.trim().length===0)throw new s("invalid-argument","user_ref must not be blank: the server strips surrounding whitespace before validating, so a whitespace-only value arrives empty and is rejected as required.");if(e!==e.trim())throw new s("invalid-argument","user_ref must not have leading or trailing whitespace: the server strips it, so padded and unpadded forms of the same id resolve to ONE user. Pass the exact id you want to key on.");if(e.includes("@"))throw new s("invalid-argument","user_ref must not contain '@'");if(!ot(e))throw new s("invalid-argument","user_ref must be printable (no control characters)");return e}n(R,"assertValidUserRef");function ot(e){return !it.test(e)}n(ot,"isPrintable");var it=/[\p{Cc}\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Zl}\p{Zp}]|(?!\u0020)[\p{Zs}]/u;function ae(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let o=e.charCodeAt(t+1);if(!(o>=56320&&o<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}n(ae,"hasLoneSurrogate");function se(e){return [...e].length}n(se,"serverLength");var le=Object.freeze({dog:"dog",canine:"dog",k9:"dog",puppy:"dog",cat:"cat",feline:"cat",kitten:"cat"});function z(e){if(typeof e!="string")return null;let t=e.trim().toLowerCase();return Object.prototype.hasOwnProperty.call(le,t)?le[t]:null}n(z,"canonicalPetSpecies");var de=50,at=128,q=120,ue=120,st=2e3,ce=120,lt=80,ye=new Set(["male","female","unknown"]),me=new Set(["day","month","year"]),ve=new Set(["low","medium","high","athletic"]),_e=new Set(["indoor","outdoor","both"]),ge=new Set(["mild","moderate","severe"]),dt=/^(\d{4})-(\d{2})-(\d{2})$/,he=[["sex","sex"],["spayedNeutered","spayed_neutered"],["birthDate","birth_date"],["birthDatePrecision","birth_date_precision"],["activityLevel","activity_level"],["indoorOutdoor","indoor_outdoor"],["foodBrand","food_brand"],["foodType","food_type"],["microchipId","microchip_id"]],be=[["allergies","allergies"],["medications","medications"],["supplements","supplements"],["conditions","conditions"]];Object.freeze([...he,...be].map(([e])=>e));function ut(e){let t=dt.exec(e);if(t===null)return false;let[r,o,i]=[Number(t[1]),Number(t[2]),Number(t[3])],a=new Date(Date.UTC(r,o-1,i));return a.getUTCFullYear()===r&&a.getUTCMonth()===o-1&&a.getUTCDate()===i}n(ut,"isRealDate");var A=n(e=>(t,r)=>typeof r=="string"&&e.has(r)?null:`${t} must be one of ${[...e].join(", ")}`,"oneOf"),ct=n((e,t)=>typeof t=="boolean"?null:`${e} must be true or false`,"boolean"),L=n((e,t)=>typeof t=="string"&&ut(t)?null:`${e} must be a real date written YYYY-MM-DD`,"date"),_=n((e,t={})=>(r,o)=>{if(typeof o!="string")return `${r} must be a string`;if(ae(o))return `${r} contains an unpaired surrogate and cannot be encoded`;let i=t.trimmed?o.trim():o;if(t.required&&i.length===0)return `${r} is required and must not be blank`;let a=se(i);return a<=e?null:`${r} is ${a} characters; the server accepts at most ${e}`},"text"),pt={sex:A(ye),spayedNeutered:ct,birthDate:L,birthDatePrecision:A(me),activityLevel:A(ve),indoorOutdoor:A(_e),foodBrand:_(ce),foodType:_(ce),microchipId:_(lt)},B=["ref","ref",false,_(at,{required:true,trimmed:true})],$=["notes","notes",false,_(st,{trimmed:true})],pe=[B,["name","name",true,_(q,{required:true,trimmed:true})],["dose","dose",false,_(ue,{trimmed:true})],["frequency","frequency",false,_(ue,{trimmed:true})],["startDate","start_date",false,L],["endDate","end_date",false,L],$],ft={allergies:[B,["allergen","allergen",true,_(q,{required:true,trimmed:true})],["severity","severity",false,A(ge)],$],medications:pe,supplements:pe,conditions:[B,["conditionName","condition_name",true,_(q,{required:true,trimmed:true})],["diagnosedDate","diagnosed_date",false,L],$]};function yt(e,t,r){let o=`${e}[${t}]`;if(typeof r!="object"||r===null||Array.isArray(r))return {error:`${o} must be an object`};let i=r,a={};for(let[c,u,y,b]of ft[e]){let v=i[c];if(v==null){if(y)return {error:`${o}.${c} is required`};v===null&&(a[u]=null);continue}let E=b(`${o}.${c}`,v);if(E!==null)return {error:E};a[u]=v;}let l=a.start_date,d=a.end_date;return typeof l=="string"&&typeof d=="string"&&d<l?{error:`${o}.endDate must not be before startDate`}:{item:a}}n(yt,"itemToWire");function mt(e,t){if(!Array.isArray(t))return {error:`${e} must be an array (send [] to clear it)`};if(t.length>de)return {error:`${e} has ${t.length} items; the server accepts at most ${de}`};let r=[],o=new Set;for(let i=0;i<t.length;i+=1){let a=yt(e,i,t[i]);if("error"in a)return a;let l=a.item.ref;if(typeof l=="string"){let d=l.trim();if(o.has(d))return {error:`${e}: ref ${JSON.stringify(d)} is used twice; a ref names one item`};o.add(d);}r.push(a.item);}return {items:r}}n(mt,"listToWire");function Ee(e,t){let r=e,o={};for(let[l,d]of he){let c=r[l];if(c!==void 0){if(c!==null){let u=pt[l](l,c);if(u!==null)return {error:u}}o[d]=c;}}let i=r.birthDate!==void 0,a=r.birthDatePrecision!==void 0;if(i!==a||i&&r.birthDate===null!=(r.birthDatePrecision===null))return {error:"birthDate and birthDatePrecision must be sent together, both set or both null"};for(let[l,d]of be){let c=r[l];if(c===void 0)continue;let u=mt(l,c);if("error"in u)return u;o[d]=u.items;}return Object.keys(o).length>0&&t!==void 0&&z(t)===null?{error:"health fields need a pet Everfur reads as a dog or a cat (dog, canine, k9, puppy, cat, feline, kitten)"}:{body:o}}n(Ee,"petHealthToWire");var p=n(e=>typeof e=="string"?e:null,"str"),F=n((e,t)=>typeof t=="string"&&e.has(t)?t:null,"pick"),vt=n(e=>typeof e=="boolean"?e:null,"bool");function N(e,t){return Array.isArray(e)?Object.freeze(e.flatMap(r=>{if(typeof r!="object"||r===null||Array.isArray(r))return [];let o=t(r);return o===null?[]:[o]})):Object.freeze([])}n(N,"itemsFromWire");function fe(e){let t=p(e.name);return t===null||t.length===0?null:Object.freeze({ref:p(e.ref),name:t,dose:p(e.dose),frequency:p(e.frequency),startDate:p(e.start_date),endDate:p(e.end_date),notes:p(e.notes)})}n(fe,"medicationFromWire");function Re(e){let t=e.profile_version;return Object.freeze({profileVersion:typeof t=="number"&&Number.isInteger(t)&&t>=0?t:0,sex:F(ye,e.sex),spayedNeutered:vt(e.spayed_neutered),birthDate:p(e.birth_date),birthDatePrecision:F(me,e.birth_date_precision),activityLevel:F(ve,e.activity_level),indoorOutdoor:F(_e,e.indoor_outdoor),foodBrand:p(e.food_brand),foodType:p(e.food_type),microchipId:p(e.microchip_id),allergies:N(e.allergies,r=>{let o=p(r.allergen);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),allergen:o,severity:F(ge,r.severity),notes:p(r.notes)})}),medications:N(e.medications,fe),supplements:N(e.supplements,fe),conditions:N(e.conditions,r=>{let o=p(r.condition_name);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),conditionName:o,diagnosedDate:p(r.diagnosed_date),notes:p(r.notes)})})})}n(Re,"petHealthFromWire");var _t=["sk_partner_","rk_partner_"];function M(e,t){if(typeof e!="string"||e.length===0)throw new s("invalid-argument","partnerSecretKey is required");if(e.startsWith("pk_"))throw new s("invalid-argument",`partnerSecretKey is a publishable key (pk_...): ${t} needs your secret key, server side only`);if(!_t.some(r=>e.startsWith(r)))throw new s("invalid-argument","partnerSecretKey must be an sk_partner_ secret key or an rk_partner_ restricted key")}n(M,"assertServerSecretKey");var Ce=128,gt=3e4;async function ht(e,t,r){return Pe(e,"PUT",t,Oe(r,false))}n(ht,"upsertPartnerPet");async function bt(e,t,r){return Pe(e,"PATCH",t,Oe(r,true))}n(bt,"updatePartnerPet");async function Et(e,t){let r=await H(e,"GET",t,void 0);if(!("status"in r))return r;let o=await K(r),i=h(r);if(!r.ok)return f(m(r.status,o,i));let a=ke(o);return a?g(Object.freeze({...a,...Re(o)})):f(m(502,{error:{code:"INTERNAL_ERROR"}},i))}n(Et,"getPartnerPet");async function Rt(e,t){let r=await H(e,"DELETE",t,void 0);return "status"in r?r.ok?g(void 0):f(m(r.status,await K(r),h(r))):r}n(Rt,"deletePartnerPet");async function Pe(e,t,r,o){let i=await H(e,t,r,o);if(!("status"in i))return i;let a=await K(i),l=h(i);if(!i.ok)return f(m(i.status,a,l));let d=ke(a);return d?g(d):f(m(502,{error:{code:"INTERNAL_ERROR"}},l))}n(Pe,"petWrite");async function H(e,t,r,o){M(e.partnerSecretKey,"writing pets");let i=Ct(r),a=e.fetchImpl??T(),l=`${P(e.apiBaseUrl)}${i}`,d={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","x-everfur-partner-secret-key":e.partnerSecretKey};o!==void 0&&(d["content-type"]="application/json");let c=new AbortController,u=setTimeout(()=>c.abort(),gt);try{return await a(l,{method:t,headers:d,...o!==void 0?{body:o}:{},signal:c.signal})}catch(y){return f(k(y))}finally{clearTimeout(u);}}n(H,"send");function Ct(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","target is required");let t=R(e.userRef);Se("userRef",t);let r=e.petRef,o=typeof r=="string"?[...r].length:0;if(typeof r!="string"||o<1||o>Ce)throw new s("invalid-argument",`petRef must be 1..${Ce} characters`);return Se("petRef",r),`/partners/members/${encodeURIComponent(t)}/pets/${encodeURIComponent(r)}`}n(Ct,"memberPetPath");function Se(e,t){if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument",`${e} cannot contain '/' or be '.' or '..': it is sent as a URL path segment`)}n(Se,"assertPathSegment");var St=[["name","name"],["species","species"],["breed","breed"],["ageYears","age_years"],["weightKg","weight_kg"],["partnerLabelInstructions","partner_label_instructions"]];function Oe(e,t){let r=wt(e);if(t&&Object.keys(r).length===0)throw new s("invalid-argument","updatePartnerPet needs at least one field to change");return JSON.stringify(r)}n(Oe,"profileBody");function wt(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new s("invalid-argument","the pet profile must be an object");let t={};for(let[o,i]of St)e[o]!==void 0&&(t[i]=e[o]);let r=Ee(e,e.species);if("error"in r)throw new s("invalid-argument",r.error);return Object.assign(t,r.body)}n(wt,"partnerPetProfileBody");function V(e){return e==null?null:typeof e=="string"?e:void 0}n(V,"nullableString");function we(e){return e==null?null:typeof e=="number"?e:void 0}n(we,"nullableNumber");function ke(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.pet_id!="string"||typeof t.pet_ref!="string"||typeof t.updated_at!="string")return null;let r=V(t.name),o=V(t.species),i=V(t.breed),a=we(t.age_years),l=we(t.weight_kg);return r===void 0||o===void 0||i===void 0||a===void 0||l===void 0?null:Object.freeze({petId:t.pet_id,petRef:t.pet_ref,name:r,species:o,breed:i,ageYears:a,weightKg:l,updatedAt:t.updated_at})}n(ke,"parsePet");async function K(e){try{return await e.json()}catch{return null}}n(K,"readJsonSafe");function Pt(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(Pt,"wireCodeOf");function Te(e,t){let r=Pt(e);if(r===null)return e;let o=t[r];return o===void 0?e:x(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(Te,"foldWireReason");var Ie=254,xe=64,Ot=/^[^@\s]+@[^@\s]+\.[^@\s]+$/,kt=3e4,Tt=Object.freeze({consent_required:{code:"validationFailed",retryable:false},email_invalid:{code:"validationFailed",retryable:false},consent_invalid:{code:"validationFailed",retryable:false}});async function It(e,t){M(e.partnerSecretKey,"writing a member notification profile");let r=xt(t),o=JSON.stringify({email:t.email,consent:Ft(t.consent)}),i=e.fetchImpl??T(),a=`${P(e.apiBaseUrl)}${r}`,l={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey},d=new AbortController,c=setTimeout(()=>d.abort(),kt),u;try{u=await i(a,{method:"PUT",headers:l,body:o,signal:d.signal});}catch(E){return f(k(E))}finally{clearTimeout(c);}let y=await Dt(u),b=h(u);if(!u.ok)return f(Te(m(u.status,y,b),Tt));let v=jt(y);return v?g(v):f(m(502,{error:{code:"INTERNAL_ERROR"}},b))}n(It,"setPartnerMemberNotificationProfile");function xt(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","input is required");let t=R(e.userRef);if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument","userRef cannot contain '/' or be '.' or '..': it is sent as a URL path segment");let r=e.email;if(typeof r!="string"||r.trim().length<3||r.trim().length>Ie||!Ot.test(r.trim()))throw new s("invalid-argument",`email must be an address of at most ${Ie} characters`);return `/partners/members/${encodeURIComponent(t)}/notification-profile`}n(xt,"memberProfilePath");function Ft(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","consent is required: an address is stored only with the stamp of the consent you collected");if(e.method!=="partner_attested")throw new s("invalid-argument","consent.method must be 'partner_attested' in this version");let t=e.version;if(typeof t!="string"||t.length===0||t.length>xe)throw new s("invalid-argument",`consent.version must be 1..${xe} characters`);let r=e.givenAt instanceof Date?e.givenAt.toISOString():e.givenAt;if(typeof r!="string"||!Number.isFinite(Date.parse(r)))throw new s("invalid-argument","consent.givenAt must be an ISO 8601 instant or a Date");return {given_at:r,method:"partner_attested",version:t}}n(Ft,"consentBody");function Y(e){return e==null?null:typeof e=="string"?e:void 0}n(Y,"nullableString");function At(e){if(e==null)return null;if(typeof e!="object")return;let t=e;if(!(typeof t.given_at!="string"||typeof t.method!="string"||typeof t.version!="string"))return Object.freeze({givenAt:t.given_at,method:t.method,version:t.version})}n(At,"parseConsent");function jt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.user_ref!="string"||typeof t.updated_at!="string"||typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||typeof t.active_devices!="number"||!Number.isFinite(t.active_devices))return null;let r=Y(t.email),o=Y(t.email_verified_at),i=Y(t.unsubscribed_at),a=At(t.consent);return r===void 0||o===void 0||i===void 0||a===void 0?null:Object.freeze({userRef:t.user_ref,emailMasked:r,consent:a,emailVerifiedAt:o,pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,unsubscribedAt:i,activeDevices:t.active_devices,updatedAt:t.updated_at})}n(jt,"parseProfile");async function Dt(e){try{return await e.json()}catch{return null}}n(Dt,"readJsonSafe");var Nt=60,Lt=3600,Mt=3e4;async function en(e){let t=R(e.userRef),r=Ut(e.ttlSeconds),o=e.fetchImpl??T(),i=`${P(e.apiBaseUrl)}/widget/v1/sessions`,a={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey,"x-everfur-partner-key":e.publishableKey},l={user_ref:t};r!==void 0&&(l.ttl_seconds=r);let d=Bt(Mt),c=$t(d.signal,e.signal),u={method:"POST",headers:a,body:JSON.stringify(l),signal:c},y;try{y=await o(i,u);}catch(Fe){return f(k(Fe))}finally{d.cancel();}let b=await qt(y),v=h(y);if(!y.ok)return f(m(y.status,b,v));let E=zt(b);return E?g(E):f(m(502,{error:{code:"INTERNAL_ERROR"}},v))}n(en,"mintPartnerSession");function Ut(e){if(e!=null){if(!Number.isInteger(e))throw new s("invalid-argument","ttl_seconds must be an integer");return Math.min(Lt,Math.max(Nt,e))}}n(Ut,"clampTtl");function zt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.session_token!="string"||t.session_token.length===0||typeof t.expires_at!="number")return null;let r=Array.isArray(t.capabilities)?t.capabilities.filter(o=>typeof o=="string"):[];return Object.freeze({sessionToken:t.session_token,expiresAt:t.expires_at,capabilities:Object.freeze(r)})}n(zt,"parseMint");async function qt(e){try{return await e.json()}catch{return null}}n(qt,"readJsonSafe");function Bt(e){let t=new AbortController,r=setTimeout(()=>t.abort(),e);return {signal:t.signal,cancel:n(()=>clearTimeout(r),"cancel")}}n(Bt,"mintTimeoutSignal");function $t(e,t){if(!t)return e;let r=new AbortController;if(e.aborted||t.aborted)return r.abort(),r.signal;let o=n(()=>r.abort(),"onAbort");return e.addEventListener("abort",o,{once:true}),t.addEventListener("abort",o,{once:true}),r.signal}n($t,"mergeMintSignals");
|
|
2
|
-
exports.assertValidUserRef=R;exports.canonicalPetSpecies=z;exports.deletePartnerPet=Rt;exports.getPartnerPet=Et;exports.mintPartnerSession=en;exports.setPartnerMemberNotificationProfile=It;exports.updatePartnerPet=
|
|
1
|
+
'use strict';var Ae=Object.defineProperty;var n=(e,t)=>Ae(e,"name",{value:t,configurable:true});function g(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(g,"ok");function f(e){return Object.freeze({ok:false,error:e})}n(f,"err");var D=class D extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,D.prototype);}};n(D,"EverfurConfigError");var s=D;var C="0.5.2",S="react-native",w="2026-09-19",W="EVERFUR_API_BASE_URL";function I(e,t){return Object.freeze({ok:false,failure:Object.freeze({reason:e,message:t})})}n(I,"configFailure");function De(e){let t=e?.trim(),r=t&&t.length>0?t:Be(W);return r?ze(r):I("missing-api-base-url",`apiBaseUrl is required: pass config.apiBaseUrl or set ${W}. The SDK never ships a hardcoded host.`)}n(De,"tryResolveApiBaseUrl");function P(e){let t=De(e);if(!t.ok)throw new s("invalid-argument",t.failure.message);return t.value}n(P,"resolveApiBaseUrl");function O(e){return {"X-Everfur-SDK-Version":e.sdkVersion,"X-Everfur-SDK-Platform":e.platform,"X-Everfur-Contract":e.contractVersion}}n(O,"buildBaseHeaders");var je=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/;function Le(e){return e.slice(e.lastIndexOf("@")+1).replace(/:\d+$/,"").toLowerCase()}n(Le,"hostOf");function Ne(e){return e.length===0||e.includes("@")?false:e.startsWith("[")&&e.endsWith("]")?true:!e.includes(":")}n(Ne,"isPrintableHost");function Me(e,t){let r=e.indexOf("://");return r<0||e.slice(r+3).includes("@")?false:Ne(t)}n(Me,"canEchoOrigin");function Ue(e,t){return `${e}://${t}`}n(Ue,"safeOrigin");function ze(e){let t=e.trim(),r=je.exec(t);if(r===null||r[2]===void 0||r[2].length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let o=(r[1]??"").toLowerCase(),i=Le(r[2]);if(i.length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let a=Me(t,i)?`: ${Ue(o,i)}`:"";if(o!=="https"){if(!(o==="http"&&qe(i)))return o==="http"?I("insecure-api-base-url",`apiBaseUrl must use https (cleartext http is only allowed for localhost)${a}`):I("unsupported-api-base-url-scheme",`apiBaseUrl must be http(s)${a}`)}let l=t.endsWith("/")?t.slice(0,-1):t;return Object.freeze({ok:true,value:l})}n(ze,"normalizeBaseUrl");function qe(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"||t==="::1"}n(qe,"isLoopbackHost");function Be(e){let r=globalThis.process?.env?.[e];return typeof r=="string"&&r.trim().length>0?r.trim():void 0}n(Be,"readEnv");var U=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(U.map(e=>e.wireCode));var $e=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"}),G=Object.freeze(U.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:$e[e.wireCode]}))),Ve=new Map(G.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),He=Object.freeze(["http_envelope",...[...new Set(G.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function j(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...He]){let i=Ve.get(o+r);if(i)return i}}n(j,"contractErrorFor");function Ke(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Ke,"contractDocUrl");function Q(e){return null}n(Q,"publishedDocUrl");var Ye=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 J(e){return Ye[e]}n(J,"categoryFor");function Z(e){let t=j(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(Z,"fromWire");function ee(e){return e===401?"authExpired":e===403?"accessDenied":e===404?"conversationNotFound":e===409?"idempotencyConflict":e===421?"unknown":e===429?"rateLimited":e===400||e===422?"unknown":e>=500?"internalError":"unknown"}n(ee,"fromHttpStatus");var We=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function te(e){return We.has(e)}n(te,"isAutoRetryable");var Xe=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function re(e){return te(e)||Xe.has(e)}n(re,"isRetryableCode");var Ge=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 Qe(e){return Ge[e]}n(Qe,"userFacingError");function ne(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(ne,"defineHidden");var Je=/^[a-z][a-z0-9_]{0,63}$/;function x(e,t){let r=j(t?.wireCode,t?.wireEnvelope),o={code:e,category:J(e),retryable:t?.retryable??re(e),displayMessage:Qe(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&Je.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&ne(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&ne(o,"raw",t.raw),Object.freeze(o)}n(x,"makeEverfurError");var Ze="x-request-id";function m(e,t,r){let o=et(t),i=o?Z(o):ee(e),a=tt(t);return x(i,{httpStatus:e,...rt(t)?{retryable:true}:{},...r?{requestId:r}:{},...o?{wireCode:o}:{},...oe(t)?{reasonCode:oe(t)}:{},...a?{wireMessage:a}:{},...t!=null?{raw:t}:{}})}n(m,"errorFromResponse");function T(e){return x("internalError",{retryable:true,wireMessage:nt(e)})}n(T,"networkError");function b(e){let t=e.headers.get(Ze);return typeof t=="string"&&t.length>0?t:null}n(b,"requestIdOf");function k(){let e=globalThis.fetch;if(typeof e!="function")throw new s("missing-peer-dependency","global fetch is unavailable; provide config.transport or an injected fetch implementation");return e}n(k,"getGlobalFetch");function oe(e){let t=e,r=t?.error?.reason_code??t?.reason_code;return typeof r=="string"&&r.length>0?r:null}n(oe,"extractReasonCode");function et(e){let t=e,r=t?.error?.code??t?.code;return typeof r=="string"&&r.length>0?r:null}n(et,"extractWireCode");function tt(e){let t=e,r=t?.error?.message??t?.message;return typeof r=="string"&&r.length>0?r:null}n(tt,"extractWireMessage");function rt(e){let t=e;return t?.error?.retryable===true||t?.retryable===true}n(rt,"extractRetryable");function nt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(nt,"describeCause");var ie=128;function R(e){let t=typeof e=="string"?[...e].length:0;if(typeof e!="string"||t<1||t>ie)throw new s("invalid-argument",`user_ref must be 1..${ie} characters`);if(e.trim().length===0)throw new s("invalid-argument","user_ref must not be blank: the server strips surrounding whitespace before validating, so a whitespace-only value arrives empty and is rejected as required.");if(e!==e.trim())throw new s("invalid-argument","user_ref must not have leading or trailing whitespace: the server strips it, so padded and unpadded forms of the same id resolve to ONE user. Pass the exact id you want to key on.");if(e.includes("@"))throw new s("invalid-argument","user_ref must not contain '@'");if(!ot(e))throw new s("invalid-argument","user_ref must be printable (no control characters)");return e}n(R,"assertValidUserRef");function ot(e){return !it.test(e)}n(ot,"isPrintable");var it=/[\p{Cc}\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Zl}\p{Zp}]|(?!\u0020)[\p{Zs}]/u;function ae(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let o=e.charCodeAt(t+1);if(!(o>=56320&&o<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}n(ae,"hasLoneSurrogate");function se(e){return [...e].length}n(se,"serverLength");var le=Object.freeze({dog:"dog",canine:"dog",k9:"dog",puppy:"dog",cat:"cat",feline:"cat",kitten:"cat"});function z(e){if(typeof e!="string")return null;let t=e.trim().toLowerCase();return Object.prototype.hasOwnProperty.call(le,t)?le[t]:null}n(z,"canonicalPetSpecies");var de=50,at=128,q=120,ue=120,st=2e3,ce=120,lt=80,ye=new Set(["male","female","unknown"]),me=new Set(["day","month","year"]),ve=new Set(["low","medium","high","athletic"]),_e=new Set(["indoor","outdoor","both"]),ge=new Set(["mild","moderate","severe"]),dt=/^(\d{4})-(\d{2})-(\d{2})$/,be=[["sex","sex"],["spayedNeutered","spayed_neutered"],["birthDate","birth_date"],["birthDatePrecision","birth_date_precision"],["activityLevel","activity_level"],["indoorOutdoor","indoor_outdoor"],["foodBrand","food_brand"],["foodType","food_type"],["microchipId","microchip_id"]],he=[["allergies","allergies"],["medications","medications"],["supplements","supplements"],["conditions","conditions"]];Object.freeze([...be,...he].map(([e])=>e));function ut(e){let t=dt.exec(e);if(t===null)return false;let[r,o,i]=[Number(t[1]),Number(t[2]),Number(t[3])],a=new Date(Date.UTC(r,o-1,i));return a.getUTCFullYear()===r&&a.getUTCMonth()===o-1&&a.getUTCDate()===i}n(ut,"isRealDate");var A=n(e=>(t,r)=>typeof r=="string"&&e.has(r)?null:`${t} must be one of ${[...e].join(", ")}`,"oneOf"),ct=n((e,t)=>typeof t=="boolean"?null:`${e} must be true or false`,"boolean"),N=n((e,t)=>typeof t=="string"&&ut(t)?null:`${e} must be a real date written YYYY-MM-DD`,"date"),_=n((e,t={})=>(r,o)=>{if(typeof o!="string")return `${r} must be a string`;if(ae(o))return `${r} contains an unpaired surrogate and cannot be encoded`;let i=t.trimmed?o.trim():o;if(t.required&&i.length===0)return `${r} is required and must not be blank`;let a=se(i);return a<=e?null:`${r} is ${a} characters; the server accepts at most ${e}`},"text"),pt={sex:A(ye),spayedNeutered:ct,birthDate:N,birthDatePrecision:A(me),activityLevel:A(ve),indoorOutdoor:A(_e),foodBrand:_(ce),foodType:_(ce),microchipId:_(lt)},B=["ref","ref",false,_(at,{required:true,trimmed:true})],$=["notes","notes",false,_(st,{trimmed:true})],pe=[B,["name","name",true,_(q,{required:true,trimmed:true})],["dose","dose",false,_(ue,{trimmed:true})],["frequency","frequency",false,_(ue,{trimmed:true})],["startDate","start_date",false,N],["endDate","end_date",false,N],$],ft={allergies:[B,["allergen","allergen",true,_(q,{required:true,trimmed:true})],["severity","severity",false,A(ge)],$],medications:pe,supplements:pe,conditions:[B,["conditionName","condition_name",true,_(q,{required:true,trimmed:true})],["diagnosedDate","diagnosed_date",false,N],$]};function yt(e,t,r){let o=`${e}[${t}]`;if(typeof r!="object"||r===null||Array.isArray(r))return {error:`${o} must be an object`};let i=r,a={};for(let[c,u,y,h]of ft[e]){let v=i[c];if(v==null){if(y)return {error:`${o}.${c} is required`};v===null&&(a[u]=null);continue}let E=h(`${o}.${c}`,v);if(E!==null)return {error:E};a[u]=v;}let l=a.start_date,d=a.end_date;return typeof l=="string"&&typeof d=="string"&&d<l?{error:`${o}.endDate must not be before startDate`}:{item:a}}n(yt,"itemToWire");function mt(e,t){if(!Array.isArray(t))return {error:`${e} must be an array (send [] to clear it)`};if(t.length>de)return {error:`${e} has ${t.length} items; the server accepts at most ${de}`};let r=[],o=new Set;for(let i=0;i<t.length;i+=1){let a=yt(e,i,t[i]);if("error"in a)return a;let l=a.item.ref;if(typeof l=="string"){let d=l.trim();if(o.has(d))return {error:`${e}: ref ${JSON.stringify(d)} is used twice; a ref names one item`};o.add(d);}r.push(a.item);}return {items:r}}n(mt,"listToWire");function Ee(e,t){let r=e,o={};for(let[l,d]of be){let c=r[l];if(c!==void 0){if(c!==null){let u=pt[l](l,c);if(u!==null)return {error:u}}o[d]=c;}}let i=r.birthDate!==void 0,a=r.birthDatePrecision!==void 0;if(i!==a||i&&r.birthDate===null!=(r.birthDatePrecision===null))return {error:"birthDate and birthDatePrecision must be sent together, both set or both null"};for(let[l,d]of he){let c=r[l];if(c===void 0)continue;let u=mt(l,c);if("error"in u)return u;o[d]=u.items;}return Object.keys(o).length>0&&t!==void 0&&z(t)===null?{error:"health fields need a pet Everfur reads as a dog or a cat (dog, canine, k9, puppy, cat, feline, kitten)"}:{body:o}}n(Ee,"petHealthToWire");var p=n(e=>typeof e=="string"?e:null,"str"),F=n((e,t)=>typeof t=="string"&&e.has(t)?t:null,"pick"),vt=n(e=>typeof e=="boolean"?e:null,"bool");function L(e,t){return Array.isArray(e)?Object.freeze(e.flatMap(r=>{if(typeof r!="object"||r===null||Array.isArray(r))return [];let o=t(r);return o===null?[]:[o]})):Object.freeze([])}n(L,"itemsFromWire");function fe(e){let t=p(e.name);return t===null||t.length===0?null:Object.freeze({ref:p(e.ref),name:t,dose:p(e.dose),frequency:p(e.frequency),startDate:p(e.start_date),endDate:p(e.end_date),notes:p(e.notes)})}n(fe,"medicationFromWire");function Re(e){let t=e.profile_version;return Object.freeze({profileVersion:typeof t=="number"&&Number.isInteger(t)&&t>=0?t:0,sex:F(ye,e.sex),spayedNeutered:vt(e.spayed_neutered),birthDate:p(e.birth_date),birthDatePrecision:F(me,e.birth_date_precision),activityLevel:F(ve,e.activity_level),indoorOutdoor:F(_e,e.indoor_outdoor),foodBrand:p(e.food_brand),foodType:p(e.food_type),microchipId:p(e.microchip_id),allergies:L(e.allergies,r=>{let o=p(r.allergen);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),allergen:o,severity:F(ge,r.severity),notes:p(r.notes)})}),medications:L(e.medications,fe),supplements:L(e.supplements,fe),conditions:L(e.conditions,r=>{let o=p(r.condition_name);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),conditionName:o,diagnosedDate:p(r.diagnosed_date),notes:p(r.notes)})})})}n(Re,"petHealthFromWire");var _t=["sk_partner_","rk_partner_"];function M(e,t){if(typeof e!="string"||e.length===0)throw new s("invalid-argument","partnerSecretKey is required");if(e.startsWith("pk_"))throw new s("invalid-argument",`partnerSecretKey is a publishable key (pk_...): ${t} needs your secret key, server side only`);if(!_t.some(r=>e.startsWith(r)))throw new s("invalid-argument","partnerSecretKey must be an sk_partner_ secret key or an rk_partner_ restricted key")}n(M,"assertServerSecretKey");var Ce=128,gt=3e4;async function bt(e,t,r){return Pe(e,"PUT",t,Oe(r,false))}n(bt,"upsertPartnerPet");async function ht(e,t,r){return Pe(e,"PATCH",t,Oe(r,true))}n(ht,"updatePartnerPet");async function Et(e,t){let r=await H(e,"GET",t,void 0);if(!("status"in r))return r;let o=await K(r),i=b(r);if(!r.ok)return f(m(r.status,o,i));let a=Te(o);return a?g(Object.freeze({...a,...Re(o)})):f(m(502,{error:{code:"INTERNAL_ERROR"}},i))}n(Et,"getPartnerPet");async function Rt(e,t){let r=await H(e,"DELETE",t,void 0);return "status"in r?r.ok?g(void 0):f(m(r.status,await K(r),b(r))):r}n(Rt,"deletePartnerPet");async function Pe(e,t,r,o){let i=await H(e,t,r,o);if(!("status"in i))return i;let a=await K(i),l=b(i);if(!i.ok)return f(m(i.status,a,l));let d=Te(a);return d?g(d):f(m(502,{error:{code:"INTERNAL_ERROR"}},l))}n(Pe,"petWrite");async function H(e,t,r,o){M(e.partnerSecretKey,"writing pets");let i=Ct(r),a=e.fetchImpl??k(),l=`${P(e.apiBaseUrl)}${i}`,d={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","x-everfur-partner-secret-key":e.partnerSecretKey};o!==void 0&&(d["content-type"]="application/json");let c=new AbortController,u=setTimeout(()=>c.abort(),gt);try{return await a(l,{method:t,headers:d,...o!==void 0?{body:o}:{},signal:c.signal})}catch(y){return f(T(y))}finally{clearTimeout(u);}}n(H,"send");function Ct(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","target is required");let t=R(e.userRef);Se("userRef",t);let r=e.petRef,o=typeof r=="string"?[...r].length:0;if(typeof r!="string"||o<1||o>Ce)throw new s("invalid-argument",`petRef must be 1..${Ce} characters`);return Se("petRef",r),`/partners/members/${encodeURIComponent(t)}/pets/${encodeURIComponent(r)}`}n(Ct,"memberPetPath");function Se(e,t){if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument",`${e} cannot contain '/' or be '.' or '..': it is sent as a URL path segment`)}n(Se,"assertPathSegment");var St=[["name","name"],["species","species"],["breed","breed"],["ageYears","age_years"],["weightKg","weight_kg"],["partnerLabelInstructions","partner_label_instructions"]];function Oe(e,t){let r=wt(e);if(t&&Object.keys(r).length===0)throw new s("invalid-argument","updatePartnerPet needs at least one field to change");return JSON.stringify(r)}n(Oe,"profileBody");function wt(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new s("invalid-argument","the pet profile must be an object");let t={};for(let[o,i]of St)e[o]!==void 0&&(t[i]=e[o]);let r=Ee(e,e.species);if("error"in r)throw new s("invalid-argument",r.error);return Object.assign(t,r.body)}n(wt,"partnerPetProfileBody");function V(e){return e==null?null:typeof e=="string"?e:void 0}n(V,"nullableString");function we(e){return e==null?null:typeof e=="number"?e:void 0}n(we,"nullableNumber");function Te(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.pet_id!="string"||typeof t.pet_ref!="string"||typeof t.updated_at!="string")return null;let r=V(t.name),o=V(t.species),i=V(t.breed),a=we(t.age_years),l=we(t.weight_kg);return r===void 0||o===void 0||i===void 0||a===void 0||l===void 0?null:Object.freeze({petId:t.pet_id,petRef:t.pet_ref,name:r,species:o,breed:i,ageYears:a,weightKg:l,updatedAt:t.updated_at})}n(Te,"parsePet");async function K(e){try{return await e.json()}catch{return null}}n(K,"readJsonSafe");function Pt(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(Pt,"wireCodeOf");function ke(e,t){let r=Pt(e);if(r===null)return e;let o=t[r];return o===void 0?e:x(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(ke,"foldWireReason");var Ie=254,xe=64,Ot=/^[^@\s]+@[^@\s]+\.[^@\s]+$/,Tt=3e4,kt=Object.freeze({consent_required:{code:"validationFailed",retryable:false},email_invalid:{code:"validationFailed",retryable:false},consent_invalid:{code:"validationFailed",retryable:false}});async function It(e,t){M(e.partnerSecretKey,"writing a member notification profile");let r=xt(t),o=JSON.stringify({email:t.email,consent:Ft(t.consent)}),i=e.fetchImpl??k(),a=`${P(e.apiBaseUrl)}${r}`,l={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey},d=new AbortController,c=setTimeout(()=>d.abort(),Tt),u;try{u=await i(a,{method:"PUT",headers:l,body:o,signal:d.signal});}catch(E){return f(T(E))}finally{clearTimeout(c);}let y=await jt(u),h=b(u);if(!u.ok)return f(ke(m(u.status,y,h),kt));let v=Dt(y);return v?g(v):f(m(502,{error:{code:"INTERNAL_ERROR"}},h))}n(It,"setPartnerMemberNotificationProfile");function xt(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","input is required");let t=R(e.userRef);if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument","userRef cannot contain '/' or be '.' or '..': it is sent as a URL path segment");let r=e.email;if(typeof r!="string"||r.trim().length<3||r.trim().length>Ie||!Ot.test(r.trim()))throw new s("invalid-argument",`email must be an address of at most ${Ie} characters`);return `/partners/members/${encodeURIComponent(t)}/notification-profile`}n(xt,"memberProfilePath");function Ft(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","consent is required: an address is stored only with the stamp of the consent you collected");if(e.method!=="partner_attested")throw new s("invalid-argument","consent.method must be 'partner_attested' in this version");let t=e.version;if(typeof t!="string"||t.length===0||t.length>xe)throw new s("invalid-argument",`consent.version must be 1..${xe} characters`);let r=e.givenAt instanceof Date?e.givenAt.toISOString():e.givenAt;if(typeof r!="string"||!Number.isFinite(Date.parse(r)))throw new s("invalid-argument","consent.givenAt must be an ISO 8601 instant or a Date");return {given_at:r,method:"partner_attested",version:t}}n(Ft,"consentBody");function Y(e){return e==null?null:typeof e=="string"?e:void 0}n(Y,"nullableString");function At(e){if(e==null)return null;if(typeof e!="object")return;let t=e;if(!(typeof t.given_at!="string"||typeof t.method!="string"||typeof t.version!="string"))return Object.freeze({givenAt:t.given_at,method:t.method,version:t.version})}n(At,"parseConsent");function Dt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.user_ref!="string"||typeof t.updated_at!="string"||typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||typeof t.active_devices!="number"||!Number.isFinite(t.active_devices))return null;let r=Y(t.email),o=Y(t.email_verified_at),i=Y(t.unsubscribed_at),a=At(t.consent);return r===void 0||o===void 0||i===void 0||a===void 0?null:Object.freeze({userRef:t.user_ref,emailMasked:r,consent:a,emailVerifiedAt:o,pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,unsubscribedAt:i,activeDevices:t.active_devices,updatedAt:t.updated_at})}n(Dt,"parseProfile");async function jt(e){try{return await e.json()}catch{return null}}n(jt,"readJsonSafe");var Lt=60,Nt=3600,Mt=3e4;async function en(e){let t=R(e.userRef),r=Ut(e.ttlSeconds),o=e.fetchImpl??k(),i=`${P(e.apiBaseUrl)}/widget/v1/sessions`,a={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey,"x-everfur-partner-key":e.publishableKey},l={user_ref:t};r!==void 0&&(l.ttl_seconds=r);let d=Bt(Mt),c=$t(d.signal,e.signal),u={method:"POST",headers:a,body:JSON.stringify(l),signal:c},y;try{y=await o(i,u);}catch(Fe){return f(T(Fe))}finally{d.cancel();}let h=await qt(y),v=b(y);if(!y.ok)return f(m(y.status,h,v));let E=zt(h);return E?g(E):f(m(502,{error:{code:"INTERNAL_ERROR"}},v))}n(en,"mintPartnerSession");function Ut(e){if(e!=null){if(!Number.isInteger(e))throw new s("invalid-argument","ttl_seconds must be an integer");return Math.min(Nt,Math.max(Lt,e))}}n(Ut,"clampTtl");function zt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.session_token!="string"||t.session_token.length===0||typeof t.expires_at!="number")return null;let r=Array.isArray(t.capabilities)?t.capabilities.filter(o=>typeof o=="string"):[];return Object.freeze({sessionToken:t.session_token,expiresAt:t.expires_at,capabilities:Object.freeze(r)})}n(zt,"parseMint");async function qt(e){try{return await e.json()}catch{return null}}n(qt,"readJsonSafe");function Bt(e){let t=new AbortController,r=setTimeout(()=>t.abort(),e);return {signal:t.signal,cancel:n(()=>clearTimeout(r),"cancel")}}n(Bt,"mintTimeoutSignal");function $t(e,t){if(!t)return e;let r=new AbortController;if(e.aborted||t.aborted)return r.abort(),r.signal;let o=n(()=>r.abort(),"onAbort");return e.addEventListener("abort",o,{once:true}),t.addEventListener("abort",o,{once:true}),r.signal}n($t,"mergeMintSignals");
|
|
2
|
+
exports.assertValidUserRef=R;exports.canonicalPetSpecies=z;exports.deletePartnerPet=Rt;exports.getPartnerPet=Et;exports.mintPartnerSession=en;exports.setPartnerMemberNotificationProfile=It;exports.updatePartnerPet=ht;exports.upsertPartnerPet=bt;
|
package/dist/server/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { E as EverfurResult } from '../EverfurResult-ZtH-YV1h.cjs';
|
|
2
|
-
import { j as FetchLike } from '../config-
|
|
3
|
-
import { P as PartnerServerClient } from '../pets-
|
|
4
|
-
export { a as PartnerPet, b as PartnerPetProfile, c as PartnerPetTarget, d as PartnerPetWithProfile, e as deletePartnerPet, g as getPartnerPet, u as updatePartnerPet, f as upsertPartnerPet } from '../pets-
|
|
2
|
+
import { j as FetchLike } from '../config-jocy3q66.cjs';
|
|
3
|
+
import { P as PartnerServerClient } from '../pets-Bod_DDiW.cjs';
|
|
4
|
+
export { a as PartnerPet, b as PartnerPetProfile, c as PartnerPetTarget, d as PartnerPetWithProfile, e as deletePartnerPet, g as getPartnerPet, u as updatePartnerPet, f as upsertPartnerPet } from '../pets-Bod_DDiW.cjs';
|
|
5
5
|
export { b as PetActivityLevel, c as PetAllergy, d as PetAllergySeverity, e as PetBirthDatePrecision, f as PetCondition, a as PetHealthProfile, P as PetHealthProfileInput, g as PetIndoorOutdoor, h as PetMedication, i as PetSex } from '../profile-CSs1wlXT.cjs';
|
|
6
6
|
export { C as CanonicalPetSpecies, c as canonicalPetSpecies } from '../species-BXAIMh7I.cjs';
|
|
7
7
|
import '../EverfurError-DmELDpXp.cjs';
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { E as EverfurResult } from '../EverfurResult-SGvHKsCB.js';
|
|
2
|
-
import { j as FetchLike } from '../config-
|
|
3
|
-
import { P as PartnerServerClient } from '../pets-
|
|
4
|
-
export { a as PartnerPet, b as PartnerPetProfile, c as PartnerPetTarget, d as PartnerPetWithProfile, e as deletePartnerPet, g as getPartnerPet, u as updatePartnerPet, f as upsertPartnerPet } from '../pets-
|
|
2
|
+
import { j as FetchLike } from '../config-DBpKJJbg.js';
|
|
3
|
+
import { P as PartnerServerClient } from '../pets-C_QX8s5f.js';
|
|
4
|
+
export { a as PartnerPet, b as PartnerPetProfile, c as PartnerPetTarget, d as PartnerPetWithProfile, e as deletePartnerPet, g as getPartnerPet, u as updatePartnerPet, f as upsertPartnerPet } from '../pets-C_QX8s5f.js';
|
|
5
5
|
export { b as PetActivityLevel, c as PetAllergy, d as PetAllergySeverity, e as PetBirthDatePrecision, f as PetCondition, a as PetHealthProfile, P as PetHealthProfileInput, g as PetIndoorOutdoor, h as PetMedication, i as PetSex } from '../profile-CSs1wlXT.js';
|
|
6
6
|
export { C as CanonicalPetSpecies, c as canonicalPetSpecies } from '../species-BXAIMh7I.js';
|
|
7
7
|
import '../EverfurError-DmELDpXp.js';
|
package/dist/server/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var Ae=Object.defineProperty;var n=(e,t)=>Ae(e,"name",{value:t,configurable:true});function g(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(g,"ok");function f(e){return Object.freeze({ok:false,error:e})}n(f,"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 s=j;var C="0.5.0",S="react-native",w="2026-09-19",W="EVERFUR_API_BASE_URL";function I(e,t){return Object.freeze({ok:false,failure:Object.freeze({reason:e,message:t})})}n(I,"configFailure");function je(e){let t=e?.trim(),r=t&&t.length>0?t:Be(W);return r?ze(r):I("missing-api-base-url",`apiBaseUrl is required: pass config.apiBaseUrl or set ${W}. The SDK never ships a hardcoded host.`)}n(je,"tryResolveApiBaseUrl");function P(e){let t=je(e);if(!t.ok)throw new s("invalid-argument",t.failure.message);return t.value}n(P,"resolveApiBaseUrl");function O(e){return {"X-Everfur-SDK-Version":e.sdkVersion,"X-Everfur-SDK-Platform":e.platform,"X-Everfur-Contract":e.contractVersion}}n(O,"buildBaseHeaders");var De=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/;function Ne(e){return e.slice(e.lastIndexOf("@")+1).replace(/:\d+$/,"").toLowerCase()}n(Ne,"hostOf");function Le(e){return e.length===0||e.includes("@")?false:e.startsWith("[")&&e.endsWith("]")?true:!e.includes(":")}n(Le,"isPrintableHost");function Me(e,t){let r=e.indexOf("://");return r<0||e.slice(r+3).includes("@")?false:Le(t)}n(Me,"canEchoOrigin");function Ue(e,t){return `${e}://${t}`}n(Ue,"safeOrigin");function ze(e){let t=e.trim(),r=De.exec(t);if(r===null||r[2]===void 0||r[2].length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let o=(r[1]??"").toLowerCase(),i=Ne(r[2]);if(i.length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let a=Me(t,i)?`: ${Ue(o,i)}`:"";if(o!=="https"){if(!(o==="http"&&qe(i)))return o==="http"?I("insecure-api-base-url",`apiBaseUrl must use https (cleartext http is only allowed for localhost)${a}`):I("unsupported-api-base-url-scheme",`apiBaseUrl must be http(s)${a}`)}let l=t.endsWith("/")?t.slice(0,-1):t;return Object.freeze({ok:true,value:l})}n(ze,"normalizeBaseUrl");function qe(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"||t==="::1"}n(qe,"isLoopbackHost");function Be(e){let r=globalThis.process?.env?.[e];return typeof r=="string"&&r.trim().length>0?r.trim():void 0}n(Be,"readEnv");var U=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(U.map(e=>e.wireCode));var $e=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"}),G=Object.freeze(U.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:$e[e.wireCode]}))),Ve=new Map(G.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),He=Object.freeze(["http_envelope",...[...new Set(G.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function D(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...He]){let i=Ve.get(o+r);if(i)return i}}n(D,"contractErrorFor");function Ke(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Ke,"contractDocUrl");function Q(e){return null}n(Q,"publishedDocUrl");var Ye=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 J(e){return Ye[e]}n(J,"categoryFor");function Z(e){let t=D(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(Z,"fromWire");function ee(e){return e===401?"authExpired":e===403?"accessDenied":e===404?"conversationNotFound":e===409?"idempotencyConflict":e===421?"unknown":e===429?"rateLimited":e===400||e===422?"unknown":e>=500?"internalError":"unknown"}n(ee,"fromHttpStatus");var We=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function te(e){return We.has(e)}n(te,"isAutoRetryable");var Xe=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function re(e){return te(e)||Xe.has(e)}n(re,"isRetryableCode");var Ge=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 Qe(e){return Ge[e]}n(Qe,"userFacingError");function ne(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(ne,"defineHidden");var Je=/^[a-z][a-z0-9_]{0,63}$/;function x(e,t){let r=D(t?.wireCode,t?.wireEnvelope),o={code:e,category:J(e),retryable:t?.retryable??re(e),displayMessage:Qe(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&Je.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&ne(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&ne(o,"raw",t.raw),Object.freeze(o)}n(x,"makeEverfurError");var Ze="x-request-id";function m(e,t,r){let o=et(t),i=o?Z(o):ee(e),a=tt(t);return x(i,{httpStatus:e,...rt(t)?{retryable:true}:{},...r?{requestId:r}:{},...o?{wireCode:o}:{},...oe(t)?{reasonCode:oe(t)}:{},...a?{wireMessage:a}:{},...t!=null?{raw:t}:{}})}n(m,"errorFromResponse");function k(e){return x("internalError",{retryable:true,wireMessage:nt(e)})}n(k,"networkError");function h(e){let t=e.headers.get(Ze);return typeof t=="string"&&t.length>0?t:null}n(h,"requestIdOf");function T(){let e=globalThis.fetch;if(typeof e!="function")throw new s("missing-peer-dependency","global fetch is unavailable; provide config.transport or an injected fetch implementation");return e}n(T,"getGlobalFetch");function oe(e){let t=e,r=t?.error?.reason_code??t?.reason_code;return typeof r=="string"&&r.length>0?r:null}n(oe,"extractReasonCode");function et(e){let t=e,r=t?.error?.code??t?.code;return typeof r=="string"&&r.length>0?r:null}n(et,"extractWireCode");function tt(e){let t=e,r=t?.error?.message??t?.message;return typeof r=="string"&&r.length>0?r:null}n(tt,"extractWireMessage");function rt(e){let t=e;return t?.error?.retryable===true||t?.retryable===true}n(rt,"extractRetryable");function nt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(nt,"describeCause");var ie=128;function R(e){let t=typeof e=="string"?[...e].length:0;if(typeof e!="string"||t<1||t>ie)throw new s("invalid-argument",`user_ref must be 1..${ie} characters`);if(e.trim().length===0)throw new s("invalid-argument","user_ref must not be blank: the server strips surrounding whitespace before validating, so a whitespace-only value arrives empty and is rejected as required.");if(e!==e.trim())throw new s("invalid-argument","user_ref must not have leading or trailing whitespace: the server strips it, so padded and unpadded forms of the same id resolve to ONE user. Pass the exact id you want to key on.");if(e.includes("@"))throw new s("invalid-argument","user_ref must not contain '@'");if(!ot(e))throw new s("invalid-argument","user_ref must be printable (no control characters)");return e}n(R,"assertValidUserRef");function ot(e){return !it.test(e)}n(ot,"isPrintable");var it=/[\p{Cc}\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Zl}\p{Zp}]|(?!\u0020)[\p{Zs}]/u;function ae(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let o=e.charCodeAt(t+1);if(!(o>=56320&&o<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}n(ae,"hasLoneSurrogate");function se(e){return [...e].length}n(se,"serverLength");var le=Object.freeze({dog:"dog",canine:"dog",k9:"dog",puppy:"dog",cat:"cat",feline:"cat",kitten:"cat"});function z(e){if(typeof e!="string")return null;let t=e.trim().toLowerCase();return Object.prototype.hasOwnProperty.call(le,t)?le[t]:null}n(z,"canonicalPetSpecies");var de=50,at=128,q=120,ue=120,st=2e3,ce=120,lt=80,ye=new Set(["male","female","unknown"]),me=new Set(["day","month","year"]),ve=new Set(["low","medium","high","athletic"]),_e=new Set(["indoor","outdoor","both"]),ge=new Set(["mild","moderate","severe"]),dt=/^(\d{4})-(\d{2})-(\d{2})$/,he=[["sex","sex"],["spayedNeutered","spayed_neutered"],["birthDate","birth_date"],["birthDatePrecision","birth_date_precision"],["activityLevel","activity_level"],["indoorOutdoor","indoor_outdoor"],["foodBrand","food_brand"],["foodType","food_type"],["microchipId","microchip_id"]],be=[["allergies","allergies"],["medications","medications"],["supplements","supplements"],["conditions","conditions"]];Object.freeze([...he,...be].map(([e])=>e));function ut(e){let t=dt.exec(e);if(t===null)return false;let[r,o,i]=[Number(t[1]),Number(t[2]),Number(t[3])],a=new Date(Date.UTC(r,o-1,i));return a.getUTCFullYear()===r&&a.getUTCMonth()===o-1&&a.getUTCDate()===i}n(ut,"isRealDate");var A=n(e=>(t,r)=>typeof r=="string"&&e.has(r)?null:`${t} must be one of ${[...e].join(", ")}`,"oneOf"),ct=n((e,t)=>typeof t=="boolean"?null:`${e} must be true or false`,"boolean"),L=n((e,t)=>typeof t=="string"&&ut(t)?null:`${e} must be a real date written YYYY-MM-DD`,"date"),_=n((e,t={})=>(r,o)=>{if(typeof o!="string")return `${r} must be a string`;if(ae(o))return `${r} contains an unpaired surrogate and cannot be encoded`;let i=t.trimmed?o.trim():o;if(t.required&&i.length===0)return `${r} is required and must not be blank`;let a=se(i);return a<=e?null:`${r} is ${a} characters; the server accepts at most ${e}`},"text"),pt={sex:A(ye),spayedNeutered:ct,birthDate:L,birthDatePrecision:A(me),activityLevel:A(ve),indoorOutdoor:A(_e),foodBrand:_(ce),foodType:_(ce),microchipId:_(lt)},B=["ref","ref",false,_(at,{required:true,trimmed:true})],$=["notes","notes",false,_(st,{trimmed:true})],pe=[B,["name","name",true,_(q,{required:true,trimmed:true})],["dose","dose",false,_(ue,{trimmed:true})],["frequency","frequency",false,_(ue,{trimmed:true})],["startDate","start_date",false,L],["endDate","end_date",false,L],$],ft={allergies:[B,["allergen","allergen",true,_(q,{required:true,trimmed:true})],["severity","severity",false,A(ge)],$],medications:pe,supplements:pe,conditions:[B,["conditionName","condition_name",true,_(q,{required:true,trimmed:true})],["diagnosedDate","diagnosed_date",false,L],$]};function yt(e,t,r){let o=`${e}[${t}]`;if(typeof r!="object"||r===null||Array.isArray(r))return {error:`${o} must be an object`};let i=r,a={};for(let[c,u,y,b]of ft[e]){let v=i[c];if(v==null){if(y)return {error:`${o}.${c} is required`};v===null&&(a[u]=null);continue}let E=b(`${o}.${c}`,v);if(E!==null)return {error:E};a[u]=v;}let l=a.start_date,d=a.end_date;return typeof l=="string"&&typeof d=="string"&&d<l?{error:`${o}.endDate must not be before startDate`}:{item:a}}n(yt,"itemToWire");function mt(e,t){if(!Array.isArray(t))return {error:`${e} must be an array (send [] to clear it)`};if(t.length>de)return {error:`${e} has ${t.length} items; the server accepts at most ${de}`};let r=[],o=new Set;for(let i=0;i<t.length;i+=1){let a=yt(e,i,t[i]);if("error"in a)return a;let l=a.item.ref;if(typeof l=="string"){let d=l.trim();if(o.has(d))return {error:`${e}: ref ${JSON.stringify(d)} is used twice; a ref names one item`};o.add(d);}r.push(a.item);}return {items:r}}n(mt,"listToWire");function Ee(e,t){let r=e,o={};for(let[l,d]of he){let c=r[l];if(c!==void 0){if(c!==null){let u=pt[l](l,c);if(u!==null)return {error:u}}o[d]=c;}}let i=r.birthDate!==void 0,a=r.birthDatePrecision!==void 0;if(i!==a||i&&r.birthDate===null!=(r.birthDatePrecision===null))return {error:"birthDate and birthDatePrecision must be sent together, both set or both null"};for(let[l,d]of be){let c=r[l];if(c===void 0)continue;let u=mt(l,c);if("error"in u)return u;o[d]=u.items;}return Object.keys(o).length>0&&t!==void 0&&z(t)===null?{error:"health fields need a pet Everfur reads as a dog or a cat (dog, canine, k9, puppy, cat, feline, kitten)"}:{body:o}}n(Ee,"petHealthToWire");var p=n(e=>typeof e=="string"?e:null,"str"),F=n((e,t)=>typeof t=="string"&&e.has(t)?t:null,"pick"),vt=n(e=>typeof e=="boolean"?e:null,"bool");function N(e,t){return Array.isArray(e)?Object.freeze(e.flatMap(r=>{if(typeof r!="object"||r===null||Array.isArray(r))return [];let o=t(r);return o===null?[]:[o]})):Object.freeze([])}n(N,"itemsFromWire");function fe(e){let t=p(e.name);return t===null||t.length===0?null:Object.freeze({ref:p(e.ref),name:t,dose:p(e.dose),frequency:p(e.frequency),startDate:p(e.start_date),endDate:p(e.end_date),notes:p(e.notes)})}n(fe,"medicationFromWire");function Re(e){let t=e.profile_version;return Object.freeze({profileVersion:typeof t=="number"&&Number.isInteger(t)&&t>=0?t:0,sex:F(ye,e.sex),spayedNeutered:vt(e.spayed_neutered),birthDate:p(e.birth_date),birthDatePrecision:F(me,e.birth_date_precision),activityLevel:F(ve,e.activity_level),indoorOutdoor:F(_e,e.indoor_outdoor),foodBrand:p(e.food_brand),foodType:p(e.food_type),microchipId:p(e.microchip_id),allergies:N(e.allergies,r=>{let o=p(r.allergen);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),allergen:o,severity:F(ge,r.severity),notes:p(r.notes)})}),medications:N(e.medications,fe),supplements:N(e.supplements,fe),conditions:N(e.conditions,r=>{let o=p(r.condition_name);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),conditionName:o,diagnosedDate:p(r.diagnosed_date),notes:p(r.notes)})})})}n(Re,"petHealthFromWire");var _t=["sk_partner_","rk_partner_"];function M(e,t){if(typeof e!="string"||e.length===0)throw new s("invalid-argument","partnerSecretKey is required");if(e.startsWith("pk_"))throw new s("invalid-argument",`partnerSecretKey is a publishable key (pk_...): ${t} needs your secret key, server side only`);if(!_t.some(r=>e.startsWith(r)))throw new s("invalid-argument","partnerSecretKey must be an sk_partner_ secret key or an rk_partner_ restricted key")}n(M,"assertServerSecretKey");var Ce=128,gt=3e4;async function ht(e,t,r){return Pe(e,"PUT",t,Oe(r,false))}n(ht,"upsertPartnerPet");async function bt(e,t,r){return Pe(e,"PATCH",t,Oe(r,true))}n(bt,"updatePartnerPet");async function Et(e,t){let r=await H(e,"GET",t,void 0);if(!("status"in r))return r;let o=await K(r),i=h(r);if(!r.ok)return f(m(r.status,o,i));let a=ke(o);return a?g(Object.freeze({...a,...Re(o)})):f(m(502,{error:{code:"INTERNAL_ERROR"}},i))}n(Et,"getPartnerPet");async function Rt(e,t){let r=await H(e,"DELETE",t,void 0);return "status"in r?r.ok?g(void 0):f(m(r.status,await K(r),h(r))):r}n(Rt,"deletePartnerPet");async function Pe(e,t,r,o){let i=await H(e,t,r,o);if(!("status"in i))return i;let a=await K(i),l=h(i);if(!i.ok)return f(m(i.status,a,l));let d=ke(a);return d?g(d):f(m(502,{error:{code:"INTERNAL_ERROR"}},l))}n(Pe,"petWrite");async function H(e,t,r,o){M(e.partnerSecretKey,"writing pets");let i=Ct(r),a=e.fetchImpl??T(),l=`${P(e.apiBaseUrl)}${i}`,d={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","x-everfur-partner-secret-key":e.partnerSecretKey};o!==void 0&&(d["content-type"]="application/json");let c=new AbortController,u=setTimeout(()=>c.abort(),gt);try{return await a(l,{method:t,headers:d,...o!==void 0?{body:o}:{},signal:c.signal})}catch(y){return f(k(y))}finally{clearTimeout(u);}}n(H,"send");function Ct(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","target is required");let t=R(e.userRef);Se("userRef",t);let r=e.petRef,o=typeof r=="string"?[...r].length:0;if(typeof r!="string"||o<1||o>Ce)throw new s("invalid-argument",`petRef must be 1..${Ce} characters`);return Se("petRef",r),`/partners/members/${encodeURIComponent(t)}/pets/${encodeURIComponent(r)}`}n(Ct,"memberPetPath");function Se(e,t){if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument",`${e} cannot contain '/' or be '.' or '..': it is sent as a URL path segment`)}n(Se,"assertPathSegment");var St=[["name","name"],["species","species"],["breed","breed"],["ageYears","age_years"],["weightKg","weight_kg"],["partnerLabelInstructions","partner_label_instructions"]];function Oe(e,t){let r=wt(e);if(t&&Object.keys(r).length===0)throw new s("invalid-argument","updatePartnerPet needs at least one field to change");return JSON.stringify(r)}n(Oe,"profileBody");function wt(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new s("invalid-argument","the pet profile must be an object");let t={};for(let[o,i]of St)e[o]!==void 0&&(t[i]=e[o]);let r=Ee(e,e.species);if("error"in r)throw new s("invalid-argument",r.error);return Object.assign(t,r.body)}n(wt,"partnerPetProfileBody");function V(e){return e==null?null:typeof e=="string"?e:void 0}n(V,"nullableString");function we(e){return e==null?null:typeof e=="number"?e:void 0}n(we,"nullableNumber");function ke(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.pet_id!="string"||typeof t.pet_ref!="string"||typeof t.updated_at!="string")return null;let r=V(t.name),o=V(t.species),i=V(t.breed),a=we(t.age_years),l=we(t.weight_kg);return r===void 0||o===void 0||i===void 0||a===void 0||l===void 0?null:Object.freeze({petId:t.pet_id,petRef:t.pet_ref,name:r,species:o,breed:i,ageYears:a,weightKg:l,updatedAt:t.updated_at})}n(ke,"parsePet");async function K(e){try{return await e.json()}catch{return null}}n(K,"readJsonSafe");function Pt(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(Pt,"wireCodeOf");function Te(e,t){let r=Pt(e);if(r===null)return e;let o=t[r];return o===void 0?e:x(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(Te,"foldWireReason");var Ie=254,xe=64,Ot=/^[^@\s]+@[^@\s]+\.[^@\s]+$/,kt=3e4,Tt=Object.freeze({consent_required:{code:"validationFailed",retryable:false},email_invalid:{code:"validationFailed",retryable:false},consent_invalid:{code:"validationFailed",retryable:false}});async function It(e,t){M(e.partnerSecretKey,"writing a member notification profile");let r=xt(t),o=JSON.stringify({email:t.email,consent:Ft(t.consent)}),i=e.fetchImpl??T(),a=`${P(e.apiBaseUrl)}${r}`,l={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey},d=new AbortController,c=setTimeout(()=>d.abort(),kt),u;try{u=await i(a,{method:"PUT",headers:l,body:o,signal:d.signal});}catch(E){return f(k(E))}finally{clearTimeout(c);}let y=await Dt(u),b=h(u);if(!u.ok)return f(Te(m(u.status,y,b),Tt));let v=jt(y);return v?g(v):f(m(502,{error:{code:"INTERNAL_ERROR"}},b))}n(It,"setPartnerMemberNotificationProfile");function xt(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","input is required");let t=R(e.userRef);if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument","userRef cannot contain '/' or be '.' or '..': it is sent as a URL path segment");let r=e.email;if(typeof r!="string"||r.trim().length<3||r.trim().length>Ie||!Ot.test(r.trim()))throw new s("invalid-argument",`email must be an address of at most ${Ie} characters`);return `/partners/members/${encodeURIComponent(t)}/notification-profile`}n(xt,"memberProfilePath");function Ft(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","consent is required: an address is stored only with the stamp of the consent you collected");if(e.method!=="partner_attested")throw new s("invalid-argument","consent.method must be 'partner_attested' in this version");let t=e.version;if(typeof t!="string"||t.length===0||t.length>xe)throw new s("invalid-argument",`consent.version must be 1..${xe} characters`);let r=e.givenAt instanceof Date?e.givenAt.toISOString():e.givenAt;if(typeof r!="string"||!Number.isFinite(Date.parse(r)))throw new s("invalid-argument","consent.givenAt must be an ISO 8601 instant or a Date");return {given_at:r,method:"partner_attested",version:t}}n(Ft,"consentBody");function Y(e){return e==null?null:typeof e=="string"?e:void 0}n(Y,"nullableString");function At(e){if(e==null)return null;if(typeof e!="object")return;let t=e;if(!(typeof t.given_at!="string"||typeof t.method!="string"||typeof t.version!="string"))return Object.freeze({givenAt:t.given_at,method:t.method,version:t.version})}n(At,"parseConsent");function jt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.user_ref!="string"||typeof t.updated_at!="string"||typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||typeof t.active_devices!="number"||!Number.isFinite(t.active_devices))return null;let r=Y(t.email),o=Y(t.email_verified_at),i=Y(t.unsubscribed_at),a=At(t.consent);return r===void 0||o===void 0||i===void 0||a===void 0?null:Object.freeze({userRef:t.user_ref,emailMasked:r,consent:a,emailVerifiedAt:o,pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,unsubscribedAt:i,activeDevices:t.active_devices,updatedAt:t.updated_at})}n(jt,"parseProfile");async function Dt(e){try{return await e.json()}catch{return null}}n(Dt,"readJsonSafe");var Nt=60,Lt=3600,Mt=3e4;async function en(e){let t=R(e.userRef),r=Ut(e.ttlSeconds),o=e.fetchImpl??T(),i=`${P(e.apiBaseUrl)}/widget/v1/sessions`,a={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey,"x-everfur-partner-key":e.publishableKey},l={user_ref:t};r!==void 0&&(l.ttl_seconds=r);let d=Bt(Mt),c=$t(d.signal,e.signal),u={method:"POST",headers:a,body:JSON.stringify(l),signal:c},y;try{y=await o(i,u);}catch(Fe){return f(k(Fe))}finally{d.cancel();}let b=await qt(y),v=h(y);if(!y.ok)return f(m(y.status,b,v));let E=zt(b);return E?g(E):f(m(502,{error:{code:"INTERNAL_ERROR"}},v))}n(en,"mintPartnerSession");function Ut(e){if(e!=null){if(!Number.isInteger(e))throw new s("invalid-argument","ttl_seconds must be an integer");return Math.min(Lt,Math.max(Nt,e))}}n(Ut,"clampTtl");function zt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.session_token!="string"||t.session_token.length===0||typeof t.expires_at!="number")return null;let r=Array.isArray(t.capabilities)?t.capabilities.filter(o=>typeof o=="string"):[];return Object.freeze({sessionToken:t.session_token,expiresAt:t.expires_at,capabilities:Object.freeze(r)})}n(zt,"parseMint");async function qt(e){try{return await e.json()}catch{return null}}n(qt,"readJsonSafe");function Bt(e){let t=new AbortController,r=setTimeout(()=>t.abort(),e);return {signal:t.signal,cancel:n(()=>clearTimeout(r),"cancel")}}n(Bt,"mintTimeoutSignal");function $t(e,t){if(!t)return e;let r=new AbortController;if(e.aborted||t.aborted)return r.abort(),r.signal;let o=n(()=>r.abort(),"onAbort");return e.addEventListener("abort",o,{once:true}),t.addEventListener("abort",o,{once:true}),r.signal}n($t,"mergeMintSignals");
|
|
2
|
-
export{R as assertValidUserRef,z as canonicalPetSpecies,Rt as deletePartnerPet,Et as getPartnerPet,en as mintPartnerSession,It as setPartnerMemberNotificationProfile,
|
|
1
|
+
var Ae=Object.defineProperty;var n=(e,t)=>Ae(e,"name",{value:t,configurable:true});function g(e,t){return Object.freeze(t===void 0?{ok:true,value:e}:{ok:true,value:e,warning:t})}n(g,"ok");function f(e){return Object.freeze({ok:false,error:e})}n(f,"err");var D=class D extends Error{constructor(t,r){super(r),this.name="EverfurConfigError",this.kind=t,Object.setPrototypeOf(this,D.prototype);}};n(D,"EverfurConfigError");var s=D;var C="0.5.2",S="react-native",w="2026-09-19",W="EVERFUR_API_BASE_URL";function I(e,t){return Object.freeze({ok:false,failure:Object.freeze({reason:e,message:t})})}n(I,"configFailure");function De(e){let t=e?.trim(),r=t&&t.length>0?t:Be(W);return r?ze(r):I("missing-api-base-url",`apiBaseUrl is required: pass config.apiBaseUrl or set ${W}. The SDK never ships a hardcoded host.`)}n(De,"tryResolveApiBaseUrl");function P(e){let t=De(e);if(!t.ok)throw new s("invalid-argument",t.failure.message);return t.value}n(P,"resolveApiBaseUrl");function O(e){return {"X-Everfur-SDK-Version":e.sdkVersion,"X-Everfur-SDK-Platform":e.platform,"X-Everfur-Contract":e.contractVersion}}n(O,"buildBaseHeaders");var je=/^([A-Za-z][A-Za-z0-9+.-]*):\/\/([^/?#]*)/;function Le(e){return e.slice(e.lastIndexOf("@")+1).replace(/:\d+$/,"").toLowerCase()}n(Le,"hostOf");function Ne(e){return e.length===0||e.includes("@")?false:e.startsWith("[")&&e.endsWith("]")?true:!e.includes(":")}n(Ne,"isPrintableHost");function Me(e,t){let r=e.indexOf("://");return r<0||e.slice(r+3).includes("@")?false:Ne(t)}n(Me,"canEchoOrigin");function Ue(e,t){return `${e}://${t}`}n(Ue,"safeOrigin");function ze(e){let t=e.trim(),r=je.exec(t);if(r===null||r[2]===void 0||r[2].length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let o=(r[1]??"").toLowerCase(),i=Le(r[2]);if(i.length===0)return I("malformed-api-base-url","apiBaseUrl is not a valid absolute URL");let a=Me(t,i)?`: ${Ue(o,i)}`:"";if(o!=="https"){if(!(o==="http"&&qe(i)))return o==="http"?I("insecure-api-base-url",`apiBaseUrl must use https (cleartext http is only allowed for localhost)${a}`):I("unsupported-api-base-url-scheme",`apiBaseUrl must be http(s)${a}`)}let l=t.endsWith("/")?t.slice(0,-1):t;return Object.freeze({ok:true,value:l})}n(ze,"normalizeBaseUrl");function qe(e){let t=e.toLowerCase();return t==="localhost"||t==="127.0.0.1"||t==="[::1]"||t==="::1"}n(qe,"isLoopbackHost");function Be(e){let r=globalThis.process?.env?.[e];return typeof r=="string"&&r.trim().length>0?r.trim():void 0}n(Be,"readEnv");var U=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(U.map(e=>e.wireCode));var $e=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"}),G=Object.freeze(U.map(e=>Object.freeze({wireCode:e.wireCode,envelope:e.envelope,retryable:e.retryable,normalized:$e[e.wireCode]}))),Ve=new Map(G.map(e=>[e.envelope+e.wireCode.toUpperCase(),e])),He=Object.freeze(["http_envelope",...[...new Set(G.map(e=>e.envelope))].filter(e=>e!=="http_envelope").sort()]);function j(e,t){if(typeof e!="string")return;let r=e.trim().toUpperCase();if(r.length!==0)for(let o of [t??"http_envelope",...He]){let i=Ve.get(o+r);if(i)return i}}n(j,"contractErrorFor");function Ke(e){return e.envelope==="sse_frame"?`/errors#sse-${e.wireCode}`:e.envelope==="oauth_error"?`/errors#oauth-${e.wireCode}`:`/errors#${e.wireCode}`}n(Ke,"contractDocUrl");function Q(e){return null}n(Q,"publishedDocUrl");var Ye=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 J(e){return Ye[e]}n(J,"categoryFor");function Z(e){let t=j(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(Z,"fromWire");function ee(e){return e===401?"authExpired":e===403?"accessDenied":e===404?"conversationNotFound":e===409?"idempotencyConflict":e===421?"unknown":e===429?"rateLimited":e===400||e===422?"unknown":e>=500?"internalError":"unknown"}n(ee,"fromHttpStatus");var We=new Set(["streamTimeout","rateLimited","internalError","upstreamLlmTimeout","streamIncomplete"]);function te(e){return We.has(e)}n(te,"isAutoRetryable");var Xe=new Set(["serviceUnavailable","conflict","idempotencyInFlight"]);function re(e){return te(e)||Xe.has(e)}n(re,"isRetryableCode");var Ge=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 Qe(e){return Ge[e]}n(Qe,"userFacingError");function ne(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:false,writable:false,configurable:false});}n(ne,"defineHidden");var Je=/^[a-z][a-z0-9_]{0,63}$/;function x(e,t){let r=j(t?.wireCode,t?.wireEnvelope),o={code:e,category:J(e),retryable:t?.retryable??re(e),displayMessage:Qe(e)};if(t?.httpStatus!==void 0&&(o.httpStatus=t.httpStatus),t?.requestId&&(o.requestId=t.requestId),typeof t?.reasonCode=="string"&&Je.test(t.reasonCode)&&(o.reasonCode=t.reasonCode),r);return t?.wireMessage&&ne(o,"wireMessage",t.wireMessage),t?.raw!==void 0&&t.raw!==null&&ne(o,"raw",t.raw),Object.freeze(o)}n(x,"makeEverfurError");var Ze="x-request-id";function m(e,t,r){let o=et(t),i=o?Z(o):ee(e),a=tt(t);return x(i,{httpStatus:e,...rt(t)?{retryable:true}:{},...r?{requestId:r}:{},...o?{wireCode:o}:{},...oe(t)?{reasonCode:oe(t)}:{},...a?{wireMessage:a}:{},...t!=null?{raw:t}:{}})}n(m,"errorFromResponse");function T(e){return x("internalError",{retryable:true,wireMessage:nt(e)})}n(T,"networkError");function b(e){let t=e.headers.get(Ze);return typeof t=="string"&&t.length>0?t:null}n(b,"requestIdOf");function k(){let e=globalThis.fetch;if(typeof e!="function")throw new s("missing-peer-dependency","global fetch is unavailable; provide config.transport or an injected fetch implementation");return e}n(k,"getGlobalFetch");function oe(e){let t=e,r=t?.error?.reason_code??t?.reason_code;return typeof r=="string"&&r.length>0?r:null}n(oe,"extractReasonCode");function et(e){let t=e,r=t?.error?.code??t?.code;return typeof r=="string"&&r.length>0?r:null}n(et,"extractWireCode");function tt(e){let t=e,r=t?.error?.message??t?.message;return typeof r=="string"&&r.length>0?r:null}n(tt,"extractWireMessage");function rt(e){let t=e;return t?.error?.retryable===true||t?.retryable===true}n(rt,"extractRetryable");function nt(e){return e instanceof Error?e.message:typeof e=="string"?e:"network request failed"}n(nt,"describeCause");var ie=128;function R(e){let t=typeof e=="string"?[...e].length:0;if(typeof e!="string"||t<1||t>ie)throw new s("invalid-argument",`user_ref must be 1..${ie} characters`);if(e.trim().length===0)throw new s("invalid-argument","user_ref must not be blank: the server strips surrounding whitespace before validating, so a whitespace-only value arrives empty and is rejected as required.");if(e!==e.trim())throw new s("invalid-argument","user_ref must not have leading or trailing whitespace: the server strips it, so padded and unpadded forms of the same id resolve to ONE user. Pass the exact id you want to key on.");if(e.includes("@"))throw new s("invalid-argument","user_ref must not contain '@'");if(!ot(e))throw new s("invalid-argument","user_ref must be printable (no control characters)");return e}n(R,"assertValidUserRef");function ot(e){return !it.test(e)}n(ot,"isPrintable");var it=/[\p{Cc}\p{Cf}\p{Cs}\p{Co}\p{Cn}\p{Zl}\p{Zp}]|(?!\u0020)[\p{Zs}]/u;function ae(e){for(let t=0;t<e.length;t+=1){let r=e.charCodeAt(t);if(r>=55296&&r<=56319){let o=e.charCodeAt(t+1);if(!(o>=56320&&o<=57343))return true;t+=1;}else if(r>=56320&&r<=57343)return true}return false}n(ae,"hasLoneSurrogate");function se(e){return [...e].length}n(se,"serverLength");var le=Object.freeze({dog:"dog",canine:"dog",k9:"dog",puppy:"dog",cat:"cat",feline:"cat",kitten:"cat"});function z(e){if(typeof e!="string")return null;let t=e.trim().toLowerCase();return Object.prototype.hasOwnProperty.call(le,t)?le[t]:null}n(z,"canonicalPetSpecies");var de=50,at=128,q=120,ue=120,st=2e3,ce=120,lt=80,ye=new Set(["male","female","unknown"]),me=new Set(["day","month","year"]),ve=new Set(["low","medium","high","athletic"]),_e=new Set(["indoor","outdoor","both"]),ge=new Set(["mild","moderate","severe"]),dt=/^(\d{4})-(\d{2})-(\d{2})$/,be=[["sex","sex"],["spayedNeutered","spayed_neutered"],["birthDate","birth_date"],["birthDatePrecision","birth_date_precision"],["activityLevel","activity_level"],["indoorOutdoor","indoor_outdoor"],["foodBrand","food_brand"],["foodType","food_type"],["microchipId","microchip_id"]],he=[["allergies","allergies"],["medications","medications"],["supplements","supplements"],["conditions","conditions"]];Object.freeze([...be,...he].map(([e])=>e));function ut(e){let t=dt.exec(e);if(t===null)return false;let[r,o,i]=[Number(t[1]),Number(t[2]),Number(t[3])],a=new Date(Date.UTC(r,o-1,i));return a.getUTCFullYear()===r&&a.getUTCMonth()===o-1&&a.getUTCDate()===i}n(ut,"isRealDate");var A=n(e=>(t,r)=>typeof r=="string"&&e.has(r)?null:`${t} must be one of ${[...e].join(", ")}`,"oneOf"),ct=n((e,t)=>typeof t=="boolean"?null:`${e} must be true or false`,"boolean"),N=n((e,t)=>typeof t=="string"&&ut(t)?null:`${e} must be a real date written YYYY-MM-DD`,"date"),_=n((e,t={})=>(r,o)=>{if(typeof o!="string")return `${r} must be a string`;if(ae(o))return `${r} contains an unpaired surrogate and cannot be encoded`;let i=t.trimmed?o.trim():o;if(t.required&&i.length===0)return `${r} is required and must not be blank`;let a=se(i);return a<=e?null:`${r} is ${a} characters; the server accepts at most ${e}`},"text"),pt={sex:A(ye),spayedNeutered:ct,birthDate:N,birthDatePrecision:A(me),activityLevel:A(ve),indoorOutdoor:A(_e),foodBrand:_(ce),foodType:_(ce),microchipId:_(lt)},B=["ref","ref",false,_(at,{required:true,trimmed:true})],$=["notes","notes",false,_(st,{trimmed:true})],pe=[B,["name","name",true,_(q,{required:true,trimmed:true})],["dose","dose",false,_(ue,{trimmed:true})],["frequency","frequency",false,_(ue,{trimmed:true})],["startDate","start_date",false,N],["endDate","end_date",false,N],$],ft={allergies:[B,["allergen","allergen",true,_(q,{required:true,trimmed:true})],["severity","severity",false,A(ge)],$],medications:pe,supplements:pe,conditions:[B,["conditionName","condition_name",true,_(q,{required:true,trimmed:true})],["diagnosedDate","diagnosed_date",false,N],$]};function yt(e,t,r){let o=`${e}[${t}]`;if(typeof r!="object"||r===null||Array.isArray(r))return {error:`${o} must be an object`};let i=r,a={};for(let[c,u,y,h]of ft[e]){let v=i[c];if(v==null){if(y)return {error:`${o}.${c} is required`};v===null&&(a[u]=null);continue}let E=h(`${o}.${c}`,v);if(E!==null)return {error:E};a[u]=v;}let l=a.start_date,d=a.end_date;return typeof l=="string"&&typeof d=="string"&&d<l?{error:`${o}.endDate must not be before startDate`}:{item:a}}n(yt,"itemToWire");function mt(e,t){if(!Array.isArray(t))return {error:`${e} must be an array (send [] to clear it)`};if(t.length>de)return {error:`${e} has ${t.length} items; the server accepts at most ${de}`};let r=[],o=new Set;for(let i=0;i<t.length;i+=1){let a=yt(e,i,t[i]);if("error"in a)return a;let l=a.item.ref;if(typeof l=="string"){let d=l.trim();if(o.has(d))return {error:`${e}: ref ${JSON.stringify(d)} is used twice; a ref names one item`};o.add(d);}r.push(a.item);}return {items:r}}n(mt,"listToWire");function Ee(e,t){let r=e,o={};for(let[l,d]of be){let c=r[l];if(c!==void 0){if(c!==null){let u=pt[l](l,c);if(u!==null)return {error:u}}o[d]=c;}}let i=r.birthDate!==void 0,a=r.birthDatePrecision!==void 0;if(i!==a||i&&r.birthDate===null!=(r.birthDatePrecision===null))return {error:"birthDate and birthDatePrecision must be sent together, both set or both null"};for(let[l,d]of he){let c=r[l];if(c===void 0)continue;let u=mt(l,c);if("error"in u)return u;o[d]=u.items;}return Object.keys(o).length>0&&t!==void 0&&z(t)===null?{error:"health fields need a pet Everfur reads as a dog or a cat (dog, canine, k9, puppy, cat, feline, kitten)"}:{body:o}}n(Ee,"petHealthToWire");var p=n(e=>typeof e=="string"?e:null,"str"),F=n((e,t)=>typeof t=="string"&&e.has(t)?t:null,"pick"),vt=n(e=>typeof e=="boolean"?e:null,"bool");function L(e,t){return Array.isArray(e)?Object.freeze(e.flatMap(r=>{if(typeof r!="object"||r===null||Array.isArray(r))return [];let o=t(r);return o===null?[]:[o]})):Object.freeze([])}n(L,"itemsFromWire");function fe(e){let t=p(e.name);return t===null||t.length===0?null:Object.freeze({ref:p(e.ref),name:t,dose:p(e.dose),frequency:p(e.frequency),startDate:p(e.start_date),endDate:p(e.end_date),notes:p(e.notes)})}n(fe,"medicationFromWire");function Re(e){let t=e.profile_version;return Object.freeze({profileVersion:typeof t=="number"&&Number.isInteger(t)&&t>=0?t:0,sex:F(ye,e.sex),spayedNeutered:vt(e.spayed_neutered),birthDate:p(e.birth_date),birthDatePrecision:F(me,e.birth_date_precision),activityLevel:F(ve,e.activity_level),indoorOutdoor:F(_e,e.indoor_outdoor),foodBrand:p(e.food_brand),foodType:p(e.food_type),microchipId:p(e.microchip_id),allergies:L(e.allergies,r=>{let o=p(r.allergen);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),allergen:o,severity:F(ge,r.severity),notes:p(r.notes)})}),medications:L(e.medications,fe),supplements:L(e.supplements,fe),conditions:L(e.conditions,r=>{let o=p(r.condition_name);return o===null||o.length===0?null:Object.freeze({ref:p(r.ref),conditionName:o,diagnosedDate:p(r.diagnosed_date),notes:p(r.notes)})})})}n(Re,"petHealthFromWire");var _t=["sk_partner_","rk_partner_"];function M(e,t){if(typeof e!="string"||e.length===0)throw new s("invalid-argument","partnerSecretKey is required");if(e.startsWith("pk_"))throw new s("invalid-argument",`partnerSecretKey is a publishable key (pk_...): ${t} needs your secret key, server side only`);if(!_t.some(r=>e.startsWith(r)))throw new s("invalid-argument","partnerSecretKey must be an sk_partner_ secret key or an rk_partner_ restricted key")}n(M,"assertServerSecretKey");var Ce=128,gt=3e4;async function bt(e,t,r){return Pe(e,"PUT",t,Oe(r,false))}n(bt,"upsertPartnerPet");async function ht(e,t,r){return Pe(e,"PATCH",t,Oe(r,true))}n(ht,"updatePartnerPet");async function Et(e,t){let r=await H(e,"GET",t,void 0);if(!("status"in r))return r;let o=await K(r),i=b(r);if(!r.ok)return f(m(r.status,o,i));let a=Te(o);return a?g(Object.freeze({...a,...Re(o)})):f(m(502,{error:{code:"INTERNAL_ERROR"}},i))}n(Et,"getPartnerPet");async function Rt(e,t){let r=await H(e,"DELETE",t,void 0);return "status"in r?r.ok?g(void 0):f(m(r.status,await K(r),b(r))):r}n(Rt,"deletePartnerPet");async function Pe(e,t,r,o){let i=await H(e,t,r,o);if(!("status"in i))return i;let a=await K(i),l=b(i);if(!i.ok)return f(m(i.status,a,l));let d=Te(a);return d?g(d):f(m(502,{error:{code:"INTERNAL_ERROR"}},l))}n(Pe,"petWrite");async function H(e,t,r,o){M(e.partnerSecretKey,"writing pets");let i=Ct(r),a=e.fetchImpl??k(),l=`${P(e.apiBaseUrl)}${i}`,d={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","x-everfur-partner-secret-key":e.partnerSecretKey};o!==void 0&&(d["content-type"]="application/json");let c=new AbortController,u=setTimeout(()=>c.abort(),gt);try{return await a(l,{method:t,headers:d,...o!==void 0?{body:o}:{},signal:c.signal})}catch(y){return f(T(y))}finally{clearTimeout(u);}}n(H,"send");function Ct(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","target is required");let t=R(e.userRef);Se("userRef",t);let r=e.petRef,o=typeof r=="string"?[...r].length:0;if(typeof r!="string"||o<1||o>Ce)throw new s("invalid-argument",`petRef must be 1..${Ce} characters`);return Se("petRef",r),`/partners/members/${encodeURIComponent(t)}/pets/${encodeURIComponent(r)}`}n(Ct,"memberPetPath");function Se(e,t){if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument",`${e} cannot contain '/' or be '.' or '..': it is sent as a URL path segment`)}n(Se,"assertPathSegment");var St=[["name","name"],["species","species"],["breed","breed"],["ageYears","age_years"],["weightKg","weight_kg"],["partnerLabelInstructions","partner_label_instructions"]];function Oe(e,t){let r=wt(e);if(t&&Object.keys(r).length===0)throw new s("invalid-argument","updatePartnerPet needs at least one field to change");return JSON.stringify(r)}n(Oe,"profileBody");function wt(e){if(typeof e!="object"||e===null||Array.isArray(e))throw new s("invalid-argument","the pet profile must be an object");let t={};for(let[o,i]of St)e[o]!==void 0&&(t[i]=e[o]);let r=Ee(e,e.species);if("error"in r)throw new s("invalid-argument",r.error);return Object.assign(t,r.body)}n(wt,"partnerPetProfileBody");function V(e){return e==null?null:typeof e=="string"?e:void 0}n(V,"nullableString");function we(e){return e==null?null:typeof e=="number"?e:void 0}n(we,"nullableNumber");function Te(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.pet_id!="string"||typeof t.pet_ref!="string"||typeof t.updated_at!="string")return null;let r=V(t.name),o=V(t.species),i=V(t.breed),a=we(t.age_years),l=we(t.weight_kg);return r===void 0||o===void 0||i===void 0||a===void 0||l===void 0?null:Object.freeze({petId:t.pet_id,petRef:t.pet_ref,name:r,species:o,breed:i,ageYears:a,weightKg:l,updatedAt:t.updated_at})}n(Te,"parsePet");async function K(e){try{return await e.json()}catch{return null}}n(K,"readJsonSafe");function Pt(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(Pt,"wireCodeOf");function ke(e,t){let r=Pt(e);if(r===null)return e;let o=t[r];return o===void 0?e:x(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(ke,"foldWireReason");var Ie=254,xe=64,Ot=/^[^@\s]+@[^@\s]+\.[^@\s]+$/,Tt=3e4,kt=Object.freeze({consent_required:{code:"validationFailed",retryable:false},email_invalid:{code:"validationFailed",retryable:false},consent_invalid:{code:"validationFailed",retryable:false}});async function It(e,t){M(e.partnerSecretKey,"writing a member notification profile");let r=xt(t),o=JSON.stringify({email:t.email,consent:Ft(t.consent)}),i=e.fetchImpl??k(),a=`${P(e.apiBaseUrl)}${r}`,l={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey},d=new AbortController,c=setTimeout(()=>d.abort(),Tt),u;try{u=await i(a,{method:"PUT",headers:l,body:o,signal:d.signal});}catch(E){return f(T(E))}finally{clearTimeout(c);}let y=await jt(u),h=b(u);if(!u.ok)return f(ke(m(u.status,y,h),kt));let v=Dt(y);return v?g(v):f(m(502,{error:{code:"INTERNAL_ERROR"}},h))}n(It,"setPartnerMemberNotificationProfile");function xt(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","input is required");let t=R(e.userRef);if(t.includes("/")||t==="."||t==="..")throw new s("invalid-argument","userRef cannot contain '/' or be '.' or '..': it is sent as a URL path segment");let r=e.email;if(typeof r!="string"||r.trim().length<3||r.trim().length>Ie||!Ot.test(r.trim()))throw new s("invalid-argument",`email must be an address of at most ${Ie} characters`);return `/partners/members/${encodeURIComponent(t)}/notification-profile`}n(xt,"memberProfilePath");function Ft(e){if(typeof e!="object"||e===null)throw new s("invalid-argument","consent is required: an address is stored only with the stamp of the consent you collected");if(e.method!=="partner_attested")throw new s("invalid-argument","consent.method must be 'partner_attested' in this version");let t=e.version;if(typeof t!="string"||t.length===0||t.length>xe)throw new s("invalid-argument",`consent.version must be 1..${xe} characters`);let r=e.givenAt instanceof Date?e.givenAt.toISOString():e.givenAt;if(typeof r!="string"||!Number.isFinite(Date.parse(r)))throw new s("invalid-argument","consent.givenAt must be an ISO 8601 instant or a Date");return {given_at:r,method:"partner_attested",version:t}}n(Ft,"consentBody");function Y(e){return e==null?null:typeof e=="string"?e:void 0}n(Y,"nullableString");function At(e){if(e==null)return null;if(typeof e!="object")return;let t=e;if(!(typeof t.given_at!="string"||typeof t.method!="string"||typeof t.version!="string"))return Object.freeze({givenAt:t.given_at,method:t.method,version:t.version})}n(At,"parseConsent");function Dt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.user_ref!="string"||typeof t.updated_at!="string"||typeof t.push_enabled!="boolean"||typeof t.email_enabled!="boolean"||typeof t.active_devices!="number"||!Number.isFinite(t.active_devices))return null;let r=Y(t.email),o=Y(t.email_verified_at),i=Y(t.unsubscribed_at),a=At(t.consent);return r===void 0||o===void 0||i===void 0||a===void 0?null:Object.freeze({userRef:t.user_ref,emailMasked:r,consent:a,emailVerifiedAt:o,pushEnabled:t.push_enabled,emailEnabled:t.email_enabled,unsubscribedAt:i,activeDevices:t.active_devices,updatedAt:t.updated_at})}n(Dt,"parseProfile");async function jt(e){try{return await e.json()}catch{return null}}n(jt,"readJsonSafe");var Lt=60,Nt=3600,Mt=3e4;async function en(e){let t=R(e.userRef),r=Ut(e.ttlSeconds),o=e.fetchImpl??k(),i=`${P(e.apiBaseUrl)}/widget/v1/sessions`,a={...O({sdkVersion:C,platform:S,contractVersion:e.contractVersion??w}),accept:"application/json","content-type":"application/json","x-everfur-partner-secret-key":e.partnerSecretKey,"x-everfur-partner-key":e.publishableKey},l={user_ref:t};r!==void 0&&(l.ttl_seconds=r);let d=Bt(Mt),c=$t(d.signal,e.signal),u={method:"POST",headers:a,body:JSON.stringify(l),signal:c},y;try{y=await o(i,u);}catch(Fe){return f(T(Fe))}finally{d.cancel();}let h=await qt(y),v=b(y);if(!y.ok)return f(m(y.status,h,v));let E=zt(h);return E?g(E):f(m(502,{error:{code:"INTERNAL_ERROR"}},v))}n(en,"mintPartnerSession");function Ut(e){if(e!=null){if(!Number.isInteger(e))throw new s("invalid-argument","ttl_seconds must be an integer");return Math.min(Nt,Math.max(Lt,e))}}n(Ut,"clampTtl");function zt(e){if(typeof e!="object"||e===null)return null;let t=e;if(typeof t.session_token!="string"||t.session_token.length===0||typeof t.expires_at!="number")return null;let r=Array.isArray(t.capabilities)?t.capabilities.filter(o=>typeof o=="string"):[];return Object.freeze({sessionToken:t.session_token,expiresAt:t.expires_at,capabilities:Object.freeze(r)})}n(zt,"parseMint");async function qt(e){try{return await e.json()}catch{return null}}n(qt,"readJsonSafe");function Bt(e){let t=new AbortController,r=setTimeout(()=>t.abort(),e);return {signal:t.signal,cancel:n(()=>clearTimeout(r),"cancel")}}n(Bt,"mintTimeoutSignal");function $t(e,t){if(!t)return e;let r=new AbortController;if(e.aborted||t.aborted)return r.abort(),r.signal;let o=n(()=>r.abort(),"onAbort");return e.addEventListener("abort",o,{once:true}),t.addEventListener("abort",o,{once:true}),r.signal}n($t,"mergeMintSignals");
|
|
2
|
+
export{R as assertValidUserRef,z as canonicalPetSpecies,Rt as deletePartnerPet,Et as getPartnerPet,en as mintPartnerSession,It as setPartnerMemberNotificationProfile,ht as updatePartnerPet,bt as upsertPartnerPet};
|