rustore 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/README.md +82 -5
  2. package/dist/api/apps.d.ts +42 -4
  3. package/dist/api/apps.d.ts.map +1 -1
  4. package/dist/api/apps.js +103 -15
  5. package/dist/api/apps.js.map +1 -1
  6. package/dist/api/auth.d.ts +8 -0
  7. package/dist/api/auth.d.ts.map +1 -1
  8. package/dist/api/auth.js +8 -0
  9. package/dist/api/auth.js.map +1 -1
  10. package/dist/api/catalog.d.ts +2 -0
  11. package/dist/api/catalog.d.ts.map +1 -1
  12. package/dist/api/catalog.js +2 -0
  13. package/dist/api/catalog.js.map +1 -1
  14. package/dist/api/client.d.ts +6 -1
  15. package/dist/api/client.d.ts.map +1 -1
  16. package/dist/api/client.js +21 -5
  17. package/dist/api/client.js.map +1 -1
  18. package/dist/api/feedback.d.ts +86 -0
  19. package/dist/api/feedback.d.ts.map +1 -0
  20. package/dist/api/feedback.js +113 -0
  21. package/dist/api/feedback.js.map +1 -0
  22. package/dist/api/payments-app.d.ts +2 -0
  23. package/dist/api/payments-app.d.ts.map +1 -1
  24. package/dist/api/payments-app.js +2 -0
  25. package/dist/api/payments-app.js.map +1 -1
  26. package/dist/api/payments.d.ts +2 -0
  27. package/dist/api/payments.d.ts.map +1 -1
  28. package/dist/api/payments.js +2 -0
  29. package/dist/api/payments.js.map +1 -1
  30. package/dist/bin.js +174 -2
  31. package/dist/bin.js.map +1 -1
  32. package/dist/commands/apps.d.ts +13 -0
  33. package/dist/commands/apps.d.ts.map +1 -1
  34. package/dist/commands/apps.js +85 -2
  35. package/dist/commands/apps.js.map +1 -1
  36. package/dist/commands/feedback.d.ts +30 -0
  37. package/dist/commands/feedback.d.ts.map +1 -0
  38. package/dist/commands/feedback.js +189 -0
  39. package/dist/commands/feedback.js.map +1 -0
  40. package/dist/config.d.ts +2 -1
  41. package/dist/config.d.ts.map +1 -1
  42. package/dist/config.js +2 -1
  43. package/dist/config.js.map +1 -1
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +1 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/types.d.ts +168 -0
  49. package/dist/types.d.ts.map +1 -1
  50. package/package.json +2 -2
@@ -0,0 +1,86 @@
1
+ /**
2
+ * API для работы с отзывами
3
+ * Категория: Работа с отзывами с помощью RuStore API
4
+ *
5
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process
6
+ */
7
+ import { RustoreApiClient } from './client.js';
8
+ import type { GetFeedbackResponse, GetFeedbackOptions, CreateFeedbackAnswerRequest, CreateFeedbackAnswerResponse, GetFeedbackAnswerStatusResponse, UpdateFeedbackAnswerRequest, UpdateFeedbackAnswerResponse, DeleteFeedbackAnswerResponse } from '../types.js';
9
+ /**
10
+ * Клиент для работы с отзывами
11
+ */
12
+ export declare class FeedbackApi extends RustoreApiClient {
13
+ /**
14
+ * Получить отзывы приложения
15
+ * GET /public/v1/application/{packageName}/feedback
16
+ *
17
+ * Метод позволяет получить отзывы для указанного приложения.
18
+ *
19
+ * @param packageName - Наименование пакета приложения
20
+ * @param options - Параметры запроса (continuationToken, pageSize и др.)
21
+ * @returns Список отзывов
22
+ *
23
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/get-feedback
24
+ */
25
+ getFeedback(packageName: string, options?: GetFeedbackOptions): Promise<GetFeedbackResponse>;
26
+ /**
27
+ * Оставить ответ на отзыв
28
+ * POST /public/v1/application/{packageName}/feedback/{commentId}/answer
29
+ *
30
+ * Метод позволяет оставить ответ на отзыв пользователя.
31
+ *
32
+ * @param packageName - Наименование пакета приложения
33
+ * @param commentId - ID отзыва
34
+ * @param data - Данные ответа (text)
35
+ * @returns Информация о созданном ответе
36
+ *
37
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/feedback-answer
38
+ */
39
+ createFeedbackAnswer(packageName: string, commentId: number, data: CreateFeedbackAnswerRequest): Promise<CreateFeedbackAnswerResponse>;
40
+ /**
41
+ * Получить статус ответа на отзыв
42
+ * GET /public/v1/application/{packageName}/feedback/{feedbackId}
43
+ *
44
+ * Метод позволяет получить статус модерации ответа на отзыв или получить информацию
45
+ * на отдельно взятый ответ на отзыв.
46
+ *
47
+ * @param packageName - Наименование пакета приложения
48
+ * @param feedbackId - ID ответа на отзыв (необязательно, если не указан - возвращает все ответы)
49
+ * @returns Информация о статусе ответа(ов)
50
+ *
51
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/get-feedback-status
52
+ */
53
+ getFeedbackAnswerStatus(packageName: string, feedbackId?: number): Promise<GetFeedbackAnswerStatusResponse>;
54
+ /**
55
+ * Изменить ответ на отзыв
56
+ * PUT /public/v1/application/{packageName}/feedback/{feedbackId}
57
+ *
58
+ * Метод позволяет изменить текст ответа на отзыв.
59
+ *
60
+ * @param packageName - Наименование пакета приложения
61
+ * @param feedbackId - ID ответа на отзыв
62
+ * @param data - Новые данные ответа (text)
63
+ * @returns Информация об изменённом ответе
64
+ *
65
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/change-feedback-answer
66
+ */
67
+ updateFeedbackAnswer(packageName: string, feedbackId: number, data: UpdateFeedbackAnswerRequest): Promise<UpdateFeedbackAnswerResponse>;
68
+ /**
69
+ * Удалить ответ на отзыв
70
+ * DELETE /public/v1/application/{packageName}/feedback/{feedbackId}
71
+ *
72
+ * Метод позволяет удалить ответ на отзыв.
73
+ *
74
+ * @param packageName - Наименование пакета приложения
75
+ * @param feedbackId - ID ответа на отзыв
76
+ * @returns Результат удаления
77
+ *
78
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/delete-feedback-answer
79
+ */
80
+ deleteFeedbackAnswer(packageName: string, feedbackId: number): Promise<DeleteFeedbackAnswerResponse>;
81
+ }
82
+ /**
83
+ * Экспортируемый экземпляр клиента для работы с отзывами
84
+ */
85
+ export declare const feedbackApi: FeedbackApi;
86
+ //# sourceMappingURL=feedback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.d.ts","sourceRoot":"","sources":["../../src/api/feedback.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,2BAA2B,EAC3B,4BAA4B,EAC5B,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,4BAA4B,EAC7B,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAAgB;IAC/C;;;;;;;;;;;OAWG;IACG,WAAW,CACf,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,mBAAmB,CAAC;IAmB/B;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,4BAA4B,CAAC;IAKxC;;;;;;;;;;;;OAYG;IACG,uBAAuB,CAC3B,WAAW,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,+BAA+B,CAAC;IAO3C;;;;;;;;;;;;OAYG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,2BAA2B,GAChC,OAAO,CAAC,4BAA4B,CAAC;IAKxC;;;;;;;;;;;OAWG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,4BAA4B,CAAC;CAIzC;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * API для работы с отзывами
3
+ * Категория: Работа с отзывами с помощью RuStore API
4
+ *
5
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process
6
+ */
7
+ import { RustoreApiClient } from './client.js';
8
+ /**
9
+ * Клиент для работы с отзывами
10
+ */
11
+ export class FeedbackApi extends RustoreApiClient {
12
+ /**
13
+ * Получить отзывы приложения
14
+ * GET /public/v1/application/{packageName}/feedback
15
+ *
16
+ * Метод позволяет получить отзывы для указанного приложения.
17
+ *
18
+ * @param packageName - Наименование пакета приложения
19
+ * @param options - Параметры запроса (continuationToken, pageSize и др.)
20
+ * @returns Список отзывов
21
+ *
22
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/get-feedback
23
+ */
24
+ async getFeedback(packageName, options) {
25
+ const endpoint = `/public/v1/application/${packageName}/feedback`;
26
+ // Формируем query параметры
27
+ const queryParams = new URLSearchParams();
28
+ if (options) {
29
+ Object.entries(options).forEach(([key, value]) => {
30
+ if (value !== undefined && value !== null && value !== '') {
31
+ queryParams.append(key, String(value));
32
+ }
33
+ });
34
+ }
35
+ const queryString = queryParams.toString();
36
+ const finalEndpoint = queryString ? `${endpoint}?${queryString}` : endpoint;
37
+ return this.get(finalEndpoint);
38
+ }
39
+ /**
40
+ * Оставить ответ на отзыв
41
+ * POST /public/v1/application/{packageName}/feedback/{commentId}/answer
42
+ *
43
+ * Метод позволяет оставить ответ на отзыв пользователя.
44
+ *
45
+ * @param packageName - Наименование пакета приложения
46
+ * @param commentId - ID отзыва
47
+ * @param data - Данные ответа (text)
48
+ * @returns Информация о созданном ответе
49
+ *
50
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/feedback-answer
51
+ */
52
+ async createFeedbackAnswer(packageName, commentId, data) {
53
+ const endpoint = `/public/v1/application/${packageName}/feedback/${commentId}/answer`;
54
+ return this.post(endpoint, data);
55
+ }
56
+ /**
57
+ * Получить статус ответа на отзыв
58
+ * GET /public/v1/application/{packageName}/feedback/{feedbackId}
59
+ *
60
+ * Метод позволяет получить статус модерации ответа на отзыв или получить информацию
61
+ * на отдельно взятый ответ на отзыв.
62
+ *
63
+ * @param packageName - Наименование пакета приложения
64
+ * @param feedbackId - ID ответа на отзыв (необязательно, если не указан - возвращает все ответы)
65
+ * @returns Информация о статусе ответа(ов)
66
+ *
67
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/get-feedback-status
68
+ */
69
+ async getFeedbackAnswerStatus(packageName, feedbackId) {
70
+ const endpoint = feedbackId
71
+ ? `/public/v1/application/${packageName}/feedback/${feedbackId}`
72
+ : `/public/v1/application/${packageName}/feedback`;
73
+ return this.get(endpoint);
74
+ }
75
+ /**
76
+ * Изменить ответ на отзыв
77
+ * PUT /public/v1/application/{packageName}/feedback/{feedbackId}
78
+ *
79
+ * Метод позволяет изменить текст ответа на отзыв.
80
+ *
81
+ * @param packageName - Наименование пакета приложения
82
+ * @param feedbackId - ID ответа на отзыв
83
+ * @param data - Новые данные ответа (text)
84
+ * @returns Информация об изменённом ответе
85
+ *
86
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/change-feedback-answer
87
+ */
88
+ async updateFeedbackAnswer(packageName, feedbackId, data) {
89
+ const endpoint = `/public/v1/application/${packageName}/feedback/${feedbackId}`;
90
+ return this.put(endpoint, data);
91
+ }
92
+ /**
93
+ * Удалить ответ на отзыв
94
+ * DELETE /public/v1/application/{packageName}/feedback/{feedbackId}
95
+ *
96
+ * Метод позволяет удалить ответ на отзыв.
97
+ *
98
+ * @param packageName - Наименование пакета приложения
99
+ * @param feedbackId - ID ответа на отзыв
100
+ * @returns Результат удаления
101
+ *
102
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-feedback-process/delete-feedback-answer
103
+ */
104
+ async deleteFeedbackAnswer(packageName, feedbackId) {
105
+ const endpoint = `/public/v1/application/${packageName}/feedback/${feedbackId}`;
106
+ return this.delete(endpoint);
107
+ }
108
+ }
109
+ /**
110
+ * Экспортируемый экземпляр клиента для работы с отзывами
111
+ */
112
+ export const feedbackApi = new FeedbackApi();
113
+ //# sourceMappingURL=feedback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/api/feedback.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAY7C;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,gBAAgB;IAC/C;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,WAAW,CACf,WAAmB,EACnB,OAA4B;QAE5B,MAAM,QAAQ,GAAG,0BAA0B,WAAW,WAAW,CAAC;QAElE,4BAA4B;QAC5B,MAAM,WAAW,GAAG,IAAI,eAAe,EAAE,CAAC;QAC1C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBAC/C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBAC1D,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;gBACzC,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QAED,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;QAC3C,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,WAAW,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE5E,OAAO,IAAI,CAAC,GAAG,CAAsB,aAAa,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,oBAAoB,CACxB,WAAmB,EACnB,SAAiB,EACjB,IAAiC;QAEjC,MAAM,QAAQ,GAAG,0BAA0B,WAAW,aAAa,SAAS,SAAS,CAAC;QACtF,OAAO,IAAI,CAAC,IAAI,CAA+B,QAAQ,EAAE,IAAI,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,uBAAuB,CAC3B,WAAmB,EACnB,UAAmB;QAEnB,MAAM,QAAQ,GAAG,UAAU;YACzB,CAAC,CAAC,0BAA0B,WAAW,aAAa,UAAU,EAAE;YAChE,CAAC,CAAC,0BAA0B,WAAW,WAAW,CAAC;QACrD,OAAO,IAAI,CAAC,GAAG,CAAkC,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,KAAK,CAAC,oBAAoB,CACxB,WAAmB,EACnB,UAAkB,EAClB,IAAiC;QAEjC,MAAM,QAAQ,GAAG,0BAA0B,WAAW,aAAa,UAAU,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC,GAAG,CAA+B,QAAQ,EAAE,IAAI,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,oBAAoB,CACxB,WAAmB,EACnB,UAAkB;QAElB,MAAM,QAAQ,GAAG,0BAA0B,WAAW,aAAa,UAAU,EAAE,CAAC;QAChF,OAAO,IAAI,CAAC,MAAM,CAA+B,QAAQ,CAAC,CAAC;IAC7D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * API для работы с платежами и подписками (методы приложений)
3
3
  * Категория: Работа с платежами и подписками (методы приложений)
4
+ *
5
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions-app
4
6
  */
5
7
  import { RustoreApiClient } from './client.js';
6
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"payments-app.d.ts","sourceRoot":"","sources":["../../src/api/payments-app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;CAGnD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
1
+ {"version":3,"file":"payments-app.d.ts","sourceRoot":"","sources":["../../src/api/payments-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,cAAe,SAAQ,gBAAgB;CAGnD;AAED;;GAEG;AACH,eAAO,MAAM,cAAc,gBAAuB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * API для работы с платежами и подписками (методы приложений)
3
3
  * Категория: Работа с платежами и подписками (методы приложений)
4
+ *
5
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions-app
4
6
  */
5
7
  import { RustoreApiClient } from './client.js';
6
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"payments-app.js","sourceRoot":"","sources":["../../src/api/payments-app.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;CAGnD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"payments-app.js","sourceRoot":"","sources":["../../src/api/payments-app.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,cAAe,SAAQ,gBAAgB;CAGnD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * API для работы с платежами и подписками
3
3
  * Категория: Работа с платежами и подписками (общие методы)
4
+ *
5
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions
4
6
  */
5
7
  import { RustoreApiClient } from './client.js';
6
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../src/api/payments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAAgB;CAGhD;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC"}
1
+ {"version":3,"file":"payments.d.ts","sourceRoot":"","sources":["../../src/api/payments.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,qBAAa,WAAY,SAAQ,gBAAgB;CAGhD;AAED;;GAEG;AACH,eAAO,MAAM,WAAW,aAAoB,CAAC"}
@@ -1,6 +1,8 @@
1
1
  /**
2
2
  * API для работы с платежами и подписками
3
3
  * Категория: Работа с платежами и подписками (общие методы)
4
+ *
5
+ * @see https://www.rustore.ru/help/work-with-rustore-api/api-payments-subscriptions
4
6
  */
5
7
  import { RustoreApiClient } from './client.js';
6
8
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/api/payments.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,gBAAgB;CAGhD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"payments.js","sourceRoot":"","sources":["../../src/api/payments.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAC,gBAAgB,EAAC,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,gBAAgB;CAGhD;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC"}
package/dist/bin.js CHANGED
@@ -4,7 +4,8 @@
4
4
  */
5
5
  import { Command } from 'commander';
6
6
  import { loginCommand, logoutCommand, whoamiCommand } from './commands/auth.js';
7
- import { listAppsCommand } from './commands/apps.js';
7
+ import { listAppsCommand, createDraftVersionCommand, uploadApkFileCommand, } from './commands/apps.js';
8
+ import { getFeedbackCommand, createFeedbackAnswerCommand, getFeedbackAnswerStatusCommand, updateFeedbackAnswerCommand, deleteFeedbackAnswerCommand, } from './commands/feedback.js';
8
9
  import { readFileSync } from 'node:fs';
9
10
  import { fileURLToPath } from 'node:url';
10
11
  import { dirname, join } from 'node:path';
@@ -64,11 +65,182 @@ const appsCommand = program.command('apps').description('Работа с при
64
65
  appsCommand
65
66
  .command('list')
66
67
  .description('Получить список приложений')
68
+ .allowUnknownOption() // Разрешаем произвольные параметры для поддержки новых параметров API
69
+ .allowExcessArguments() // Разрешаем дополнительные аргументы
67
70
  .option('-a, --all', 'Получить все приложения (с пагинацией)')
68
71
  .option('-j, --json', 'Вывести результат в формате JSON')
72
+ .option('--page-size <size>', 'Размер страницы (количество приложений на странице)', parseInt)
73
+ .option('--app-name <name>', 'Фильтр по имени приложения')
74
+ .option('--package-name <name>', 'Фильтр по package name')
75
+ .option('--app-status <status>', 'Фильтр по статусу приложения (PUBLISHED, DRAFT и т.д.)')
76
+ .option('--paid <true|false>', 'Фильтр по платным/бесплатным приложениям (TODO: может не работать)')
69
77
  .action(async (options) => {
70
78
  try {
71
- await listAppsCommand(options);
79
+ // Парсим неизвестные опции из process.argv
80
+ // Commander не передает неизвестные опции в options автоматически,
81
+ // поэтому парсим их вручную для поддержки будущих параметров API
82
+ const unknownOptions = {};
83
+ const knownOptionFlags = [
84
+ '-a',
85
+ '--all',
86
+ '-j',
87
+ '--json',
88
+ '--page-size',
89
+ '--app-name',
90
+ '--package-name',
91
+ '--app-status',
92
+ ];
93
+ // Находим индекс команды 'list' в process.argv
94
+ const listIndex = process.argv.indexOf('list');
95
+ if (listIndex >= 0) {
96
+ // Парсим аргументы после 'list'
97
+ for (let i = listIndex + 1; i < process.argv.length; i++) {
98
+ const arg = process.argv[i];
99
+ if (arg?.startsWith('--') && !knownOptionFlags.includes(arg)) {
100
+ const key = arg.replace(/^--/, '');
101
+ const value = process.argv[i + 1];
102
+ if (value && !value.startsWith('--')) {
103
+ // Конвертируем kebab-case в camelCase для соответствия API
104
+ const camelKey = key.replace(/-([a-z])/g, (_match, letter) => letter.toUpperCase());
105
+ // Парсим значение: boolean, number или string
106
+ let parsedValue;
107
+ const lowerValue = value.toLowerCase();
108
+ if (lowerValue === 'true') {
109
+ parsedValue = true;
110
+ }
111
+ else if (lowerValue === 'false') {
112
+ parsedValue = false;
113
+ }
114
+ else if (!isNaN(Number(value)) && value.trim() !== '') {
115
+ parsedValue = Number(value);
116
+ }
117
+ else {
118
+ parsedValue = value;
119
+ }
120
+ unknownOptions[camelKey] = parsedValue;
121
+ i++; // Пропускаем значение
122
+ }
123
+ }
124
+ }
125
+ }
126
+ // Объединяем известные и неизвестные опции
127
+ // Благодаря индексной сигнатуре [key: string] в listAppsCommand,
128
+ // все новые параметры API будут автоматически переданы в запрос
129
+ await listAppsCommand({ ...options, ...unknownOptions });
130
+ }
131
+ catch (error) {
132
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
133
+ process.exit(1);
134
+ }
135
+ });
136
+ appsCommand
137
+ .command('create-draft')
138
+ .description('Создать черновую версию приложения')
139
+ .requiredOption('--app-id <id>', 'ID приложения', parseInt)
140
+ .requiredOption('--version-name <name>', 'Имя версии (например, 1.0.0)')
141
+ .requiredOption('--version-code <code>', 'Код версии (число)', parseInt)
142
+ .option('-j, --json', 'Вывести результат в формате JSON')
143
+ .action(async (options) => {
144
+ try {
145
+ await createDraftVersionCommand(options.appId, options.versionName, options.versionCode, options.json);
146
+ }
147
+ catch (error) {
148
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
149
+ process.exit(1);
150
+ }
151
+ });
152
+ appsCommand
153
+ .command('upload-apk')
154
+ .description('Загрузить APK/AAB файл для версии приложения')
155
+ .requiredOption('--app-id <id>', 'ID приложения', parseInt)
156
+ .requiredOption('--version-id <id>', 'ID версии (из create-draft)', parseInt)
157
+ .requiredOption('--file <path>', 'Путь к APK/AAB файлу')
158
+ .option('-j, --json', 'Вывести результат в формате JSON')
159
+ .action(async (options) => {
160
+ try {
161
+ await uploadApkFileCommand(options.appId, options.versionId, options.file, options.json);
162
+ }
163
+ catch (error) {
164
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
165
+ process.exit(1);
166
+ }
167
+ });
168
+ // Команды для работы с отзывами
169
+ const feedbackCommand = program
170
+ .command('feedback')
171
+ .description('Работа с отзывами приложений');
172
+ feedbackCommand
173
+ .command('list')
174
+ .description('Получить отзывы приложения')
175
+ .requiredOption('--package-name <name>', 'Package name приложения')
176
+ .option('-a, --all', 'Получить все отзывы (с пагинацией)')
177
+ .option('-j, --json', 'Вывести результат в формате JSON')
178
+ .option('--page-size <size>', 'Размер страницы', parseInt)
179
+ .action(async (options) => {
180
+ try {
181
+ await getFeedbackCommand(options.packageName, options);
182
+ }
183
+ catch (error) {
184
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
185
+ process.exit(1);
186
+ }
187
+ });
188
+ feedbackCommand
189
+ .command('answer')
190
+ .description('Оставить ответ на отзыв')
191
+ .requiredOption('--package-name <name>', 'Package name приложения')
192
+ .requiredOption('--comment-id <id>', 'ID отзыва', parseInt)
193
+ .requiredOption('--text <text>', 'Текст ответа')
194
+ .option('-j, --json', 'Вывести результат в формате JSON')
195
+ .action(async (options) => {
196
+ try {
197
+ await createFeedbackAnswerCommand(options.packageName, options.commentId, options.text, options.json);
198
+ }
199
+ catch (error) {
200
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
201
+ process.exit(1);
202
+ }
203
+ });
204
+ feedbackCommand
205
+ .command('status')
206
+ .description('Получить статус ответа на отзыв')
207
+ .requiredOption('--package-name <name>', 'Package name приложения')
208
+ .option('--feedback-id <id>', 'ID ответа на отзыв (если не указан - все ответы)', parseInt)
209
+ .option('-j, --json', 'Вывести результат в формате JSON')
210
+ .action(async (options) => {
211
+ try {
212
+ await getFeedbackAnswerStatusCommand(options.packageName, options.feedbackId, options.json);
213
+ }
214
+ catch (error) {
215
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
216
+ process.exit(1);
217
+ }
218
+ });
219
+ feedbackCommand
220
+ .command('update')
221
+ .description('Изменить ответ на отзыв')
222
+ .requiredOption('--package-name <name>', 'Package name приложения')
223
+ .requiredOption('--feedback-id <id>', 'ID ответа на отзыв', parseInt)
224
+ .requiredOption('--text <text>', 'Новый текст ответа')
225
+ .option('-j, --json', 'Вывести результат в формате JSON')
226
+ .action(async (options) => {
227
+ try {
228
+ await updateFeedbackAnswerCommand(options.packageName, options.feedbackId, options.text, options.json);
229
+ }
230
+ catch (error) {
231
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
232
+ process.exit(1);
233
+ }
234
+ });
235
+ feedbackCommand
236
+ .command('delete')
237
+ .description('Удалить ответ на отзыв')
238
+ .requiredOption('--package-name <name>', 'Package name приложения')
239
+ .requiredOption('--feedback-id <id>', 'ID ответа на отзыв', parseInt)
240
+ .option('-j, --json', 'Вывести результат в формате JSON')
241
+ .action(async (options) => {
242
+ try {
243
+ await deleteFeedbackAnswerCommand(options.packageName, options.feedbackId, options.json);
72
244
  }
73
245
  catch (error) {
74
246
  console.error('Ошибка:', error instanceof Error ? error.message : String(error));
package/dist/bin.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,18 @@
7
7
  export declare function listAppsCommand(options: {
8
8
  all?: boolean;
9
9
  json?: boolean;
10
+ pageSize?: number;
11
+ appName?: string;
12
+ packageName?: string;
13
+ appStatus?: string;
14
+ [key: string]: string | number | boolean | undefined;
10
15
  }): Promise<void>;
16
+ /**
17
+ * Команда создания черновой версии приложения
18
+ */
19
+ export declare function createDraftVersionCommand(appId: number, versionName: string, versionCode: number, json?: boolean): Promise<void>;
20
+ /**
21
+ * Команда загрузки APK/AAB файла
22
+ */
23
+ export declare function uploadApkFileCommand(appId: number, versionId: number, filePath: string, json?: boolean): Promise<void>;
11
24
  //# sourceMappingURL=apps.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB"}
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CACtD,GAAG,OAAO,CAAC,IAAI,CAAC,CAyChB;AAgDD;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,IAAI,GAAE,OAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CA6Bf;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,OAAe,GACpB,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
@@ -7,12 +7,24 @@ import { appsApi } from '../api/apps.js';
7
7
  */
8
8
  export async function listAppsCommand(options) {
9
9
  try {
10
+ // Извлекаем API параметры из options
11
+ // Конвертируем kebab-case CLI опции в camelCase для API
12
+ const apiOptions = {};
13
+ // Копируем только API параметры (исключаем CLI опции)
14
+ const cliOptions = ['all', 'json'];
15
+ Object.entries(options).forEach(([key, value]) => {
16
+ if (!cliOptions.includes(key) && value !== undefined) {
17
+ // Конвертируем kebab-case в camelCase для соответствия API
18
+ const apiKey = key.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
19
+ apiOptions[apiKey] = value;
20
+ }
21
+ });
10
22
  if (options.all) {
11
- const apps = await appsApi.getAllApps();
23
+ const apps = await appsApi.getAllApps(apiOptions);
12
24
  outputApps(apps, options.json);
13
25
  }
14
26
  else {
15
- const response = await appsApi.getAppList();
27
+ const response = await appsApi.getAppList(apiOptions);
16
28
  outputApps(response.body.content, options.json);
17
29
  if (response.body.continuationToken) {
18
30
  console.log(`\n⚠️ Есть ещё приложения. Используйте --all для получения полного списка.`);
@@ -42,11 +54,82 @@ function outputApps(apps, json = false) {
42
54
  console.log(` ID: ${app.appId}`);
43
55
  console.log(` Статус: ${app.appStatus}`);
44
56
  console.log(` Версия: ${app.versionName} (${app.versionCode})`);
57
+ if (app.versionType) {
58
+ console.log(` Тип версии: ${app.versionType}`);
59
+ }
60
+ console.log(` Компания: ${app.companyName}${app.companyId ? ` (ID: ${app.companyId})` : ''}`);
61
+ if (app.role) {
62
+ console.log(` Роль: ${app.role}`);
63
+ }
64
+ console.log(` Устройство: ${app.deviceType}`);
65
+ console.log(` Цена: ${app.activePrice > 0 ? `${app.activePrice} ₽` : 'Бесплатно'} (paid: ${app.paid})`);
45
66
  console.log(` Обновлено: ${new Date(app.appVerUpdatedAt).toLocaleString('ru-RU')}`);
46
67
  if (app.shortDescription) {
47
68
  console.log(` Описание: ${app.shortDescription}`);
48
69
  }
70
+ if (app.iconUrl) {
71
+ console.log(` Иконка: ${app.iconUrl}`);
72
+ }
49
73
  console.log('');
50
74
  });
51
75
  }
76
+ /**
77
+ * Команда создания черновой версии приложения
78
+ */
79
+ export async function createDraftVersionCommand(appId, versionName, versionCode, json = false) {
80
+ try {
81
+ const data = {
82
+ versionName,
83
+ versionCode,
84
+ };
85
+ const response = await appsApi.createDraftVersion(appId, data);
86
+ if (json) {
87
+ console.log(JSON.stringify(response, null, 2));
88
+ return;
89
+ }
90
+ if (response.code === 'OK' || response.code === '200') {
91
+ console.log('✅ Черновая версия успешно создана!');
92
+ if (response.body) {
93
+ console.log(` ID версии: ${response.body.versionId || 'N/A'}`);
94
+ console.log(` Имя версии: ${response.body.versionName || versionName}`);
95
+ console.log(` Код версии: ${response.body.versionCode || versionCode}`);
96
+ }
97
+ }
98
+ else {
99
+ throw new Error(response.message || 'Неизвестная ошибка');
100
+ }
101
+ }
102
+ catch (error) {
103
+ throw new Error(`Ошибка создания черновой версии: ${error instanceof Error ? error.message : String(error)}`);
104
+ }
105
+ }
106
+ /**
107
+ * Команда загрузки APK/AAB файла
108
+ */
109
+ export async function uploadApkFileCommand(appId, versionId, filePath, json = false) {
110
+ try {
111
+ const response = await appsApi.uploadApkFile(appId, versionId, filePath);
112
+ if (json) {
113
+ console.log(JSON.stringify(response, null, 2));
114
+ return;
115
+ }
116
+ if (response.code === 'OK' || response.code === '200') {
117
+ console.log('✅ APK/AAB файл успешно загружен!');
118
+ if (response.body) {
119
+ console.log(` ID файла: ${response.body.fileId || 'N/A'}`);
120
+ console.log(` Имя файла: ${response.body.fileName || 'N/A'}`);
121
+ if (response.body.fileSize) {
122
+ const sizeMB = (response.body.fileSize / (1024 * 1024)).toFixed(2);
123
+ console.log(` Размер: ${sizeMB} MB`);
124
+ }
125
+ }
126
+ }
127
+ else {
128
+ throw new Error(response.message || 'Неизвестная ошибка');
129
+ }
130
+ }
131
+ catch (error) {
132
+ throw new Error(`Ошибка загрузки APK файла: ${error instanceof Error ? error.message : String(error)}`);
133
+ }
134
+ }
52
135
  //# sourceMappingURL=apps.js.map