@tma.js/bridge 2.0.0 → 2.0.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.
@@ -12,7 +12,7 @@ export declare function decodeBase64UrlFp(value: string): E.Either<DecodeBase64U
12
12
  /**
13
13
  * @see decodeBase64UrlFp
14
14
  */
15
- export declare const decodeBase64Url: (value: string) => DOMException;
15
+ export declare const decodeBase64Url: (value: string) => string;
16
16
  /**
17
17
  * Creates a base-64-url encoded ASCII string from the passed value.
18
18
  * @param value - the value to encode.
@@ -13,7 +13,7 @@ export declare const retrieveLaunchParamsFp: () => E.Either<RetrieveLaunchParams
13
13
  /**
14
14
  * @see retrieveLaunchParamsFp
15
15
  */
16
- export declare const retrieveLaunchParams: () => RetrieveLaunchParamsError;
16
+ export declare const retrieveLaunchParams: () => RetrieveLaunchParamsResult;
17
17
  /**
18
18
  * @returns Raw init data from any known source.
19
19
  */
@@ -29,4 +29,4 @@ export declare function retrieveRawLaunchParamsFp(): E.Either<RetrieveRawLaunchP
29
29
  /**
30
30
  * @see retrieveRawLaunchParamsFp
31
31
  */
32
- export declare const retrieveRawLaunchParams: () => LaunchParamsRetrieveError;
32
+ export declare const retrieveRawLaunchParams: () => string;
@@ -14,7 +14,7 @@ export declare function createStartParamFp(value: unknown): E.Either<Error, stri
14
14
  /**
15
15
  * @see createStartParamFp
16
16
  */
17
- export declare const createStartParam: (value: unknown) => Error;
17
+ export declare const createStartParam: (value: unknown) => string;
18
18
  /**
19
19
  * @see decodeStartParamFp
20
20
  */
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("valibot"),b=require("better-promises"),g=require("@tma.js/toolkit"),h=require("@tma.js/transformers"),P=require("error-kid"),E=require("@tma.js/signals"),xe=require("mitt");function R(e){return u.is(u.looseObject({TelegramWebviewProxy:u.looseObject({postEvent:u.function()})}),e)}function U(){try{return window.self!==window.top}catch{return!0}}var Me=function(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,a;n<o;n++)(a||!(n in t))&&(a||(a=Array.prototype.slice.call(t,0,n)),a[n]=t[n]);return e.concat(a||Array.prototype.slice.call(t))};function Fe(e){return e}function S(e,t,r,n,o,a,i,c,p){switch(arguments.length){case 1:return e;case 2:return function(){return t(e.apply(this,arguments))};case 3:return function(){return r(t(e.apply(this,arguments)))};case 4:return function(){return n(r(t(e.apply(this,arguments))))};case 5:return function(){return o(n(r(t(e.apply(this,arguments)))))};case 6:return function(){return a(o(n(r(t(e.apply(this,arguments))))))};case 7:return function(){return i(a(o(n(r(t(e.apply(this,arguments)))))))};case 8:return function(){return c(i(a(o(n(r(t(e.apply(this,arguments))))))))};case 9:return function(){return p(c(i(a(o(n(r(t(e.apply(this,arguments)))))))))}}}function m(e,t,r,n,o,a,i,c,p){switch(arguments.length){case 1:return e;case 2:return t(e);case 3:return r(t(e));case 4:return n(r(t(e)));case 5:return o(n(r(t(e))));case 6:return a(o(n(r(t(e)))));case 7:return i(a(o(n(r(t(e))))));case 8:return c(i(a(o(n(r(t(e)))))));case 9:return p(c(i(a(o(n(r(t(e))))))));default:{for(var s=arguments[0],l=1;l<arguments.length;l++)s=arguments[l](s);return s}}}var I=function(e,t){var r=typeof e=="number"?function(n){return n.length>=e}:e;return function(){var n=Array.from(arguments);return r(arguments)?t.apply(this,n):function(o){return t.apply(void 0,Me([o],n,!1))}}},Ae={_tag:"None"},Ce=function(e){return{_tag:"Some",value:e}},Le=function(e){return e._tag==="Left"},Z=function(e){return{_tag:"Left",left:e}},V=function(e){return{_tag:"Right",right:e}},w=Z,f=V,ee=I(2,function(e,t){return k(e)?e:t(e.right)}),qe=function(e){return function(t){return k(t)?t:f(e(t.right))}},$e=function(e){return function(t){return k(t)?w(e(t.left)):t}},k=Le,te=function(e,t){return function(r){return k(r)?e(r.left):t(r.right)}},je=te,F=te,Re=F,W=function(e,t){try{return f(e())}catch(r){return w(t(r))}},Ue=ee,Ie=ee,We=Ae,Oe=Ce,Be=function(e){return e._tag==="None"},Ge=function(e,t){return function(r){return Be(r)?e():t(r.value)}},De=Ge;function ze(e){return S(f,e.of)}function Je(e){return S(w,e.of)}function Ne(e){return function(t,r){return e.chain(t,function(n){return k(n)?e.of(n):r(n.right)})}}function Qe(e){return function(t,r){return function(n){return e.map(n,F(t,r))}}}var re=function(e,t){return m(e,He(t))},Ke=function(e,t){return m(e,Ye(t))},He=function(e){return function(t){return function(){return Promise.resolve().then(t).then(e)}}},Ye=function(e){return function(t){return function(){return Promise.all([Promise.resolve().then(t),Promise.resolve().then(e)]).then(function(r){var n=r[0],o=r[1];return n(o)})}}},ne=function(e){return function(){return Promise.resolve(e)}},Xe=I(2,function(e,t){return function(){return Promise.resolve().then(e).then(function(r){return t(r)()})}}),ae="Task",Ze={URI:ae,map:re},oe={of:ne},Ve={URI:ae,map:re,of:ne,ap:Ke,chain:Xe},et=function(e,t,r,n){function o(a){return a instanceof r?a:new r(function(i){i(a)})}return new(r||(r=Promise))(function(a,i){function c(l){try{s(n.next(l))}catch(d){i(d)}}function p(l){try{s(n.throw(l))}catch(d){i(d)}}function s(l){l.done?a(l.value):o(l.value).then(c,p)}s((n=n.apply(e,t||[])).next())})},tt=function(e,t){var r={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,o,a,i;return i={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function c(s){return function(l){return p([s,l])}}function p(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(r=0)),r;)try{if(n=1,o&&(a=s[0]&2?o.return:s[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,s[1])).done)return a;switch(o=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return r.label++,{value:s[1],done:!1};case 5:r.label++,o=s[1],s=[0];continue;case 7:s=r.ops.pop(),r.trys.pop();continue;default:if(a=r.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){r=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){r.label=s[1];break}if(s[0]===6&&r.label<a[1]){r.label=a[1],a=s;break}if(a&&r.label<a[2]){r.label=a[2],r.ops.push(s);break}a[2]&&r.ops.pop(),r.trys.pop();continue}s=t.call(e,r)}catch(l){s=[6,l],o=0}finally{n=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},se=Je(oe),ie=ze(oe),A=Qe(Ze),rt=function(e,t){return function(){return et(void 0,void 0,void 0,function(){var r;return tt(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,e().then(V)];case 1:return[2,n.sent()];case 2:return r=n.sent(),[2,Z(t(r))];case 3:return[2]}})})}},nt=I(2,Ne(Ve)),at=nt;class ce extends P.errorClass("MethodUnsupportedError",(t,r)=>[`Method "${t}" is unsupported in Mini Apps version ${r}`]){}class ue extends P.errorClass("MethodParameterUnsupportedError",(t,r,n)=>[`Parameter "${r}" of "${t}" method is unsupported in Mini Apps version ${n}`]){}class pe extends P.errorClassWithData("LaunchParamsRetrieveError",t=>({errors:t}),t=>[["Unable to retrieve launch parameters from any known source. Perhaps, you have opened your app outside Telegram?","📖 Refer to docs for more information:","https://docs.telegram-mini-apps.com/packages/tma-js-bridge/environment","","Collected errors:",...t.map(({source:r,error:n})=>`Source: ${r} / ${n instanceof Error?n.message:String(n)}`)].join(`
2
- `)]){}class le extends P.errorClass("InvalidLaunchParamsError",(t,r)=>[`Invalid value for launch params: ${t}`,{cause:r}]){}class _e extends P.errorClass("UnknownEnvError"){}class fe extends P.errorClass("InvokeCustomMethodError",t=>[`Server returned error: ${t}`]){}const N="launchParams";function Q(e){return e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&")}const ge=S(T,Ue(h.parseLaunchParamsQueryFp)),ot=g.eitherFnToSimple(ge),me=S(T,qe(e=>{const t=new URLSearchParams(e).get("tgWebAppData");return t?Oe(t):We})),st=S(me,Re(e=>{throw e},e=>e),De(()=>{},e=>e));function T(){const e=[];for(const[t,r]of[[()=>Q(window.location.href),"window.location.href"],[()=>{const n=performance.getEntriesByType("navigation")[0];return n&&Q(n.name)},"performance navigation entries"],[()=>g.getStorageValue(N),"local storage"]]){const n=t();if(!n){e.push({source:r,error:new Error("Source is empty")});continue}const o=m(h.parseLaunchParamsQueryFp(n),je(a=>a,()=>!0));if(typeof o!="boolean"){e.push({source:r,error:o});continue}return g.setStorageValue(N,n),f(n)}return w(new pe(e))}const it=g.eitherFnToSimple(T);function ct(e,t){const r=new Map,n=xe(),o=(a,i,c=!1)=>{const p=r.get(a)||new Map;r.set(a,p);const s=p.get(i)||[];p.set(i,s);const l=s.findIndex(d=>d[1]===c);if(l>=0&&(n.off(a,s[l][0]),s.splice(l,1),!s.length&&(p.delete(i),!p.size))){const d=r.size;r.delete(a),d&&!r.size&&t()}};return{on(a,i,c){!r.size&&e();const p=()=>{o(a,i,c)},s=(...q)=>{c&&p(),a==="*"?i({name:q[0],payload:q[1]}):i(...q)};n.on(a,s);const l=r.get(a)||new Map;r.set(a,l);const d=l.get(i)||[];return l.set(i,d),d.push([s,c||!1]),p},off:o,emit:n.emit,clear(){const a=r.size;n.all.clear(),r.clear(),a&&t()}}}function x(e,t){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:t}),source:window.parent}))}function $(e,t,r){const n=[r],o=e[t];typeof o=="function"&&n.push(o);const a=(...c)=>{n.forEach(p=>p(...c))},i=Object.assign((...c)=>{a(...c)},{unwrap(){const{length:c}=n;if(c===1){delete e[t];return}if(c===2){H(e,t,n[1]);return}n.unshift(1),H(e,t,a)}});de(e,t,()=>i,c=>n.push(c))}function K(e,t){const r=e[t];de(e,t,()=>r,n=>{Object.entries(n).forEach(([o,a])=>{r[o]=a})})}function de(e,t,r,n){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:r,set:n})}function H(e,t,r){Object.defineProperty(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r})}const ut={clipboard_text_received:u.looseObject({req_id:u.string(),data:u.nullish(u.string())}),custom_method_invoked:u.looseObject({req_id:u.string(),result:u.optional(u.unknown()),error:u.optional(u.string())}),popup_closed:u.nullish(u.looseObject({button_id:u.nullish(u.string(),()=>{})}),{}),viewport_changed:u.nullish(u.looseObject({height:u.number(),width:u.nullish(u.number(),()=>window.innerWidth),is_state_stable:u.boolean(),is_expanded:u.boolean()}),()=>({height:window.innerHeight,is_state_stable:!0,is_expanded:!0})),theme_changed:u.looseObject({theme_params:h.themeParams()})};function Y(e){if(e.source!==window.parent)return;let t;try{t=u.parse(h.pipeJsonToSchema(h.miniAppsMessage()),e.data)}catch{return}const{eventType:r,eventData:n}=t,o=ut[r];let a;try{a=o?u.parse(o,n):n}catch(i){return v().forceError([`An error occurred processing the "${r}" event from the Telegram application.`,"Please, file an issue here:","https://github.com/Telegram-Mini-Apps/telegram-apps/issues/new/choose"].join(`
3
- `),t,i)}pt(r,a)}const{on:O,off:he,emit:pt,clear:we}=ct(()=>{const e=window;!e.TelegramGameProxy&&(e.TelegramGameProxy={}),$(e.TelegramGameProxy,"receiveEvent",x),K(e,"TelegramGameProxy"),!e.Telegram&&(e.Telegram={}),!e.Telegram.WebView&&(e.Telegram.WebView={}),$(e.Telegram.WebView,"receiveEvent",x),K(e.Telegram,"WebView"),$(e,"TelegramGameProxy_receiveEvent",x),window.addEventListener("message",Y)},()=>{[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{const t=window;let r=[void 0,t];for(const a of e)if(r=[r[1],r[1][a]],!r[1])return;const[n,o]=r;"unwrap"in o&&(o.unwrap(),n&&n!==t&&!Object.keys(n).length&&delete t[e[0]])}),window.removeEventListener("message",Y)}),M=E.signal(!1),B=E.signal("https://web.telegram.org"),lt=e=>{v().log("Event received:",e)},G=E.computed(M);function _t(e){e!==M()&&(M.set(e),(e?O:he)("*",lt))}const D=E.computed(B);function ft(e){B.set(e),v().log("New target origin set",e)}const y=E.signal((...e)=>{window.parent.postMessage(...e)}),v=E.signal(g.createLogger("Bridge",{bgColor:"#9147ff",textColor:"white",shouldLog:G}));function gt(){we(),[y,B,D,M,G,v].forEach(e=>{e.unsubAll(),"reset"in e&&e.reset()})}const ve=(...e)=>y()(...e);function be(e,t){m(C(e,t),$e(r=>{throw r}))}function C(e,t){v().log("Posting event:",t?{eventType:e,eventData:t}:{eventType:e});const r=window,n=JSON.stringify({eventType:e,eventData:t});return U()?(ve(n,D()),f(void 0)):R(r)?(r.TelegramWebviewProxy.postEvent(e,JSON.stringify(t)),f(void 0)):u.is(u.looseObject({external:u.looseObject({notify:u.function()})}),r)?(r.external.notify(n),f(void 0)):w(new _e)}function L(e,t,r){r||(r={});const{capture:n=()=>!0,postEvent:o=C}=r,[a,i]=g.createCbCollector(),c=new b.BetterPromise(p=>{(Array.isArray(t)?t:[t]).forEach(s=>{a(O(s,l=>{(Array.isArray(t)?n({event:s,payload:l}):n(l))&&p(l)}))})},r).finally(i);return m(o(e,r.params),F(p=>se(p),()=>rt(()=>c,p=>p)))}function mt(e,t,r){const{postEvent:n}=r||{};return b.BetterPromise.fn(()=>m(L(e,t,{...r,postEvent:n?(...o)=>{try{return n(...o),f(void 0)}catch(a){return w(a)}}:C}),A(o=>{throw o},o=>o))())}function dt(e,t){const r=ye(e,t);return typeof r=="function"?b.BetterPromise.fn(()=>m(r,A(n=>{throw n},n=>n))()):r}function ye(e,t){const r=R(window);if(!e)return r||m(T(),F(()=>!1,()=>!0));if(r)return ie(!0);const{timeout:n=100}=t||{};return m(L("web_app_request_theme","theme_changed",{...t,timeout:n}),A(o=>b.TimeoutError.is(o)?f(!1):w(o),()=>f(!0)))}function ht({launchParams:e,onEvent:t,resetPostMessage:r}={}){if(e){const a=typeof e=="string"||e instanceof URLSearchParams?e.toString():h.serializeLaunchParamsQuery({...e,tgWebAppData:void 0})+(e.tgWebAppData?`&tgWebAppData=${encodeURIComponent(e.tgWebAppData.toString())}`:"");try{h.parseLaunchParamsQuery(a)}catch(i){throw new le(a,i)}g.setStorageValue("launchParams",a)}if(U()){if(!t)return;r&&y.reset();const a=y();y.set((...i)=>{const[c]=i,p=()=>{a(...i)};try{const s=u.parse(h.pipeJsonToSchema(h.miniAppsMessage()),c);t([s.eventType,s.eventData],p)}catch{p()}});return}const n=window.TelegramWebviewProxy||{},o=n.postEvent||(()=>{});window.TelegramWebviewProxy={...n,postEvent(a,i){const c=()=>{o(a,i)};t?t([a,i?JSON.parse(i):void 0],c):c()}},v().log("Environment was mocked by the mockTelegramEnv function")}function Pe(e){return({req_id:t})=>t===e}function X(e){return e.split(".").map(Number)}function Ee(e,t){const r=X(e),n=X(t),o=Math.max(r.length,n.length);for(let a=0;a<o;a+=1){const i=r[a]||0,c=n[a]||0;if(i!==c)return i>c?1:-1}return 0}function _(e,t){return Ee(e,t)<=0}function j(e,t,r){if(typeof r=="string"){if(e==="web_app_open_link"){if(t==="try_instant_view")return _("6.4",r);if(t==="try_browser")return _("7.6",r)}if(e==="web_app_set_header_color"&&t==="color")return _("6.9",r);if(e==="web_app_close"&&t==="return_back")return _("7.6",r);if(e==="web_app_setup_main_button"&&t==="has_shine_effect")return _("7.10",r)}switch(e){case"web_app_open_tg_link":case"web_app_open_invoice":case"web_app_setup_back_button":case"web_app_set_background_color":case"web_app_set_header_color":case"web_app_trigger_haptic_feedback":return _("6.1",t);case"web_app_open_popup":return _("6.2",t);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return _("6.4",t);case"web_app_switch_inline_query":return _("6.7",t);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return _("6.9",t);case"web_app_setup_settings_button":return _("6.10",t);case"web_app_biometry_get_info":case"web_app_biometry_open_settings":case"web_app_biometry_request_access":case"web_app_biometry_request_auth":case"web_app_biometry_update_token":return _("7.2",t);case"web_app_setup_swipe_behavior":return _("7.7",t);case"web_app_share_to_story":return _("7.8",t);case"web_app_setup_secondary_button":case"web_app_set_bottom_bar_color":return _("7.10",t);case"web_app_request_safe_area":case"web_app_request_content_safe_area":case"web_app_request_fullscreen":case"web_app_exit_fullscreen":case"web_app_set_emoji_status":case"web_app_add_to_home_screen":case"web_app_check_home_screen":case"web_app_request_emoji_status_access":case"web_app_check_location":case"web_app_open_location_settings":case"web_app_request_file_download":case"web_app_request_location":case"web_app_send_prepared_message":case"web_app_start_accelerometer":case"web_app_start_device_orientation":case"web_app_start_gyroscope":case"web_app_stop_accelerometer":case"web_app_stop_device_orientation":case"web_app_stop_gyroscope":case"web_app_toggle_orientation_lock":return _("8.0",t);case"web_app_device_storage_clear":case"web_app_device_storage_get_key":case"web_app_device_storage_save_key":case"web_app_secure_storage_clear":case"web_app_secure_storage_get_key":case"web_app_secure_storage_restore_key":case"web_app_secure_storage_save_key":return _("9.0",t);case"web_app_hide_keyboard":return _("9.1",t);default:return["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"].includes(e)}}function wt(e,t="strict"){const r=typeof t=="function"?t:n=>{const{method:o,version:a}=n,i="param"in n?new ue(o,n.param,a):new ce(o,a);if(t==="strict")throw i;return v().forceWarn(i.message)};return(n,o)=>j(n,e)?n==="web_app_set_header_color"&&u.is(u.looseObject({color:u.any()}),o)&&!j(n,"color",e)?r({version:e,method:n,param:"color"}):be(n,o):r({version:e,method:n})}function Se(e,t,r,n){return m(L("web_app_invoke_custom_method","custom_method_invoked",{...n||{},params:{method:e,params:t,req_id:r},capture:Pe(r)}),at(({result:o,error:a})=>a?se(new fe(a)):ie(o)))}function vt(e,t,r,n){return b.BetterPromise.fn(()=>m(Se(e,t,r,n),A(o=>{throw o},o=>o))())}function bt(){Object.hasOwn||(Object.hasOwn=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)})}function z(e){return W(()=>decodeURIComponent(atob(e).replace(/-/g,"+").replace(/_/g,"/").split("").map(t=>"%"+("00"+t.charCodeAt(0).toString(16)).slice(-2)).join("")),t=>t)}const yt=g.eitherFnToSimple(z);function J(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(t,r)=>String.fromCharCode(parseInt(`0x${r}`)))).replace(/\+/g,"-").replace(/\//g,"_")}var Pt=function(e){return W(function(){return JSON.parse(e)},Fe)};function ke(e){const t=J(typeof e=="string"?e:JSON.stringify(e));return t.length>512?w(new Error("Value is too long for start parameter")):f(t)}const Et=g.eitherFnToSimple(ke);function St(e,t){return g.eitherGet(Te(e,typeof t=="function"?r=>W(()=>t(r),n=>n):t))}function Te(e,t){return m(z(e),Ie(r=>t?typeof t=="function"?t(r):Pt(r):f(r)))}function kt(e){return J(e).length<=512}Object.defineProperty(exports,"CancelledError",{enumerable:!0,get:()=>b.CancelledError});Object.defineProperty(exports,"TimeoutError",{enumerable:!0,get:()=>b.TimeoutError});Object.defineProperty(exports,"createLogger",{enumerable:!0,get:()=>g.createLogger});Object.defineProperty(exports,"deepSnakeToCamelObjKeys",{enumerable:!0,get:()=>g.deepSnakeToCamelObjKeys});exports.InvalidLaunchParamsError=le;exports.InvokeCustomMethodFailedError=fe;exports.LaunchParamsRetrieveError=pe;exports.MethodParameterUnsupportedError=ue;exports.MethodUnsupportedError=ce;exports.UnknownEnvError=_e;exports.applyPolyfills=bt;exports.captureSameReq=Pe;exports.compareVersions=Ee;exports.createPostEvent=wt;exports.createStartParam=Et;exports.createStartParamFp=ke;exports.debug=G;exports.decodeBase64Url=yt;exports.decodeBase64UrlFp=z;exports.decodeStartParam=St;exports.decodeStartParamFp=Te;exports.emitEvent=x;exports.encodeBase64Url=J;exports.hasWebviewProxy=R;exports.invokeCustomMethod=vt;exports.invokeCustomMethodFp=Se;exports.isIframe=U;exports.isSafeToCreateStartParam=kt;exports.isTMA=dt;exports.isTMAFp=ye;exports.logger=v;exports.mockTelegramEnv=ht;exports.off=he;exports.offAll=we;exports.on=O;exports.postEvent=be;exports.postEventFp=C;exports.postMessage=ve;exports.postMessageImpl=y;exports.request=mt;exports.requestFp=L;exports.resetGlobals=gt;exports.retrieveLaunchParams=ot;exports.retrieveLaunchParamsFp=ge;exports.retrieveRawInitData=st;exports.retrieveRawInitDataFp=me;exports.retrieveRawLaunchParams=it;exports.retrieveRawLaunchParamsFp=T;exports.setDebug=_t;exports.setTargetOrigin=ft;exports.supports=j;exports.targetOrigin=D;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("valibot"),b=require("better-promises"),g=require("@tma.js/toolkit"),h=require("@tma.js/transformers"),P=require("error-kid"),E=require("@tma.js/signals"),Fe=require("mitt");function R(e){return u.is(u.looseObject({TelegramWebviewProxy:u.looseObject({postEvent:u.function()})}),e)}function U(){try{return window.self!==window.top}catch{return!0}}var Ae=function(e,r,t){if(t||arguments.length===2)for(var n=0,o=r.length,a;n<o;n++)(a||!(n in r))&&(a||(a=Array.prototype.slice.call(r,0,n)),a[n]=r[n]);return e.concat(a||Array.prototype.slice.call(r))};function Ce(e){return e}function S(e,r,t,n,o,a,i,c,p){switch(arguments.length){case 1:return e;case 2:return function(){return r(e.apply(this,arguments))};case 3:return function(){return t(r(e.apply(this,arguments)))};case 4:return function(){return n(t(r(e.apply(this,arguments))))};case 5:return function(){return o(n(t(r(e.apply(this,arguments)))))};case 6:return function(){return a(o(n(t(r(e.apply(this,arguments))))))};case 7:return function(){return i(a(o(n(t(r(e.apply(this,arguments)))))))};case 8:return function(){return c(i(a(o(n(t(r(e.apply(this,arguments))))))))};case 9:return function(){return p(c(i(a(o(n(t(r(e.apply(this,arguments)))))))))}}}function m(e,r,t,n,o,a,i,c,p){switch(arguments.length){case 1:return e;case 2:return r(e);case 3:return t(r(e));case 4:return n(t(r(e)));case 5:return o(n(t(r(e))));case 6:return a(o(n(t(r(e)))));case 7:return i(a(o(n(t(r(e))))));case 8:return c(i(a(o(n(t(r(e)))))));case 9:return p(c(i(a(o(n(t(r(e))))))));default:{for(var s=arguments[0],l=1;l<arguments.length;l++)s=arguments[l](s);return s}}}var F=function(e,r){var t=typeof e=="number"?function(n){return n.length>=e}:e;return function(){var n=Array.from(arguments);return t(arguments)?r.apply(this,n):function(o){return r.apply(void 0,Ae([o],n,!1))}}},Le={_tag:"None"},$e=function(e){return{_tag:"Some",value:e}},qe=function(e){return e._tag==="Left"},V=function(e){return{_tag:"Left",left:e}},ee=function(e){return{_tag:"Right",right:e}},w=V,f=ee,re=F(2,function(e,r){return k(e)?e:r(e.right)}),je=function(e){return function(r){return k(r)?r:f(e(r.right))}},te=function(e){return function(r){return k(r)?w(e(r.left)):r}},k=qe,ne=function(e,r){return function(t){return k(t)?e(t.left):r(t.right)}},Re=ne,I=ne,Ue=I,W=function(e,r){try{return f(e())}catch(t){return w(r(t))}},Ie=re,We=re,Oe=Le,Be=$e,Ge=function(e){return e._tag==="None"},De=function(e,r){return function(t){return Ge(t)?e():r(t.value)}},ze=De;function Je(e){return S(f,e.of)}function Ne(e){return S(w,e.of)}function Qe(e){return function(r,t){return e.chain(r,function(n){return k(n)?e.of(n):t(n.right)})}}function Ke(e){return function(r,t){return e.map(r,te(t))}}function He(e){return function(r,t){return function(n){return e.map(n,I(r,t))}}}var ae=function(e,r){return m(e,Xe(r))},Ye=function(e,r){return m(e,Ze(r))},Xe=function(e){return function(r){return function(){return Promise.resolve().then(r).then(e)}}},Ze=function(e){return function(r){return function(){return Promise.all([Promise.resolve().then(r),Promise.resolve().then(e)]).then(function(t){var n=t[0],o=t[1];return n(o)})}}},O=function(e){return function(){return Promise.resolve(e)}},Ve=F(2,function(e,r){return function(){return Promise.resolve().then(e).then(function(t){return r(t)()})}}),oe="Task",se={URI:oe,map:ae},ie={of:O},er={URI:oe,map:ae,of:O,ap:Ye,chain:Ve},rr=function(e,r,t,n){function o(a){return a instanceof t?a:new t(function(i){i(a)})}return new(t||(t=Promise))(function(a,i){function c(l){try{s(n.next(l))}catch(d){i(d)}}function p(l){try{s(n.throw(l))}catch(d){i(d)}}function s(l){l.done?a(l.value):o(l.value).then(c,p)}s((n=n.apply(e,r||[])).next())})},tr=function(e,r){var t={label:0,sent:function(){if(a[0]&1)throw a[1];return a[1]},trys:[],ops:[]},n,o,a,i;return i={next:c(0),throw:c(1),return:c(2)},typeof Symbol=="function"&&(i[Symbol.iterator]=function(){return this}),i;function c(s){return function(l){return p([s,l])}}function p(s){if(n)throw new TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(t=0)),t;)try{if(n=1,o&&(a=s[0]&2?o.return:s[0]?o.throw||((a=o.return)&&a.call(o),0):o.next)&&!(a=a.call(o,s[1])).done)return a;switch(o=0,a&&(s=[s[0]&2,a.value]),s[0]){case 0:case 1:a=s;break;case 4:return t.label++,{value:s[1],done:!1};case 5:t.label++,o=s[1],s=[0];continue;case 7:s=t.ops.pop(),t.trys.pop();continue;default:if(a=t.trys,!(a=a.length>0&&a[a.length-1])&&(s[0]===6||s[0]===2)){t=0;continue}if(s[0]===3&&(!a||s[1]>a[0]&&s[1]<a[3])){t.label=s[1];break}if(s[0]===6&&t.label<a[1]){t.label=a[1],a=s;break}if(a&&t.label<a[2]){t.label=a[2],t.ops.push(s);break}a[2]&&t.ops.pop(),t.trys.pop();continue}s=r.call(e,t)}catch(l){s=[6,l],o=0}finally{n=a=0}if(s[0]&5)throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}},nr=Ne(ie),ce=Je(ie),ar=O,A=He(se),or=function(e,r){return function(){return rr(void 0,void 0,void 0,function(){var t;return tr(this,function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,e().then(ee)];case 1:return[2,n.sent()];case 2:return t=n.sent(),[2,V(r(t))];case 3:return[2]}})})}},sr=F(2,Ke(se)),ir=sr,cr=F(2,Qe(er)),ue=cr;class pe extends P.errorClass("MethodUnsupportedError",(r,t)=>[`Method "${r}" is unsupported in Mini Apps version ${t}`]){}class le extends P.errorClass("MethodParameterUnsupportedError",(r,t,n)=>[`Parameter "${t}" of "${r}" method is unsupported in Mini Apps version ${n}`]){}class _e extends P.errorClassWithData("LaunchParamsRetrieveError",r=>({errors:r}),r=>[["Unable to retrieve launch parameters from any known source. Perhaps, you have opened your app outside Telegram?","📖 Refer to docs for more information:","https://docs.telegram-mini-apps.com/packages/tma-js-bridge/environment","","Collected errors:",...r.map(({source:t,error:n})=>`Source: ${t} / ${n instanceof Error?n.message:String(n)}`)].join(`
2
+ `)]){}class fe extends P.errorClass("InvalidLaunchParamsError",(r,t)=>[`Invalid value for launch params: ${r}`,{cause:t}]){}class ge extends P.errorClass("UnknownEnvError"){}class me extends P.errorClass("InvokeCustomMethodError",r=>[`Server returned error: ${r}`]){}const Q="launchParams";function K(e){return e.replace(/^[^?#]*[?#]/,"").replace(/[?#]/g,"&")}const de=S(T,Ie(h.parseLaunchParamsQueryFp)),ur=g.eitherFnToSimple(de),he=S(T,je(e=>{const r=new URLSearchParams(e).get("tgWebAppData");return r?Be(r):Oe})),pr=S(he,Ue(e=>{throw e},e=>e),ze(()=>{},e=>e));function T(){const e=[];for(const[r,t]of[[()=>K(window.location.href),"window.location.href"],[()=>{const n=performance.getEntriesByType("navigation")[0];return n&&K(n.name)},"performance navigation entries"],[()=>g.getStorageValue(Q),"local storage"]]){const n=r();if(!n){e.push({source:t,error:new Error("Source is empty")});continue}const o=m(h.parseLaunchParamsQueryFp(n),Re(a=>a,()=>!0));if(typeof o!="boolean"){e.push({source:t,error:o});continue}return g.setStorageValue(Q,n),f(n)}return w(new _e(e))}const lr=g.eitherFnToSimple(T);function _r(e,r){const t=new Map,n=Fe(),o=(a,i,c=!1)=>{const p=t.get(a)||new Map;t.set(a,p);const s=p.get(i)||[];p.set(i,s);const l=s.findIndex(d=>d[1]===c);if(l>=0&&(n.off(a,s[l][0]),s.splice(l,1),!s.length&&(p.delete(i),!p.size))){const d=t.size;t.delete(a),d&&!t.size&&r()}};return{on(a,i,c){!t.size&&e();const p=()=>{o(a,i,c)},s=(...$)=>{c&&p(),a==="*"?i({name:$[0],payload:$[1]}):i(...$)};n.on(a,s);const l=t.get(a)||new Map;t.set(a,l);const d=l.get(i)||[];return l.set(i,d),d.push([s,c||!1]),p},off:o,emit:n.emit,clear(){const a=t.size;n.all.clear(),t.clear(),a&&r()}}}function x(e,r){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:r}),source:window.parent}))}function q(e,r,t){const n=[t],o=e[r];typeof o=="function"&&n.push(o);const a=(...c)=>{n.forEach(p=>p(...c))},i=Object.assign((...c)=>{a(...c)},{unwrap(){const{length:c}=n;if(c===1){delete e[r];return}if(c===2){Y(e,r,n[1]);return}n.unshift(1),Y(e,r,a)}});we(e,r,()=>i,c=>n.push(c))}function H(e,r){const t=e[r];we(e,r,()=>t,n=>{Object.entries(n).forEach(([o,a])=>{t[o]=a})})}function we(e,r,t,n){Object.defineProperty(e,r,{enumerable:!0,configurable:!0,get:t,set:n})}function Y(e,r,t){Object.defineProperty(e,r,{enumerable:!0,configurable:!0,writable:!0,value:t})}const fr={clipboard_text_received:u.looseObject({req_id:u.string(),data:u.nullish(u.string())}),custom_method_invoked:u.looseObject({req_id:u.string(),result:u.optional(u.unknown()),error:u.optional(u.string())}),popup_closed:u.nullish(u.looseObject({button_id:u.nullish(u.string(),()=>{})}),{}),viewport_changed:u.nullish(u.looseObject({height:u.number(),width:u.nullish(u.number(),()=>window.innerWidth),is_state_stable:u.boolean(),is_expanded:u.boolean()}),()=>({height:window.innerHeight,is_state_stable:!0,is_expanded:!0})),theme_changed:u.looseObject({theme_params:h.themeParams()})};function X(e){if(e.source!==window.parent)return;let r;try{r=u.parse(h.pipeJsonToSchema(h.miniAppsMessage()),e.data)}catch{return}const{eventType:t,eventData:n}=r,o=fr[t];let a;try{a=o?u.parse(o,n):n}catch(i){return v().forceError([`An error occurred processing the "${t}" event from the Telegram application.`,"Please, file an issue here:","https://github.com/Telegram-Mini-Apps/telegram-apps/issues/new/choose"].join(`
3
+ `),r,i)}gr(t,a)}const{on:B,off:ve,emit:gr,clear:be}=_r(()=>{const e=window;!e.TelegramGameProxy&&(e.TelegramGameProxy={}),q(e.TelegramGameProxy,"receiveEvent",x),H(e,"TelegramGameProxy"),!e.Telegram&&(e.Telegram={}),!e.Telegram.WebView&&(e.Telegram.WebView={}),q(e.Telegram.WebView,"receiveEvent",x),H(e.Telegram,"WebView"),q(e,"TelegramGameProxy_receiveEvent",x),window.addEventListener("message",X)},()=>{[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(e=>{const r=window;let t=[void 0,r];for(const a of e)if(t=[t[1],t[1][a]],!t[1])return;const[n,o]=t;"unwrap"in o&&(o.unwrap(),n&&n!==r&&!Object.keys(n).length&&delete r[e[0]])}),window.removeEventListener("message",X)}),M=E.signal(!1),G=E.signal("https://web.telegram.org"),mr=e=>{v().log("Event received:",e)},D=E.computed(M);function dr(e){e!==M()&&(M.set(e),(e?B:ve)("*",mr))}const z=E.computed(G);function hr(e){G.set(e),v().log("New target origin set",e)}const y=E.signal((...e)=>{window.parent.postMessage(...e)}),v=E.signal(g.createLogger("Bridge",{bgColor:"#9147ff",textColor:"white",shouldLog:D}));function wr(){be(),[y,G,z,M,D,v].forEach(e=>{e.unsubAll(),"reset"in e&&e.reset()})}const ye=(...e)=>y()(...e);function Pe(e,r){m(C(e,r),te(t=>{throw t}))}function C(e,r){v().log("Posting event:",r?{eventType:e,eventData:r}:{eventType:e});const t=window,n=JSON.stringify({eventType:e,eventData:r});return U()?(ye(n,z()),f(void 0)):R(t)?(t.TelegramWebviewProxy.postEvent(e,JSON.stringify(r)),f(void 0)):u.is(u.looseObject({external:u.looseObject({notify:u.function()})}),t)?(t.external.notify(n),f(void 0)):w(new ge)}function L(e,r,t){t||(t={});const{capture:n=()=>!0,postEvent:o=C}=t,[a,i]=g.createCbCollector(),c=new b.BetterPromise(p=>{(Array.isArray(r)?r:[r]).forEach(s=>{a(B(s,l=>{(Array.isArray(r)?n({event:s,payload:l}):n(l))&&p(l)}))})},t).finally(i);return m(ar(o(e,t.params)),ir(p=>(c.catch(()=>{}).cancel(),p)),ue(()=>or(()=>c,p=>p)))}function vr(e,r,t){const{postEvent:n}=t||{};return b.BetterPromise.fn(()=>m(L(e,r,{...t,postEvent:n?(...o)=>{try{return n(...o),f(void 0)}catch(a){return w(a)}}:C}),A(o=>{throw o},o=>o))())}function br(e,r){const t=Ee(e,r);return typeof t=="function"?b.BetterPromise.fn(()=>m(t,A(n=>{throw n},n=>n))()):t}function Ee(e,r){const t=R(window);if(!e)return t||m(T(),I(()=>!1,()=>!0));if(t)return ce(!0);const{timeout:n=100}=r||{};return m(L("web_app_request_theme","theme_changed",{...r,timeout:n}),A(o=>b.TimeoutError.is(o)?f(!1):w(o),()=>f(!0)))}function yr({launchParams:e,onEvent:r,resetPostMessage:t}={}){if(e){const a=typeof e=="string"||e instanceof URLSearchParams?e.toString():h.serializeLaunchParamsQuery({...e,tgWebAppData:void 0})+(e.tgWebAppData?`&tgWebAppData=${encodeURIComponent(e.tgWebAppData.toString())}`:"");try{h.parseLaunchParamsQuery(a)}catch(i){throw new fe(a,i)}g.setStorageValue("launchParams",a)}if(U()){if(!r)return;t&&y.reset();const a=y();y.set((...i)=>{const[c]=i,p=()=>{a(...i)};try{const s=u.parse(h.pipeJsonToSchema(h.miniAppsMessage()),c);r([s.eventType,s.eventData],p)}catch{p()}});return}const n=window.TelegramWebviewProxy||{},o=n.postEvent||(()=>{});window.TelegramWebviewProxy={...n,postEvent(a,i){const c=()=>{o(a,i)};r?r([a,i?JSON.parse(i):void 0],c):c()}},v().log("Environment was mocked by the mockTelegramEnv function")}function Se(e){return({req_id:r})=>r===e}function Z(e){return e.split(".").map(Number)}function ke(e,r){const t=Z(e),n=Z(r),o=Math.max(t.length,n.length);for(let a=0;a<o;a+=1){const i=t[a]||0,c=n[a]||0;if(i!==c)return i>c?1:-1}return 0}function _(e,r){return ke(e,r)<=0}function j(e,r,t){if(typeof t=="string"){if(e==="web_app_open_link"){if(r==="try_instant_view")return _("6.4",t);if(r==="try_browser")return _("7.6",t)}if(e==="web_app_set_header_color"&&r==="color")return _("6.9",t);if(e==="web_app_close"&&r==="return_back")return _("7.6",t);if(e==="web_app_setup_main_button"&&r==="has_shine_effect")return _("7.10",t)}switch(e){case"web_app_open_tg_link":case"web_app_open_invoice":case"web_app_setup_back_button":case"web_app_set_background_color":case"web_app_set_header_color":case"web_app_trigger_haptic_feedback":return _("6.1",r);case"web_app_open_popup":return _("6.2",r);case"web_app_close_scan_qr_popup":case"web_app_open_scan_qr_popup":case"web_app_read_text_from_clipboard":return _("6.4",r);case"web_app_switch_inline_query":return _("6.7",r);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return _("6.9",r);case"web_app_setup_settings_button":return _("6.10",r);case"web_app_biometry_get_info":case"web_app_biometry_open_settings":case"web_app_biometry_request_access":case"web_app_biometry_request_auth":case"web_app_biometry_update_token":return _("7.2",r);case"web_app_setup_swipe_behavior":return _("7.7",r);case"web_app_share_to_story":return _("7.8",r);case"web_app_setup_secondary_button":case"web_app_set_bottom_bar_color":return _("7.10",r);case"web_app_request_safe_area":case"web_app_request_content_safe_area":case"web_app_request_fullscreen":case"web_app_exit_fullscreen":case"web_app_set_emoji_status":case"web_app_add_to_home_screen":case"web_app_check_home_screen":case"web_app_request_emoji_status_access":case"web_app_check_location":case"web_app_open_location_settings":case"web_app_request_file_download":case"web_app_request_location":case"web_app_send_prepared_message":case"web_app_start_accelerometer":case"web_app_start_device_orientation":case"web_app_start_gyroscope":case"web_app_stop_accelerometer":case"web_app_stop_device_orientation":case"web_app_stop_gyroscope":case"web_app_toggle_orientation_lock":return _("8.0",r);case"web_app_device_storage_clear":case"web_app_device_storage_get_key":case"web_app_device_storage_save_key":case"web_app_secure_storage_clear":case"web_app_secure_storage_get_key":case"web_app_secure_storage_restore_key":case"web_app_secure_storage_save_key":return _("9.0",r);case"web_app_hide_keyboard":return _("9.1",r);default:return["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"].includes(e)}}function Pr(e,r="strict"){const t=typeof r=="function"?r:n=>{const{method:o,version:a}=n,i="param"in n?new le(o,n.param,a):new pe(o,a);if(r==="strict")throw i;return v().forceWarn(i.message)};return(n,o)=>j(n,e)?n==="web_app_set_header_color"&&u.is(u.looseObject({color:u.any()}),o)&&!j(n,"color",e)?t({version:e,method:n,param:"color"}):Pe(n,o):t({version:e,method:n})}function Te(e,r,t,n){return m(L("web_app_invoke_custom_method","custom_method_invoked",{...n||{},params:{method:e,params:r,req_id:t},capture:Se(t)}),ue(({result:o,error:a})=>a?nr(new me(a)):ce(o)))}function Er(e,r,t,n){return b.BetterPromise.fn(()=>m(Te(e,r,t,n),A(o=>{throw o},o=>o))())}function Sr(){Object.hasOwn||(Object.hasOwn=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)})}function J(e){return W(()=>decodeURIComponent(atob(e).replace(/-/g,"+").replace(/_/g,"/").split("").map(r=>"%"+("00"+r.charCodeAt(0).toString(16)).slice(-2)).join("")),r=>r)}const kr=g.eitherFnToSimple(J);function N(e){return btoa(encodeURIComponent(e).replace(/%([0-9A-F]{2})/g,(r,t)=>String.fromCharCode(parseInt(`0x${t}`)))).replace(/\+/g,"-").replace(/\//g,"_")}var Tr=function(e){return W(function(){return JSON.parse(e)},Ce)};function xe(e){const r=N(typeof e=="string"?e:JSON.stringify(e));return r.length>512?w(new Error("Value is too long for start parameter")):f(r)}const xr=g.eitherFnToSimple(xe);function Mr(e,r){return g.eitherGet(Me(e,typeof r=="function"?t=>W(()=>r(t),n=>n):r))}function Me(e,r){return m(J(e),We(t=>r?typeof r=="function"?r(t):Tr(t):f(t)))}function Fr(e){return N(e).length<=512}Object.defineProperty(exports,"CancelledError",{enumerable:!0,get:()=>b.CancelledError});Object.defineProperty(exports,"TimeoutError",{enumerable:!0,get:()=>b.TimeoutError});Object.defineProperty(exports,"createLogger",{enumerable:!0,get:()=>g.createLogger});Object.defineProperty(exports,"deepSnakeToCamelObjKeys",{enumerable:!0,get:()=>g.deepSnakeToCamelObjKeys});exports.InvalidLaunchParamsError=fe;exports.InvokeCustomMethodFailedError=me;exports.LaunchParamsRetrieveError=_e;exports.MethodParameterUnsupportedError=le;exports.MethodUnsupportedError=pe;exports.UnknownEnvError=ge;exports.applyPolyfills=Sr;exports.captureSameReq=Se;exports.compareVersions=ke;exports.createPostEvent=Pr;exports.createStartParam=xr;exports.createStartParamFp=xe;exports.debug=D;exports.decodeBase64Url=kr;exports.decodeBase64UrlFp=J;exports.decodeStartParam=Mr;exports.decodeStartParamFp=Me;exports.emitEvent=x;exports.encodeBase64Url=N;exports.hasWebviewProxy=R;exports.invokeCustomMethod=Er;exports.invokeCustomMethodFp=Te;exports.isIframe=U;exports.isSafeToCreateStartParam=Fr;exports.isTMA=br;exports.isTMAFp=Ee;exports.logger=v;exports.mockTelegramEnv=yr;exports.off=ve;exports.offAll=be;exports.on=B;exports.postEvent=Pe;exports.postEventFp=C;exports.postMessage=ye;exports.postMessageImpl=y;exports.request=vr;exports.requestFp=L;exports.resetGlobals=wr;exports.retrieveLaunchParams=ur;exports.retrieveLaunchParamsFp=de;exports.retrieveRawInitData=pr;exports.retrieveRawInitDataFp=he;exports.retrieveRawLaunchParams=lr;exports.retrieveRawLaunchParamsFp=T;exports.setDebug=dr;exports.setTargetOrigin=hr;exports.supports=j;exports.targetOrigin=z;
4
4
  //# sourceMappingURL=index.cjs.map