@vknext/shared 1.2.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 (129) hide show
  1. package/README.md +28 -0
  2. package/dist/common/ListenerRegistry.d.ts +6 -0
  3. package/dist/common/ListenerRegistry.js +1 -0
  4. package/dist/common/index.d.ts +1 -0
  5. package/dist/common/index.js +1 -0
  6. package/dist/components/CustomModalPage/CustomModalPage.d.ts +9 -0
  7. package/dist/components/CustomModalPage/CustomModalPage.js +1 -0
  8. package/dist/components/CustomModalPage/CustomModalPageContext.d.ts +17 -0
  9. package/dist/components/CustomModalPage/CustomModalPageContext.js +1 -0
  10. package/dist/components/index.d.ts +1 -0
  11. package/dist/components/index.js +1 -0
  12. package/dist/helpers/getGlobalThis.d.ts +1 -0
  13. package/dist/helpers/getGlobalThis.js +1 -0
  14. package/dist/helpers/index.d.ts +1 -0
  15. package/dist/helpers/index.js +1 -0
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js +1 -0
  18. package/dist/lib/Ranges.d.ts +58 -0
  19. package/dist/lib/Ranges.js +1 -0
  20. package/dist/lib/RangesIds.d.ts +53 -0
  21. package/dist/lib/RangesIds.js +1 -0
  22. package/dist/lib/index.d.ts +3 -0
  23. package/dist/lib/index.js +1 -0
  24. package/dist/lib/lang/Lang.d.ts +15 -0
  25. package/dist/lib/lang/Lang.js +1 -0
  26. package/dist/lib/lang/LangReact.d.ts +10 -0
  27. package/dist/lib/lang/LangReact.js +1 -0
  28. package/dist/lib/lang/LangsCodeEnum.d.ts +11 -0
  29. package/dist/lib/lang/LangsCodeEnum.js +1 -0
  30. package/dist/lib/lang/getCodeLangFromNavigator.d.ts +2 -0
  31. package/dist/lib/lang/getCodeLangFromNavigator.js +1 -0
  32. package/dist/lib/lang/index.d.ts +4 -0
  33. package/dist/lib/lang/index.js +1 -0
  34. package/dist/lib/pluralFrom.d.ts +1 -0
  35. package/dist/lib/pluralFrom.js +1 -0
  36. package/dist/utils/DOMContentLoaded.d.ts +1 -0
  37. package/dist/utils/DOMContentLoaded.js +1 -0
  38. package/dist/utils/arrayUnFlat.d.ts +1 -0
  39. package/dist/utils/arrayUnFlat.js +1 -0
  40. package/dist/utils/convertBlobToUint8Array.d.ts +1 -0
  41. package/dist/utils/convertBlobToUint8Array.js +1 -0
  42. package/dist/utils/createPromise.d.ts +5 -0
  43. package/dist/utils/createPromise.js +1 -0
  44. package/dist/utils/delay.d.ts +1 -0
  45. package/dist/utils/delay.js +1 -0
  46. package/dist/utils/getReactAttrs.d.ts +5 -0
  47. package/dist/utils/getReactAttrs.js +1 -0
  48. package/dist/utils/index.d.ts +12 -0
  49. package/dist/utils/index.js +1 -0
  50. package/dist/utils/onDocumentComplete.d.ts +1 -0
  51. package/dist/utils/onDocumentComplete.js +1 -0
  52. package/dist/utils/parseSvg.d.ts +1 -0
  53. package/dist/utils/parseSvg.js +1 -0
  54. package/dist/utils/waitHTMLBody.d.ts +1 -0
  55. package/dist/utils/waitHTMLBody.js +1 -0
  56. package/dist/utils/waitHTMLHead.d.ts +9 -0
  57. package/dist/utils/waitHTMLHead.js +1 -0
  58. package/dist/utils/waitRAF.d.ts +1 -0
  59. package/dist/utils/waitRAF.js +1 -0
  60. package/dist/utils/waitRIC.d.ts +1 -0
  61. package/dist/utils/waitRIC.js +1 -0
  62. package/dist/vkcom/audio/audioUnmaskSource.d.ts +4 -0
  63. package/dist/vkcom/audio/audioUnmaskSource.js +1 -0
  64. package/dist/vkcom/audio/convertTrackToBlob.d.ts +11 -0
  65. package/dist/vkcom/audio/convertTrackToBlob.js +1 -0
  66. package/dist/vkcom/audio/getTrackDetails.d.ts +9 -0
  67. package/dist/vkcom/audio/getTrackDetails.js +1 -0
  68. package/dist/vkcom/audio/index.d.ts +4 -0
  69. package/dist/vkcom/audio/index.js +1 -0
  70. package/dist/vkcom/audio/utils/getHlsInstance.d.ts +2 -0
  71. package/dist/vkcom/audio/utils/getHlsInstance.js +1 -0
  72. package/dist/vkcom/audio/utils/sendMessage.d.ts +9 -0
  73. package/dist/vkcom/audio/utils/sendMessage.js +1 -0
  74. package/dist/vkcom/globalVars/index.d.ts +21 -0
  75. package/dist/vkcom/globalVars/index.js +1 -0
  76. package/dist/vkcom/globalVars/onAddTopNotifier.d.ts +4 -0
  77. package/dist/vkcom/globalVars/onAddTopNotifier.js +1 -0
  78. package/dist/vkcom/globalVars/onAddWall.d.ts +4 -0
  79. package/dist/vkcom/globalVars/onAddWall.js +1 -0
  80. package/dist/vkcom/globalVars/utils/waitVariable.d.ts +3 -0
  81. package/dist/vkcom/globalVars/utils/waitVariable.js +1 -0
  82. package/dist/vkcom/globalVars/utils/watchGlobalProperty.d.ts +3 -0
  83. package/dist/vkcom/globalVars/utils/watchGlobalProperty.js +1 -0
  84. package/dist/vkcom/globalVars/waitAjax.d.ts +1 -0
  85. package/dist/vkcom/globalVars/waitAjax.js +1 -0
  86. package/dist/vkcom/globalVars/waitAudioPlayer.d.ts +1 -0
  87. package/dist/vkcom/globalVars/waitAudioPlayer.js +1 -0
  88. package/dist/vkcom/globalVars/waitAudioPlayerUI.d.ts +1 -0
  89. package/dist/vkcom/globalVars/waitAudioPlayerUI.js +1 -0
  90. package/dist/vkcom/globalVars/waitAudioUtils.d.ts +1 -0
  91. package/dist/vkcom/globalVars/waitAudioUtils.js +1 -0
  92. package/dist/vkcom/globalVars/waitBoxQueue.d.ts +1 -0
  93. package/dist/vkcom/globalVars/waitBoxQueue.js +1 -0
  94. package/dist/vkcom/globalVars/waitCalls.d.ts +1 -0
  95. package/dist/vkcom/globalVars/waitCalls.js +1 -0
  96. package/dist/vkcom/globalVars/waitColorScheme.d.ts +1 -0
  97. package/dist/vkcom/globalVars/waitColorScheme.js +1 -0
  98. package/dist/vkcom/globalVars/waitCur.d.ts +1 -0
  99. package/dist/vkcom/globalVars/waitCur.js +1 -0
  100. package/dist/vkcom/globalVars/waitElementTooltip.d.ts +1 -0
  101. package/dist/vkcom/globalVars/waitElementTooltip.js +1 -0
  102. package/dist/vkcom/globalVars/waitGetAudioPlayer.d.ts +1 -0
  103. package/dist/vkcom/globalVars/waitGetAudioPlayer.js +1 -0
  104. package/dist/vkcom/globalVars/waitMECommonContext.d.ts +1 -0
  105. package/dist/vkcom/globalVars/waitMECommonContext.js +1 -0
  106. package/dist/vkcom/globalVars/waitNav.d.ts +1 -0
  107. package/dist/vkcom/globalVars/waitNav.js +1 -0
  108. package/dist/vkcom/globalVars/waitPhotoview.d.ts +1 -0
  109. package/dist/vkcom/globalVars/waitPhotoview.js +1 -0
  110. package/dist/vkcom/globalVars/waitStories.d.ts +1 -0
  111. package/dist/vkcom/globalVars/waitStories.js +1 -0
  112. package/dist/vkcom/globalVars/waitTopNotifier.d.ts +1 -0
  113. package/dist/vkcom/globalVars/waitTopNotifier.js +1 -0
  114. package/dist/vkcom/globalVars/waitUIActionsMenu.d.ts +1 -0
  115. package/dist/vkcom/globalVars/waitUIActionsMenu.js +1 -0
  116. package/dist/vkcom/globalVars/waitVK.d.ts +1 -0
  117. package/dist/vkcom/globalVars/waitVK.js +1 -0
  118. package/dist/vkcom/globalVars/waitVKApi.d.ts +1 -0
  119. package/dist/vkcom/globalVars/waitVKApi.js +1 -0
  120. package/dist/vkcom/globalVars/waitVideoInitializer.d.ts +1 -0
  121. package/dist/vkcom/globalVars/waitVideoInitializer.js +1 -0
  122. package/dist/vkcom/hooks/index.d.ts +2 -0
  123. package/dist/vkcom/hooks/index.js +1 -0
  124. package/dist/vkcom/hooks/useColorScheme.d.ts +1 -0
  125. package/dist/vkcom/hooks/useColorScheme.js +1 -0
  126. package/dist/vkcom/hooks/useVKAudioPlayer.d.ts +2 -0
  127. package/dist/vkcom/hooks/useVKAudioPlayer.js +1 -0
  128. package/dist/vkcom/types.d.ts +860 -0
  129. package/package.json +103 -0
package/README.md ADDED
@@ -0,0 +1,28 @@
1
+ <h1 align="center">
2
+ <a href="https://vknext.net">
3
+ <picture>
4
+ <source media="(prefers-color-scheme: dark)" srcset="https://static.vknext.net/github/vknext-logo-dark.svg">
5
+ <img src="https://static.vknext.net/github/vknext-logo-light.svg" height="150" alt="VK Next Logo" />
6
+ </picture>
7
+ </a>
8
+ </h1>
9
+ <p align="center">
10
+ <a href="https://npmjs.com/package/@vknext/shared"><img src="https://img.shields.io/npm/v/@vknext/shared/latest.svg?maxAge=3600" alt="open latest version"></a>
11
+ </p>
12
+ <p align="center">
13
+ Набор общих функций для создания расширений ВКонтакте
14
+ </p>
15
+
16
+ ## Установка
17
+
18
+ **npm:**
19
+
20
+ ```sh
21
+ npm i @vknext/shared
22
+ ```
23
+
24
+ **yarn:**
25
+
26
+ ```sh
27
+ yarn add @vknext/shared
28
+ ```
@@ -0,0 +1,6 @@
1
+ export declare class ListenerRegistry<T> {
2
+ private _listeners;
3
+ addListener(callback: T): () => void;
4
+ removeListener(callback: T): void;
5
+ get listeners(): ReadonlyArray<T>;
6
+ }
@@ -0,0 +1 @@
1
+ class e{_listeners=new Set;addListener(e){return this._listeners.add(e),()=>this.removeListener(e)}removeListener(e){this._listeners.delete(e)}get listeners(){return[...this._listeners]}}export{e as ListenerRegistry};
@@ -0,0 +1 @@
1
+ export * from "./ListenerRegistry";
@@ -0,0 +1 @@
1
+ export{ListenerRegistry}from"./ListenerRegistry.js";
@@ -0,0 +1,9 @@
1
+ import type { ModalPageProps } from "@vkontakte/vkui";
2
+ export interface CustomModalPageProps extends Omit<ModalPageProps, "nav" | "id" | "onClose" | "onClosed" | "onOpen" | "onOpened"> {
3
+ style?: React.CSSProperties & {
4
+ [key: string]: string;
5
+ };
6
+ noClose?: boolean;
7
+ }
8
+ export type CustomModalPageEvents = Pick<ModalPageProps, "onClose" | "onClosed" | "onOpen" | "onOpened">;
9
+ export declare const CustomModalPage: ({ children, noClose, ...props }: CustomModalPageProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ import{jsx as o}from"react/jsx-runtime";import{ModalPage as e,PanelSpinner as n}from"@vkontakte/vkui";import{useId as r,Suspense as t}from"react";import{useCustomModalEvents as p}from"./CustomModalPageContext.js";const l=({children:l,noClose:s=!1,...m})=>{const{open:i,setOpen:a,onClose:c,onClosed:d,onOpen:C,onOpened:f}=p(),O=r();return o(e,{nav:O,open:i,onClose:(o,e)=>{s||(a(!1),c?.(o,e))},onClosed:d,onOpen:C,onOpened:f,...m,children:o(t,{fallback:o(n,{}),children:l})})};export{l as CustomModalPage};
@@ -0,0 +1,17 @@
1
+ import type { CustomModalPageEvents } from "./CustomModalPage";
2
+ interface CustomModalPageProviderProps extends CustomModalPageEvents {
3
+ children: React.ReactNode;
4
+ }
5
+ export declare const useCustomModalControl: () => {
6
+ closeModal: () => void;
7
+ };
8
+ export declare const useCustomModalEvents: () => {
9
+ open: boolean;
10
+ setOpen: (open: boolean) => void;
11
+ onClose: ((reason: import("@vkontakte/vkui").ModalPageCloseReason, event?: import("react").UIEvent<HTMLElement>) => void) | undefined;
12
+ onClosed: VoidFunction | undefined;
13
+ onOpen: VoidFunction | undefined;
14
+ onOpened: VoidFunction | undefined;
15
+ };
16
+ export declare const CustomModalPageProvider: ({ onClose, onClosed, onOpen, onOpened, ...props }: CustomModalPageProviderProps) => import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1 @@
1
+ import{jsx as e}from"react/jsx-runtime";import{createContext as n,useState as o,useContext as r}from"react";const t=n(null),s=()=>{const e=r(t);if(!e)throw new Error("CustomModalPageContext has not been passed in provider");return e},p=()=>{const e=s();return{closeModal:()=>e.setOpen(!1)}},l=()=>{const{onClose:e,onClosed:n,onOpen:o,onOpened:r,open:t,setOpen:p}=s();return{open:t,setOpen:p,onClose:e,onClosed:n,onOpen:o,onOpened:r}},d=({onClose:n,onClosed:r,onOpen:s,onOpened:p,...l})=>{const[d,O]=o(!0);return e(t.Provider,{value:{open:d,setOpen:O,onClose:n,onClosed:r,onOpen:s,onOpened:p},...l})};export{d as CustomModalPageProvider,p as useCustomModalControl,l as useCustomModalEvents};
@@ -0,0 +1 @@
1
+ export * from "./CustomModalPage/CustomModalPage";
@@ -0,0 +1 @@
1
+ export{CustomModalPage}from"./CustomModalPage/CustomModalPage.js";
@@ -0,0 +1 @@
1
+ export declare const getGlobalThis: () => typeof globalThis | (Window & Omit<typeof globalThis, "GM_addElement" | "GM_addStyle" | "GM_addValueChangeListener" | "GM_deleteValue" | "GM_download" | "GM_getResourceText" | "GM_getResourceURL" | "GM_getTab" | "GM_getTabs" | "GM_getValue" | "GM_info" | "GM_listValues" | "GM_log" | "GM_notification" | "GM_openInTab" | "GM_registerMenuCommand" | "GM_removeValueChangeListener" | "GM_saveTab" | "GM_setClipboard" | "GM_setValue" | "GM_unregisterMenuCommand" | "GM_xmlhttpRequest" | "GM">);
@@ -0,0 +1 @@
1
+ const n=()=>"undefined"!=typeof unsafeWindow?unsafeWindow:"undefined"!=typeof window?window:globalThis;export{n as getGlobalThis};
@@ -0,0 +1 @@
1
+ export * from "./getGlobalThis";
@@ -0,0 +1 @@
1
+ export{getGlobalThis}from"./getGlobalThis.js";
@@ -0,0 +1 @@
1
+ export * from "./utils";
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ export{DOMContentLoaded}from"./utils/DOMContentLoaded.js";export{arrayUnFlat}from"./utils/arrayUnFlat.js";export{convertBlobToUint8Array}from"./utils/convertBlobToUint8Array.js";export{createPromise}from"./utils/createPromise.js";export{delay}from"./utils/delay.js";export{getReactAttrs}from"./utils/getReactAttrs.js";export{onDocumentComplete}from"./utils/onDocumentComplete.js";export{parseSvg}from"./utils/parseSvg.js";export{waitHTMLBody}from"./utils/waitHTMLBody.js";export{waitHTMLHead}from"./utils/waitHTMLHead.js";export{waitRAF}from"./utils/waitRAF.js";export{waitRIC}from"./utils/waitRIC.js";
@@ -0,0 +1,58 @@
1
+ export declare const Ranges: Readonly<{
2
+ getAutotestGroupIdRand: () => number;
3
+ isAutotestGroup: (id: number) => boolean;
4
+ isGroupId: (id: number) => boolean;
5
+ isUserId: (id: number) => boolean;
6
+ isUserIdTransitional(id: number): boolean;
7
+ isRealOwner: (id: number) => boolean;
8
+ isAudioOwner: (id: number) => boolean;
9
+ isPlaylistOwner: (id: number) => boolean;
10
+ isOfficialPlaylist: (id: number) => boolean;
11
+ isFakeWallAudioOwner: (id: number) => boolean;
12
+ isUMA: (id: number) => boolean;
13
+ isUMAAlbumOwner: (id: number) => boolean;
14
+ getUMAAlbumOwnerByShift: (shift: number) => number;
15
+ isUMAReleaseOwner: (id: number) => boolean;
16
+ getUMAReleaseOwnerByShift: (shift: number) => number;
17
+ isEmailId: (id: number) => boolean;
18
+ isOwnerId: (id: number) => boolean;
19
+ isContactId: (id: number) => boolean;
20
+ convertContactIdToPeerId: (id: number) => number;
21
+ convertPeerIdToContactId: (id: number) => number;
22
+ isChatOrChannelPeer: (id: number) => boolean;
23
+ isChatId: (id: number) => boolean;
24
+ convertChatPeerIdToChatId: (id: number) => number;
25
+ convertChatIdToChatPeerId: (id: number) => number;
26
+ isAppDomain: (id: number) => boolean;
27
+ convertPeerIdToAppId: (id: number) => number;
28
+ convertAppIdToPeerId: (id: number) => number;
29
+ isUnauthLongId: (id: number) => boolean;
30
+ isUnauthLongIdOld: (id: number) => boolean;
31
+ isMarusyaUploadOwner: (id: number) => boolean;
32
+ getRandomMarusyaUploadOwnerId: () => number;
33
+ isFakeDocOwner: (id: number) => boolean;
34
+ getFirstFakeOwnerId: () => number;
35
+ getRandomFirstFakeOwnerId: () => number;
36
+ getRandomFakeOwnerId: () => number;
37
+ isAdsVideoOwner: (id: number) => boolean;
38
+ getRandomAdsVideoOwner: () => number;
39
+ isAdsPhotoOwner: (id: number) => boolean;
40
+ getRandomAdsPhotoOwner: () => number;
41
+ isZeroOwner: (id: number) => boolean;
42
+ convertEmailIdToEmailPeerId: (id: number) => number;
43
+ isZeroOwnerDeprecated: (id: number) => boolean;
44
+ isExternalUser: (id: number) => boolean;
45
+ isExternalUserDeprecated(id: number): boolean;
46
+ isAnonymousCallPeerId: (id: number) => boolean;
47
+ isAnonymousUserPeerId: (id: number) => boolean;
48
+ getAnonymousCallUserByShift(shift: number): number;
49
+ isValidAliExpressOrderUserId: (id: number) => boolean;
50
+ generateAliexpressOrderUserId: () => number;
51
+ isADBot: (id: number) => boolean;
52
+ getMarusiaAudioFakeId(id: number): number;
53
+ isMarusiaAudioFakeId: (id: number) => boolean;
54
+ isOwnerIdTransitional: (id: number) => boolean;
55
+ convertGroupIdToOwnerId: (id: number) => number;
56
+ convertGroupIdToOwnerIdStrict: (id: number) => number;
57
+ convertOwnerIdToGroupId: (id: number) => number;
58
+ }>;
@@ -0,0 +1 @@
1
+ import{RANGES_IDS as _}from"./RangesIds.js";const A=(_,A,O)=>A<_&&_<O,O=(_,A,O)=>A<=_&&_<=O,E=(_,A)=>_+Math.floor(Math.random()*(A-_)),U=Object.freeze({getAutotestGroupIdRand:()=>E(_.AUTOTEST_GROUP_ID_MIN,_.AUTOTEST_GROUP_ID_MAX),isAutotestGroup:A=>O(A,_.AUTOTEST_GROUP_ID_MIN,_.AUTOTEST_GROUP_ID_MAX),isGroupId:A=>A<=_.GROUPS_UPPER_BOUND&&A>_.GROUPS_LOWER_BOUND,isUserId:A=>A>=_.USERS_LOWER_BOUND&&A<_.USERS_UPPER_BOUND||A>=_.USERS_LOWER_BOUND_LONG&&A<_.USERS_UPPER_BOUND_LONG,isUserIdTransitional:O=>A(O,0,_.CONTACTS_UPPER_BOUND),isRealOwner:_=>U.isGroupId(_)||U.isUserId(_),isAudioOwner:_=>U.isRealOwner(_)||U.isUMA(_)||U.isFakeWallAudioOwner(_),isPlaylistOwner:_=>U.isRealOwner(_)||U.isUMA(_)||U.isChatOrChannelPeer(_),isOfficialPlaylist:_=>U.isUMAReleaseOwner(_)||U.isUMAAlbumOwner(_),isFakeWallAudioOwner:A=>O(A,_.AUDIO_FAKE_WALL_OWNER_MIN,_.AUDIO_FAKE_WALL_OWNER_MAX),isUMA:_=>U.isUMAReleaseOwner(_)||U.isUMAAlbumOwner(_),isUMAAlbumOwner:A=>O(A,_.AUDIO_FAKE_UMA_ALBUM_OWNER_MIN,_.AUDIO_FAKE_UMA_ALBUM_OWNER_MAX),getUMAAlbumOwnerByShift:A=>_.AUDIO_FAKE_UMA_ALBUM_OWNER_MAX-Math.abs(A%_.AUDIO_FAKE_UMA_OWNERS_COUNT),isUMAReleaseOwner:A=>O(A,_.AUDIO_FAKE_UMA_RELEASE_OWNER_MIN,_.AUDIO_FAKE_UMA_RELEASE_OWNER_MAX),getUMAReleaseOwnerByShift:A=>_.AUDIO_FAKE_UMA_RELEASE_OWNER_MAX-Math.abs(A%_.AUDIO_FAKE_UMA_OWNERS_COUNT),isEmailId:A=>A<_.EMAIL_UPPER_BOUND,isOwnerId:A=>A>=_.USERS_LOWER_BOUND?U.isUserId(A):U.isGroupId(A),isContactId:O=>A(O,_.CONTACTS_LOWER_BOUND,_.CONTACTS_UPPER_BOUND),convertContactIdToPeerId:A=>A+_.USERS_UPPER_BOUND,convertPeerIdToContactId:A=>A-_.USERS_UPPER_BOUND,isChatOrChannelPeer:A=>O(A,_.CHAT_OR_CHANNEL_LOWER_BOUND,_.CHAT_OR_CHANNEL_UPPER_BOUND),isChatId:A=>A>_.MIN_CHAT_ID&&A<=_.MAX_CHAT_ID,convertChatPeerIdToChatId:A=>A-_.CONTACTS_UPPER_BOUND,convertChatIdToChatPeerId:A=>A+_.CONTACTS_UPPER_BOUND,isAppDomain:O=>A(O,_.APP_LOWER_BOUND,_.APP_UPPER_BOUND),convertPeerIdToAppId:A=>-A+_.APP_UPPER_BOUND,convertAppIdToPeerId:A=>_.APP_UPPER_BOUND-A,isUnauthLongId:A=>O(A,_.UNAUTH_LONG_ID_MIN,_.UNAUTH_LONG_ID_MAX),isUnauthLongIdOld:A=>O(A,_.UNAUTH_LONG_ID_MIN_OLD,_.UNAUTH_LONG_ID_MAX_OLD),isMarusyaUploadOwner:A=>O(A,_.MARUSYA_UPLOAD_OWNER_MIN,_.MARUSYA_UPLOAD_OWNER_MAX),getRandomMarusyaUploadOwnerId:()=>E(_.MARUSYA_UPLOAD_OWNER_MIN,_.MARUSYA_UPLOAD_OWNER_MAX),isFakeDocOwner:A=>O(A,_.FAKE_DOC_OWNER_MIN,_.FAKE_DOC_OWNER_MAX),getFirstFakeOwnerId:()=>_.FAKE_DOC_OWNER_MIN,getRandomFirstFakeOwnerId:()=>E(_.FAKE_DOC_OWNER_MIN,_.FAKE_DOC_OWNER_MIN+64e3),getRandomFakeOwnerId:()=>_.FAKE_DOC_OWNER_MIN+(Math.floor(Date.now()/1e3)/173+E(0,999))%64e3,isAdsVideoOwner:A=>O(A,_.ADS_VIDEO_OWNER_MIN,_.ADS_VIDEO_OWNER_MAX),getRandomAdsVideoOwner:()=>E(_.ADS_VIDEO_OWNER_MIN,_.ADS_VIDEO_OWNER_MAX),isAdsPhotoOwner:A=>O(A,_.ADS_PHOTO_OWNER_MIN,_.ADS_PHOTO_OWNER_MAX),getRandomAdsPhotoOwner:()=>E(_.ADS_PHOTO_OWNER_MIN,_.ADS_PHOTO_OWNER_MAX),isZeroOwner:_=>0===_,convertEmailIdToEmailPeerId:A=>U.isEmailId(A)?-A+_.EMAIL_UPPER_BOUND:0,isZeroOwnerDeprecated:_=>!!_||U.isZeroOwner(_),isExternalUser:O=>A(O,_.EMAIL_UPPER_BOUND,_.EXTERNAL_USER_ID_OFFSET),isExternalUserDeprecated:O=>A(O,_.EMAIL_UPPER_BOUND,_.APP_DOMAIN_ID_OFFSET),isAnonymousCallPeerId:O=>A(O,_.CALLS_PEER_LOWER_BOUND,_.CALLS_PEER_UPPER_BOUND),isAnonymousUserPeerId:O=>A(O,_.ANONYMOUS_USER_PEER_ID_LOWER_BOUND,_.ANONYMOUS_USER_PEER_ID_UPPER_BOUND),getAnonymousCallUserByShift(A){const O=_.CALLS_PEER_UPPER_BOUND-_.CALLS_PEER_LOWER_BOUND,E=(A%O+O)%O;return _.CALLS_PEER_UPPER_BOUND-1-E},isValidAliExpressOrderUserId:A=>A>=_.ALIEXPRESS_USER_ID_RANGE_START&&A<=_.ALIEXPRESS_USER_ID_RANGE_START+_.ALIEXPRESS_USER_ID_RANGE_LENGTH,generateAliexpressOrderUserId:()=>E(_.ALIEXPRESS_USER_ID_RANGE_START,_.ALIEXPRESS_USER_ID_RANGE_START+_.ALIEXPRESS_USER_ID_RANGE_LENGTH),isADBot:A=>O(A,_.AD_BOT_ID_RANGE_START,_.AD_BOT_ID_RANGE_END),getMarusiaAudioFakeId(A){const O=_.MARUSIA_AUDIO_FAKE_ID_MAX-_.MARUSIA_AUDIO_FAKE_ID_MIN;return _.MARUSIA_AUDIO_FAKE_ID_MIN+A%O},isMarusiaAudioFakeId:O=>A(O,_.MARUSIA_AUDIO_FAKE_ID_MIN,_.MARUSIA_AUDIO_FAKE_ID_MAX),isOwnerIdTransitional:A=>A>_.USERS_LOWER_BOUND?U.isUserIdTransitional(A):U.isGroupId(A),convertGroupIdToOwnerId:_=>-_,convertGroupIdToOwnerIdStrict:_=>-Math.abs(_),convertOwnerIdToGroupId:_=>Math.abs(_)});export{U as Ranges};
@@ -0,0 +1,53 @@
1
+ export declare const RANGES_IDS: Readonly<{
2
+ readonly MIN_CHAT_ID: 0;
3
+ readonly MAX_CHAT_ID: 100000000;
4
+ readonly UNAUTH_LONG_ID_SUBRANGE_WITH_DEVICE_ID_SIZE: 50000000000000000;
5
+ readonly UNAUTH_LONG_ID_SUBRANGE_WITHOUT_DEVICE_ID_SIZE: number;
6
+ readonly UNAUTH_LONG_ID_MIN: 9000000000000000000;
7
+ readonly UNAUTH_LONG_ID_MAX: 9122057594037928000;
8
+ readonly MARUSYA_UPLOAD_OWNER_MIN: 593139650;
9
+ readonly MARUSYA_UPLOAD_OWNER_MAX: 593139654;
10
+ readonly UNAUTH_LONG_ID_MIN_OLD: 10000000001;
11
+ readonly UNAUTH_LONG_ID_MAX_OLD: 110000000000;
12
+ readonly FAKE_DOC_OWNER_MIN: 2000000000;
13
+ readonly FAKE_DOC_OWNER_MAX: 2000063999;
14
+ readonly ADS_VIDEO_OWNER_MIN: 16000000;
15
+ readonly ADS_VIDEO_OWNER_MAX: 16000599;
16
+ readonly ADS_PHOTO_OWNER_MIN: 16980000;
17
+ readonly ADS_PHOTO_OWNER_MAX: 16999999;
18
+ readonly AUDIO_FAKE_UMA_RELEASE_OWNER_MIN: -2002000000;
19
+ readonly AUDIO_FAKE_UMA_RELEASE_OWNER_MAX: -2001000000;
20
+ readonly AUDIO_FAKE_UMA_ALBUM_OWNER_MIN: -2000999999;
21
+ readonly AUDIO_FAKE_UMA_ALBUM_OWNER_MAX: -2000000000;
22
+ readonly AUDIO_FAKE_UMA_OWNERS_COUNT: 1000000;
23
+ readonly AUDIO_FAKE_WALL_OWNER_MIN: 2000000000;
24
+ readonly AUDIO_FAKE_WALL_OWNER_MAX: 2000512000;
25
+ readonly USERS_LOWER_BOUND: 1;
26
+ readonly USERS_UPPER_BOUND: 1900000000;
27
+ readonly USERS_LOWER_BOUND_LONG: 200000000000;
28
+ readonly USERS_UPPER_BOUND_LONG: 1000000000000;
29
+ readonly EMAIL_UPPER_BOUND: -2000000000;
30
+ readonly CONTACTS_LOWER_BOUND: 1900000001;
31
+ readonly CONTACTS_UPPER_BOUND: 2000000000;
32
+ readonly CALLS_PEER_LOWER_BOUND: -1899999999;
33
+ readonly CALLS_PEER_UPPER_BOUND: -1890000000;
34
+ readonly ANONYMOUS_USER_PEER_ID_LOWER_BOUND: 10000000001;
35
+ readonly ANONYMOUS_USER_PEER_ID_UPPER_BOUND: 110000000000;
36
+ readonly CHAT_OR_CHANNEL_LOWER_BOUND: 2000000001;
37
+ readonly CHAT_OR_CHANNEL_UPPER_BOUND: 2100000000;
38
+ readonly GROUPS_LOWER_BOUND: -1000000000;
39
+ readonly GROUPS_UPPER_BOUND: -1;
40
+ readonly APP_LOWER_BOUND: -1999999999;
41
+ readonly APP_UPPER_BOUND: -1000000000;
42
+ readonly ALIEXPRESS_USER_ID_RANGE_START: 2000000000;
43
+ readonly ALIEXPRESS_USER_ID_RANGE_LENGTH: 150;
44
+ readonly AD_BOT_ID_RANGE_START: 2000000000;
45
+ readonly AD_BOT_ID_RANGE_END: 2000064000;
46
+ readonly MARUSIA_AUDIO_FAKE_ID_MIN: 2000512001;
47
+ readonly MARUSIA_AUDIO_FAKE_ID_MAX: 2000512051;
48
+ readonly AUTOTEST_GROUP_ID_MIN: 216720807;
49
+ readonly AUTOTEST_GROUP_ID_MAX: 216820807;
50
+ readonly EXTERNAL_USER_ID_OFFSET: -1900000000;
51
+ readonly APP_DOMAIN_ID_OFFSET: -1000000000;
52
+ }>;
53
+ export type RangesIds = typeof RANGES_IDS;
@@ -0,0 +1 @@
1
+ const _=Object.freeze({MIN_CHAT_ID:0,MAX_CHAT_ID:1e8,UNAUTH_LONG_ID_SUBRANGE_WITH_DEVICE_ID_SIZE:5e16,UNAUTH_LONG_ID_SUBRANGE_WITHOUT_DEVICE_ID_SIZE:2**56-1,UNAUTH_LONG_ID_MIN:9e18,UNAUTH_LONG_ID_MAX:0x7e980f0d11490000,MARUSYA_UPLOAD_OWNER_MIN:593139650,MARUSYA_UPLOAD_OWNER_MAX:593139654,UNAUTH_LONG_ID_MIN_OLD:10000000001,UNAUTH_LONG_ID_MAX_OLD:11e10,FAKE_DOC_OWNER_MIN:2e9,FAKE_DOC_OWNER_MAX:2000063999,ADS_VIDEO_OWNER_MIN:16e6,ADS_VIDEO_OWNER_MAX:16000599,ADS_PHOTO_OWNER_MIN:1698e4,ADS_PHOTO_OWNER_MAX:16999999,AUDIO_FAKE_UMA_RELEASE_OWNER_MIN:-2002e6,AUDIO_FAKE_UMA_RELEASE_OWNER_MAX:-2001e6,AUDIO_FAKE_UMA_ALBUM_OWNER_MIN:-2000999999,AUDIO_FAKE_UMA_ALBUM_OWNER_MAX:-2e9,AUDIO_FAKE_UMA_OWNERS_COUNT:1e6,AUDIO_FAKE_WALL_OWNER_MIN:2e9,AUDIO_FAKE_WALL_OWNER_MAX:2000512e3,USERS_LOWER_BOUND:1,USERS_UPPER_BOUND:19e8,USERS_LOWER_BOUND_LONG:2e11,USERS_UPPER_BOUND_LONG:1e12,EMAIL_UPPER_BOUND:-2e9,CONTACTS_LOWER_BOUND:1900000001,CONTACTS_UPPER_BOUND:2e9,CALLS_PEER_LOWER_BOUND:-1899999999,CALLS_PEER_UPPER_BOUND:-189e7,ANONYMOUS_USER_PEER_ID_LOWER_BOUND:10000000001,ANONYMOUS_USER_PEER_ID_UPPER_BOUND:11e10,CHAT_OR_CHANNEL_LOWER_BOUND:2000000001,CHAT_OR_CHANNEL_UPPER_BOUND:21e8,GROUPS_LOWER_BOUND:-1e9,GROUPS_UPPER_BOUND:-1,APP_LOWER_BOUND:-1999999999,APP_UPPER_BOUND:-1e9,ALIEXPRESS_USER_ID_RANGE_START:2e9,ALIEXPRESS_USER_ID_RANGE_LENGTH:150,AD_BOT_ID_RANGE_START:2e9,AD_BOT_ID_RANGE_END:2000064e3,MARUSIA_AUDIO_FAKE_ID_MIN:2000512001,MARUSIA_AUDIO_FAKE_ID_MAX:2000512051,AUTOTEST_GROUP_ID_MIN:216720807,AUTOTEST_GROUP_ID_MAX:216820807,EXTERNAL_USER_ID_OFFSET:-19e8,APP_DOMAIN_ID_OFFSET:-1e9});export{_ as RANGES_IDS};
@@ -0,0 +1,3 @@
1
+ export * from "./Ranges";
2
+ export * from "./RangesIds";
3
+ export * from "./pluralFrom";
@@ -0,0 +1 @@
1
+ export{Ranges}from"./Ranges.js";export{RANGES_IDS}from"./RangesIds.js";export{pluralFrom}from"./pluralFrom.js";
@@ -0,0 +1,15 @@
1
+ type Formatted = number | string | React.JSX.Element;
2
+ type FormatObject<U extends Formatted> = {
3
+ [key: string]: U;
4
+ };
5
+ export interface LangMap {
6
+ [key: string]: string | string[];
7
+ }
8
+ export declare class Lang<T extends LangMap> {
9
+ protected isDebug: boolean;
10
+ protected decodedKeys: T;
11
+ constructor(decodedKeys: T);
12
+ use<U extends Formatted>(key: keyof T, values?: FormatObject<U> | null | number, mode?: "raw" | "decode"): string;
13
+ toggleDebug(): void;
14
+ }
15
+ export {};
@@ -0,0 +1 @@
1
+ import{pluralFrom as e}from"../pluralFrom.js";class r{isDebug=!1;decodedKeys;constructor(e){this.decodedKeys=e}use(r,t={},s="decode"){if(!r)return"...";if(this.isDebug)return r;if(!(r in this.decodedKeys))return"";let i=this.decodedKeys[r];if("raw"===s)return i;if(Array.isArray(i)&&"number"==typeof t)return e(t,i);if("string"==typeof i&&t&&"object"==typeof t)for(const[e,r]of i.matchAll(/\{(.*?)\}/g)){const s=t[r]||"";i=String(i).replace(e,s)}return i}toggleDebug(){this.isDebug=!this.isDebug}}export{r as Lang};
@@ -0,0 +1,10 @@
1
+ import { Lang, type LangMap } from "./Lang";
2
+ type Formatted = number | string | React.JSX.Element;
3
+ type FormatObject<U extends Formatted> = {
4
+ [key: string]: U;
5
+ };
6
+ export declare class LangReact<T extends LangMap> extends Lang<T> {
7
+ constructor(decodedKeys: T);
8
+ use<U extends Formatted>(key: keyof T, values?: FormatObject<U> | null | number, mode?: "raw" | "decode"): string;
9
+ }
10
+ export {};
@@ -0,0 +1 @@
1
+ import{isValidElement as r,Children as t}from"react";import{pluralFrom as e}from"../pluralFrom.js";import{Lang as o}from"./Lang.js";const i=/(\{[\d|\w]+\})/;class s extends o{constructor(r){super(r)}use(o,s={},n="decode"){if(!o)return"...";if(this.isDebug)return o;if(!(o in this.decodedKeys))return"";let u=this.decodedKeys[o];if("raw"===n)return u;if(Array.isArray(u)&&"number"==typeof s)return e(s,u);if("string"==typeof u&&s&&"object"==typeof s){let e=!1;const o=(u||"").split(i).filter((r=>!!r)).map(((o,n)=>{if(o.match(i)){const i=o.slice(1,-1);let u=s[i];return r(u)?(e=!0,t.toArray(u).map((r=>({...r,key:n.toString()})))):u}return o}));return e?o:o.join("")}return u}}export{s as LangReact};
@@ -0,0 +1,11 @@
1
+ export declare const enum LangsCodeEnum {
2
+ Russian = 0,
3
+ Ukrainian = 1,
4
+ English = 3,
5
+ German = 6,
6
+ Polish = 15,
7
+ Kazakh = 97,
8
+ Belarusian = 114,
9
+ Soviet = 777,
10
+ PortugueseBrazilian = 73
11
+ }
@@ -0,0 +1 @@
1
+ var a;!function(a){a[a.Russian=0]="Russian",a[a.Ukrainian=1]="Ukrainian",a[a.English=3]="English",a[a.German=6]="German",a[a.Polish=15]="Polish",a[a.Kazakh=97]="Kazakh",a[a.Belarusian=114]="Belarusian",a[a.Soviet=777]="Soviet",a[a.PortugueseBrazilian=73]="PortugueseBrazilian"}(a||(a={}));export{a as LangsCodeEnum};
@@ -0,0 +1,2 @@
1
+ import { LangsCodeEnum } from "./LangsCodeEnum";
2
+ export declare const getCodeLangFromNavigator: (defaultReturn?: LangsCodeEnum) => LangsCodeEnum;
@@ -0,0 +1 @@
1
+ import{LangsCodeEnum as a}from"./LangsCodeEnum.js";const n=(n=a.Russian)=>/^ru\b/.test(navigator.language)?a.Russian:/^uk\b/.test(navigator.language)?a.Ukrainian:/^en\b/.test(navigator.language)?a.English:/^de\b/.test(navigator.language)?a.German:/^pl\b/.test(navigator.language)?a.Polish:/^kk\b/.test(navigator.language)?a.Kazakh:/^be\b/.test(navigator.language)?a.Belarusian:n;export{n as getCodeLangFromNavigator};
@@ -0,0 +1,4 @@
1
+ export * from "./getCodeLangFromNavigator";
2
+ export * from "./Lang";
3
+ export * from "./LangReact";
4
+ export * from "./LangsCodeEnum";
@@ -0,0 +1 @@
1
+ export{getCodeLangFromNavigator}from"./getCodeLangFromNavigator.js";export{Lang}from"./Lang.js";export{LangReact}from"./LangReact.js";export{LangsCodeEnum}from"./LangsCodeEnum.js";
@@ -0,0 +1 @@
1
+ export declare const pluralFrom: (count: number, wordForms: string[], need_count?: boolean, need_cases?: boolean) => string;
@@ -0,0 +1 @@
1
+ const t=[2,0,1,1,1,2],n=(n,o,r=!0,i=!0)=>{const c=4<n%100&&n%100<20?2:t[Math.min(n%10,5)];return`${r?n:""} ${i&&void 0!==c?o[c]:""}`.trim()};export{n as pluralFrom};
@@ -0,0 +1 @@
1
+ export declare const DOMContentLoaded: (onload: () => unknown) => void;
@@ -0,0 +1 @@
1
+ const e=e=>{"loading"!==document.readyState?e():document.addEventListener("DOMContentLoaded",e,{once:!0})};export{e as DOMContentLoaded};
@@ -0,0 +1 @@
1
+ export declare const arrayUnFlat: <T>(src: T[], length?: number) => T[][];
@@ -0,0 +1 @@
1
+ const t=(t,e=100)=>{const n=[...t],o=[];for(;n.length;)o.push(n.splice(0,e||n.length));return o};export{t as arrayUnFlat};
@@ -0,0 +1 @@
1
+ export declare const convertBlobToUint8Array: (blob: Blob) => Promise<Uint8Array>;
@@ -0,0 +1 @@
1
+ import{createPromise as r}from"./createPromise.js";const e=e=>{const{promise:t,resolve:o,reject:n}=r(),s=new FileReader;return s.onload=r=>{if(r.target&&r.target.result instanceof ArrayBuffer){const e=r.target.result,t=new Uint8Array(e);o(t)}else n(new Error("Invalid result"))},s.onerror=r=>{n(r)},s.readAsArrayBuffer(e),t};export{e as convertBlobToUint8Array};
@@ -0,0 +1,5 @@
1
+ export declare const createPromise: <T>() => {
2
+ promise: Promise<T>;
3
+ resolve: (value: T | PromiseLike<T>) => void;
4
+ reject: (reason?: any) => void;
5
+ };
@@ -0,0 +1 @@
1
+ const e=()=>{let e,r;return{promise:new Promise(((o,t)=>{e=o,r=t})),resolve:e,reject:r}};export{e as createPromise};
@@ -0,0 +1 @@
1
+ export declare const delay: (ms: number) => Promise<void>;
@@ -0,0 +1 @@
1
+ const e=e=>new Promise((o=>setTimeout(o,e)));export{e as delay};
@@ -0,0 +1,5 @@
1
+ export declare const getReactAttrs: (element?: HTMLElement | null) => {
2
+ fiber?: any;
3
+ props?: any;
4
+ container?: any;
5
+ };
@@ -0,0 +1 @@
1
+ const t=t=>{const r={};if(!t)return r;for(const e of Object.keys(t))e.startsWith("__reactFiber")&&(r.fiber=t[e]),e.startsWith("__reactProps")&&(r.props=t[e]),e.startsWith("__reactContainer")&&(r.container=t[e]);return r};export{t as getReactAttrs};
@@ -0,0 +1,12 @@
1
+ export * from "./DOMContentLoaded";
2
+ export * from "./arrayUnFlat";
3
+ export * from "./convertBlobToUint8Array";
4
+ export * from "./createPromise";
5
+ export * from "./delay";
6
+ export * from "./getReactAttrs";
7
+ export * from "./onDocumentComplete";
8
+ export * from "./parseSvg";
9
+ export * from "./waitHTMLBody";
10
+ export * from "./waitHTMLHead";
11
+ export * from "./waitRAF";
12
+ export * from "./waitRIC";
@@ -0,0 +1 @@
1
+ export{DOMContentLoaded}from"./DOMContentLoaded.js";export{arrayUnFlat}from"./arrayUnFlat.js";export{convertBlobToUint8Array}from"./convertBlobToUint8Array.js";export{createPromise}from"./createPromise.js";export{delay}from"./delay.js";export{getReactAttrs}from"./getReactAttrs.js";export{onDocumentComplete}from"./onDocumentComplete.js";export{parseSvg}from"./parseSvg.js";export{waitHTMLBody}from"./waitHTMLBody.js";export{waitHTMLHead}from"./waitHTMLHead.js";export{waitRAF}from"./waitRAF.js";export{waitRIC}from"./waitRIC.js";
@@ -0,0 +1 @@
1
+ export declare const onDocumentComplete: (onload: () => any) => void;
@@ -0,0 +1 @@
1
+ const e=e=>{if("complete"===document.readyState)return void e();const t=()=>{"complete"===document.readyState&&(e(),document.removeEventListener("readystatechange",t))};document.addEventListener("readystatechange",t)};export{e as onDocumentComplete};
@@ -0,0 +1 @@
1
+ export declare const parseSvg: (svg: string) => HTMLElement;
@@ -0,0 +1 @@
1
+ const t=`vknext_icon_${Math.random().toString(36).substring(2,8)}`;let e=0;const o=o=>{const r=!!document.importNode;let l=(new DOMParser).parseFromString(o,"image/svg+xml").documentElement;r&&(l=document.importNode(l,!0));for(const t of l.querySelectorAll("title,desc"))t.remove();for(const o of l.querySelectorAll("[id]")){if(!o.id)continue;const r=`${t}-${e++}`;let n=!1;for(const t of l.querySelectorAll(`[fill="url(#${o.id})"]`))t.setAttribute("fill",`url(#${r})`),n=!0;n&&(o.id=r)}return l};export{o as parseSvg};
@@ -0,0 +1 @@
1
+ export declare const waitHTMLBody: (forcePromise?: boolean) => Promise<HTMLElement>;
@@ -0,0 +1 @@
1
+ import{createPromise as e}from"./createPromise.js";let o=null;const t=t=>{if(document.body)return Promise.resolve(document.body);if(o&&!t)return o;const{promise:n,resolve:r}=e();if(o=n,document.body)return r(document.body),n;const d=new MutationObserver((()=>{document.body&&(r(document.body),d.disconnect())}));return d.observe(document.documentElement,{childList:!0}),o};export{t as waitHTMLBody};
@@ -0,0 +1,9 @@
1
+ export interface HTMLHeadTaskQueueS {
2
+ _handlers: Record<string | symbol, any>;
3
+ [key: string | symbol]: any;
4
+ }
5
+ interface ExtendedHTMLHeadElement extends HTMLHeadElement {
6
+ _tqs?: HTMLHeadTaskQueueS;
7
+ }
8
+ export declare const waitHTMLHead: (forcePromise?: boolean) => Promise<ExtendedHTMLHeadElement>;
9
+ export {};
@@ -0,0 +1 @@
1
+ import{createPromise as e}from"./createPromise.js";let t=null;const o=o=>{if(document.head)return Promise.resolve(document.head);if(t&&!o)return t;const{promise:n,resolve:r}=e();if(t=n,document.head)return r(document.head),n;const d=new MutationObserver((()=>{document?.head&&(r(document.head),d.disconnect())}));return d.observe(document.documentElement,{childList:!0}),n};export{o as waitHTMLHead};
@@ -0,0 +1 @@
1
+ export declare const waitRAF: () => Promise<number>;
@@ -0,0 +1 @@
1
+ const e=()=>new Promise((e=>requestAnimationFrame(e)));export{e as waitRAF};
@@ -0,0 +1 @@
1
+ export declare const waitRIC: () => Promise<IdleDeadline>;
@@ -0,0 +1 @@
1
+ const e=()=>new Promise((e=>requestIdleCallback(e)));export{e as waitRIC};
@@ -0,0 +1,4 @@
1
+ /**
2
+ * функция, декодирующая ссылку на аудиозапись. Работает только на сайте vkcom
3
+ */
4
+ export declare const audioUnmaskSource: (t: string) => string;
@@ -0,0 +1 @@
1
+ const r=r=>{const t={v:r=>r.split("").reverse().join(""),r:(r,t)=>{r=r.split("");for(let n,i=e+e,o=r.length;o--;)~(n=i.indexOf(r[o]))&&(r[o]=i.substr(n-t,1));return r.join("")},s:(r,t)=>{const e=r.length;if(e){let n=function(r,t){const e=r.length,n=[];if(e){let r=e;for(t=Math.abs(t);r--;)t=(e*(r+1)^t+r)%e,n[r]=t}return n}(r,t),i=0;for(r=r.split("");++i<e;)r[i]=r.splice(n[e-1-i],1,r[i])[0];r=r.join("")}return r},i:(r,e)=>t.s(r,e^vk.id),x:(r,t)=>{const e=[];return t=t.charCodeAt(0),each(r.split(""),((r,n)=>{e.push(String.fromCharCode(n.charCodeAt(0)^t))})),e.join("")}},e="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=",n=r=>{if(!r||r.length%4==1)return!1;for(var t,n,i=0,o=0,s="";n=r.charAt(o++);)~(n=e.indexOf(n))&&(t=i%4?64*t+n:n,i++%4)&&(s+=String.fromCharCode(255&t>>(-2*i&6)));return s};if((!window.wbopen||!~(window.open+"").indexOf("wbopen"))&&~r.indexOf("audio_api_unavailable")){let e=r.split("?extra=")[1].split("#"),l=""===e[1]?"":n(e[1]);if(e=n(e[0]),"string"!=typeof l||!e)return r;for(var i,o,s=(l=l?l.split(String.fromCharCode(9)):[]).length;s--;){if(i=(o=l[s].split(String.fromCharCode(11))).splice(0,1,e)[0],!t[i])return r;e=t[i].apply(null,o)}if(e&&"http"===e.substr(0,4))return e}return r};export{r as audioUnmaskSource};
@@ -0,0 +1,11 @@
1
+ export interface ConvertTrackToBlobOptions {
2
+ url: string;
3
+ filename?: string;
4
+ /**
5
+ *
6
+ * @param progress значение от 0 до 1
7
+ */
8
+ onProgress?: (progress: number) => void;
9
+ forceHls?: boolean;
10
+ }
11
+ export declare const convertTrackToBlob: ({ url, filename, onProgress, forceHls }: ConvertTrackToBlobOptions) => Promise<Blob>;
@@ -0,0 +1 @@
1
+ import{createPromise as e}from"../../utils/createPromise.js";import"../../utils/parseSvg.js";import{getHlsInstance as r}from"./utils/getHlsInstance.js";import{sendMessage as o}from"./utils/sendMessage.js";const t=async({url:t,filename:s,onProgress:n,forceHls:a})=>{if(!a)try{return await o({url:t,filename:s,type:"convertHlsToMp3",onProgress:n})}catch(e){console.error(e)}const{promise:i,resolve:l,reject:c}=e(),d=await r(),u=new d,E=new Audio;let p=null;const f=[];let m,g,v=0;const R=e=>{c(e),u.stopLoad(),u.destroy()};return u.on(d.Events.MANIFEST_PARSED,((e,r)=>{const o=r.levels[0]?.details;o&&(g=o.fragments.length)})),u.on(d.Events.BUFFER_CODECS,((e,r)=>{r.audio&&"audio/mp4"!==r.audio.container||(m=r.audio)})),u.on(d.Events.BUFFER_APPENDING,((e,r)=>{p=r.data})),u.on(d.Events.ERROR,((e,r)=>{if(!["bufferFullError","fragLoadError"].includes(r.details))return r.type==d.ErrorTypes.MEDIA_ERROR&&v<2?(++v>1&&u.swapAudioCodec(),void u.recoverMediaError()):void R(e);R(e)})),u.on(d.Events.FRAG_BUFFERED,(async(e,r)=>{p&&f.push(m?p.slice(8,p.length):p),E.currentTime=r.frag.start+r.frag.duration;try{n&&n(f.length/g)}catch(e){console.error(e)}if(f.length>=g){u.stopLoad(),u.destroy();const e=new Blob(f,{type:"audio/mp3"});l(e)}})),u.loadSource(t),u.attachMedia(E),await i};export{t as convertTrackToBlob};
@@ -0,0 +1,9 @@
1
+ export interface GetTrackDetailsOptions {
2
+ url: string;
3
+ }
4
+ export interface GetTrackDetailsResult {
5
+ bitrate: number;
6
+ size: number;
7
+ duration: number;
8
+ }
9
+ export declare const getTrackDetails: ({ url }: GetTrackDetailsOptions) => Promise<GetTrackDetailsResult>;
@@ -0,0 +1 @@
1
+ import{createPromise as t}from"../../utils/createPromise.js";import"../../utils/parseSvg.js";import{getHlsInstance as r}from"./utils/getHlsInstance.js";const e=async({url:e})=>{const{promise:o,resolve:a,reject:s}=t(),i=await r(),n=new i,d=new Audio;let l,u=0,E=null;const c=t=>{s(t),n.stopLoad(),n.destroy()};return n.on(i.Events.MANIFEST_PARSED,((t,r)=>{const e=r.levels[0]?.details;e&&(l=e.totalduration)})),n.on(i.Events.BUFFER_APPENDING,((t,r)=>{E=r.data})),n.on(i.Events.FRAG_BUFFERED,((t,r)=>{if(E)return n.detachMedia(),void((t,r)=>{const e=Math.min(32*Math.round(t/4096/r),320);a({bitrate:e,size:t,duration:r})})(E.length/r.frag.duration*l,l)})),n.on(i.Events.ERROR,((t,r)=>{if(!["bufferFullError","fragLoadError"].includes(r.details))return r.type==i.ErrorTypes.MEDIA_ERROR&&u<2?(++u>1&&n.swapAudioCodec(),void n.recoverMediaError()):void c(t);c(t)})),n.loadSource(e),n.attachMedia(d),await o};export{e as getTrackDetails};
@@ -0,0 +1,4 @@
1
+ export * from "./audioUnmaskSource";
2
+ export * from "./convertTrackToBlob";
3
+ export * from "./getTrackDetails";
4
+ export * from "./utils/sendMessage";
@@ -0,0 +1 @@
1
+ export{audioUnmaskSource}from"./audioUnmaskSource.js";export{convertTrackToBlob}from"./convertTrackToBlob.js";export{getTrackDetails}from"./getTrackDetails.js";export{sendMessage}from"./utils/sendMessage.js";
@@ -0,0 +1,2 @@
1
+ import type HlsJs from "hls.js";
2
+ export declare const getHlsInstance: () => Promise<typeof HlsJs>;
@@ -0,0 +1 @@
1
+ const r=async()=>{try{return(await import("hls.js")).default}catch(r){if(globalThis?.Hls)return globalThis.Hls}throw new Error("hls.js not found")};export{r as getHlsInstance};
@@ -0,0 +1,9 @@
1
+ export interface sendMessageParams {
2
+ blob?: Blob;
3
+ url?: string;
4
+ filename?: string;
5
+ type: string;
6
+ onProgress?: (current: number, total: number) => void;
7
+ iframeURL?: string;
8
+ }
9
+ export declare const sendMessage: ({ onProgress, type, iframeURL, ...params }: sendMessageParams) => Promise<Blob>;
@@ -0,0 +1 @@
1
+ import{createPromise as e}from"../../../utils/createPromise.js";import{delay as r}from"../../../utils/delay.js";import"../../../utils/parseSvg.js";let t=null;let o=0;let n;const s=async()=>{n||(n=(async()=>{if(await r(6e4),!t)return;const e=await t;e&&(0===o&&await r(1e4),0===o&&(t=null,e.remove()))})(),n.finally((()=>{n=null})))},i=async({onProgress:r,type:n,iframeURL:i="https://vknext.net/ffmpeg",...a})=>{const{promise:l,reject:c,resolve:u}=e(),m="request-"+Math.random().toString(36).substr(2,9),d=await(r=>{if(t)return t;const{promise:o,resolve:n,reject:s}=e();t=o;const i=document.querySelector(`iframe[src="${r}"]`);if(i)return n(i),o;const a=document.createElement("iframe");return a.src=r,a.style.setProperty("display","none","important"),a.onload=()=>n(a),a.onerror=s,(document.body||document.documentElement).appendChild(a),o})(i),{Bridge:p}=await import("iframe-message-bridge"),f=new p(d.contentWindow,{prefix:"vknext-net-bridge"});return o++,f.on("progress",(e=>{const t=e;t?.requestId===m&&r?.(t.progress,t.total)})),f.on("error",(e=>{const r=e;r?.requestId===m&&(c(r?.error||"unknown error"),f.destroy(),o--,s())})),f.on("response",(e=>{const r=e;r?.requestId===m&&(u(r.response),f.destroy(),o--,s())})),f.on("getBlob",(e=>{const r=e;if(r?.requestId===m)return fetch(r.url).then((e=>e.blob()))})),f.post(n,{...a,requestId:m}),l};export{i as sendMessage};
@@ -0,0 +1,21 @@
1
+ export * from "./onAddTopNotifier";
2
+ export * from "./onAddWall";
3
+ export * from "./waitAjax";
4
+ export * from "./waitAudioPlayer";
5
+ export * from "./waitAudioPlayerUI";
6
+ export * from "./waitAudioUtils";
7
+ export * from "./waitBoxQueue";
8
+ export * from "./waitCalls";
9
+ export * from "./waitColorScheme";
10
+ export * from "./waitCur";
11
+ export * from "./waitElementTooltip";
12
+ export * from "./waitGetAudioPlayer";
13
+ export * from "./waitMECommonContext";
14
+ export * from "./waitNav";
15
+ export * from "./waitPhotoview";
16
+ export * from "./waitStories";
17
+ export * from "./waitTopNotifier";
18
+ export * from "./waitUIActionsMenu";
19
+ export * from "./waitVideoInitializer";
20
+ export * from "./waitVK";
21
+ export * from "./waitVKApi";
@@ -0,0 +1 @@
1
+ export{onAddTopNotifier}from"./onAddTopNotifier.js";export{onAddWall}from"./onAddWall.js";export{waitAjax}from"./waitAjax.js";export{waitAudioPlayer}from"./waitAudioPlayer.js";export{waitAudioPlayerUI}from"./waitAudioPlayerUI.js";export{waitAudioUtils}from"./waitAudioUtils.js";export{waitBoxQueue}from"./waitBoxQueue.js";export{waitCalls}from"./waitCalls.js";export{waitColorScheme}from"./waitColorScheme.js";export{waitCur}from"./waitCur.js";export{waitElementTooltip}from"./waitElementTooltip.js";export{waitGetAudioPlayer}from"./waitGetAudioPlayer.js";export{waitMECommonContext}from"./waitMECommonContext.js";export{waitNav}from"./waitNav.js";export{waitPhotoview}from"./waitPhotoview.js";export{waitStories}from"./waitStories.js";export{waitTopNotifier}from"./waitTopNotifier.js";export{waitUIActionsMenu}from"./waitUIActionsMenu.js";export{waitVideoInitializer}from"./waitVideoInitializer.js";export{waitVK}from"./waitVK.js";export{waitVKApi}from"./waitVKApi.js";
@@ -0,0 +1,4 @@
1
+ import type { ITopNotifier } from "../types";
2
+ type CallbackFunc = (TopNotifier: ITopNotifier) => void;
3
+ export declare const onAddTopNotifier: (callback: CallbackFunc) => () => void;
4
+ export {};
@@ -0,0 +1 @@
1
+ import{ListenerRegistry as t}from"../../common/ListenerRegistry.js";import{waitTopNotifier as e}from"./waitTopNotifier.js";const o=new t,r=async t=>{for(const e of o.listeners)e(t)};let n=!1;const i=t=>{const i=o.addListener(t);return e().then((t=>r(t))),n||(n=!0,(async()=>{let t=await e();Object.defineProperty(window,"TopNotifier",{get:()=>t,set:e=>{t=e,r(e)}})})()),i};export{i as onAddTopNotifier};
@@ -0,0 +1,4 @@
1
+ import type { IWall } from "../types";
2
+ type CallbackFunc = (wall: IWall) => void;
3
+ export declare const onAddWall: (callback: CallbackFunc) => () => void;
4
+ export {};
@@ -0,0 +1 @@
1
+ import o from"./utils/watchGlobalProperty.js";const t=t=>o("Wall",t);export{t as onAddWall};
@@ -0,0 +1,3 @@
1
+ import { type WindowVariables } from "./watchGlobalProperty";
2
+ declare const waitVariable: <T extends WindowVariables>(variable: T, _modulePath?: string) => Promise<(typeof window)[T]>;
3
+ export default waitVariable;
@@ -0,0 +1 @@
1
+ import{createPromise as r}from"../../../utils/createPromise.js";import"../../../utils/parseSvg.js";import o from"./watchGlobalProperty.js";const s=async(s,e)=>{const t=getGlobalThis()[s];if(t)return Promise.resolve(t);const{promise:i,resolve:l}=r(),a=o(s,(r=>{l(r),a()}));return i};export{s as default};
@@ -0,0 +1,3 @@
1
+ export type WindowVariables = keyof (Window & typeof globalThis);
2
+ declare const watchGlobalProperty: <T extends WindowVariables>(variable: T, callback: (value: (typeof window)[T]) => void) => () => void;
3
+ export default watchGlobalProperty;
@@ -0,0 +1 @@
1
+ import{getGlobalThis as e}from"../../../helpers/getGlobalThis.js";const t=new Map,r=(e,r)=>{const a=t.get(e);a&&a.delete(r)},a=t=>{const r=e(),{variable:l,getValue:n,setValue:o,enumerable:s}=t,u=Object.getOwnPropertyDescriptor(r,l);Object.defineProperty(r,l,{get:n,set:e=>(o(e),u?.set?.call(r,e),s||(t.enumerable=!0,a(t)),!0),configurable:!0,enumerable:s})},l=(e,l)=>{if(t.has(e)){return t.get(e).add(l),()=>r(e,l)}const n=new Set;n.add(l),t.set(e,n);let o=window[e];return o&&l(o),a({variable:e,enumerable:e in window,getValue:()=>o,setValue:e=>{o=e;for(const t of n)t(e)}}),()=>r(e,l)};export{l as default};
@@ -0,0 +1 @@
1
+ export declare const waitAjax: () => Promise<import("../types").Iajax>;