@tma.js/sdk 0.13.2 → 1.0.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.
Files changed (426) hide show
  1. package/dist/dts/{components/BackButton → back-button}/BackButton.d.ts +12 -9
  2. package/dist/dts/back-button/index.d.ts +2 -0
  3. package/dist/dts/{components/BackButton → back-button}/types.d.ts +3 -2
  4. package/dist/dts/bridge/env/hasExternalNotify.d.ts +12 -0
  5. package/dist/dts/bridge/env/hasWebviewProxy.d.ts +12 -0
  6. package/dist/dts/bridge/env/index.d.ts +3 -0
  7. package/dist/dts/bridge/env/isIframe.d.ts +5 -0
  8. package/dist/dts/bridge/errors/MethodUnsupportedError.d.ts +8 -0
  9. package/dist/dts/bridge/errors/ParameterUnsupportedError.d.ts +8 -0
  10. package/dist/dts/bridge/errors/index.d.ts +2 -0
  11. package/dist/dts/bridge/events/createEmitter.d.ts +6 -0
  12. package/dist/dts/bridge/events/events.d.ts +130 -0
  13. package/dist/dts/bridge/events/index.d.ts +9 -0
  14. package/dist/dts/bridge/events/off.d.ts +7 -0
  15. package/dist/dts/bridge/events/on.d.ts +10 -0
  16. package/dist/dts/bridge/events/onTelegramEvent.d.ts +7 -0
  17. package/dist/dts/bridge/events/once.d.ts +9 -0
  18. package/dist/dts/bridge/events/parsers/clipboardTextReceived.d.ts +13 -0
  19. package/dist/dts/bridge/events/parsers/customMethodInvoked.d.ts +16 -0
  20. package/dist/dts/bridge/events/parsers/index.d.ts +9 -0
  21. package/dist/dts/bridge/events/parsers/invoiceClosed.d.ts +12 -0
  22. package/dist/dts/bridge/events/parsers/phoneRequested.d.ts +8 -0
  23. package/dist/dts/bridge/events/parsers/popupClosed.d.ts +8 -0
  24. package/dist/dts/bridge/events/parsers/qrTextReceived.d.ts +7 -0
  25. package/dist/dts/bridge/events/parsers/theme-changed.d.ts +42 -0
  26. package/dist/dts/bridge/events/parsers/viewportChanged.d.ts +19 -0
  27. package/dist/dts/bridge/events/parsers/writeAccessRequested.d.ts +8 -0
  28. package/dist/dts/bridge/events/singletonEmitter.d.ts +6 -0
  29. package/dist/dts/bridge/events/subscribe.d.ts +9 -0
  30. package/dist/dts/bridge/events/unsubscribe.d.ts +6 -0
  31. package/dist/dts/bridge/index.d.ts +5 -0
  32. package/dist/dts/bridge/methods/createPostEvent.d.ts +10 -0
  33. package/dist/dts/bridge/methods/haptic.d.ts +40 -0
  34. package/dist/dts/bridge/methods/index.d.ts +6 -0
  35. package/dist/dts/bridge/methods/invoke-custom-method.d.ts +24 -0
  36. package/dist/dts/bridge/methods/methods.d.ts +329 -0
  37. package/dist/dts/bridge/methods/popup.d.ts +49 -0
  38. package/dist/dts/bridge/methods/postEvent.d.ts +29 -0
  39. package/dist/dts/bridge/request.d.ts +65 -0
  40. package/dist/dts/classnames/classNames.d.ts +10 -0
  41. package/dist/dts/classnames/index.d.ts +2 -0
  42. package/dist/dts/classnames/mergeClassNames.d.ts +32 -0
  43. package/dist/dts/{components/ClosingBehaviour/ClosingBehaviour.d.ts → closing-behavior/ClosingBehavior.d.ts} +5 -4
  44. package/dist/dts/closing-behavior/index.d.ts +2 -0
  45. package/dist/dts/closing-behavior/types.d.ts +7 -0
  46. package/dist/dts/{components/CloudStorage → cloud-storage}/CloudStorage.d.ts +19 -11
  47. package/dist/dts/colors/index.d.ts +5 -0
  48. package/dist/dts/colors/isColorDark.d.ts +6 -0
  49. package/dist/dts/colors/isRGB.d.ts +6 -0
  50. package/dist/dts/colors/isRGBShort.d.ts +6 -0
  51. package/dist/dts/colors/toRGB.d.ts +11 -0
  52. package/dist/dts/colors/types.d.ts +8 -0
  53. package/dist/dts/event-emitter/EventEmitter.d.ts +64 -0
  54. package/dist/dts/event-emitter/index.d.ts +2 -0
  55. package/dist/dts/event-emitter/types.d.ts +44 -0
  56. package/dist/dts/globals.d.ts +22 -0
  57. package/dist/dts/{components/HapticFeedback → haptic-feedback}/HapticFeedback.d.ts +3 -3
  58. package/dist/dts/index.d.ts +24 -6
  59. package/dist/dts/init/catchCustomStyles.d.ts +4 -0
  60. package/dist/dts/init/creators/createBackButton.d.ts +2 -2
  61. package/dist/dts/init/creators/createClosingBehavior.d.ts +3 -3
  62. package/dist/dts/init/creators/createMainButton.d.ts +3 -3
  63. package/dist/dts/init/creators/createMiniApp.d.ts +14 -0
  64. package/dist/dts/init/creators/createRequestIdGenerator.d.ts +1 -1
  65. package/dist/dts/init/creators/createThemeParams.d.ts +2 -3
  66. package/dist/dts/init/creators/createViewport.d.ts +16 -9
  67. package/dist/dts/init/creators/index.d.ts +1 -1
  68. package/dist/dts/init/css/bindMiniAppCSSVars.d.ts +16 -0
  69. package/dist/dts/init/css/bindThemeCSSVars.d.ts +12 -0
  70. package/dist/dts/init/css/bindViewportCSSVars.d.ts +20 -0
  71. package/dist/dts/init/css/index.d.ts +1 -0
  72. package/dist/dts/init/css/processCSSVarsOption.d.ts +12 -0
  73. package/dist/dts/init/css/setCSSVar.d.ts +6 -0
  74. package/dist/dts/init/init.d.ts +5 -5
  75. package/dist/dts/init/types.d.ts +42 -69
  76. package/dist/dts/init-data/InitData.d.ts +53 -0
  77. package/dist/dts/init-data/chatParser.d.ts +5 -0
  78. package/dist/dts/init-data/index.d.ts +6 -0
  79. package/dist/dts/init-data/initDataParser.d.ts +5 -0
  80. package/dist/dts/init-data/parseInitData.d.ts +6 -0
  81. package/dist/dts/init-data/types.d.ts +133 -0
  82. package/dist/dts/init-data/userParser.d.ts +5 -0
  83. package/dist/dts/invoice/Invoice.d.ts +43 -0
  84. package/dist/dts/invoice/index.d.ts +2 -0
  85. package/dist/dts/invoice/types.d.ts +7 -0
  86. package/dist/dts/launch-params/computeLaunchData.d.ts +6 -0
  87. package/dist/dts/launch-params/computePageReload.d.ts +6 -0
  88. package/dist/dts/launch-params/getFirstNavigationEntry.d.ts +6 -0
  89. package/dist/dts/launch-params/index.d.ts +12 -0
  90. package/dist/dts/launch-params/launchParamsParser.d.ts +5 -0
  91. package/dist/dts/launch-params/parseLaunchParams.d.ts +6 -0
  92. package/dist/dts/launch-params/retrieveCurrent.d.ts +5 -0
  93. package/dist/dts/launch-params/retrieveFromLocation.d.ts +6 -0
  94. package/dist/dts/launch-params/retrieveFromPerformance.d.ts +8 -0
  95. package/dist/dts/launch-params/retrieveLaunchData.d.ts +6 -0
  96. package/dist/dts/launch-params/serializeLaunchParams.d.ts +6 -0
  97. package/dist/dts/launch-params/storage.d.ts +13 -0
  98. package/dist/dts/launch-params/types.d.ts +48 -0
  99. package/dist/dts/logger/Logger.d.ts +38 -0
  100. package/dist/dts/logger/index.d.ts +1 -0
  101. package/dist/dts/main-button/MainButton.d.ts +104 -0
  102. package/dist/dts/main-button/index.d.ts +2 -0
  103. package/dist/dts/main-button/types.d.ts +20 -0
  104. package/dist/dts/mini-app/MiniApp.d.ts +99 -0
  105. package/dist/dts/mini-app/index.d.ts +2 -0
  106. package/dist/dts/mini-app/types.d.ts +19 -0
  107. package/dist/dts/misc/index.d.ts +2 -0
  108. package/dist/dts/misc/isRecord.d.ts +5 -0
  109. package/dist/dts/misc/isTMA.d.ts +4 -0
  110. package/dist/dts/navigation/HashNavigator/HashNavigator.d.ts +43 -0
  111. package/dist/dts/navigation/HashNavigator/drop.d.ts +4 -0
  112. package/dist/dts/navigation/HashNavigator/go.d.ts +5 -0
  113. package/dist/dts/navigation/HashNavigator/index.d.ts +2 -0
  114. package/dist/dts/navigation/HashNavigator/types.d.ts +34 -0
  115. package/dist/dts/navigation/Navigator/Navigator.d.ts +104 -0
  116. package/dist/dts/navigation/Navigator/index.d.ts +2 -0
  117. package/dist/dts/navigation/Navigator/types.d.ts +44 -0
  118. package/dist/dts/navigation/ensurePrefix.d.ts +7 -0
  119. package/dist/dts/navigation/getHash.d.ts +14 -0
  120. package/dist/dts/navigation/index.d.ts +4 -0
  121. package/dist/dts/parsing/ArrayValueParser.d.ts +18 -0
  122. package/dist/dts/parsing/ParseError.d.ts +22 -0
  123. package/dist/dts/parsing/ParseSchemaFieldError.d.ts +17 -0
  124. package/dist/dts/parsing/ValueParser.d.ts +36 -0
  125. package/dist/dts/parsing/createValueParserGenerator.d.ts +9 -0
  126. package/dist/dts/parsing/index.d.ts +10 -0
  127. package/dist/dts/parsing/parseBySchema.d.ts +8 -0
  128. package/dist/dts/parsing/parsers/array.d.ts +6 -0
  129. package/dist/dts/parsing/parsers/boolean.d.ts +4 -0
  130. package/dist/dts/parsing/parsers/date.d.ts +4 -0
  131. package/dist/dts/parsing/parsers/index.d.ts +8 -0
  132. package/dist/dts/parsing/parsers/json.d.ts +8 -0
  133. package/dist/dts/parsing/parsers/number.d.ts +4 -0
  134. package/dist/dts/parsing/parsers/rgb.d.ts +4 -0
  135. package/dist/dts/parsing/parsers/searchParams.d.ts +8 -0
  136. package/dist/dts/parsing/parsers/string.d.ts +4 -0
  137. package/dist/dts/parsing/toRecord.d.ts +7 -0
  138. package/dist/dts/parsing/types.d.ts +30 -0
  139. package/dist/dts/parsing/unexpectedTypeError.d.ts +4 -0
  140. package/dist/dts/{components/Popup → popup}/Popup.d.ts +10 -9
  141. package/dist/dts/popup/index.d.ts +2 -0
  142. package/dist/dts/popup/preparePopupParams.d.ts +7 -0
  143. package/dist/dts/{components/Popup → popup}/types.d.ts +4 -4
  144. package/dist/dts/{components/QRScanner → qr-scanner}/QRScanner.d.ts +6 -5
  145. package/dist/dts/qr-scanner/index.d.ts +2 -0
  146. package/dist/dts/{components/QRScanner → qr-scanner}/types.d.ts +1 -1
  147. package/dist/dts/state/State.d.ts +19 -6
  148. package/dist/dts/state/types.d.ts +4 -7
  149. package/dist/dts/storage.d.ts +4 -4
  150. package/dist/dts/supports/createSupportsFunc.d.ts +10 -0
  151. package/dist/dts/supports/createSupportsParamFunc.d.ts +15 -0
  152. package/dist/dts/supports/index.d.ts +4 -0
  153. package/dist/dts/supports/supports.d.ts +15 -0
  154. package/dist/dts/supports/types.d.ts +1 -0
  155. package/dist/dts/theme-params/ThemeParams.d.ts +62 -0
  156. package/dist/dts/theme-params/index.d.ts +6 -0
  157. package/dist/dts/theme-params/keys.d.ts +11 -0
  158. package/dist/dts/theme-params/parseThemeParams.d.ts +6 -0
  159. package/dist/dts/theme-params/requestThemeParams.d.ts +7 -0
  160. package/dist/dts/theme-params/serializeThemeParams.d.ts +5 -0
  161. package/dist/dts/theme-params/themeParamsParser.d.ts +2 -0
  162. package/dist/dts/theme-params/types.d.ts +14 -0
  163. package/dist/dts/timeout/TimeoutError.d.ts +3 -0
  164. package/dist/dts/timeout/index.d.ts +3 -0
  165. package/dist/dts/timeout/isTimeoutError.d.ts +6 -0
  166. package/dist/dts/timeout/withTimeout.d.ts +14 -0
  167. package/dist/dts/types/index.d.ts +3 -0
  168. package/dist/dts/types/platform.d.ts +4 -0
  169. package/dist/dts/types/request-id.d.ts +9 -0
  170. package/dist/dts/types/utils.d.ts +36 -0
  171. package/dist/dts/utils/Utils.d.ts +45 -0
  172. package/dist/dts/utils/index.d.ts +1 -0
  173. package/dist/dts/version/compareVersions.d.ts +8 -0
  174. package/dist/dts/version/index.d.ts +2 -0
  175. package/dist/dts/version/types.d.ts +4 -0
  176. package/dist/dts/{components/Viewport → viewport}/Viewport.d.ts +16 -38
  177. package/dist/dts/viewport/index.d.ts +3 -0
  178. package/dist/dts/viewport/requestViewport.d.ts +12 -0
  179. package/dist/dts/{components/Viewport → viewport}/types.d.ts +9 -1
  180. package/dist/dts/viewport/utils.d.ts +5 -0
  181. package/dist/index.cjs +1 -1
  182. package/dist/index.cjs.map +1 -1
  183. package/dist/index.iife.js +1 -1
  184. package/dist/index.iife.js.map +1 -1
  185. package/dist/index.mjs +2249 -1036
  186. package/dist/index.mjs.map +1 -1
  187. package/package.json +7 -16
  188. package/src/{components/BackButton → back-button}/BackButton.ts +23 -21
  189. package/src/back-button/index.ts +2 -0
  190. package/src/{components/BackButton → back-button}/types.ts +3 -2
  191. package/src/bridge/env/hasExternalNotify.ts +19 -0
  192. package/src/bridge/env/hasWebviewProxy.ts +19 -0
  193. package/src/bridge/env/index.ts +3 -0
  194. package/src/bridge/env/isIframe.ts +11 -0
  195. package/src/bridge/errors/MethodUnsupportedError.ts +13 -0
  196. package/src/bridge/errors/ParameterUnsupportedError.ts +13 -0
  197. package/src/bridge/errors/index.ts +2 -0
  198. package/src/bridge/events/createEmitter.ts +108 -0
  199. package/src/bridge/events/events.ts +170 -0
  200. package/src/bridge/events/index.ts +9 -0
  201. package/src/bridge/events/off.ts +14 -0
  202. package/src/bridge/events/on.ts +19 -0
  203. package/src/bridge/events/onTelegramEvent.ts +83 -0
  204. package/src/bridge/events/once.ts +18 -0
  205. package/src/bridge/events/parsers/clipboardTextReceived.ts +26 -0
  206. package/src/bridge/events/parsers/customMethodInvoked.ts +25 -0
  207. package/src/bridge/events/parsers/index.ts +9 -0
  208. package/src/bridge/events/parsers/invoiceClosed.ts +26 -0
  209. package/src/bridge/events/parsers/phoneRequested.ts +14 -0
  210. package/src/bridge/events/parsers/popupClosed.ts +19 -0
  211. package/src/bridge/events/parsers/qrTextReceived.ts +14 -0
  212. package/src/bridge/events/parsers/theme-changed.ts +58 -0
  213. package/src/bridge/events/parsers/viewportChanged.ts +33 -0
  214. package/src/bridge/events/parsers/writeAccessRequested.ts +14 -0
  215. package/src/bridge/events/singletonEmitter.ts +19 -0
  216. package/src/bridge/events/subscribe.ts +15 -0
  217. package/src/bridge/events/unsubscribe.ts +10 -0
  218. package/src/bridge/index.ts +5 -0
  219. package/src/bridge/methods/createPostEvent.ts +40 -0
  220. package/src/bridge/methods/haptic.ts +52 -0
  221. package/src/bridge/methods/index.ts +6 -0
  222. package/src/bridge/methods/invoke-custom-method.ts +25 -0
  223. package/src/bridge/methods/methods.ts +372 -0
  224. package/src/bridge/methods/popup.ts +53 -0
  225. package/src/bridge/methods/postEvent.ts +101 -0
  226. package/src/bridge/request.ts +185 -0
  227. package/src/classnames/classNames.ts +34 -0
  228. package/src/classnames/index.ts +2 -0
  229. package/src/classnames/mergeClassNames.ts +68 -0
  230. package/src/{components/ClosingBehaviour/ClosingBehaviour.ts → closing-behavior/ClosingBehavior.ts} +12 -10
  231. package/src/closing-behavior/index.ts +2 -0
  232. package/src/closing-behavior/types.ts +12 -0
  233. package/src/{components/CloudStorage → cloud-storage}/CloudStorage.ts +50 -28
  234. package/src/colors/index.ts +5 -0
  235. package/src/colors/isColorDark.ts +22 -0
  236. package/src/colors/isRGB.ts +9 -0
  237. package/src/colors/isRGBShort.ts +9 -0
  238. package/src/colors/toRGB.ts +49 -0
  239. package/src/colors/types.ts +9 -0
  240. package/src/event-emitter/EventEmitter.ts +146 -0
  241. package/src/event-emitter/index.ts +2 -0
  242. package/src/event-emitter/types.ts +60 -0
  243. package/src/globals.ts +38 -0
  244. package/src/{components/HapticFeedback → haptic-feedback}/HapticFeedback.ts +16 -8
  245. package/src/index.ts +171 -6
  246. package/src/init/catchCustomStyles.ts +17 -0
  247. package/src/init/creators/createBackButton.ts +4 -6
  248. package/src/init/creators/createClosingBehavior.ts +6 -8
  249. package/src/init/creators/createMainButton.ts +13 -20
  250. package/src/init/creators/createMiniApp.ts +44 -0
  251. package/src/init/creators/createRequestIdGenerator.ts +1 -1
  252. package/src/init/creators/createThemeParams.ts +3 -6
  253. package/src/init/creators/createViewport.ts +92 -42
  254. package/src/init/creators/index.ts +1 -1
  255. package/src/init/css/bindMiniAppCSSVars.ts +48 -0
  256. package/src/init/css/bindThemeCSSVars.ts +31 -0
  257. package/src/init/css/bindViewportCSSVars.ts +36 -0
  258. package/src/init/css/index.ts +1 -0
  259. package/src/init/css/processCSSVarsOption.ts +57 -0
  260. package/src/init/css/setCSSVar.ts +8 -0
  261. package/src/init/init.ts +96 -138
  262. package/src/init/types.ts +42 -87
  263. package/src/init-data/InitData.ts +96 -0
  264. package/src/init-data/chatParser.ts +19 -0
  265. package/src/init-data/index.ts +6 -0
  266. package/src/init-data/initDataParser.ts +41 -0
  267. package/src/init-data/parseInitData.ts +10 -0
  268. package/src/init-data/types.ts +164 -0
  269. package/src/init-data/userParser.ts +45 -0
  270. package/src/invoice/Invoice.ts +123 -0
  271. package/src/invoice/index.ts +2 -0
  272. package/src/invoice/types.ts +11 -0
  273. package/src/launch-params/computeLaunchData.ts +81 -0
  274. package/src/launch-params/computePageReload.ts +13 -0
  275. package/src/launch-params/getFirstNavigationEntry.ts +10 -0
  276. package/src/launch-params/index.ts +12 -0
  277. package/src/launch-params/launchParamsParser.ts +41 -0
  278. package/src/launch-params/parseLaunchParams.ts +10 -0
  279. package/src/launch-params/retrieveCurrent.ts +27 -0
  280. package/src/launch-params/retrieveFromLocation.ts +10 -0
  281. package/src/launch-params/retrieveFromPerformance.ts +23 -0
  282. package/src/launch-params/retrieveLaunchData.ts +30 -0
  283. package/src/launch-params/serializeLaunchParams.ts +37 -0
  284. package/src/launch-params/storage.ts +33 -0
  285. package/src/launch-params/types.ts +57 -0
  286. package/src/logger/Logger.ts +72 -0
  287. package/src/logger/index.ts +1 -0
  288. package/src/main-button/MainButton.ts +239 -0
  289. package/src/main-button/index.ts +2 -0
  290. package/src/main-button/types.ts +26 -0
  291. package/src/mini-app/MiniApp.ts +237 -0
  292. package/src/mini-app/index.ts +2 -0
  293. package/src/mini-app/types.ts +25 -0
  294. package/src/misc/index.ts +2 -0
  295. package/src/misc/isRecord.ts +7 -0
  296. package/src/misc/isTMA.ts +13 -0
  297. package/src/navigation/HashNavigator/HashNavigator.ts +220 -0
  298. package/src/navigation/HashNavigator/drop.ts +36 -0
  299. package/src/navigation/HashNavigator/go.ts +28 -0
  300. package/src/navigation/HashNavigator/index.ts +2 -0
  301. package/src/navigation/HashNavigator/types.ts +41 -0
  302. package/src/navigation/Navigator/Navigator.ts +282 -0
  303. package/src/navigation/Navigator/index.ts +2 -0
  304. package/src/navigation/Navigator/types.ts +55 -0
  305. package/src/navigation/ensurePrefix.ts +9 -0
  306. package/src/navigation/getHash.ts +17 -0
  307. package/src/navigation/index.ts +4 -0
  308. package/src/parsing/ArrayValueParser.ts +79 -0
  309. package/src/parsing/ParseError.ts +27 -0
  310. package/src/parsing/ParseSchemaFieldError.ts +21 -0
  311. package/src/parsing/ValueParser.ts +71 -0
  312. package/src/parsing/createValueParserGenerator.ts +16 -0
  313. package/src/parsing/index.ts +10 -0
  314. package/src/parsing/parseBySchema.ts +65 -0
  315. package/src/parsing/parsers/array.ts +9 -0
  316. package/src/parsing/parsers/boolean.ts +22 -0
  317. package/src/parsing/parsers/date.ts +13 -0
  318. package/src/parsing/parsers/index.ts +8 -0
  319. package/src/parsing/parsers/json.ts +17 -0
  320. package/src/parsing/parsers/number.ts +21 -0
  321. package/src/parsing/parsers/rgb.ts +12 -0
  322. package/src/parsing/parsers/searchParams.ts +24 -0
  323. package/src/parsing/parsers/string.ts +12 -0
  324. package/src/parsing/toRecord.ts +27 -0
  325. package/src/parsing/types.ts +32 -0
  326. package/src/parsing/unexpectedTypeError.ts +6 -0
  327. package/src/{components/Popup → popup}/Popup.ts +38 -28
  328. package/src/popup/index.ts +2 -0
  329. package/src/{components/Popup/utils.ts → popup/preparePopupParams.ts} +3 -3
  330. package/src/{components/Popup → popup}/types.ts +4 -4
  331. package/src/{components/QRScanner → qr-scanner}/QRScanner.ts +18 -10
  332. package/src/qr-scanner/index.ts +2 -0
  333. package/src/{components/QRScanner → qr-scanner}/types.ts +1 -1
  334. package/src/state/State.ts +30 -16
  335. package/src/state/types.ts +5 -8
  336. package/src/storage.ts +6 -4
  337. package/src/supports/createSupportsFunc.ts +18 -0
  338. package/src/supports/createSupportsParamFunc.ts +27 -0
  339. package/src/supports/index.ts +4 -0
  340. package/src/supports/supports.ts +84 -0
  341. package/src/supports/types.ts +1 -0
  342. package/src/theme-params/ThemeParams.ts +131 -0
  343. package/src/theme-params/index.ts +6 -0
  344. package/src/theme-params/keys.ts +24 -0
  345. package/src/theme-params/parseThemeParams.ts +10 -0
  346. package/src/theme-params/requestThemeParams.ts +13 -0
  347. package/src/theme-params/serializeThemeParams.ts +20 -0
  348. package/src/theme-params/themeParamsParser.ts +20 -0
  349. package/src/theme-params/types.ts +33 -0
  350. package/src/timeout/TimeoutError.ts +6 -0
  351. package/src/timeout/index.ts +3 -0
  352. package/src/timeout/isTimeoutError.ts +9 -0
  353. package/src/timeout/withTimeout.ts +36 -0
  354. package/src/types/index.ts +3 -0
  355. package/src/types/platform.ts +14 -0
  356. package/src/types/request-id.ts +10 -0
  357. package/src/types/utils.ts +50 -0
  358. package/src/utils/Utils.ts +107 -0
  359. package/src/utils/index.ts +1 -0
  360. package/src/version/compareVersions.ts +28 -0
  361. package/src/version/index.ts +2 -0
  362. package/src/version/types.ts +4 -0
  363. package/src/{components/Viewport → viewport}/Viewport.ts +72 -98
  364. package/src/viewport/index.ts +3 -0
  365. package/src/viewport/requestViewport.ts +23 -0
  366. package/src/{components/Viewport → viewport}/types.ts +10 -1
  367. package/src/viewport/utils.ts +7 -0
  368. package/dist/dts/components/BackButton/index.d.ts +0 -2
  369. package/dist/dts/components/ClosingBehaviour/index.d.ts +0 -2
  370. package/dist/dts/components/ClosingBehaviour/types.d.ts +0 -7
  371. package/dist/dts/components/InitData/InitData.d.ts +0 -60
  372. package/dist/dts/components/InitData/index.d.ts +0 -1
  373. package/dist/dts/components/MainButton/MainButton.d.ts +0 -114
  374. package/dist/dts/components/MainButton/index.d.ts +0 -2
  375. package/dist/dts/components/MainButton/types.d.ts +0 -15
  376. package/dist/dts/components/Popup/index.d.ts +0 -2
  377. package/dist/dts/components/Popup/utils.d.ts +0 -7
  378. package/dist/dts/components/QRScanner/index.d.ts +0 -2
  379. package/dist/dts/components/ThemeParams/ThemeParams.d.ts +0 -73
  380. package/dist/dts/components/ThemeParams/index.d.ts +0 -2
  381. package/dist/dts/components/ThemeParams/types.d.ts +0 -9
  382. package/dist/dts/components/Viewport/index.d.ts +0 -2
  383. package/dist/dts/components/WebApp/WebApp.d.ts +0 -146
  384. package/dist/dts/components/WebApp/index.d.ts +0 -2
  385. package/dist/dts/components/WebApp/types.d.ts +0 -11
  386. package/dist/dts/components/index.d.ts +0 -11
  387. package/dist/dts/env.d.ts +0 -10
  388. package/dist/dts/errors/MethodNotSupportedError.d.ts +0 -6
  389. package/dist/dts/errors/ParameterNotSupportedError.d.ts +0 -6
  390. package/dist/dts/errors/index.d.ts +0 -2
  391. package/dist/dts/init/creators/createWebApp.d.ts +0 -16
  392. package/dist/dts/init/css.d.ts +0 -57
  393. package/dist/dts/supports.d.ts +0 -22
  394. package/dist/dts/types.d.ts +0 -10
  395. package/dist/dts/url.d.ts +0 -7
  396. package/src/components/BackButton/index.ts +0 -2
  397. package/src/components/ClosingBehaviour/index.ts +0 -6
  398. package/src/components/ClosingBehaviour/types.ts +0 -12
  399. package/src/components/InitData/InitData.ts +0 -139
  400. package/src/components/InitData/index.ts +0 -1
  401. package/src/components/MainButton/MainButton.ts +0 -242
  402. package/src/components/MainButton/index.ts +0 -2
  403. package/src/components/MainButton/types.ts +0 -20
  404. package/src/components/Popup/index.ts +0 -8
  405. package/src/components/QRScanner/index.ts +0 -2
  406. package/src/components/ThemeParams/ThemeParams.ts +0 -166
  407. package/src/components/ThemeParams/index.ts +0 -2
  408. package/src/components/ThemeParams/types.ts +0 -18
  409. package/src/components/Viewport/index.ts +0 -2
  410. package/src/components/WebApp/WebApp.ts +0 -311
  411. package/src/components/WebApp/index.ts +0 -2
  412. package/src/components/WebApp/types.ts +0 -17
  413. package/src/components/index.ts +0 -11
  414. package/src/env.ts +0 -22
  415. package/src/errors/MethodNotSupportedError.ts +0 -9
  416. package/src/errors/ParameterNotSupportedError.ts +0 -9
  417. package/src/errors/index.ts +0 -2
  418. package/src/init/creators/createWebApp.ts +0 -52
  419. package/src/init/css.ts +0 -166
  420. package/src/supports.ts +0 -44
  421. package/src/types.ts +0 -13
  422. package/src/url.ts +0 -23
  423. /package/dist/dts/{components/CloudStorage → cloud-storage}/index.d.ts +0 -0
  424. /package/dist/dts/{components/HapticFeedback → haptic-feedback}/index.d.ts +0 -0
  425. /package/src/{components/CloudStorage → cloud-storage}/index.ts +0 -0
  426. /package/src/{components/HapticFeedback → haptic-feedback}/index.ts +0 -0
@@ -1,139 +0,0 @@
1
- import type { HasUndefined, If } from '@tma.js/util-types';
2
- import type {
3
- Chat,
4
- ChatType,
5
- InitData as InitDataType,
6
- User,
7
- } from '@tma.js/init-data';
8
-
9
- import { State } from '../../state/index.js';
10
-
11
- type InitDataState = {
12
- [K in keyof InitDataType]-?: 'canSendAfter' extends K
13
- ? Date | null
14
- : If<
15
- HasUndefined<InitDataType[K]>,
16
- Exclude<InitDataType[K], undefined> | null,
17
- InitDataType[K]
18
- >;
19
- };
20
-
21
- /**
22
- * Class which is responsible for displaying Mini Apps init data.
23
- */
24
- export class InitData {
25
- private readonly state: State<InitDataState>;
26
-
27
- constructor(
28
- authDate: Date,
29
- hash: string,
30
- options: Omit<InitDataType, 'authDate' | 'hash'> = {},
31
- ) {
32
- const {
33
- chat = null,
34
- canSendAfter = null,
35
- chatType = null,
36
- chatInstance = null,
37
- user = null,
38
- queryId = null,
39
- receiver = null,
40
- startParam = null,
41
- } = options;
42
- this.state = new State({
43
- authDate,
44
- canSendAfter: canSendAfter === null
45
- ? null
46
- : new Date(authDate.getTime() + canSendAfter * 1000),
47
- chat,
48
- chatType,
49
- chatInstance,
50
- user,
51
- queryId,
52
- receiver,
53
- startParam,
54
- hash,
55
- });
56
- }
57
-
58
- /**
59
- * Init data generation date.
60
- */
61
- get authDate(): Date {
62
- return this.state.get('authDate');
63
- }
64
-
65
- /**
66
- * Date after which a message can be sent via the
67
- * [answerWebAppQuery](https://core.telegram.org/bots/api#answerwebappquery) method.
68
- */
69
- get canSendAfter(): Date | null {
70
- return this.state.get('canSendAfter');
71
- }
72
-
73
- /**
74
- * An object containing data about the chat where the bot was launched via the attachment
75
- * menu. Returned for supergroups, channels and group chats – only for Mini Apps launched via
76
- * the attachment menu.
77
- */
78
- get chat(): Chat | null {
79
- return this.state.get('chat');
80
- }
81
-
82
- /**
83
- * The type of chat from which Mini App was opened.
84
- */
85
- get chatType(): ChatType | null {
86
- return this.state.get('chatType');
87
- }
88
-
89
- /**
90
- * A global identifier indicating the chat from which Mini App was opened. Returned only for
91
- * applications opened by direct link.
92
- */
93
- get chatInstance(): string | null {
94
- return this.state.get('chatInstance');
95
- }
96
-
97
- /**
98
- * A hash of all passed parameters, which the bot server can use to
99
- * check their validity.
100
- * @see https://core.telegram.org/bots/webapps#validating-data-received-via-the-web-app
101
- */
102
- get hash(): string {
103
- return this.state.get('hash');
104
- }
105
-
106
- /**
107
- * A unique identifier for the Mini App session, required for sending
108
- * messages via the `answerWebAppQuery` method.
109
- * @see https://core.telegram.org/bots/api#answerwebappquery
110
- */
111
- get queryId(): string | null {
112
- return this.state.get('queryId');
113
- }
114
-
115
- /**
116
- * An object containing data about the chat partner of the current
117
- * user in the chat where the bot was launched via the attachment menu.
118
- * Returned only for private chats and only for Mini Apps launched
119
- * via the attachment menu.
120
- */
121
- get receiver(): User | null {
122
- return this.state.get('receiver');
123
- }
124
-
125
- /**
126
- * The value of the `startattach` parameter, passed via link. Only
127
- * returned for Mini Apps when launched from the attachment menu via link.
128
- */
129
- get startParam(): string | null {
130
- return this.state.get('startParam');
131
- }
132
-
133
- /**
134
- * An object containing data about the current user.
135
- */
136
- get user(): User | null {
137
- return this.state.get('user');
138
- }
139
- }
@@ -1 +0,0 @@
1
- export * from './InitData.js';
@@ -1,242 +0,0 @@
1
- import { EventEmitter } from '@tma.js/event-emitter';
2
- import { on, off, postEvent as defaultPostEvent, type PostEvent } from '@tma.js/bridge';
3
-
4
- import type { RGB } from '@tma.js/colors';
5
-
6
- import { State } from '../../state/index.js';
7
-
8
- import type { MainButtonEventListener, MainButtonEvents, MainButtonState } from './types.js';
9
-
10
- /**
11
- * Controls the main button, which is displayed at the bottom
12
- * of the Mini App in the Telegram interface.
13
- */
14
- export class MainButton {
15
- private readonly ee = new EventEmitter<MainButtonEvents>();
16
-
17
- private readonly state: State<MainButtonState>;
18
-
19
- constructor(
20
- backgroundColor: RGB,
21
- isEnabled: boolean,
22
- isVisible: boolean,
23
- isProgressVisible: boolean,
24
- text: string,
25
- textColor: RGB,
26
- private readonly postEvent: PostEvent = defaultPostEvent,
27
- ) {
28
- this.state = new State({
29
- backgroundColor,
30
- isEnabled,
31
- isVisible,
32
- isProgressVisible,
33
- text,
34
- textColor,
35
- }, this.ee);
36
- }
37
-
38
- private set isEnabled(value: boolean) {
39
- this.state.set('isEnabled', value);
40
- this.commit();
41
- }
42
-
43
- /**
44
- * Returns true in case, MainButton is currently enabled.
45
- */
46
- get isEnabled(): boolean {
47
- return this.state.get('isEnabled');
48
- }
49
-
50
- private set isProgressVisible(value: boolean) {
51
- this.state.set('isProgressVisible', value);
52
- this.commit();
53
- }
54
-
55
- /**
56
- * Returns true in case, MainButton loading progress is currently visible.
57
- */
58
- get isProgressVisible(): boolean {
59
- return this.state.get('isProgressVisible');
60
- }
61
-
62
- private set isVisible(value: boolean) {
63
- this.state.set('isVisible', value);
64
- this.commit();
65
- }
66
-
67
- /**
68
- * Returns true in case, MainButton is currently visible.
69
- */
70
- get isVisible(): boolean {
71
- return this.state.get('isVisible');
72
- }
73
-
74
- /**
75
- * Sends current local button state to Telegram application.
76
- */
77
- private commit(): void {
78
- // We should not commit changes until payload is correct. We could
79
- // have some invalid values in case, button instance was created
80
- // with empty values. Otherwise, an unexpected behaviour could be received.
81
- if (this.text === '') {
82
- return;
83
- }
84
-
85
- this.postEvent('web_app_setup_main_button', {
86
- is_visible: this.isVisible,
87
- is_active: this.isEnabled,
88
- is_progress_visible: this.isProgressVisible,
89
- text: this.text,
90
- color: this.backgroundColor,
91
- text_color: this.textColor,
92
- });
93
- }
94
-
95
- /**
96
- * Returns current main button background color.
97
- */
98
- get backgroundColor(): RGB {
99
- return this.state.get('backgroundColor');
100
- }
101
-
102
- /**
103
- * Returns current main button text.
104
- */
105
- get text(): string {
106
- return this.state.get('text');
107
- }
108
-
109
- /**
110
- * Returns current main button text color.
111
- */
112
- get textColor(): RGB {
113
- return this.state.get('textColor');
114
- }
115
-
116
- /**
117
- * Disables button. Returns current button instance for chaining.
118
- */
119
- disable(): this {
120
- // FIXME: This method does not work on Android. Event "main_button_pressed"
121
- // keeps getting received even in case, button is disabled.
122
- // Issue: https://github.com/Telegram-Mini-Apps/documentation/issues/1
123
- this.isEnabled = false;
124
- return this;
125
- }
126
-
127
- /**
128
- * Enables button. Returns current button instance for chaining.
129
- */
130
- enable(): this {
131
- this.isEnabled = true;
132
- return this;
133
- }
134
-
135
- /**
136
- * Hides button. Returns current button instance for chaining.
137
- */
138
- hide(): this {
139
- this.isVisible = false;
140
- return this;
141
- }
142
-
143
- /**
144
- * Hides button progress. Returns current button instance for chaining.
145
- */
146
- hideProgress(): this {
147
- this.isProgressVisible = false;
148
- return this;
149
- }
150
-
151
- /**
152
- * Adds new event listener.
153
- * FIXME: Event 'main_button_pressed' is still being received on Android
154
- * even if the main button is disabled.
155
- * Issue: https://github.com/Telegram-Mini-Apps/tma.js/issues/3
156
- * @param event - event name.
157
- * @param listener - event listener.
158
- */
159
- on: typeof this.ee.on = (event, listener) => (
160
- event === 'click'
161
- ? on('main_button_pressed', listener as MainButtonEventListener<'click'>)
162
- : this.ee.on(event, listener)
163
- );
164
-
165
- /**
166
- * Removes event listener.
167
- * @param event - event name.
168
- * @param listener - event listener.
169
- */
170
- off: typeof this.ee.off = (event, listener) => {
171
- if (event === 'click') {
172
- return off('main_button_pressed', listener as MainButtonEventListener<'click'>);
173
- }
174
- this.ee.off(event, listener);
175
- };
176
-
177
- /**
178
- * Shows the button. Note that opening the Mini App from the attachment
179
- * menu hides the main button until the user interacts with the Mini App
180
- * interface.
181
- *
182
- * Returns current button instance for chaining.
183
- */
184
- show(): this {
185
- this.isVisible = true;
186
- return this;
187
- }
188
-
189
- /**
190
- * A method to show a loading indicator on the button.
191
- * It is recommended to display loading progress if the action tied to the
192
- * button may take a long time.
193
- *
194
- * Returns current button instance for chaining.
195
- */
196
- showProgress(): this {
197
- this.isProgressVisible = true;
198
- return this;
199
- }
200
-
201
- /**
202
- * Sets new main button text. Returns current button instance for chaining.
203
- * Minimal length for text is 1 symbol, and maximum is 64 symbols.
204
- *
205
- * Returns current button instance for chaining.
206
- * @param value - new text.
207
- */
208
- setText(value: string): this {
209
- this.state.set('text', value);
210
- this.commit();
211
-
212
- return this;
213
- }
214
-
215
- /**
216
- * Sets new main button text color. Returns current button instance for
217
- * chaining.
218
- *
219
- * Returns current button instance for chaining.
220
- * @param value - new text color.
221
- */
222
- setTextColor(value: RGB): this {
223
- this.state.set('textColor', value);
224
- this.commit();
225
-
226
- return this;
227
- }
228
-
229
- /**
230
- * Updates current button color. Returns current button instance for
231
- * chaining.
232
- *
233
- * Returns current button instance for chaining.
234
- * @param value - color to set.
235
- */
236
- setBackgroundColor(value: RGB): this {
237
- this.state.set('backgroundColor', value);
238
- this.commit();
239
-
240
- return this;
241
- }
242
- }
@@ -1,2 +0,0 @@
1
- export * from './MainButton.js';
2
- export type { MainButtonEvents, MainButtonEventListener, MainButtonEventName } from './types.js';
@@ -1,20 +0,0 @@
1
- import type { RGB } from '@tma.js/colors';
2
-
3
- import type { StateEvents } from '../../state/index.js';
4
-
5
- export interface MainButtonState {
6
- backgroundColor: RGB;
7
- isEnabled: boolean;
8
- isVisible: boolean;
9
- isProgressVisible: boolean;
10
- text: string;
11
- textColor: RGB;
12
- }
13
-
14
- export interface MainButtonEvents extends StateEvents<MainButtonState> {
15
- click: () => void;
16
- }
17
-
18
- export type MainButtonEventName = keyof MainButtonEvents;
19
-
20
- export type MainButtonEventListener<E extends MainButtonEventName> = MainButtonEvents[E];
@@ -1,8 +0,0 @@
1
- export * from './Popup.js';
2
- export type {
3
- PopupParams,
4
- PopupEvents,
5
- PopupEventListener,
6
- PopupEventName,
7
- PopupButton,
8
- } from './types.js';
@@ -1,2 +0,0 @@
1
- export * from './QRScanner.js';
2
- export type { QRScannerEvents, QRScannerEventName, QRScannerEventListener } from './types.js';
@@ -1,166 +0,0 @@
1
- import { EventEmitter } from '@tma.js/event-emitter';
2
- import { parse, type ThemeParams as ThemeParamsType } from '@tma.js/theme-params';
3
- import { on, request, type RequestOptions } from '@tma.js/bridge';
4
- import { isColorDark } from '@tma.js/colors';
5
-
6
- import type { RGB } from '@tma.js/colors';
7
-
8
- import { State } from '../../state/index.js';
9
-
10
- import type { ThemeParamsEvents, ThemeParamsState } from './types.js';
11
-
12
- function prepareThemeParams(value: ThemeParamsType): ThemeParamsState {
13
- const {
14
- accentTextColor = null,
15
- backgroundColor = null,
16
- buttonColor = null,
17
- buttonTextColor = null,
18
- destructiveTextColor = null,
19
- headerBackgroundColor = null,
20
- hintColor = null,
21
- linkColor = null,
22
- secondaryBackgroundColor = null,
23
- sectionBackgroundColor = null,
24
- sectionHeaderTextColor = null,
25
- subtitleTextColor = null,
26
- textColor = null,
27
- } = value;
28
-
29
- return {
30
- accentTextColor,
31
- backgroundColor,
32
- buttonColor,
33
- buttonTextColor,
34
- destructiveTextColor,
35
- headerBackgroundColor,
36
- hintColor,
37
- linkColor,
38
- secondaryBackgroundColor,
39
- sectionBackgroundColor,
40
- sectionHeaderTextColor,
41
- subtitleTextColor,
42
- textColor,
43
- };
44
- }
45
-
46
- /**
47
- * Contains information about currently used theme by application.
48
- * @see https://core.telegram.org/bots/webapps#themeparams
49
- */
50
- export class ThemeParams {
51
- /**
52
- * Requests fresh information about current theme.
53
- * FIXME: Be careful using this function in desktop version of Telegram as
54
- * long as method web_app_request_theme does not work on `macos` platform.
55
- * @param options - method options.
56
- */
57
- static async request(options: RequestOptions = {}): Promise<ThemeParamsType> {
58
- const { timeout = 1000, ...restOptions } = options;
59
- const result = await request('web_app_request_theme', 'theme_changed', {
60
- ...restOptions,
61
- timeout,
62
- });
63
-
64
- return parse(result.theme_params);
65
- }
66
-
67
- /**
68
- * Synchronizes specified instance of ThemeParams with the actual value in the native
69
- * application.
70
- * @param themeParams - ThemeParams instance.
71
- */
72
- static sync(themeParams: ThemeParams): void {
73
- on('theme_changed', (event) => {
74
- themeParams.state.set(prepareThemeParams(parse(event.theme_params)));
75
- });
76
- }
77
-
78
- /**
79
- * Returns instance of ThemeParams which is synchronized with external
80
- * environment.
81
- * @param options - method options.
82
- */
83
- static async synced(options?: RequestOptions): Promise<ThemeParams> {
84
- const params = await this.request(options);
85
- const tp = new ThemeParams(params);
86
-
87
- this.sync(tp);
88
-
89
- return tp;
90
- }
91
-
92
- private readonly ee = new EventEmitter<ThemeParamsEvents>();
93
-
94
- private readonly state: State<ThemeParamsState>;
95
-
96
- constructor(params: ThemeParamsType) {
97
- this.state = new State(prepareThemeParams(params), this.ee);
98
- }
99
-
100
- /**
101
- * Returns background color.
102
- */
103
- get backgroundColor(): RGB | null {
104
- return this.state.get('backgroundColor');
105
- }
106
-
107
- /**
108
- * Returns button color.
109
- */
110
- get buttonColor(): RGB | null {
111
- return this.state.get('buttonColor');
112
- }
113
-
114
- /**
115
- * Returns button text color.
116
- */
117
- get buttonTextColor(): RGB | null {
118
- return this.state.get('buttonTextColor');
119
- }
120
-
121
- /**
122
- * Returns hint color.
123
- */
124
- get hintColor(): RGB | null {
125
- return this.state.get('hintColor');
126
- }
127
-
128
- /**
129
- * Returns true in case, current color scheme is recognized as dark. This
130
- * value is calculated according to theme background color.
131
- */
132
- get isDark(): boolean {
133
- return this.backgroundColor === null || isColorDark(this.backgroundColor);
134
- }
135
-
136
- /**
137
- * Returns current link color.
138
- */
139
- get linkColor(): RGB | null {
140
- return this.state.get('linkColor');
141
- }
142
-
143
- /**
144
- * Adds new event listener.
145
- */
146
- on = this.ee.on.bind(this.ee);
147
-
148
- /**
149
- * Removes event listener.
150
- */
151
- off = this.ee.off.bind(this.ee);
152
-
153
- /**
154
- * Returns secondary background color.
155
- */
156
- get secondaryBackgroundColor(): RGB | null {
157
- return this.state.get('secondaryBackgroundColor');
158
- }
159
-
160
- /**
161
- * Returns text color.
162
- */
163
- get textColor(): RGB | null {
164
- return this.state.get('textColor');
165
- }
166
- }
@@ -1,2 +0,0 @@
1
- export * from './ThemeParams.js';
2
- export * from './types.js';
@@ -1,18 +0,0 @@
1
- import type { HasUndefined, If } from '@tma.js/util-types';
2
- import type { ThemeParams } from '@tma.js/theme-params';
3
-
4
- import type { StateEvents } from '../../state/index.js';
5
-
6
- export type ThemeParamsState = {
7
- [K in keyof ThemeParams]-?: If<
8
- HasUndefined<ThemeParams[K]>,
9
- Exclude<ThemeParams[K], undefined> | null,
10
- ThemeParams[K]
11
- >;
12
- };
13
-
14
- export type ThemeParamsEvents = StateEvents<ThemeParamsState>;
15
-
16
- export type ThemeParamsEventName = keyof ThemeParamsEvents;
17
-
18
- export type ThemeParamsEventListener<E extends ThemeParamsEventName> = ThemeParamsEvents[E];
@@ -1,2 +0,0 @@
1
- export * from './Viewport.js';
2
- export type { ViewportEvents, ViewportEventListener, ViewportEventName } from './types.js';