@vbotma/bridge 2.2.10 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.iife.js +3 -3
- package/dist/index.iife.js.map +1 -1
- package/dist/index.js +52 -53
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
package/dist/index.cjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("valibot"),l=require("@vbotma/toolkit"),
|
|
2
|
-
`)]){}class j extends v.errorClass("InvalidLaunchParamsError",(t,r)=>[`Invalid value for launch params: ${t}`,{cause:r}]){}class T extends v.errorClass("UnknownEnvError"){}class te extends v.errorClass("InvokeCustomMethodError",t=>[`Server returned error: ${t}`]){}const J="launchParams";function G(e){return e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&")}function re(){return s.function.pipe(
|
|
3
|
-
`),t,i)}ke(r,o)}const{on:W,off:ae,emit:ke,clear:se}=R(()=>{const e=window;!e.TelegramGameProxy&&(e.TelegramGameProxy={}),O(e.TelegramGameProxy,"receiveEvent",x),H(e,"TelegramGameProxy"),!e.VBot&&(e.VBot={}),!e.VBot.WebView&&(e.VBot.WebView={}),O(e.VBot.WebView,"receiveEvent",x),H(e.VBot,"WebView"),O(e,"TelegramGameProxy_receiveEvent",x),window.addEventListener("message",Q)},()=>{[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["VBot","WebView","receiveEvent"]].forEach(e=>{const t=window;let r=[void 0,t];for(const o of e)if(r=[r[1],r[1][o]],!r[1])return;const[n,a]=r;"unwrap"in a&&(a.unwrap(),n&&n!==t&&!Object.keys(n).length&&delete t[e[0]])}),window.removeEventListener("message",Q)}),ie=(...e)=>m()(...e);function ce(e,t){s.function.pipe(E(e,t),s.either.mapLeft(r=>{throw r}))}function E(e,t){b().log("Posting event:",t?{eventType:e,eventData:t}:{eventType:e});const r=window,n=JSON.stringify({eventType:e,eventData:t});return F()?(ie(n,$()),s.either.right(void 0)):q(r)?(r.VBotWebviewProxy.postEvent(e,JSON.stringify(t)),s.either.right(void 0)):c.is(c.looseObject({external:c.looseObject({notify:c.function()})}),r)?(r.external.notify(n),s.either.right(void 0)):s.either.left(new T)}function A(e,t,r={}){const{capture:n=()=>!0,postEvent:a=E}=r,o=y.signal(),[i,p]=l.createCbCollector();(Array.isArray(t)?t:[t]).forEach(u=>{i(W(u,f=>{const d=Array.isArray(t);n(d?{event:u,payload:f}:f)&&o.set([d?{event:u,payload:f}:f])}))});const _=u=>(p(),u);return s.function.pipe(async()=>a(e,r.params),s.taskEither.chainW(()=>l.BetterTaskEither((u,f,d)=>{const w=o();if(w)return u(w[0]);const P=S=>{S&&u(S[0])},L=()=>{o.unsub(P)};o.sub(P),d.on("finalized",L)},r)),s.taskEither.mapBoth(_,_))}function Be(e,t,r){const{postEvent:n}=r||{};return l.throwifyAnyEither(A(e,t,{...r,postEvent:n?(...a)=>{try{return n(...a),s.either.right(void 0)}catch(o){return s.either.left(o)}}:E}))}function xe(e,t){const r=pe(e,t);return typeof r=="function"?k.BetterPromise.fn(()=>l.throwifyAnyEither(r)):r}function pe(e,t){const r=q(window);if(!e)return r||s.function.pipe(B(),s.either.match(()=>!1,()=>!0));if(r)return s.taskEither.right(!0);const{timeout:n=100}=t||{};return s.function.pipe(A("web_app_request_theme","theme_changed",{...t,timeout:n}),s.taskEither.match(a=>k.TimeoutError.is(a)||T.is(a)?s.either.right(!1):s.either.left(a),()=>s.either.right(!0)))}function Ce({launchParams:e,onEvent:t,resetPostMessage:r}={}){if(e){const o=typeof e=="string"||e instanceof URLSearchParams?e.toString():h.serializeLaunchParamsQuery({...e,vbWebAppData:void 0})+(e.vbWebAppData?`&vbWebAppData=${encodeURIComponent(e.vbWebAppData.toString())}`:"");try{h.parseLaunchParamsQuery(o)}catch(i){throw new j(o,i)}l.setStorageValue("launchParams",o)}if(F()){if(!t)return;r&&m.reset();const o=m();m.set((...i)=>{const[p]=i,_=()=>{o(...i)};try{const u=c.parse(h.pipeJsonToSchema(h.miniAppsMessage()),p);t({name:u.eventType,params:u.eventData},_)}catch{_()}});return}const n=window.VBotWebviewProxy||{},a=n.postEvent||(()=>{});window.VBotWebviewProxy={...n,postEvent(o,i){const p=()=>{a(o,i)};t?t({name:o,params:i?JSON.parse(i):void 0},p):p()}},b().log("Environment was mocked by the mockVBotEnv function")}function Fe({launchParams:e,onEvent:t,resetPostMessage:r}={}){if(e){const o=typeof e=="string"||e instanceof URLSearchParams?e.toString():h.serializeLaunchParamsQuery({...e,vbWebAppData:void 0})+(e.vbWebAppData?`&vbWebAppData=${encodeURIComponent(e.vbWebAppData.toString())}`:"");try{h.parseLaunchParamsQuery(o)}catch(i){throw new j(o,i)}l.setStorageValue("launchParams",o)}if(F()){if(!t)return;r&&m.reset();const o=m();m.set((...i)=>{const[p]=i,_=()=>{o(...i)};try{const u=c.parse(h.pipeJsonToSchema(h.miniAppsMessage()),p);t({name:u.eventType,params:u.eventData},_)}catch{_()}});return}const n=window.VBotWebviewProxy||{},a=n.postEvent||(()=>{});window.VBotWebviewProxy={...n,postEvent(o,i){const p=()=>{a(o,i)};t?t({name:o,params:i?JSON.parse(i):void 0},p):p()}},b().log("Launch params are injected by the setLaunchParams function")}function We(e,t="*"){const r=o=>{if(o.source===e.contentWindow)try{const i=JSON.parse(o.data),{eventType:p,eventData:_}=i;n.emit(p,_)}catch{}},n=R(()=>{window.addEventListener("message",r)},()=>{window.removeEventListener("message",r)}),a={...n,send:(o,i)=>{if(e.contentWindow){const p=JSON.stringify({eventType:o,eventData:i});e.contentWindow.postMessage(p,t)}},clear:()=>{n.clear(),g===a&&(g=void 0)}};return g=a,a}function Ae(){const e=R(()=>{},()=>{}),t={...e,send:(r,n)=>{const a=JSON.stringify({eventType:r,eventData:n});window.postMessage(a,window.location.origin||"*")},clear:()=>{var r;e.clear(),g===t&&(g=void 0),(r=window.VBotWebviewProxy)!=null&&r.__isWebComponentProxy&&delete window.VBotWebviewProxy}};return window.VBotWebviewProxy={__isWebComponentProxy:!0,postEvent(r,n){let a;try{a=n?JSON.parse(n):void 0}catch{a=n}e.emit(r,a)}},g=t,t}let g;function Le(){if(!g)throw new Error("HostBridge not initialized. Call defineHostBridge() or defineWebComponentBridge() first.");return g}function ue(e){return({req_id:t})=>t===e}const K={"6.0":["iframe_ready","iframe_will_reload","web_app_close","web_app_data_send","web_app_expand","web_app_open_link","web_app_ready","web_app_request_theme","web_app_request_viewport","web_app_setup_main_button","web_app_setup_closing_behavior"],6.1:["web_app_open_tg_link","web_app_open_invoice","web_app_setup_back_button","web_app_set_background_color","web_app_set_header_color","web_app_trigger_haptic_feedback"],6.2:["web_app_open_popup"],6.4:["web_app_close_scan_qr_popup","web_app_open_scan_qr_popup","web_app_read_text_from_clipboard",{method:"web_app_open_link",param:"try_instant_view"}],6.7:["web_app_switch_inline_query"],6.9:["web_app_invoke_custom_method","web_app_request_write_access","web_app_request_phone",{method:"web_app_set_header_color",param:"color"}],"6.10":["web_app_setup_settings_button"],7.2:["web_app_biometry_get_info","web_app_biometry_open_settings","web_app_biometry_request_access","web_app_biometry_request_auth","web_app_biometry_update_token"],7.6:[{method:"web_app_open_link",param:"try_browser"},{method:"web_app_close",param:"return_back"}],7.7:["web_app_setup_swipe_behavior"],7.8:["web_app_share_to_story"],"7.10":["web_app_setup_secondary_button","web_app_set_bottom_bar_color",{method:"web_app_setup_main_button",param:"has_shine_effect"}],"8.0":["web_app_request_safe_area","web_app_request_content_safe_area","web_app_request_fullscreen","web_app_exit_fullscreen","web_app_set_emoji_status","web_app_add_to_home_screen","web_app_check_home_screen","web_app_request_emoji_status_access","web_app_check_location","web_app_open_location_settings","web_app_request_file_download","web_app_request_location","web_app_send_prepared_message","web_app_start_accelerometer","web_app_start_device_orientation","web_app_start_gyroscope","web_app_stop_accelerometer","web_app_stop_device_orientation","web_app_stop_gyroscope","web_app_toggle_orientation_lock"],"9.0":["web_app_device_storage_clear","web_app_device_storage_get_key","web_app_device_storage_save_key","web_app_secure_storage_clear","web_app_secure_storage_get_key","web_app_secure_storage_restore_key","web_app_secure_storage_save_key"],9.1:["web_app_hide_keyboard"],9.2:["web_app_send_notification","web_app_finish_refresh"]};function V(e,t){return Object.keys(K).find(n=>K[n].some(a=>t?typeof a=="object"&&a.method===e&&a.param===t:a===e))||null}function Y(e){return e.split(".").map(Number)}function _e(e,t){const r=Y(e),n=Y(t),a=Math.max(r.length,n.length);for(let o=0;o<a;o+=1){const i=r[o]||0,p=n[o]||0;if(i!==p)return i>p?1:-1}return 0}function M(e,t,r){const n=r?V(e,t):V(e);return n?_e(n,r||t)<=0:!1}function Oe(e,t="strict"){const r=typeof t=="function"?t:n=>{const{method:a,version:o}=n,i="param"in n?new Z(a,n.param,o):new X(a,o);if(t==="strict")throw i;return b().forceWarn(i.message)};return((n,a)=>M(n,e)?n==="web_app_set_header_color"&&c.is(c.looseObject({color:c.any()}),a)&&!M(n,"color",e)?r({version:e,method:n,param:"color"}):ce(n,a):r({version:e,method:n}))}function le(e,t,r,n){return s.function.pipe(A("web_app_invoke_custom_method","custom_method_invoked",{...n||{},params:{method:e,params:t,req_id:r},capture:ue(r)}),s.taskEither.chain(({result:a,error:o})=>o?s.taskEither.left(new te(o)):s.taskEither.right(a)))}function Ve(e,t,r,n){return k.BetterPromise.fn(()=>s.function.pipe(le(e,t,r,n),s.taskEither.match(a=>{throw a},a=>a))())}function fe(e,t,r={}){const{capture:n=()=>!0,postEvent:a=E}=r,o=y.signal(),[i,p]=l.createCbCollector();(Array.isArray(t)?t:[t]).forEach(u=>{i(W(u,f=>{(Array.isArray(t)?n({event:u,payload:f}):n(f))&&o.set([f])}))});const _=u=>(p(),u);return s.function.pipe(async()=>a(e,r.params),s.taskEither.chainW(()=>l.BetterTaskEither((u,f,d)=>{const w=o();if(w)return u(w[0]);const P=S=>{S&&u(S[0])},L=()=>{o.unsub(P)};o.sub(P),d.on("finalized",L)},r)),s.taskEither.mapBoth(_,_))}function Me(e,t,r){const{postEvent:n}=r||{};return l.throwifyAnyEither(fe(e,t,{...r,postEvent:n?(...a)=>{try{return n(...a),s.either.right(void 0)}catch(o){return s.either.left(o)}}:E}))}function qe(){Object.hasOwn||(Object.hasOwn=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)})}function z(e){return s.either.tryCatch(()=>decodeURIComponent(atob(e.replace(/-/g,"+").replace(/_/g,"/")).split("").map(t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)).join("")),t=>t)}const je=l.throwifyFpFn(z);function D(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(t,r)=>String.fromCharCode(parseInt(`0x${r}`)))).replace(/\+/g,"-").replace(/\//g,"_")}function de(e){const t=D(typeof e=="string"?e:JSON.stringify(e));return t.length>512?s.either.left(new Error("Value is too long for start parameter")):s.either.right(t)}const Te=l.throwifyFpFn(de);function Re(e,t){return l.throwifyAnyEither(he(e,typeof t=="function"?r=>s.either.tryCatch(()=>t(r),n=>n):t))}function he(e,t){return s.function.pipe(z(e),s.either.chain(r=>t?typeof t=="function"?t(r):s.json.parse(r):s.either.right(r)))}function Ue(e){return D(e).length<=512}Object.defineProperty(exports,"createLogger",{enumerable:!0,get:()=>l.createLogger});Object.defineProperty(exports,"deepSnakeToCamelObjKeys",{enumerable:!0,get:()=>l.deepSnakeToCamelObjKeys});Object.defineProperty(exports,"CancelledError",{enumerable:!0,get:()=>k.CancelledError});Object.defineProperty(exports,"TimeoutError",{enumerable:!0,get:()=>k.TimeoutError});exports.InvalidLaunchParamsError=j;exports.InvokeCustomMethodFailedError=te;exports.LaunchParamsRetrieveError=ee;exports.MethodParameterUnsupportedError=Z;exports.MethodUnsupportedError=X;exports.UnknownEnvError=T;exports.applyPolyfills=qe;exports.captureSameReq=ue;exports.compareVersions=_e;exports.createPostEvent=Oe;exports.createStartParam=Te;exports.createStartParamFp=de;exports.debug=I;exports.decodeBase64Url=je;exports.decodeBase64UrlFp=z;exports.decodeStartParam=Re;exports.decodeStartParamFp=he;exports.defineHostBridge=We;exports.defineWebComponentBridge=Ae;exports.emitEvent=x;exports.encodeBase64Url=D;exports.getHostBridge=Le;exports.getReleaseVersion=V;exports.hasWebviewProxy=q;exports.invokeCustomMethod=Ve;exports.invokeCustomMethodFp=le;exports.isIframe=F;exports.isSafeToCreateStartParam=Ue;exports.isVBma=xe;exports.isVBmaFp=pe;exports.logger=b;exports.mockVBotEnv=Ce;exports.off=ae;exports.offAll=se;exports.on=W;exports.postEvent=ce;exports.postEventFp=E;exports.postMessage=ie;exports.postMessageImpl=m;exports.request=Me;exports.request2=Be;exports.request2Fp=A;exports.requestFp=fe;exports.resetGlobals=Pe;exports.retrieveLaunchParams=me;exports.retrieveLaunchParamsFp=re;exports.retrieveRawInitData=be;exports.retrieveRawInitDataFp=ne;exports.retrieveRawLaunchParams=ge;exports.retrieveRawLaunchParamsFp=B;exports.setDebug=ve;exports.setLaunchParams=Fe;exports.setTargetOrigin=Ee;exports.supports=M;exports.targetOrigin=$;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("valibot"),l=require("@vbotma/toolkit"),B=require("better-promises"),s=require("fp-ts"),v=require("error-kid"),h=require("@vbotma/transformers"),y=require("@vbotma/signals"),me=require("mitt");function M(e){return c.is(c.looseObject({VBotWebviewProxy:c.looseObject({postEvent:c.function()})}),e)}function F(){try{return window.self!==window.top}catch{return!0}}class X extends v.errorClass("MethodUnsupportedError",(t,r)=>[`Method "${t}" is unsupported in Mini Apps version ${r}`]){}class Z extends v.errorClass("MethodParameterUnsupportedError",(t,r,n)=>[`Parameter "${r}" of "${t}" method is unsupported in Mini Apps version ${n}`]){}class ee extends v.errorClassWithData("LaunchParamsRetrieveError",t=>({errors:t}),t=>[["Unable to retrieve launch parameters from any known source. You should pass correct parameters to Mini App","","Collected errors:",...t.map(({source:r,error:n})=>`Source: ${r} / ${n instanceof Error?n.message:String(n)}`)].join(`
|
|
2
|
+
`)]){}class j extends v.errorClass("InvalidLaunchParamsError",(t,r)=>[`Invalid value for launch params: ${t}`,{cause:r}]){}class T extends v.errorClass("UnknownEnvError"){}class te extends v.errorClass("InvokeCustomMethodError",t=>[`Server returned error: ${t}`]){}const J="launchParams";function G(e){return e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&")}function re(){return s.function.pipe(x(),s.either.chainW(h.parseLaunchParamsQueryFp))}const we=l.throwifyFpFn(re);function ne(){return s.function.pipe(x(),s.either.map(e=>{const t=new URLSearchParams(e).get("vbWebAppData");return t?s.option.some(t):s.option.none}))}function be(){return s.function.pipe(ne(),s.either.fold(e=>{throw e},e=>e),s.option.match(()=>{},e=>e))}function x(){const e=[];for(const[t,r]of[[()=>G(window.location.href),"window.location.href"],[()=>{const n=performance.getEntriesByType("navigation")[0];return n&&G(n.name)},"performance navigation entries"],[()=>l.getStorageValue(J),"local storage"]]){const n=t();if(!n){e.push({source:r,error:new Error("Source is empty")});continue}const a=s.function.pipe(h.parseLaunchParamsQueryFp(n),s.either.foldW(o=>o,()=>!0));if(typeof a!="boolean"){e.push({source:r,error:a});continue}return l.setStorageValue(J,n),s.either.right(n)}return s.either.left(new ee(e))}const ge=l.throwifyFpFn(x);function R(e,t){const r=new Map,n=me(),a=(o,i,p=!1)=>{const _=r.get(o)||new Map;r.set(o,_);const u=_.get(i)||[];_.set(i,u);const f=u.findIndex(d=>d[1]===p);if(f>=0&&(n.off(o,u[f][0]),u.splice(f,1),!u.length&&(_.delete(i),!_.size))){const d=r.size;r.delete(o),d&&!r.size&&t()}};return{on(o,i,p){!r.size&&e();const _=()=>{a(o,i,p)},u=(...m)=>{p&&_(),o==="*"?i({name:m[0],payload:m[1]}):i(...m)};n.on(o,u);const f=r.get(o)||new Map;r.set(o,f);const d=f.get(i)||[];return f.set(i,d),d.push([u,p||!1]),_},off:a,emit:n.emit,clear(){const o=r.size;n.all.clear(),r.clear(),o&&t()}}}function S(e,t){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:t}),source:window.parent}))}const C=y.signal(!1),U=y.signal("https://web.telegram.org"),ye=e=>{b().log("Event received:",e)},I=y.computed(C);function ve(e){e!==C()&&(C.set(e),(e?W:ae)("*",ye))}const $=y.computed(U);function Ee(e){U.set(e),b().log("New target origin set",e)}const w=y.signal((...e)=>{window.parent.postMessage(...e)}),b=y.signal(l.createLogger("Bridge",{bgColor:"#9147ff",textColor:"white",shouldLog:I}));function Pe(){se(),[w,U,$,C,I,b].forEach(e=>{e.unsubAll(),"reset"in e&&e.reset()})}function V(e,t,r){const n=[r],a=e[t];typeof a=="function"&&n.push(a);const o=(...p)=>{n.forEach(_=>_(...p))},i=Object.assign((...p)=>{o(...p)},{unwrap(){const{length:p}=n;if(p===1){delete e[t];return}if(p===2){N(e,t,n[1]);return}n.unshift(1),N(e,t,o)}});oe(e,t,()=>i,p=>n.push(p))}function H(e,t){const r=e[t];oe(e,t,()=>r,n=>{Object.entries(n).forEach(([a,o])=>{r[a]=o})})}function oe(e,t,r,n){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:r,set:n})}function N(e,t,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r})}const ke={clipboard_text_received:c.looseObject({req_id:c.string(),data:c.nullish(c.string())}),custom_method_invoked:c.looseObject({req_id:c.string(),result:c.optional(c.unknown()),error:c.optional(c.string())}),popup_closed:c.nullish(c.looseObject({button_id:c.nullish(c.string(),()=>{})}),{}),viewport_changed:c.nullish(c.looseObject({height:c.number(),width:c.nullish(c.number(),()=>window.innerWidth),is_state_stable:c.boolean(),is_expanded:c.boolean()}),()=>({height:window.innerHeight,is_state_stable:!0,is_expanded:!0})),theme_changed:c.looseObject({theme_params:h.themeParams()})};function Q(e){if(e.source!==window.parent)return;let t;try{t=c.parse(h.pipeJsonToSchema(h.miniAppsMessage()),e.data)}catch{return}const{eventType:r,eventData:n}=t,a=ke[r];let o;try{o=a?c.parse(a,n):n}catch(i){return b().forceError([`An error occurred processing the "${r}" event from the VBot application.`,"Please, file an issue here:","https://github.com/Telegram-Mini-Apps/tma.js/issues/new/choose"].join(`
|
|
3
|
+
`),t,i)}Se(r,o)}const{on:W,off:ae,emit:Se,clear:se}=R(()=>{const e=window;!e.TelegramGameProxy&&(e.TelegramGameProxy={}),V(e.TelegramGameProxy,"receiveEvent",S),H(e,"TelegramGameProxy"),!e.VBot&&(e.VBot={}),!e.VBot.WebView&&(e.VBot.WebView={}),V(e.VBot.WebView,"receiveEvent",S),H(e.VBot,"WebView"),V(e,"TelegramGameProxy_receiveEvent",S),window.addEventListener("message",Q)},()=>{[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["VBot","WebView","receiveEvent"]].forEach(e=>{const t=window;let r=[void 0,t];for(const o of e)if(r=[r[1],r[1][o]],!r[1])return;const[n,a]=r;"unwrap"in a&&(a.unwrap(),n&&n!==t&&!Object.keys(n).length&&delete t[e[0]])}),window.removeEventListener("message",Q)}),ie=(...e)=>w()(...e);function ce(e,t){s.function.pipe(E(e,t),s.either.mapLeft(r=>{throw r}))}function E(e,t){b().log("Posting event:",t?{eventType:e,eventData:t}:{eventType:e});const r=window,n=JSON.stringify({eventType:e,eventData:t});return F()?(ie(n,$()),s.either.right(void 0)):M(r)?(r.VBotWebviewProxy.postEvent(e,JSON.stringify(t)),s.either.right(void 0)):c.is(c.looseObject({external:c.looseObject({notify:c.function()})}),r)?(r.external.notify(n),s.either.right(void 0)):s.either.left(new T)}function A(e,t,r={}){const{capture:n=()=>!0,postEvent:a=E}=r,o=y.signal(),[i,p]=l.createCbCollector();(Array.isArray(t)?t:[t]).forEach(u=>{i(W(u,f=>{const d=Array.isArray(t);n(d?{event:u,payload:f}:f)&&o.set([d?{event:u,payload:f}:f])}))});const _=u=>(p(),u);return s.function.pipe(async()=>a(e,r.params),s.taskEither.chainW(()=>l.BetterTaskEither((u,f,d)=>{const m=o();if(m)return u(m[0]);const P=k=>{k&&u(k[0])},L=()=>{o.unsub(P)};o.sub(P),d.on("finalized",L)},r)),s.taskEither.mapBoth(_,_))}function Be(e,t,r){const{postEvent:n}=r||{};return l.throwifyAnyEither(A(e,t,{...r,postEvent:n?(...a)=>{try{return n(...a),s.either.right(void 0)}catch(o){return s.either.left(o)}}:E}))}function xe(e,t){const r=pe(e,t);return typeof r=="function"?B.BetterPromise.fn(()=>l.throwifyAnyEither(r)):r}function pe(e,t){const r=M(window);if(!e)return r||s.function.pipe(x(),s.either.match(()=>!1,()=>!0));if(r)return s.taskEither.right(!0);const{timeout:n=100}=t||{};return s.function.pipe(A("web_app_request_theme","theme_changed",{...t,timeout:n}),s.taskEither.match(a=>B.TimeoutError.is(a)||T.is(a)?s.either.right(!1):s.either.left(a),()=>s.either.right(!0)))}function Ce({launchParams:e,onEvent:t,resetPostMessage:r}={}){if(e){const o=typeof e=="string"||e instanceof URLSearchParams?e.toString():h.serializeLaunchParamsQuery({...e,vbWebAppData:void 0})+(e.vbWebAppData?`&vbWebAppData=${encodeURIComponent(e.vbWebAppData.toString())}`:"");try{h.parseLaunchParamsQuery(o)}catch(i){throw new j(o,i)}l.setStorageValue("launchParams",o)}if(F()){if(!t)return;r&&w.reset();const o=w();w.set((...i)=>{const[p]=i,_=()=>{o(...i)};try{const u=c.parse(h.pipeJsonToSchema(h.miniAppsMessage()),p);t({name:u.eventType,params:u.eventData},_)}catch{_()}});return}const n=window.VBotWebviewProxy||{},a=n.postEvent||(()=>{});window.VBotWebviewProxy={...n,postEvent(o,i){const p=()=>{a(o,i)};t?t({name:o,params:i?JSON.parse(i):void 0},p):p()}},b().log("Environment was mocked by the mockVBotEnv function")}function Fe({launchParams:e,onEvent:t,resetPostMessage:r}={}){if(e){const o=typeof e=="string"||e instanceof URLSearchParams?e.toString():h.serializeLaunchParamsQuery({...e,vbWebAppData:void 0})+(e.vbWebAppData?`&vbWebAppData=${encodeURIComponent(e.vbWebAppData.toString())}`:"");try{h.parseLaunchParamsQuery(o)}catch(i){throw new j(o,i)}l.setStorageValue("launchParams",o)}if(F()){if(!t)return;r&&w.reset();const o=w();w.set((...i)=>{const[p]=i,_=()=>{o(...i)};try{const u=c.parse(h.pipeJsonToSchema(h.miniAppsMessage()),p);t({name:u.eventType,params:u.eventData},_)}catch{_()}});return}const n=window.VBotWebviewProxy||{},a=n.postEvent||(()=>{});window.VBotWebviewProxy={...n,postEvent(o,i){const p=()=>{a(o,i)};t?t({name:o,params:i?JSON.parse(i):void 0},p):p()}},b().log("Launch params are injected by the setLaunchParams function")}function We(e,t="*"){const r=o=>{if(o.source===e.contentWindow)try{const i=JSON.parse(o.data),{eventType:p,eventData:_}=i;n.emit(p,_)}catch{}},n=R(()=>{window.addEventListener("message",r)},()=>{window.removeEventListener("message",r)}),a={...n,send:(o,i)=>{if(e.contentWindow){const p=JSON.stringify({eventType:o,eventData:i});e.contentWindow.postMessage(p,t)}},clear:()=>{n.clear(),g===a&&(g=void 0)}};return g=a,a}function Ae(){const e=R(()=>{},()=>{}),t={...e,send:(r,n)=>{S(r,n)},clear:()=>{var r;e.clear(),g===t&&(g=void 0),(r=window.VBotWebviewProxy)!=null&&r.__isWebComponentProxy&&delete window.VBotWebviewProxy}};return window.VBotWebviewProxy={__isWebComponentProxy:!0,postEvent(r,n){let a;try{a=n?JSON.parse(n):void 0}catch{a=n}e.emit(r,a)}},g=t,t}let g;function Le(){if(!g)throw new Error("HostBridge not initialized. Call defineHostBridge() or defineWebComponentBridge() first.");return g}function ue(e){return({req_id:t})=>t===e}const K={"6.0":["iframe_ready","iframe_will_reload","web_app_close","web_app_data_send","web_app_expand","web_app_open_link","web_app_ready","web_app_request_theme","web_app_request_viewport","web_app_setup_main_button","web_app_setup_closing_behavior"],6.1:["web_app_open_tg_link","web_app_open_invoice","web_app_setup_back_button","web_app_set_background_color","web_app_set_header_color","web_app_trigger_haptic_feedback"],6.2:["web_app_open_popup"],6.4:["web_app_close_scan_qr_popup","web_app_open_scan_qr_popup","web_app_read_text_from_clipboard",{method:"web_app_open_link",param:"try_instant_view"}],6.7:["web_app_switch_inline_query"],6.9:["web_app_invoke_custom_method","web_app_request_write_access","web_app_request_phone",{method:"web_app_set_header_color",param:"color"}],"6.10":["web_app_setup_settings_button"],7.2:["web_app_biometry_get_info","web_app_biometry_open_settings","web_app_biometry_request_access","web_app_biometry_request_auth","web_app_biometry_update_token"],7.6:[{method:"web_app_open_link",param:"try_browser"},{method:"web_app_close",param:"return_back"}],7.7:["web_app_setup_swipe_behavior"],7.8:["web_app_share_to_story"],"7.10":["web_app_setup_secondary_button","web_app_set_bottom_bar_color",{method:"web_app_setup_main_button",param:"has_shine_effect"}],"8.0":["web_app_request_safe_area","web_app_request_content_safe_area","web_app_request_fullscreen","web_app_exit_fullscreen","web_app_set_emoji_status","web_app_add_to_home_screen","web_app_check_home_screen","web_app_request_emoji_status_access","web_app_check_location","web_app_open_location_settings","web_app_request_file_download","web_app_request_location","web_app_send_prepared_message","web_app_start_accelerometer","web_app_start_device_orientation","web_app_start_gyroscope","web_app_stop_accelerometer","web_app_stop_device_orientation","web_app_stop_gyroscope","web_app_toggle_orientation_lock"],"9.0":["web_app_device_storage_clear","web_app_device_storage_get_key","web_app_device_storage_save_key","web_app_secure_storage_clear","web_app_secure_storage_get_key","web_app_secure_storage_restore_key","web_app_secure_storage_save_key"],9.1:["web_app_hide_keyboard"],9.2:["web_app_send_notification","web_app_finish_refresh"]};function O(e,t){return Object.keys(K).find(n=>K[n].some(a=>t?typeof a=="object"&&a.method===e&&a.param===t:a===e))||null}function Y(e){return e.split(".").map(Number)}function _e(e,t){const r=Y(e),n=Y(t),a=Math.max(r.length,n.length);for(let o=0;o<a;o+=1){const i=r[o]||0,p=n[o]||0;if(i!==p)return i>p?1:-1}return 0}function q(e,t,r){const n=r?O(e,t):O(e);return n?_e(n,r||t)<=0:!1}function Ve(e,t="strict"){const r=typeof t=="function"?t:n=>{const{method:a,version:o}=n,i="param"in n?new Z(a,n.param,o):new X(a,o);if(t==="strict")throw i;return b().forceWarn(i.message)};return((n,a)=>q(n,e)?n==="web_app_set_header_color"&&c.is(c.looseObject({color:c.any()}),a)&&!q(n,"color",e)?r({version:e,method:n,param:"color"}):ce(n,a):r({version:e,method:n}))}function le(e,t,r,n){return s.function.pipe(A("web_app_invoke_custom_method","custom_method_invoked",{...n||{},params:{method:e,params:t,req_id:r},capture:ue(r)}),s.taskEither.chain(({result:a,error:o})=>o?s.taskEither.left(new te(o)):s.taskEither.right(a)))}function Oe(e,t,r,n){return B.BetterPromise.fn(()=>s.function.pipe(le(e,t,r,n),s.taskEither.match(a=>{throw a},a=>a))())}function fe(e,t,r={}){const{capture:n=()=>!0,postEvent:a=E}=r,o=y.signal(),[i,p]=l.createCbCollector();(Array.isArray(t)?t:[t]).forEach(u=>{i(W(u,f=>{(Array.isArray(t)?n({event:u,payload:f}):n(f))&&o.set([f])}))});const _=u=>(p(),u);return s.function.pipe(async()=>a(e,r.params),s.taskEither.chainW(()=>l.BetterTaskEither((u,f,d)=>{const m=o();if(m)return u(m[0]);const P=k=>{k&&u(k[0])},L=()=>{o.unsub(P)};o.sub(P),d.on("finalized",L)},r)),s.taskEither.mapBoth(_,_))}function qe(e,t,r){const{postEvent:n}=r||{};return l.throwifyAnyEither(fe(e,t,{...r,postEvent:n?(...a)=>{try{return n(...a),s.either.right(void 0)}catch(o){return s.either.left(o)}}:E}))}function Me(){Object.hasOwn||(Object.hasOwn=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)})}function z(e){return s.either.tryCatch(()=>decodeURIComponent(atob(e.replace(/-/g,"+").replace(/_/g,"/")).split("").map(t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)).join("")),t=>t)}const je=l.throwifyFpFn(z);function D(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(t,r)=>String.fromCharCode(parseInt(`0x${r}`)))).replace(/\+/g,"-").replace(/\//g,"_")}function de(e){const t=D(typeof e=="string"?e:JSON.stringify(e));return t.length>512?s.either.left(new Error("Value is too long for start parameter")):s.either.right(t)}const Te=l.throwifyFpFn(de);function Re(e,t){return l.throwifyAnyEither(he(e,typeof t=="function"?r=>s.either.tryCatch(()=>t(r),n=>n):t))}function he(e,t){return s.function.pipe(z(e),s.either.chain(r=>t?typeof t=="function"?t(r):s.json.parse(r):s.either.right(r)))}function Ue(e){return D(e).length<=512}Object.defineProperty(exports,"createLogger",{enumerable:!0,get:()=>l.createLogger});Object.defineProperty(exports,"deepSnakeToCamelObjKeys",{enumerable:!0,get:()=>l.deepSnakeToCamelObjKeys});Object.defineProperty(exports,"CancelledError",{enumerable:!0,get:()=>B.CancelledError});Object.defineProperty(exports,"TimeoutError",{enumerable:!0,get:()=>B.TimeoutError});exports.InvalidLaunchParamsError=j;exports.InvokeCustomMethodFailedError=te;exports.LaunchParamsRetrieveError=ee;exports.MethodParameterUnsupportedError=Z;exports.MethodUnsupportedError=X;exports.UnknownEnvError=T;exports.applyPolyfills=Me;exports.captureSameReq=ue;exports.compareVersions=_e;exports.createPostEvent=Ve;exports.createStartParam=Te;exports.createStartParamFp=de;exports.debug=I;exports.decodeBase64Url=je;exports.decodeBase64UrlFp=z;exports.decodeStartParam=Re;exports.decodeStartParamFp=he;exports.defineHostBridge=We;exports.defineWebComponentBridge=Ae;exports.emitEvent=S;exports.encodeBase64Url=D;exports.getHostBridge=Le;exports.getReleaseVersion=O;exports.hasWebviewProxy=M;exports.invokeCustomMethod=Oe;exports.invokeCustomMethodFp=le;exports.isIframe=F;exports.isSafeToCreateStartParam=Ue;exports.isVBma=xe;exports.isVBmaFp=pe;exports.logger=b;exports.mockVBotEnv=Ce;exports.off=ae;exports.offAll=se;exports.on=W;exports.postEvent=ce;exports.postEventFp=E;exports.postMessage=ie;exports.postMessageImpl=w;exports.request=qe;exports.request2=Be;exports.request2Fp=A;exports.requestFp=fe;exports.resetGlobals=Pe;exports.retrieveLaunchParams=we;exports.retrieveLaunchParamsFp=re;exports.retrieveRawInitData=be;exports.retrieveRawInitDataFp=ne;exports.retrieveRawLaunchParams=ge;exports.retrieveRawLaunchParamsFp=x;exports.setDebug=ve;exports.setLaunchParams=Fe;exports.setTargetOrigin=Ee;exports.supports=q;exports.targetOrigin=$;
|
|
4
4
|
//# sourceMappingURL=index.cjs.map
|