@tma.js/bridge 1.4.1 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +44 -13
  3. package/dist/dts/applyPolyfills.d.ts +5 -0
  4. package/dist/dts/base64-url.d.ts +24 -0
  5. package/dist/dts/env/hasWebviewProxy.d.ts +10 -0
  6. package/dist/dts/env/isIframe.d.ts +5 -0
  7. package/dist/dts/env/isTMA.d.ts +31 -0
  8. package/dist/dts/env/mockTelegramEnv.d.ts +57 -0
  9. package/dist/dts/errors.d.ts +27 -0
  10. package/dist/dts/events/createEmitter.d.ts +58 -0
  11. package/dist/dts/events/emitEvent.d.ts +33 -0
  12. package/dist/dts/events/emitter.d.ts +2 -11
  13. package/dist/dts/events/types/events.d.ts +721 -0
  14. package/dist/dts/events/types/index.d.ts +3 -0
  15. package/dist/dts/events/types/listening.d.ts +5 -0
  16. package/dist/dts/events/types/misc.d.ts +16 -0
  17. package/dist/dts/globals.d.ts +45 -14
  18. package/dist/dts/index.d.ts +24 -7
  19. package/dist/dts/launch-params.d.ts +32 -0
  20. package/dist/dts/methods/captureSameReq.d.ts +10 -0
  21. package/dist/dts/methods/createPostEvent.d.ts +27 -7
  22. package/dist/dts/methods/postEvent.d.ts +31 -25
  23. package/dist/dts/methods/postMessage.d.ts +7 -0
  24. package/dist/dts/methods/supports.d.ts +15 -0
  25. package/dist/dts/methods/types/custom-method.d.ts +59 -0
  26. package/dist/dts/methods/types/index.d.ts +6 -0
  27. package/dist/dts/methods/types/methods.d.ts +756 -0
  28. package/dist/dts/methods/types/misc.d.ts +27 -0
  29. package/dist/dts/methods/{popup.d.ts → types/popup.d.ts} +1 -1
  30. package/dist/dts/methods/types/utils.d.ts +9 -0
  31. package/dist/dts/obj-prop-helpers.d.ts +39 -0
  32. package/dist/dts/start-param.d.ts +53 -0
  33. package/dist/dts/utils/compareVersions.d.ts +10 -0
  34. package/dist/dts/utils/invokeCustomMethod.d.ts +34 -0
  35. package/dist/dts/utils/request.d.ts +90 -0
  36. package/dist/index.cjs +3 -1
  37. package/dist/index.cjs.map +1 -1
  38. package/dist/index.iife.js +3 -1
  39. package/dist/index.iife.js.map +1 -1
  40. package/dist/index.js +977 -0
  41. package/dist/index.js.map +1 -0
  42. package/package.json +26 -26
  43. package/dist/dts/env.d.ts +0 -29
  44. package/dist/dts/errors/MethodUnsupportedError.d.ts +0 -8
  45. package/dist/dts/errors/ParameterUnsupportedError.d.ts +0 -8
  46. package/dist/dts/errors/index.d.ts +0 -2
  47. package/dist/dts/events/events.d.ts +0 -130
  48. package/dist/dts/events/index.d.ts +0 -7
  49. package/dist/dts/events/off.d.ts +0 -7
  50. package/dist/dts/events/on.d.ts +0 -10
  51. package/dist/dts/events/onTelegramEvent.d.ts +0 -7
  52. package/dist/dts/events/once.d.ts +0 -9
  53. package/dist/dts/events/parsers/clipboardTextReceived.d.ts +0 -13
  54. package/dist/dts/events/parsers/customMethodInvoked.d.ts +0 -16
  55. package/dist/dts/events/parsers/index.d.ts +0 -9
  56. package/dist/dts/events/parsers/invoiceClosed.d.ts +0 -12
  57. package/dist/dts/events/parsers/phoneRequested.d.ts +0 -8
  58. package/dist/dts/events/parsers/popupClosed.d.ts +0 -8
  59. package/dist/dts/events/parsers/qrTextReceived.d.ts +0 -7
  60. package/dist/dts/events/parsers/theme-changed.d.ts +0 -42
  61. package/dist/dts/events/parsers/viewportChanged.d.ts +0 -19
  62. package/dist/dts/events/parsers/writeAccessRequested.d.ts +0 -8
  63. package/dist/dts/events/subscribe.d.ts +0 -9
  64. package/dist/dts/events/unsubscribe.d.ts +0 -6
  65. package/dist/dts/methods/index.d.ts +0 -6
  66. package/dist/dts/methods/invoke-custom-method.d.ts +0 -24
  67. package/dist/dts/methods/methods.d.ts +0 -330
  68. package/dist/dts/request.d.ts +0 -66
  69. package/dist/dts/shared.d.ts +0 -5
  70. package/dist/dts/supports.d.ts +0 -15
  71. package/dist/index.mjs +0 -317
  72. package/dist/index.mjs.map +0 -1
  73. package/src/env.ts +0 -49
  74. package/src/errors/MethodUnsupportedError.ts +0 -13
  75. package/src/errors/ParameterUnsupportedError.ts +0 -13
  76. package/src/errors/index.ts +0 -2
  77. package/src/events/emitter.ts +0 -126
  78. package/src/events/events.ts +0 -169
  79. package/src/events/index.ts +0 -7
  80. package/src/events/off.ts +0 -12
  81. package/src/events/on.ts +0 -17
  82. package/src/events/onTelegramEvent.ts +0 -83
  83. package/src/events/once.ts +0 -16
  84. package/src/events/parsers/clipboardTextReceived.ts +0 -27
  85. package/src/events/parsers/customMethodInvoked.ts +0 -26
  86. package/src/events/parsers/index.ts +0 -9
  87. package/src/events/parsers/invoiceClosed.ts +0 -26
  88. package/src/events/parsers/phoneRequested.ts +0 -14
  89. package/src/events/parsers/popupClosed.ts +0 -19
  90. package/src/events/parsers/qrTextReceived.ts +0 -14
  91. package/src/events/parsers/theme-changed.ts +0 -58
  92. package/src/events/parsers/viewportChanged.ts +0 -33
  93. package/src/events/parsers/writeAccessRequested.ts +0 -14
  94. package/src/events/subscribe.ts +0 -16
  95. package/src/events/unsubscribe.ts +0 -11
  96. package/src/globals.ts +0 -38
  97. package/src/index.ts +0 -7
  98. package/src/methods/createPostEvent.ts +0 -39
  99. package/src/methods/haptic.ts +0 -52
  100. package/src/methods/index.ts +0 -6
  101. package/src/methods/invoke-custom-method.ts +0 -25
  102. package/src/methods/methods.ts +0 -373
  103. package/src/methods/popup.ts +0 -53
  104. package/src/methods/postEvent.ts +0 -101
  105. package/src/request.ts +0 -168
  106. package/src/shared.ts +0 -5
  107. package/src/supports.ts +0 -82
  108. /package/dist/dts/methods/{haptic.d.ts → types/haptic-feedback.d.ts} +0 -0
@@ -0,0 +1,27 @@
1
+ import { RGB } from '@tma.js/types';
2
+ type KnownColorKey = 'bg_color' | 'secondary_bg_color';
3
+ /**
4
+ * Color key which could be used to update header color.
5
+ */
6
+ export type HeaderColorKey = KnownColorKey;
7
+ /**
8
+ * Color key which could be used to update Mini App background color.
9
+ */
10
+ export type BackgroundColor = RGB;
11
+ /**
12
+ * Color key which could be used to update bottom bar background color.
13
+ */
14
+ export type BottomBarColor = RGB;
15
+ /**
16
+ * Position of the secondary button related to the main one.
17
+ */
18
+ export type SecondaryButtonPosition = 'left' | 'right' | 'top' | 'bottom';
19
+ /**
20
+ * Values expected by the `web_app_open_link.try_browser` option.
21
+ */
22
+ export type OpenLinkBrowser = 'google-chrome' | 'chrome' | 'mozilla-firefox' | 'firefox' | 'microsoft-edge' | 'edge' | 'opera' | 'opera-mini' | 'brave' | 'brave-browser' | 'duckduckgo' | 'duckduckgo-browser' | 'samsung' | 'samsung-browser' | 'vivaldi' | 'vivaldi-browser' | 'kiwi' | 'kiwi-browser' | 'uc' | 'uc-browser' | 'tor' | 'tor-browser';
23
+ /**
24
+ * Chat type which could be used when calling `web_app_switch_inline_query` method.
25
+ */
26
+ export type SwitchInlineQueryChatType = 'users' | 'bots' | 'groups' | 'channels';
27
+ export {};
@@ -17,7 +17,7 @@ export interface PopupParams {
17
17
  }
18
18
  /**
19
19
  * Describes the native popup button.
20
- * @see https://docs.telegram-mini-apps.com/apps-communication/methods#popupbutton
20
+ * @see https://docs.telegram-mini-apps.com/platform/methods#popupbutton
21
21
  */
22
22
  export type PopupButton = {
23
23
  /**
@@ -0,0 +1,9 @@
1
+ type UnionKeys<T> = T extends T ? keyof T : never;
2
+ /**
3
+ * Creates Mini Apps method parameters types.
4
+ */
5
+ export interface CreateMethodParams<Params = never, VersionedParam extends UnionKeys<Params> = never> {
6
+ params: Params;
7
+ versionedParams: VersionedParam;
8
+ }
9
+ export {};
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Defines a property, that is a functions compose. Trying to set a value in this property
3
+ * will lead to adding it to a function's pool. The property value will always be equal to a
4
+ * function, calling all collected functions in the pool.
5
+ *
6
+ * Returned function performs a cleanup. It does one of the following:
7
+ * 1. Removes the property if no functions were to the pool added other than the initial one.
8
+ * 2. Sets the value equal to the first added function to the pool after the initial one if
9
+ * the only one additional function was added at all. In other words, if the pool length is equal
10
+ * to 2, the second item will be selected as the property value.
11
+ * 3. Leaves the value equal to a function calling all pool functions, but removes the initially
12
+ * added one.
13
+ * @param obj - object.
14
+ * @param propertyName - object property.
15
+ * @param initialFn - an initial function to set.
16
+ */
17
+ export declare function defineFnComposer(obj: any, propertyName: string, initialFn: (...args: any) => any): void;
18
+ /**
19
+ * Wires the specified property in the object preventing it from being overwritten. Instead, it
20
+ * enhances the previous value by merging the current one with the passed one.
21
+ * @param obj - object.
22
+ * @param prop - object property to rewire.
23
+ */
24
+ export declare function defineMergeableProperty(obj: any, prop: string): void;
25
+ /**
26
+ * Defines an enumerable and configurable property with a getter and setter.
27
+ * @param obj - object.
28
+ * @param prop - object property name.
29
+ * @param get - getter to use.
30
+ * @param set - setter to use.
31
+ */
32
+ export declare function defineProxiedProperty(obj: any, prop: string, get: () => unknown, set: (v: any) => void): void;
33
+ /**
34
+ * Defines an enumerable, configurable and writable property with the initial value.
35
+ * @param obj - object.
36
+ * @param prop - object property name.
37
+ * @param value - value to set.
38
+ */
39
+ export declare function defineStaticProperty(obj: any, prop: string, value: any): void;
@@ -0,0 +1,53 @@
1
+ import { DecodeBase64UrlError } from './base64-url.js';
2
+ import * as E from 'fp-ts/Either';
3
+ import * as J from 'fp-ts/Json';
4
+ /**
5
+ * Creates a safe start parameter value. If the value is not a string, the
6
+ * function applies JSON.stringify to it, so make sure you are not passing an
7
+ * object with circular references.
8
+ *
9
+ * @param value - value to create start parameter from.
10
+ * @see Learn more about start parameter:
11
+ * https://docs.telegram-mini-apps.com/platform/start-parameter
12
+ */
13
+ export declare function createStartParamFp(value: unknown): E.Either<Error, string>;
14
+ /**
15
+ * @see createStartParamFp
16
+ */
17
+ export declare const createStartParam: (value: unknown) => string;
18
+ /**
19
+ * @see decodeStartParamFp
20
+ */
21
+ export declare function decodeStartParam<T>(value: string, parse: (value: string) => T): T;
22
+ /**
23
+ * @see decodeStartParamFp
24
+ */
25
+ export declare function decodeStartParam(value: string, as: 'json'): J.Json;
26
+ /**
27
+ * @see decodeStartParamFp
28
+ */
29
+ export declare function decodeStartParam(value: string): string;
30
+ /**
31
+ * Decodes a start parameter using a custom parser.
32
+ * @param value - a start parameter value.
33
+ * @param parse - a custom value parser.
34
+ */
35
+ export declare function decodeStartParamFp<L, R>(value: string, parse: (value: string) => E.Either<L, R>): E.Either<L | DecodeBase64UrlError, R>;
36
+ /**
37
+ * Decodes a start parameter assuming that the result is a JSON value.
38
+ * @param value - a start parameter value.
39
+ * @param as - result kind.
40
+ */
41
+ export declare function decodeStartParamFp(value: string, as: 'json'): E.Either<SyntaxError | DecodeBase64UrlError, J.Json>;
42
+ /**
43
+ * Decodes a start parameter and returns its decoded representation.
44
+ * @param value - a value to decode.
45
+ */
46
+ export declare function decodeStartParamFp(value: string): E.Either<DecodeBase64UrlError, string>;
47
+ /**
48
+ * @returns True if the passed value is safe to be used to create a start parameter value from it.
49
+ * If true is returned, the value can be safely passed to the `createStartParam` function.
50
+ * @param value - value to check.
51
+ * @see createStartParam
52
+ */
53
+ export declare function isSafeToCreateStartParam(value: string): boolean;
@@ -0,0 +1,10 @@
1
+ import { Version } from '@tma.js/types';
2
+ /**
3
+ * @param a - first version.
4
+ * @param b - second version.
5
+ * @returns
6
+ * - `1` if the version "a" is greater than "b".
7
+ * - `0` the version "a" is equal to "b".
8
+ * - `-1` the version "a" is lower than "b".
9
+ */
10
+ export declare function compareVersions(a: Version, b: Version): number;
@@ -0,0 +1,34 @@
1
+ import { BetterPromise } from 'better-promises';
2
+ import { CustomMethodName, CustomMethodParams } from '../methods/types/index.js';
3
+ import { InvokeCustomMethodFailedError } from '../errors.js';
4
+ import { RequestOptions, RequestFpOptions, RequestError } from './request.js';
5
+ import * as TE from 'fp-ts/TaskEither';
6
+ export type InvokeCustomMethodError = RequestError | InvokeCustomMethodFailedError;
7
+ export type InvokeCustomMethodOptions = Omit<RequestOptions<'custom_method_invoked'>, 'capture'>;
8
+ export type InvokeCustomMethodFn = typeof invokeCustomMethod;
9
+ export type InvokeCustomMethodFpOptions = Omit<RequestFpOptions<'custom_method_invoked'>, 'capture'>;
10
+ export type InvokeCustomMethodFpFn = typeof invokeCustomMethodFp;
11
+ /**
12
+ * Invokes known custom method. Returns method execution result.
13
+ * @param method - method name.
14
+ * @param params - method parameters.
15
+ * @param requestId - request identifier.
16
+ * @param options - additional options.
17
+ */
18
+ export declare function invokeCustomMethodFp<M extends CustomMethodName>(method: M, params: CustomMethodParams<M>, requestId: string, options?: InvokeCustomMethodFpOptions): TE.TaskEither<InvokeCustomMethodError, unknown>;
19
+ /**
20
+ * Invokes unknown custom method. Returns method execution result.
21
+ * @param method - method name.
22
+ * @param params - method parameters.
23
+ * @param requestId - request identifier.
24
+ * @param options - additional options.
25
+ */
26
+ export declare function invokeCustomMethodFp(method: string, params: object, requestId: string, options?: InvokeCustomMethodFpOptions): TE.TaskEither<RequestError, unknown>;
27
+ /**
28
+ * @see invokeCustomMethodFp
29
+ */
30
+ export declare function invokeCustomMethod<M extends CustomMethodName>(method: M, params: CustomMethodParams<M>, requestId: string, options?: InvokeCustomMethodOptions): BetterPromise<unknown>;
31
+ /**
32
+ * @see invokeCustomMethodFp
33
+ */
34
+ export declare function invokeCustomMethod(method: string, params: object, requestId: string, options?: InvokeCustomMethodOptions): BetterPromise<unknown>;
@@ -0,0 +1,90 @@
1
+ import { BetterPromise, BetterPromiseOptions, TimeoutError, CancelledError } from 'better-promises';
2
+ import { If, IsNever } from '@tma.js/toolkit';
3
+ import { PostEventError, PostEventFn, PostEventFpFn } from '../methods/postEvent.js';
4
+ import { MethodNameWithOptionalParams, MethodNameWithoutParams, MethodNameWithRequiredParams, MethodParams } from '../methods/types/index.js';
5
+ import { EventName, EventPayload } from '../events/types/index.js';
6
+ import * as TE from 'fp-ts/TaskEither';
7
+ type AnyEventName = EventName | EventName[];
8
+ export type RequestError = PostEventError | TimeoutError | CancelledError | unknown;
9
+ /**
10
+ * @example
11
+ * { event: 'scan_qr_closed' }
12
+ * @example
13
+ * {
14
+ * event: 'popup_closed',
15
+ * payload: { button_id: 'ok' }
16
+ * }
17
+ */
18
+ export type RequestCaptureFnEventsPayload<E extends EventName[]> = E extends (infer U extends EventName)[] ? {
19
+ [K in U]: If<IsNever<EventPayload<K>>, {
20
+ event: K;
21
+ }, {
22
+ event: K;
23
+ payload: EventPayload<K>;
24
+ }>;
25
+ }[U] : never;
26
+ export type RequestCaptureEventsFn<E extends EventName[]> = (payload: RequestCaptureFnEventsPayload<E>) => boolean;
27
+ export type RequestCaptureEventFn<E extends EventName> = If<IsNever<EventPayload<E>>, () => boolean, (payload: EventPayload<E>) => boolean>;
28
+ export type RequestCaptureFn<E extends AnyEventName> = E extends EventName[] ? RequestCaptureEventsFn<E> : E extends EventName ? RequestCaptureEventFn<E> : never;
29
+ export interface RequestOptions<E extends AnyEventName> extends Omit<RequestFpOptions<E>, 'postEvent'> {
30
+ /**
31
+ * Custom function to call mini apps methods.
32
+ */
33
+ postEvent?: PostEventFn;
34
+ }
35
+ export type RequestResult<E extends AnyEventName> = E extends (infer U extends EventName)[] ? U extends infer K extends EventName ? If<IsNever<EventPayload<K>>, undefined, EventPayload<K>> : never : E extends EventName ? If<IsNever<EventPayload<E>>, undefined, EventPayload<E>> : never;
36
+ export interface RequestFpOptions<E extends AnyEventName> extends Pick<BetterPromiseOptions, 'abortSignal' | 'timeout'> {
37
+ /**
38
+ * A function that should return true if the event should be captured.
39
+ * The first compatible request will be captured if this property is omitted.
40
+ */
41
+ capture?: RequestCaptureFn<E>;
42
+ /**
43
+ * A custom function to call mini apps methods.
44
+ */
45
+ postEvent?: PostEventFpFn;
46
+ }
47
+ export type RequestFn = typeof request;
48
+ export type RequestFpFn = typeof requestFp;
49
+ /**
50
+ * Calls a method waiting for the specified event(-s) to occur.
51
+ * @param method - method name.
52
+ * @param eventOrEvents - tracked event or events.
53
+ * @param options - additional options.
54
+ */
55
+ export declare function requestFp<M extends MethodNameWithRequiredParams, E extends AnyEventName>(method: M, eventOrEvents: E, options: RequestFpOptions<E> & {
56
+ params: MethodParams<M>;
57
+ }): TE.TaskEither<RequestError, RequestResult<E>>;
58
+ /**
59
+ * Calls a method waiting for the specified event(-s) to occur.
60
+ * @param method - method name.
61
+ * @param eventOrEvents - tracked event or events.
62
+ * @param options - additional options.
63
+ */
64
+ export declare function requestFp<M extends MethodNameWithOptionalParams, E extends AnyEventName>(method: M, eventOrEvents: E, options?: RequestFpOptions<E> & {
65
+ params?: MethodParams<M>;
66
+ }): TE.TaskEither<RequestError, RequestResult<E>>;
67
+ /**
68
+ * Calls a method waiting for the specified event(-s) to occur.
69
+ * @param method - method name.
70
+ * @param eventOrEvents - tracked event or events.
71
+ * @param options - additional options.
72
+ */
73
+ export declare function requestFp<M extends MethodNameWithoutParams, E extends AnyEventName>(method: M, eventOrEvents: E, options?: RequestFpOptions<E>): TE.TaskEither<RequestError, RequestResult<E>>;
74
+ /**
75
+ * @see requestFp
76
+ */
77
+ export declare function request<M extends MethodNameWithRequiredParams, E extends AnyEventName>(method: M, eventOrEvents: E, options: RequestOptions<E> & {
78
+ params: MethodParams<M>;
79
+ }): BetterPromise<RequestResult<E>>;
80
+ /**
81
+ * @see requestFp
82
+ */
83
+ export declare function request<M extends MethodNameWithOptionalParams, E extends AnyEventName>(method: M, eventOrEvents: E, options?: RequestOptions<E> & {
84
+ params?: MethodParams<M>;
85
+ }): BetterPromise<RequestResult<E>>;
86
+ /**
87
+ * @see requestFp
88
+ */
89
+ export declare function request<M extends MethodNameWithoutParams, E extends AnyEventName>(method: M, eventOrEvents: E, options?: RequestOptions<E>): BetterPromise<RequestResult<E>>;
90
+ export {};
package/dist/index.cjs CHANGED
@@ -1,2 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("@tma.js/utils"),B=require("@tma.js/logger"),F=require("@tma.js/event-emitter"),i=require("@tma.js/parsing");class f extends Error{constructor(t,r){super(`Method "${t}" is unsupported in the Mini Apps version ${r}.`),Object.setPrototypeOf(this,f.prototype)}}class g extends Error{constructor(t,r,n){super(`Parameter "${r}" in method "${t}" is unsupported in the Mini Apps version ${n}.`),Object.setPrototypeOf(this,g.prototype)}}function R(){return i.json({req_id:i.string(),data:e=>e===null?e:i.string().optional().parse(e)})}function P(){return i.json({req_id:i.string(),result:e=>e,error:i.string().optional()})}function j(){return i.json({slug:i.string(),status:i.string()})}function k(){return i.json({status:i.string()})}function A(){return i.json({button_id:e=>e==null?void 0:i.string().parse(e)})}function C(){return i.json({data:i.string().optional()})}function M(){return i.json({theme_params:e=>{const t=i.rgb().optional();return Object.entries(i.toRecord(e)).reduce((r,[n,o])=>(r[n]=t.parse(o),r),{})}})}function W(){return i.json({height:i.number(),width:e=>e==null?window.innerWidth:i.number().parse(e),is_state_stable:i.boolean(),is_expanded:i.boolean()})}function T(){return i.json({status:i.string()})}let $="https://web.telegram.org";const a=new B.Logger("[Bridge]",!1);function K(e){if(e){a.enable();return}a.disable()}function Q(e){$=e}function X(){return $}const Y=i.json({eventType:i.string(),eventData:e=>e});function Z(e,t){window.dispatchEvent(new MessageEvent("message",{data:JSON.stringify({eventType:e,eventData:t})}))}function D(){const e=window;"TelegramGameProxy_receiveEvent"in e||[["TelegramGameProxy_receiveEvent"],["TelegramGameProxy","receiveEvent"],["Telegram","WebView","receiveEvent"]].forEach(t=>{let r=e;t.forEach((n,o,s)=>{if(o===s.length-1){r[n]=Z;return}n in r||(r[n]={}),r=r[n]})})}function V(e){D(),window.addEventListener("message",t=>{try{const{eventType:r,eventData:n}=Y.parse(t.data);e(r,n)}catch{}})}const b="__telegram-cached-emitter__";function O(){const e=new F.EventEmitter,t=(r,...n)=>{a.log("Emitting processed event:",r,...n),e.emit(r,...n)};return window.addEventListener("resize",()=>{t("viewport_changed",{width:window.innerWidth,height:window.innerHeight,is_state_stable:!0,is_expanded:!0})}),V((r,n)=>{a.log("Received raw event:",r,n);try{switch(r){case"viewport_changed":return t(r,W().parse(n));case"theme_changed":return t(r,M().parse(n));case"popup_closed":return n==null?t(r,{}):t(r,A().parse(n));case"set_custom_style":return t(r,i.string().parse(n));case"qr_text_received":return t(r,C().parse(n));case"clipboard_text_received":return t(r,R().parse(n));case"invoice_closed":return t(r,j().parse(n));case"phone_requested":return t("phone_requested",k().parse(n));case"custom_method_invoked":return t("custom_method_invoked",P().parse(n));case"write_access_requested":return t("write_access_requested",T().parse(n));case"main_button_pressed":case"back_button_pressed":case"settings_button_pressed":case"scan_qr_popup_closed":case"reload_iframe":return t(r);default:return t(r,n)}}catch(o){a.error("Error processing event:",o)}}),e}function _(){const e=window;return e[b]===void 0&&(e[b]=O()),e[b]}function E(e,t){_().off(e,t)}function I(e,t){return _().on(e,t),()=>E(e,t)}function ee(e,t){return _().once(e,t),()=>E(e,t)}function N(e){_().unsubscribe(e)}function te(e){return _().subscribe(e),()=>N(e)}function c(e,t){return u.compareVersions(e,t)<=0}function h(e,t,r){if(typeof r=="string"){if(e==="web_app_open_link"&&t==="try_instant_view")return c("6.4",r);if(e==="web_app_set_header_color"&&t==="color")return c("6.9",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 c("6.1",t);case"web_app_open_popup":return c("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 c("6.4",t);case"web_app_switch_inline_query":return c("6.7",t);case"web_app_invoke_custom_method":case"web_app_request_write_access":case"web_app_request_phone":return c("6.9",t);case"web_app_setup_settings_button":return c("6.10",t);default:return!0}}function re(e){return(t,r)=>{if(!h(t,e))throw new f(t,e);if(u.isRecord(r)){let n;if(t==="web_app_open_link"&&"try_instant_view"in r?n="try_instant_view":t==="web_app_set_header_color"&&"color"in r&&(n="color"),n&&!h(t,n,e))throw new g(t,n,e)}return y(t,r)}}function S(e){return"external"in e&&u.isRecord(e.external)&&"notify"in e.external&&typeof e.external.notify=="function"}function J(e){return"TelegramWebviewProxy"in e&&u.isRecord(e.TelegramWebviewProxy)&&"postEvent"in e.TelegramWebviewProxy&&typeof e.TelegramWebviewProxy.postEvent=="function"}function L(){try{return window.self!==window.top}catch{return!0}}function y(e,t,r){let n={},o;t===void 0&&r===void 0?n={}:t!==void 0&&r!==void 0?(n=r,o=t):t!==void 0&&("targetOrigin"in t?n=t:o=t);const{targetOrigin:s=X()}=n;if(a.log(`Calling method "${e}"`,o),L()){window.parent.postMessage(JSON.stringify({eventType:e,eventData:o}),s);return}if(S(window)){window.external.notify(JSON.stringify({eventType:e,eventData:o}));return}if(J(window)){window.TelegramWebviewProxy.postEvent(e,JSON.stringify(o));return}throw new Error("Unable to determine current environment and possible way to send event.")}function ne(e,t,r,n){let o,s,w,l;typeof t=="string"||Array.isArray(t)?(w=Array.isArray(t)?t:[t],o=r):(s=t,w=Array.isArray(r)?r:[r],o=n),u.isRecord(s)&&typeof s.req_id=="string"&&(l=s.req_id);const{postEvent:G=y,timeout:m}=o||{},q=o&&"capture"in o?o.capture:null,v=new Promise((H,U)=>{const z=w.map(p=>I(p,d=>{typeof l=="string"&&(!u.isRecord(d)||d.req_id!==l)||typeof q=="function"&&!q(d)||(x(),H(d))})),x=()=>z.forEach(p=>p());try{G(e,s)}catch(p){x(),U(p)}});return typeof m=="number"?u.withTimeout(v,m):v}exports.MethodUnsupportedError=f;exports.ParameterUnsupportedError=g;exports.clipboardTextReceived=R;exports.createPostEvent=re;exports.customMethodInvoked=P;exports.hasExternalNotify=S;exports.hasWebviewProxy=J;exports.invoiceClosed=j;exports.isIframe=L;exports.off=E;exports.on=I;exports.once=ee;exports.phoneRequested=k;exports.popupClosed=A;exports.postEvent=y;exports.qrTextReceived=C;exports.request=ne;exports.setDebug=K;exports.setTargetOrigin=Q;exports.subscribe=te;exports.supports=h;exports.themeChanged=M;exports.unsubscribe=N;exports.viewportChanged=W;exports.writeAccessRequested=T;
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;
2
4
  //# sourceMappingURL=index.cjs.map