@up-im/medotvet_sdk 0.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 (250) hide show
  1. package/.cursor/rules/apcheki_sdk.mdc +90 -0
  2. package/README.md +136 -0
  3. package/dist/api/abstract.d.ts +21 -0
  4. package/dist/api/abstract.js +125 -0
  5. package/dist/api/bookmarks.d.ts +28 -0
  6. package/dist/api/bookmarks.js +121 -0
  7. package/dist/api/chat.d.ts +30 -0
  8. package/dist/api/chat.js +118 -0
  9. package/dist/api/content.d.ts +154 -0
  10. package/dist/api/content.js +237 -0
  11. package/dist/api/geoIp.d.ts +8 -0
  12. package/dist/api/geoIp.js +14 -0
  13. package/dist/api/index.d.ts +27 -0
  14. package/dist/api/index.js +31 -0
  15. package/dist/api/payment.d.ts +54 -0
  16. package/dist/api/payment.js +90 -0
  17. package/dist/api/promocode.d.ts +9 -0
  18. package/dist/api/promocode.js +22 -0
  19. package/dist/api/push.d.ts +54 -0
  20. package/dist/api/push.js +99 -0
  21. package/dist/api/receipt.d.ts +34 -0
  22. package/dist/api/receipt.js +60 -0
  23. package/dist/api/stat.d.ts +21 -0
  24. package/dist/api/stat.js +75 -0
  25. package/dist/api/survey.d.ts +82 -0
  26. package/dist/api/survey.js +122 -0
  27. package/dist/api/user.d.ts +80 -0
  28. package/dist/api/user.js +167 -0
  29. package/dist/eventBus/abstract.d.ts +4 -0
  30. package/dist/eventBus/abstract.js +29 -0
  31. package/dist/eventBus/userLogin.d.ts +5 -0
  32. package/dist/eventBus/userLogin.js +11 -0
  33. package/dist/eventBus/userLogout.d.ts +4 -0
  34. package/dist/eventBus/userLogout.js +11 -0
  35. package/dist/http/apiError.d.ts +4 -0
  36. package/dist/http/apiError.js +10 -0
  37. package/dist/http/apiRoute.d.ts +98 -0
  38. package/dist/http/apiRoute.js +197 -0
  39. package/dist/index.d.ts +2 -0
  40. package/dist/index.js +7 -0
  41. package/dist/interfaces/BannerType.d.ts +5 -0
  42. package/dist/interfaces/BannerType.js +7 -0
  43. package/dist/interfaces/apiStatEvents.d.ts +1 -0
  44. package/dist/interfaces/apiStatEvents.js +18 -0
  45. package/dist/interfaces/diplomaStatus.d.ts +8 -0
  46. package/dist/interfaces/diplomaStatus.js +9 -0
  47. package/dist/interfaces/iAppStore.d.ts +1 -0
  48. package/dist/interfaces/iAppStore.js +2 -0
  49. package/dist/interfaces/iAppVersionCheck.d.ts +5 -0
  50. package/dist/interfaces/iAppVersionCheck.js +2 -0
  51. package/dist/interfaces/iArticle.d.ts +15 -0
  52. package/dist/interfaces/iArticle.js +2 -0
  53. package/dist/interfaces/iBalance.d.ts +6 -0
  54. package/dist/interfaces/iBalance.js +2 -0
  55. package/dist/interfaces/iBank.d.ts +4 -0
  56. package/dist/interfaces/iBank.js +2 -0
  57. package/dist/interfaces/iBanner.d.ts +6 -0
  58. package/dist/interfaces/iBanner.js +2 -0
  59. package/dist/interfaces/iBookmark.d.ts +3 -0
  60. package/dist/interfaces/iBookmark.js +2 -0
  61. package/dist/interfaces/iBrand.d.ts +6 -0
  62. package/dist/interfaces/iBrand.js +2 -0
  63. package/dist/interfaces/iCatalog.d.ts +50 -0
  64. package/dist/interfaces/iCatalog.js +2 -0
  65. package/dist/interfaces/iCatalogNode.d.ts +3 -0
  66. package/dist/interfaces/iCatalogNode.js +2 -0
  67. package/dist/interfaces/iCatalogPreview.d.ts +17 -0
  68. package/dist/interfaces/iCatalogPreview.js +2 -0
  69. package/dist/interfaces/iCity.d.ts +4 -0
  70. package/dist/interfaces/iCity.js +2 -0
  71. package/dist/interfaces/iContentItem.d.ts +7 -0
  72. package/dist/interfaces/iContentItem.js +2 -0
  73. package/dist/interfaces/iEnv.d.ts +6 -0
  74. package/dist/interfaces/iEnv.js +2 -0
  75. package/dist/interfaces/iFilter.d.ts +11 -0
  76. package/dist/interfaces/iFilter.js +2 -0
  77. package/dist/interfaces/iGetNodeListProps.d.ts +8 -0
  78. package/dist/interfaces/iGetNodeListProps.js +2 -0
  79. package/dist/interfaces/iInstruction.d.ts +6 -0
  80. package/dist/interfaces/iInstruction.js +2 -0
  81. package/dist/interfaces/iIntro.d.ts +6 -0
  82. package/dist/interfaces/iIntro.js +2 -0
  83. package/dist/interfaces/iMessage.d.ts +25 -0
  84. package/dist/interfaces/iMessage.js +2 -0
  85. package/dist/interfaces/iNode.d.ts +26 -0
  86. package/dist/interfaces/iNode.js +2 -0
  87. package/dist/interfaces/iNodeTree.d.ts +14 -0
  88. package/dist/interfaces/iNodeTree.js +2 -0
  89. package/dist/interfaces/iPagingItems.d.ts +9 -0
  90. package/dist/interfaces/iPagingItems.js +2 -0
  91. package/dist/interfaces/iPayment.d.ts +20 -0
  92. package/dist/interfaces/iPayment.js +2 -0
  93. package/dist/interfaces/iPush.d.ts +14 -0
  94. package/dist/interfaces/iPush.js +2 -0
  95. package/dist/interfaces/iQuestion.d.ts +7 -0
  96. package/dist/interfaces/iQuestion.js +2 -0
  97. package/dist/interfaces/iReceipt.d.ts +20 -0
  98. package/dist/interfaces/iReceipt.js +2 -0
  99. package/dist/interfaces/iReceiptAddProps.d.ts +8 -0
  100. package/dist/interfaces/iReceiptAddProps.js +2 -0
  101. package/dist/interfaces/iReceiptProduct.d.ts +7 -0
  102. package/dist/interfaces/iReceiptProduct.js +2 -0
  103. package/dist/interfaces/iSearchParams.d.ts +11 -0
  104. package/dist/interfaces/iSearchParams.js +2 -0
  105. package/dist/interfaces/iShop.d.ts +6 -0
  106. package/dist/interfaces/iShop.js +2 -0
  107. package/dist/interfaces/iShopAddress.d.ts +5 -0
  108. package/dist/interfaces/iShopAddress.js +2 -0
  109. package/dist/interfaces/iSorter.d.ts +7 -0
  110. package/dist/interfaces/iSorter.js +2 -0
  111. package/dist/interfaces/iSpecialization.d.ts +4 -0
  112. package/dist/interfaces/iSpecialization.js +2 -0
  113. package/dist/interfaces/iStatView.d.ts +4 -0
  114. package/dist/interfaces/iStatView.js +2 -0
  115. package/dist/interfaces/iStorage.d.ts +5 -0
  116. package/dist/interfaces/iStorage.js +2 -0
  117. package/dist/interfaces/iStories.d.ts +13 -0
  118. package/dist/interfaces/iStories.js +2 -0
  119. package/dist/interfaces/iSubstance.d.ts +4 -0
  120. package/dist/interfaces/iSubstance.js +2 -0
  121. package/dist/interfaces/iSurvey.d.ts +36 -0
  122. package/dist/interfaces/iSurvey.js +2 -0
  123. package/dist/interfaces/iSurveyQuestion.d.ts +11 -0
  124. package/dist/interfaces/iSurveyQuestion.js +2 -0
  125. package/dist/interfaces/iSymptoms.d.ts +4 -0
  126. package/dist/interfaces/iSymptoms.js +2 -0
  127. package/dist/interfaces/iTestQuestion.d.ts +20 -0
  128. package/dist/interfaces/iTestQuestion.js +2 -0
  129. package/dist/interfaces/iTestResult.d.ts +17 -0
  130. package/dist/interfaces/iTestResult.js +2 -0
  131. package/dist/interfaces/iText.d.ts +3 -0
  132. package/dist/interfaces/iText.js +2 -0
  133. package/dist/interfaces/iUser.d.ts +35 -0
  134. package/dist/interfaces/iUser.js +2 -0
  135. package/dist/interfaces/iUserData.d.ts +10 -0
  136. package/dist/interfaces/iUserData.js +2 -0
  137. package/dist/interfaces/iUserEditProps.d.ts +20 -0
  138. package/dist/interfaces/iUserEditProps.js +2 -0
  139. package/dist/interfaces/iUserStat.d.ts +7 -0
  140. package/dist/interfaces/iUserStat.js +2 -0
  141. package/dist/interfaces/iUserSurvey.d.ts +21 -0
  142. package/dist/interfaces/iUserSurvey.js +11 -0
  143. package/dist/interfaces/iUserTokens.d.ts +4 -0
  144. package/dist/interfaces/iUserTokens.js +2 -0
  145. package/dist/interfaces/intRange.d.ts +3 -0
  146. package/dist/interfaces/intRange.js +2 -0
  147. package/dist/interfaces/itemType.d.ts +9 -0
  148. package/dist/interfaces/itemType.js +11 -0
  149. package/dist/interfaces/paymentStatus.d.ts +7 -0
  150. package/dist/interfaces/paymentStatus.js +9 -0
  151. package/dist/interfaces/paymentType.d.ts +5 -0
  152. package/dist/interfaces/paymentType.js +7 -0
  153. package/dist/interfaces/payoutType.d.ts +5 -0
  154. package/dist/interfaces/payoutType.js +7 -0
  155. package/dist/interfaces/pushStatus.d.ts +6 -0
  156. package/dist/interfaces/pushStatus.js +8 -0
  157. package/dist/interfaces/receiptStatus.d.ts +7 -0
  158. package/dist/interfaces/receiptStatus.js +9 -0
  159. package/dist/interfaces/testStatus.d.ts +6 -0
  160. package/dist/interfaces/testStatus.js +7 -0
  161. package/dist/interfaces/userRole.d.ts +6 -0
  162. package/dist/interfaces/userRole.js +14 -0
  163. package/dist/interfaces/userStatEvent.d.ts +5 -0
  164. package/dist/interfaces/userStatEvent.js +7 -0
  165. package/dist/interfaces/viewEventType.d.ts +13 -0
  166. package/dist/interfaces/viewEventType.js +19 -0
  167. package/dist/service/webSocketClient.d.ts +21 -0
  168. package/dist/service/webSocketClient.js +87 -0
  169. package/dist/storage/default.d.ts +2 -0
  170. package/dist/storage/default.js +8 -0
  171. package/dist/storage/user.d.ts +21 -0
  172. package/dist/storage/user.js +107 -0
  173. package/dist/utils/queryString.d.ts +3 -0
  174. package/dist/utils/queryString.js +21 -0
  175. package/package.json +31 -0
  176. package/src/api/abstract.ts +136 -0
  177. package/src/api/bookmarks.ts +109 -0
  178. package/src/api/chat.ts +127 -0
  179. package/src/api/content.ts +258 -0
  180. package/src/api/geoIp.ts +12 -0
  181. package/src/api/index.ts +38 -0
  182. package/src/api/payment.ts +105 -0
  183. package/src/api/promocode.ts +18 -0
  184. package/src/api/push.ts +102 -0
  185. package/src/api/stat.ts +74 -0
  186. package/src/api/survey.ts +164 -0
  187. package/src/api/user.ts +176 -0
  188. package/src/eventBus/abstract.ts +33 -0
  189. package/src/eventBus/userLogin.ts +13 -0
  190. package/src/eventBus/userLogout.ts +12 -0
  191. package/src/http/apiError.ts +9 -0
  192. package/src/http/apiRoute.ts +234 -0
  193. package/src/index.ts +2 -0
  194. package/src/interfaces/BannerType.ts +6 -0
  195. package/src/interfaces/apiStatEvents.ts +18 -0
  196. package/src/interfaces/diplomaStatus.ts +10 -0
  197. package/src/interfaces/iAppStore.ts +1 -0
  198. package/src/interfaces/iArticle.ts +12 -0
  199. package/src/interfaces/iBalance.ts +6 -0
  200. package/src/interfaces/iBank.ts +4 -0
  201. package/src/interfaces/iBanner.ts +6 -0
  202. package/src/interfaces/iBookmark.ts +3 -0
  203. package/src/interfaces/iCity.ts +4 -0
  204. package/src/interfaces/iContentItem.ts +6 -0
  205. package/src/interfaces/iEnv.ts +6 -0
  206. package/src/interfaces/iFilter.ts +16 -0
  207. package/src/interfaces/iGetNodeListProps.ts +9 -0
  208. package/src/interfaces/iInstruction.ts +6 -0
  209. package/src/interfaces/iIntro.ts +6 -0
  210. package/src/interfaces/iMessage.ts +25 -0
  211. package/src/interfaces/iNode.ts +24 -0
  212. package/src/interfaces/iNodeTree.ts +14 -0
  213. package/src/interfaces/iPagingItems.ts +8 -0
  214. package/src/interfaces/iPayment.ts +28 -0
  215. package/src/interfaces/iPush.ts +15 -0
  216. package/src/interfaces/iQuestion.ts +4 -0
  217. package/src/interfaces/iSearchParams.ts +12 -0
  218. package/src/interfaces/iSorter.ts +10 -0
  219. package/src/interfaces/iSpecialization.ts +4 -0
  220. package/src/interfaces/iStatView.ts +4 -0
  221. package/src/interfaces/iStorage.ts +5 -0
  222. package/src/interfaces/iStories.ts +10 -0
  223. package/src/interfaces/iSubstance.ts +4 -0
  224. package/src/interfaces/iSurvey.ts +38 -0
  225. package/src/interfaces/iSurveyQuestion.ts +15 -0
  226. package/src/interfaces/iSymptoms.ts +4 -0
  227. package/src/interfaces/iTestQuestion.ts +21 -0
  228. package/src/interfaces/iTestResult.ts +20 -0
  229. package/src/interfaces/iText.ts +3 -0
  230. package/src/interfaces/iUser.ts +37 -0
  231. package/src/interfaces/iUserData.ts +10 -0
  232. package/src/interfaces/iUserEditProps.ts +16 -0
  233. package/src/interfaces/iUserStat.ts +8 -0
  234. package/src/interfaces/iUserSurvey.ts +23 -0
  235. package/src/interfaces/iUserTokens.ts +4 -0
  236. package/src/interfaces/intRange.ts +5 -0
  237. package/src/interfaces/itemType.ts +10 -0
  238. package/src/interfaces/paymentStatus.ts +8 -0
  239. package/src/interfaces/paymentType.ts +6 -0
  240. package/src/interfaces/payoutType.ts +6 -0
  241. package/src/interfaces/pushStatus.ts +7 -0
  242. package/src/interfaces/testStatus.ts +8 -0
  243. package/src/interfaces/userRole.ts +13 -0
  244. package/src/interfaces/userStatEvent.ts +6 -0
  245. package/src/interfaces/viewEventType.ts +17 -0
  246. package/src/service/webSocketClient.ts +94 -0
  247. package/src/storage/default.ts +7 -0
  248. package/src/storage/user.ts +109 -0
  249. package/src/utils/queryString.ts +22 -0
  250. package/tsconfig.json +27 -0
@@ -0,0 +1,54 @@
1
+ import { ApiAbstract } from "./abstract";
2
+ import { iPagingItems } from "../interfaces/iPagingItems";
3
+ import { iPush } from "../interfaces/iPush";
4
+ import { iFilter } from "../interfaces/iFilter";
5
+ import { iAppStore } from "../interfaces/iAppStore";
6
+ export declare class ApiPush extends ApiAbstract {
7
+ /**
8
+ * список пушей
9
+ * * @param {number} page - отсчет страниц с первой, чтобы не было путаницы
10
+ */
11
+ getList<Keys extends keyof iPush>({ page, filters, select, }: {
12
+ page: number;
13
+ filters?: iFilter<iPush>;
14
+ select: Keys[];
15
+ }): Promise<iPagingItems<Pick<iPush, Keys>, {
16
+ [key: string]: unknown;
17
+ } | undefined>>;
18
+ /**
19
+ * количество непрочитанных пушей
20
+ */
21
+ countNew(): Promise<{
22
+ totalItems: number;
23
+ }>;
24
+ /**
25
+ * Пометить пуш просмотренным
26
+ * * @param {number} props.pushId - id пуша
27
+ */
28
+ view({ pushId }: {
29
+ pushId: number;
30
+ }): Promise<void>;
31
+ /**
32
+ * Пометить все пуши просмотренными
33
+ */
34
+ viewAll(): Promise<void>;
35
+ /**
36
+ * добавления токена для пуш уведомления
37
+ * * @param {number} props.token - сумма выплаты
38
+ * * @param {number} props.appStore - магазин приложений
39
+ */
40
+ register(props: {
41
+ token: string;
42
+ appStore: iAppStore;
43
+ }): Promise<void>;
44
+ /**
45
+ * отписка от пуш уведомлений
46
+ */
47
+ unsubscribe(): Promise<void>;
48
+ /**
49
+ * статус подписки на пуш уведомления
50
+ */
51
+ isSubscribed(): Promise<{
52
+ subscribed: boolean;
53
+ }>;
54
+ }
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiPush = void 0;
4
+ const abstract_1 = require("./abstract");
5
+ const apiRoute_1 = require("../http/apiRoute");
6
+ const apiError_1 = require("../http/apiError");
7
+ class ApiPush extends abstract_1.ApiAbstract {
8
+ /**
9
+ * список пушей
10
+ * * @param {number} page - отсчет страниц с первой, чтобы не было путаницы
11
+ */
12
+ async getList({ page = 1, filters, select, }) {
13
+ if (!await this.userStorage.isAuth())
14
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
15
+ return await this.fetcher({
16
+ route: (0, apiRoute_1.apiRoutePushList)({
17
+ page,
18
+ filters,
19
+ sorters: ["id desc"],
20
+ select
21
+ }),
22
+ options: { addToken: true }
23
+ });
24
+ }
25
+ /**
26
+ * количество непрочитанных пушей
27
+ */
28
+ async countNew() {
29
+ if (!await this.userStorage.isAuth())
30
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
31
+ return await this.fetcher({
32
+ route: apiRoute_1.apiRoutePushCountNew,
33
+ options: { addToken: true }
34
+ });
35
+ }
36
+ /**
37
+ * Пометить пуш просмотренным
38
+ * * @param {number} props.pushId - id пуша
39
+ */
40
+ async view({ pushId }) {
41
+ if (!await this.userStorage.isAuth())
42
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
43
+ await this.fetcher({
44
+ route: apiRoute_1.apiRoutePushView,
45
+ postBody: { id: pushId },
46
+ options: { addToken: true }
47
+ });
48
+ }
49
+ /**
50
+ * Пометить все пуши просмотренными
51
+ */
52
+ async viewAll() {
53
+ if (!await this.userStorage.isAuth())
54
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
55
+ await this.fetcher({
56
+ route: apiRoute_1.apiRoutePushViewAll,
57
+ postBody: { view: true },
58
+ options: { addToken: true }
59
+ });
60
+ }
61
+ /**
62
+ * добавления токена для пуш уведомления
63
+ * * @param {number} props.token - сумма выплаты
64
+ * * @param {number} props.appStore - магазин приложений
65
+ */
66
+ async register(props) {
67
+ if (!await this.userStorage.isAuth())
68
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
69
+ await this.fetcher({
70
+ route: apiRoute_1.apiRoutePushRegister,
71
+ postBody: props,
72
+ options: { addToken: true }
73
+ });
74
+ }
75
+ /**
76
+ * отписка от пуш уведомлений
77
+ */
78
+ async unsubscribe() {
79
+ if (!await this.userStorage.isAuth())
80
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
81
+ await this.fetcher({
82
+ route: apiRoute_1.apiRoutePushUnsubscribe,
83
+ postBody: { unsubscribe: 1 },
84
+ options: { addToken: true }
85
+ });
86
+ }
87
+ /**
88
+ * статус подписки на пуш уведомления
89
+ */
90
+ async isSubscribed() {
91
+ if (!await this.userStorage.isAuth())
92
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
93
+ return await this.fetcher({
94
+ route: apiRoute_1.apiRoutePushIsSubscribed,
95
+ options: { addToken: true }
96
+ });
97
+ }
98
+ }
99
+ exports.ApiPush = ApiPush;
@@ -0,0 +1,34 @@
1
+ import { ApiAbstract } from "./abstract";
2
+ import { iReceiptAddProps } from "../interfaces/iReceiptAddProps";
3
+ import { iReceipt } from "../interfaces/iReceipt";
4
+ import { iPagingItems } from "../interfaces/iPagingItems";
5
+ export declare class ApiReceipt extends ApiAbstract {
6
+ /**
7
+ * регистрация чека
8
+ * @param {number} props.fn: ФД
9
+ * @param {number} props.fd: ФД
10
+ * @param {number} props.fp: ФП
11
+ * @param {number} props.sum: Сумма чека
12
+ * @param {keyof iReceipt} props.t Дата в формате 20240715T1322 (как в QR коде)
13
+ * @param {AbortSignal} signal
14
+ */
15
+ add(props: iReceiptAddProps, signal: AbortSignal | null | undefined): Promise<iReceipt>;
16
+ /**
17
+ * список чеков
18
+ * @param {number} props.page - страница, отсчет с первой, чтобы не было путаницы
19
+ * @param {keyof iReceipt} props.select - выбор полей ответа
20
+ */
21
+ getList<Keys extends keyof Omit<iReceipt, "products">>({ page, select, }: {
22
+ page: number;
23
+ select: Keys[];
24
+ }): Promise<iPagingItems<Pick<Omit<iReceipt, "products">, Keys>, {
25
+ [key: string]: unknown;
26
+ } | undefined>>;
27
+ /**
28
+ * один чек с товарами внутри
29
+ * * @param {number} id - id чека
30
+ */
31
+ getOne({ id }: {
32
+ id: number;
33
+ }): Promise<iReceipt>;
34
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiReceipt = void 0;
4
+ const abstract_1 = require("./abstract");
5
+ const apiRoute_1 = require("../http/apiRoute");
6
+ const apiError_1 = require("../http/apiError");
7
+ class ApiReceipt extends abstract_1.ApiAbstract {
8
+ /**
9
+ * регистрация чека
10
+ * @param {number} props.fn: ФД
11
+ * @param {number} props.fd: ФД
12
+ * @param {number} props.fp: ФП
13
+ * @param {number} props.sum: Сумма чека
14
+ * @param {keyof iReceipt} props.t Дата в формате 20240715T1322 (как в QR коде)
15
+ * @param {AbortSignal} signal
16
+ */
17
+ async add(props, signal) {
18
+ if (!await this.userStorage.isAuth())
19
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
20
+ const data = await this.fetcher({
21
+ route: apiRoute_1.apiRouteReceiptAdd,
22
+ postBody: props,
23
+ options: {
24
+ addToken: true,
25
+ signal
26
+ }
27
+ });
28
+ return data.receipt;
29
+ }
30
+ /**
31
+ * список чеков
32
+ * @param {number} props.page - страница, отсчет с первой, чтобы не было путаницы
33
+ * @param {keyof iReceipt} props.select - выбор полей ответа
34
+ */
35
+ async getList({ page = 1, select, }) {
36
+ if (!await this.userStorage.isAuth())
37
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
38
+ return await this.fetcher({
39
+ route: (0, apiRoute_1.apiRouteReceiptList)({
40
+ page,
41
+ sorters: ["id desc"],
42
+ select: select?.filter(it => it != "payments" && it != "cashback_sum")
43
+ }),
44
+ options: { addToken: true }
45
+ });
46
+ }
47
+ /**
48
+ * один чек с товарами внутри
49
+ * * @param {number} id - id чека
50
+ */
51
+ async getOne({ id }) {
52
+ if (!await this.userStorage.isAuth())
53
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
54
+ return (await this.fetcher({
55
+ route: (0, apiRoute_1.apiRouteReceiptItem)(id),
56
+ options: { addToken: true }
57
+ })).item;
58
+ }
59
+ }
60
+ exports.ApiReceipt = ApiReceipt;
@@ -0,0 +1,21 @@
1
+ import { ApiAbstract } from "./abstract";
2
+ import { iUserStat } from "../interfaces/iUserStat";
3
+ import { apiStatEvents } from "../interfaces/apiStatEvents";
4
+ export declare class ApiStat extends ApiAbstract {
5
+ /**
6
+ * добавление события открытия товара, бренда, статьи
7
+ * @param {number} props.itemId - id элемента
8
+ * @param {AddViewEvent} props.event - тип события
9
+ */
10
+ add({ itemId, event, }: {
11
+ itemId: number;
12
+ event: typeof apiStatEvents[number];
13
+ }): Promise<void>;
14
+ /**
15
+ * получения события просмотра презентации или прохождения квиза
16
+ * @param {number} props.sku - массив id акции (не товара) до 50 элементов.
17
+ */
18
+ getEvent(props: {
19
+ sku: number[];
20
+ }): Promise<iUserStat[]>;
21
+ }
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiStat = void 0;
4
+ const abstract_1 = require("./abstract");
5
+ const apiRoute_1 = require("../http/apiRoute");
6
+ const userStatEvent_1 = require("../interfaces/userStatEvent");
7
+ const apiError_1 = require("../http/apiError");
8
+ const itemType_1 = require("../interfaces/itemType");
9
+ const viewEventType_1 = require("../interfaces/viewEventType");
10
+ const apiStatEvents_1 = require("../interfaces/apiStatEvents");
11
+ class ApiStat extends abstract_1.ApiAbstract {
12
+ /**
13
+ * добавление события открытия товара, бренда, статьи
14
+ * @param {number} props.itemId - id элемента
15
+ * @param {AddViewEvent} props.event - тип события
16
+ */
17
+ async add({ itemId, event, }) {
18
+ if (typeof itemId != "number" || itemId <= 0)
19
+ throw new apiError_1.ApiError(400, "ApiStat не корректный id элемента");
20
+ if (!apiStatEvents_1.apiStatEvents.includes(event))
21
+ throw new apiError_1.ApiError(400, "ApiStat Не правильный тип статистики");
22
+ const itemType = itemType_1.ItemType[event.split("/")[0]];
23
+ const eventType = viewEventType_1.ViewEventType[event.split("/")[1]];
24
+ if (!itemType)
25
+ throw new apiError_1.ApiError(400, `ApiStat Не верный тип элемента ${event.split("/")[0]} - ${itemType}`);
26
+ if (!eventType)
27
+ throw new apiError_1.ApiError(400, `ApiStat Не верный тип события ${event.split("/")[1]} - ${eventType}`);
28
+ //повышаем кэшбек - просмотр презентации
29
+ if (itemType == itemType_1.ItemType.CATALOG_SKU && eventType == viewEventType_1.ViewEventType.PRESENTATION_SUCCESS) {
30
+ await this.fetcher({
31
+ route: apiRoute_1.apiRouteStatAdd,
32
+ postBody: {
33
+ sku: itemId,
34
+ event: userStatEvent_1.UserStatEvent.presentation
35
+ },
36
+ options: { addToken: true }
37
+ });
38
+ }
39
+ //повышаем кэшбек - квиз
40
+ if (itemType == itemType_1.ItemType.CATALOG_SKU && eventType == viewEventType_1.ViewEventType.QUESTIONS_SUCCESS) {
41
+ await this.fetcher({
42
+ route: apiRoute_1.apiRouteStatAdd,
43
+ postBody: {
44
+ sku: itemId,
45
+ event: userStatEvent_1.UserStatEvent.quiz
46
+ },
47
+ options: { addToken: true }
48
+ });
49
+ }
50
+ await this.fetcher({
51
+ route: apiRoute_1.apiRouteViewAdd,
52
+ postBody: {
53
+ itemType,
54
+ itemId,
55
+ eventType
56
+ },
57
+ options: { addToken: true }
58
+ });
59
+ }
60
+ /**
61
+ * получения события просмотра презентации или прохождения квиза
62
+ * @param {number} props.sku - массив id акции (не товара) до 50 элементов.
63
+ */
64
+ async getEvent(props) {
65
+ if (!await this.userStorage.isAuth())
66
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
67
+ const data = await this.fetcher({
68
+ route: apiRoute_1.apiRouteStatGet,
69
+ postBody: props,
70
+ options: { addToken: true }
71
+ });
72
+ return data.items;
73
+ }
74
+ }
75
+ exports.ApiStat = ApiStat;
@@ -0,0 +1,82 @@
1
+ import { ApiAbstract } from "./abstract";
2
+ import { iSurvey } from "../interfaces/iSurvey";
3
+ import { iUserSurvey } from "../interfaces/iUserSurvey";
4
+ import { iPagingItems } from "../interfaces/iPagingItems";
5
+ export declare class ApiSurvey extends ApiAbstract {
6
+ /**
7
+ * Получить список доступных опросов
8
+ * @param {number} page - номер страницы (с 1)
9
+ * @param {keyof iSurvey} select - выбор полей ответа
10
+ * @param {boolean} bookmarks - только избранные опросы
11
+ */
12
+ getList<Keys extends keyof iSurvey>({ page, select, bookmarks, }: {
13
+ page: number;
14
+ select?: Keys[];
15
+ bookmarks?: boolean;
16
+ }): Promise<iPagingItems<Pick<iSurvey, Keys>, {
17
+ [key: string]: unknown;
18
+ } | undefined>>;
19
+ /**
20
+ * Получить список избранных опросов
21
+ * @param {number} page - номер страницы (с 1)
22
+ * @param {keyof iSurvey} select - выбор полей ответа
23
+ */
24
+ getBookmarks<Keys extends keyof iSurvey>({ page, select, }: {
25
+ page: number;
26
+ select?: Keys[];
27
+ }): Promise<iPagingItems<Pick<iSurvey, Keys>, {
28
+ [key: string]: unknown;
29
+ } | undefined>>;
30
+ /**
31
+ * Получить один опрос с вопросами
32
+ * @param {number} id - id опроса
33
+ */
34
+ getOne({ id }: {
35
+ id: number;
36
+ }): Promise<iSurvey>;
37
+ /**
38
+ * Начать прохождение опроса
39
+ * @param {number} surveyId - id опроса
40
+ * @param {AbortSignal} signal
41
+ */
42
+ start(surveyId: number, signal?: AbortSignal | null): Promise<{
43
+ success: boolean;
44
+ userSurvey: iUserSurvey;
45
+ }>;
46
+ /**
47
+ * Сохранить ответ на вопрос
48
+ * @param {number} userSurveyId - id прохождения опроса
49
+ * @param {number} questionIndex - индекс вопроса
50
+ * @param {number | number[] | string} answer - ответ (для single: number, для multiple: number[], для text: string)
51
+ * @param {AbortSignal} signal
52
+ */
53
+ saveAnswer({ userSurveyId, questionIndex, answer, signal }: {
54
+ userSurveyId: number;
55
+ questionIndex: number;
56
+ answer: number | number[] | string;
57
+ signal?: AbortSignal | null;
58
+ }): Promise<{
59
+ success: boolean;
60
+ completed: boolean;
61
+ next_question_index: number | null;
62
+ message: string;
63
+ }>;
64
+ /**
65
+ * Отменить прохождение опроса
66
+ * @param {number} userSurveyId - id прохождения опроса
67
+ * @param {AbortSignal} signal
68
+ */
69
+ cancel(userSurveyId: number, signal?: AbortSignal | null): Promise<{
70
+ success: boolean;
71
+ message: string;
72
+ }>;
73
+ /**
74
+ * Получить историю прохождений опросов пользователя
75
+ * @param {number} page - номер страницы (с 1)
76
+ */
77
+ getHistory({ page }?: {
78
+ page?: number;
79
+ }): Promise<iPagingItems<iUserSurvey, {
80
+ [key: string]: unknown;
81
+ } | undefined>>;
82
+ }
@@ -0,0 +1,122 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ApiSurvey = void 0;
4
+ const abstract_1 = require("./abstract");
5
+ const apiError_1 = require("../http/apiError");
6
+ const apiRoute_1 = require("../http/apiRoute");
7
+ class ApiSurvey extends abstract_1.ApiAbstract {
8
+ /**
9
+ * Получить список доступных опросов
10
+ * @param {number} page - номер страницы (с 1)
11
+ * @param {keyof iSurvey} select - выбор полей ответа
12
+ * @param {boolean} bookmarks - только избранные опросы
13
+ */
14
+ async getList({ page = 1, select, bookmarks, }) {
15
+ return await this.fetcher({
16
+ route: (0, apiRoute_1.apiRouteSurveyList)({
17
+ page,
18
+ sorters: ["priority asc", "id desc"],
19
+ select,
20
+ bookmarks
21
+ }),
22
+ options: { addToken: true }
23
+ });
24
+ }
25
+ /**
26
+ * Получить список избранных опросов
27
+ * @param {number} page - номер страницы (с 1)
28
+ * @param {keyof iSurvey} select - выбор полей ответа
29
+ */
30
+ async getBookmarks({ page = 1, select, }) {
31
+ if (!await this.userStorage.isAuth())
32
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
33
+ return await this.fetcher({
34
+ route: (0, apiRoute_1.apiRouteSurveyList)({
35
+ page,
36
+ sorters: ["priority desc", "id desc"],
37
+ select,
38
+ bookmarks: true
39
+ }),
40
+ options: { addToken: true }
41
+ });
42
+ }
43
+ /**
44
+ * Получить один опрос с вопросами
45
+ * @param {number} id - id опроса
46
+ */
47
+ async getOne({ id }) {
48
+ return (await this.fetcher({
49
+ route: (0, apiRoute_1.apiRouteSurveyItem)(id),
50
+ options: { addToken: true }
51
+ })).item;
52
+ }
53
+ /**
54
+ * Начать прохождение опроса
55
+ * @param {number} surveyId - id опроса
56
+ * @param {AbortSignal} signal
57
+ */
58
+ async start(surveyId, signal) {
59
+ if (!await this.userStorage.isAuth())
60
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
61
+ return await this.fetcher({
62
+ route: (0, apiRoute_1.apiRouteSurveyStart)(surveyId),
63
+ postBody: {},
64
+ options: {
65
+ addToken: true,
66
+ signal
67
+ }
68
+ });
69
+ }
70
+ /**
71
+ * Сохранить ответ на вопрос
72
+ * @param {number} userSurveyId - id прохождения опроса
73
+ * @param {number} questionIndex - индекс вопроса
74
+ * @param {number | number[] | string} answer - ответ (для single: number, для multiple: number[], для text: string)
75
+ * @param {AbortSignal} signal
76
+ */
77
+ async saveAnswer({ userSurveyId, questionIndex, answer, signal }) {
78
+ if (!await this.userStorage.isAuth())
79
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
80
+ return await this.fetcher({
81
+ route: (0, apiRoute_1.apiRouteSurveySaveAnswer)(userSurveyId),
82
+ postBody: {
83
+ question_index: questionIndex,
84
+ answer
85
+ },
86
+ options: {
87
+ addToken: true,
88
+ signal
89
+ }
90
+ });
91
+ }
92
+ /**
93
+ * Отменить прохождение опроса
94
+ * @param {number} userSurveyId - id прохождения опроса
95
+ * @param {AbortSignal} signal
96
+ */
97
+ async cancel(userSurveyId, signal) {
98
+ if (!await this.userStorage.isAuth())
99
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
100
+ return await this.fetcher({
101
+ route: (0, apiRoute_1.apiRouteSurveyCancel)(userSurveyId),
102
+ postBody: {},
103
+ options: {
104
+ addToken: true,
105
+ signal
106
+ }
107
+ });
108
+ }
109
+ /**
110
+ * Получить историю прохождений опросов пользователя
111
+ * @param {number} page - номер страницы (с 1)
112
+ */
113
+ async getHistory({ page = 1 } = {}) {
114
+ if (!await this.userStorage.isAuth())
115
+ throw new apiError_1.ApiError(401, "Пользователь не авторизован");
116
+ return await this.fetcher({
117
+ route: (0, apiRoute_1.apiRouteSurveyHistory)({ page }),
118
+ options: { addToken: true }
119
+ });
120
+ }
121
+ }
122
+ exports.ApiSurvey = ApiSurvey;
@@ -0,0 +1,80 @@
1
+ import { iUserEditProps } from "../interfaces/iUserEditProps";
2
+ import { iUser } from "../interfaces/iUser";
3
+ import { DiplomaStatusValue } from "../interfaces/diplomaStatus";
4
+ import { ApiAbstract } from "./abstract";
5
+ export declare class ApiUser extends ApiAbstract {
6
+ /**
7
+ * получает пользователя из расшифрованного JWT токена без запроса на backend
8
+ */
9
+ get(): Promise<import("../interfaces/iUserData").iUserData | null>;
10
+ /**
11
+ * получает полную информацию о пользователе с сервера
12
+ */
13
+ getFull(): Promise<iUser>;
14
+ /**
15
+ * 1ый этап регистрации или авторизации
16
+ */
17
+ loginOrRegisterByPhone({ phone }: {
18
+ phone: string;
19
+ }): Promise<void>;
20
+ /**
21
+ * 2ой этап регистрации или авторизации - ввод кода подтверждения
22
+ */
23
+ loginOrRegisterByPhoneConfirm({ phone, code }: {
24
+ phone: string;
25
+ code: string;
26
+ }): Promise<import("../interfaces/iUserData").iUserData | null>;
27
+ /**
28
+ * Ввод реферального кода другого пользователя
29
+ * @param {string} props.ref - реферальный код
30
+ */
31
+ setRef({ ref }: {
32
+ ref: string;
33
+ }): Promise<void>;
34
+ /**
35
+ * редактирование пользователя
36
+ * если метод вернул false - то необходимо ввести код из email и передать его в data.email_code
37
+ * @param {string} props.email - опционально, для смены email. Если емейл не меняется то не передаем этот параметр или передаем пустую строку
38
+ * @param {number} props.city - id города
39
+ * @param {string} props.email_code - код отправленный на email. Первый раз метод вызывается без него, если метод вернул false необходимо вызвать повторно передав код из email
40
+ */
41
+ editUser(data: iUserEditProps): Promise<boolean>;
42
+ /**
43
+ * выход из ЛК
44
+ */
45
+ logout(): Promise<void>;
46
+ /**
47
+ * выход из ЛК (выход со всех устройств, на сервере будет удален refresh token, accessToken продолжит действовать остаток своего времени. Другие устройства разлогинет в течении 5 минут)
48
+ */
49
+ logoutAllDevice(): Promise<void>;
50
+ /**
51
+ * подписка на событие logout
52
+ */
53
+ onLogout: (callback: () => Promise<void>) => () => void;
54
+ /**
55
+ * удаление аккаунта пользователя, сделавшего запрос и всех связанных с ним сущностей (уведомлений, выплат, чеков, статистики и т.д.)
56
+ */
57
+ delete(): Promise<void>;
58
+ /**
59
+ * возвращает реф. код пользователя, который другие пользователя вводят при регистрации
60
+ */
61
+ getMyReferer(): Promise<string | null>;
62
+ /**
63
+ * Загрузить файлы диплома
64
+ * @param formData - FormData с файлами (ключ "diploma[]")
65
+ */
66
+ uploadDiploma(formData: FormData): Promise<{
67
+ success: boolean;
68
+ diploma_files: string[];
69
+ diploma_status: DiplomaStatusValue;
70
+ }>;
71
+ /**
72
+ * Получить статус диплома
73
+ * @returns diploma_status: 1-не загружен, 2-на проверке, 3-верифицирован, 4-отклонен
74
+ */
75
+ getDiplomaStatus(): Promise<{
76
+ diploma_status: DiplomaStatusValue;
77
+ diploma_files: string[];
78
+ diploma_reject_reason: string | null;
79
+ }>;
80
+ }