rustore 1.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 (51) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +225 -0
  3. package/dist/api/apps.d.ts +32 -0
  4. package/dist/api/apps.d.ts.map +1 -0
  5. package/dist/api/apps.js +56 -0
  6. package/dist/api/apps.js.map +1 -0
  7. package/dist/api/auth.d.ts +29 -0
  8. package/dist/api/auth.d.ts.map +1 -0
  9. package/dist/api/auth.js +139 -0
  10. package/dist/api/auth.js.map +1 -0
  11. package/dist/api/catalog.d.ts +15 -0
  12. package/dist/api/catalog.d.ts.map +1 -0
  13. package/dist/api/catalog.js +15 -0
  14. package/dist/api/catalog.js.map +1 -0
  15. package/dist/api/client.d.ts +35 -0
  16. package/dist/api/client.d.ts.map +1 -0
  17. package/dist/api/client.js +80 -0
  18. package/dist/api/client.js.map +1 -0
  19. package/dist/api/payments-app.d.ts +15 -0
  20. package/dist/api/payments-app.d.ts.map +1 -0
  21. package/dist/api/payments-app.js +15 -0
  22. package/dist/api/payments-app.js.map +1 -0
  23. package/dist/api/payments.d.ts +15 -0
  24. package/dist/api/payments.d.ts.map +1 -0
  25. package/dist/api/payments.js +15 -0
  26. package/dist/api/payments.js.map +1 -0
  27. package/dist/bin.d.ts +6 -0
  28. package/dist/bin.d.ts.map +1 -0
  29. package/dist/bin.js +83 -0
  30. package/dist/bin.js.map +1 -0
  31. package/dist/commands/apps.d.ts +11 -0
  32. package/dist/commands/apps.d.ts.map +1 -0
  33. package/dist/commands/apps.js +52 -0
  34. package/dist/commands/apps.js.map +1 -0
  35. package/dist/commands/auth.d.ts +16 -0
  36. package/dist/commands/auth.d.ts.map +1 -0
  37. package/dist/commands/auth.js +46 -0
  38. package/dist/commands/auth.js.map +1 -0
  39. package/dist/config.d.ts +22 -0
  40. package/dist/config.d.ts.map +1 -0
  41. package/dist/config.js +53 -0
  42. package/dist/config.js.map +1 -0
  43. package/dist/index.d.ts +12 -0
  44. package/dist/index.d.ts.map +1 -0
  45. package/dist/index.js +12 -0
  46. package/dist/index.js.map +1 -0
  47. package/dist/types.d.ts +56 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +5 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +85 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAC,QAAQ,EAAC,MAAM,WAAW,CAAC;AAGnC,MAAM,YAAY,GAAG,+BAA+B,CAAC;AAErD;;GAEG;AACH,MAAM,OAAO,gBAAgB;IACnB,OAAO,CAAS;IAExB,YAAY,UAAkB,YAAY;QACxC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED;;OAEG;IACO,KAAK,CAAC,OAAO,CAAI,QAAgB,EAAE,UAAuB,EAAE;QACpE,MAAM,KAAK,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,QAAQ,EAAE,CAAC;QAEzC,4DAA4D;QAC5D,qEAAqE;QACrE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,GAAG,OAAO;YACV,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,cAAc,EAAE,KAAK,EAAE,yDAAyD;gBAChF,GAAG,OAAO,CAAC,OAAO;aACnB;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,IAAI,SAA+B,CAAC;YAEpC,IAAI,CAAC;gBACH,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAa,CAAC;YAChD,CAAC;YAAC,MAAM,CAAC;gBACP,6BAA6B;YAC/B,CAAC;YAED,0CAA0C;YAC1C,MAAM,YAAY,GAAG,SAAS,EAAE,OAAO,IAAI,SAAS,CAAC;YACrD,MAAM,IAAI,KAAK,CAAC,eAAe,QAAQ,CAAC,MAAM,MAAM,YAAY,EAAE,CAAC,CAAC;QACtE,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,QAAgB;QAC3B,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI,CAAI,QAAgB,EAAE,IAAc;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE;YAC/B,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CAAI,QAAgB,EAAE,IAAc;QAC3C,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE;YAC/B,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC9C,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAI,QAAgB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAI,QAAQ,EAAE,EAAC,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;IACvD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,gBAAgB,EAAE,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * API для работы с платежами и подписками (методы приложений)
3
+ * Категория: Работа с платежами и подписками (методы приложений)
4
+ */
5
+ import { RustoreApiClient } from './client.js';
6
+ /**
7
+ * Клиент для работы с платежами (методы приложений)
8
+ */
9
+ export declare class PaymentsAppApi extends RustoreApiClient {
10
+ }
11
+ /**
12
+ * Экспортируемый экземпляр клиента для работы с платежами приложений
13
+ */
14
+ export declare const paymentsAppApi: PaymentsAppApi;
15
+ //# sourceMappingURL=payments-app.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * API для работы с платежами и подписками (методы приложений)
3
+ * Категория: Работа с платежами и подписками (методы приложений)
4
+ */
5
+ import { RustoreApiClient } from './client.js';
6
+ /**
7
+ * Клиент для работы с платежами (методы приложений)
8
+ */
9
+ export class PaymentsAppApi extends RustoreApiClient {
10
+ }
11
+ /**
12
+ * Экспортируемый экземпляр клиента для работы с платежами приложений
13
+ */
14
+ export const paymentsAppApi = new PaymentsAppApi();
15
+ //# sourceMappingURL=payments-app.js.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * API для работы с платежами и подписками
3
+ * Категория: Работа с платежами и подписками (общие методы)
4
+ */
5
+ import { RustoreApiClient } from './client.js';
6
+ /**
7
+ * Клиент для работы с платежами (общие методы)
8
+ */
9
+ export declare class PaymentsApi extends RustoreApiClient {
10
+ }
11
+ /**
12
+ * Экспортируемый экземпляр клиента для работы с платежами
13
+ */
14
+ export declare const paymentsApi: PaymentsApi;
15
+ //# sourceMappingURL=payments.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * API для работы с платежами и подписками
3
+ * Категория: Работа с платежами и подписками (общие методы)
4
+ */
5
+ import { RustoreApiClient } from './client.js';
6
+ /**
7
+ * Клиент для работы с платежами (общие методы)
8
+ */
9
+ export class PaymentsApi extends RustoreApiClient {
10
+ }
11
+ /**
12
+ * Экспортируемый экземпляр клиента для работы с платежами
13
+ */
14
+ export const paymentsApi = new PaymentsApi();
15
+ //# sourceMappingURL=payments.js.map
@@ -0,0 +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"}
package/dist/bin.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI для работы с RuStore API
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=bin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":";AACA;;GAEG"}
package/dist/bin.js ADDED
@@ -0,0 +1,83 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI для работы с RuStore API
4
+ */
5
+ import { Command } from 'commander';
6
+ import { loginCommand, logoutCommand, whoamiCommand } from './commands/auth.js';
7
+ import { listAppsCommand } from './commands/apps.js';
8
+ import { readFileSync } from 'node:fs';
9
+ import { fileURLToPath } from 'node:url';
10
+ import { dirname, join } from 'node:path';
11
+ const __filename = fileURLToPath(import.meta.url);
12
+ const __dirname = dirname(__filename);
13
+ // Получаем версию из package.json
14
+ const packageJsonPath = join(__dirname, '..', 'package.json');
15
+ const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
16
+ const program = new Command();
17
+ program
18
+ .name('rustore')
19
+ .description('CLI для работы с RuStore API')
20
+ .version(packageJson.version);
21
+ // Команда login
22
+ program
23
+ .command('login')
24
+ .description('Авторизация в RuStore API')
25
+ .requiredOption('-i, --key-id <keyId>', 'ID ключа из RuStore Консоль')
26
+ .requiredOption('-k, --key <key>', 'Приватный ключ (Base64)')
27
+ .action(async (options) => {
28
+ try {
29
+ await loginCommand(options.keyId, options.key);
30
+ }
31
+ catch (error) {
32
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
33
+ process.exit(1);
34
+ }
35
+ });
36
+ // Команда logout
37
+ program
38
+ .command('logout')
39
+ .description('Выход из системы (удаление токена)')
40
+ .action(() => {
41
+ try {
42
+ logoutCommand();
43
+ }
44
+ catch (error) {
45
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
46
+ process.exit(1);
47
+ }
48
+ });
49
+ // Команда whoami
50
+ program
51
+ .command('whoami')
52
+ .description('Показать информацию о текущей авторизации')
53
+ .action(() => {
54
+ try {
55
+ whoamiCommand();
56
+ }
57
+ catch (error) {
58
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
59
+ process.exit(1);
60
+ }
61
+ });
62
+ // Команды для работы с приложениями
63
+ const appsCommand = program.command('apps').description('Работа с приложениями');
64
+ appsCommand
65
+ .command('list')
66
+ .description('Получить список приложений')
67
+ .option('-a, --all', 'Получить все приложения (с пагинацией)')
68
+ .option('-j, --json', 'Вывести результат в формате JSON')
69
+ .action(async (options) => {
70
+ try {
71
+ await listAppsCommand(options);
72
+ }
73
+ catch (error) {
74
+ console.error('Ошибка:', error instanceof Error ? error.message : String(error));
75
+ process.exit(1);
76
+ }
77
+ });
78
+ // Показываем помощь, если команда не указана
79
+ if (process.argv.length === 2) {
80
+ program.help();
81
+ }
82
+ program.parse();
83
+ //# sourceMappingURL=bin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Команды для работы с приложениями
3
+ */
4
+ /**
5
+ * Команда получения списка приложений
6
+ */
7
+ export declare function listAppsCommand(options: {
8
+ all?: boolean;
9
+ json?: boolean;
10
+ }): Promise<void>;
11
+ //# sourceMappingURL=apps.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Команды для работы с приложениями
3
+ */
4
+ import { appsApi } from '../api/apps.js';
5
+ /**
6
+ * Команда получения списка приложений
7
+ */
8
+ export async function listAppsCommand(options) {
9
+ try {
10
+ if (options.all) {
11
+ const apps = await appsApi.getAllApps();
12
+ outputApps(apps, options.json);
13
+ }
14
+ else {
15
+ const response = await appsApi.getAppList();
16
+ outputApps(response.body.content, options.json);
17
+ if (response.body.continuationToken) {
18
+ console.log(`\n⚠️ Есть ещё приложения. Используйте --all для получения полного списка.`);
19
+ }
20
+ }
21
+ }
22
+ catch (error) {
23
+ throw new Error(`Ошибка получения списка приложений: ${error instanceof Error ? error.message : String(error)}`);
24
+ }
25
+ }
26
+ /**
27
+ * Выводит список приложений в консоль
28
+ */
29
+ function outputApps(apps, json = false) {
30
+ if (json) {
31
+ console.log(JSON.stringify(apps, null, 2));
32
+ return;
33
+ }
34
+ if (apps.length === 0) {
35
+ console.log('Приложения не найдены.');
36
+ return;
37
+ }
38
+ console.log(`\nНайдено приложений: ${apps.length}\n`);
39
+ apps.forEach((app, index) => {
40
+ console.log(`${index + 1}. ${app.appName}`);
41
+ console.log(` Package: ${app.packageName}`);
42
+ console.log(` ID: ${app.appId}`);
43
+ console.log(` Статус: ${app.appStatus}`);
44
+ console.log(` Версия: ${app.versionName} (${app.versionCode})`);
45
+ console.log(` Обновлено: ${new Date(app.appVerUpdatedAt).toLocaleString('ru-RU')}`);
46
+ if (app.shortDescription) {
47
+ console.log(` Описание: ${app.shortDescription}`);
48
+ }
49
+ console.log('');
50
+ });
51
+ }
52
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/commands/apps.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAC,OAAO,EAAC,MAAM,gBAAgB,CAAC;AAGvC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAGrC;IACC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YACxC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC5C,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;YAEhD,IAAI,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CACT,4EAA4E,CAC7E,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,uCAAuC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAW,EAAE,OAAgB,KAAK;IACpD,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;IAEtD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAC1B,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,CAAC,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,WAAW,KAAK,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACtF,IAAI,GAAG,CAAC,gBAAgB,EAAE,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Команды для работы с авторизацией
3
+ */
4
+ /**
5
+ * Команда входа в систему
6
+ */
7
+ export declare function loginCommand(keyId: string, privateKey: string): Promise<void>;
8
+ /**
9
+ * Команда выхода из системы
10
+ */
11
+ export declare function logoutCommand(): void;
12
+ /**
13
+ * Команда проверки статуса авторизации
14
+ */
15
+ export declare function whoamiCommand(): void;
16
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAsB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAInF;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CASpC;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CA0BpC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Команды для работы с авторизацией
3
+ */
4
+ import { login } from '../api/auth.js';
5
+ import { loadConfig, configExists, saveConfig } from '../config.js';
6
+ /**
7
+ * Команда входа в систему
8
+ */
9
+ export async function loginCommand(keyId, privateKey) {
10
+ console.log('Получение токена авторизации...');
11
+ await login(keyId, privateKey);
12
+ console.log('✓ Успешно авторизован! Токен сохранён в ~/.rustore/config.json');
13
+ }
14
+ /**
15
+ * Команда выхода из системы
16
+ */
17
+ export function logoutCommand() {
18
+ // Просто очищаем токен, но оставляем ключи
19
+ const config = loadConfig();
20
+ delete config.token;
21
+ delete config.tokenExpiresAt;
22
+ saveConfig(config);
23
+ console.log('✓ Выполнен выход из системы. Токен удалён.');
24
+ }
25
+ /**
26
+ * Команда проверки статуса авторизации
27
+ */
28
+ export function whoamiCommand() {
29
+ if (!configExists()) {
30
+ console.log('Не авторизован. Используйте "rustore login" для входа.');
31
+ return;
32
+ }
33
+ const config = loadConfig();
34
+ if (!config.keyId) {
35
+ console.log('Конфигурация неполная. Используйте "rustore login" для настройки.');
36
+ return;
37
+ }
38
+ console.log(`Key ID: ${config.keyId}`);
39
+ console.log(`Токен: ${config.token ? 'установлен' : 'не установлен'}`);
40
+ if (config.tokenExpiresAt) {
41
+ const expiresAt = new Date(config.tokenExpiresAt);
42
+ const isValid = config.tokenExpiresAt > Date.now();
43
+ console.log(`Срок действия токена: ${expiresAt.toLocaleString('ru-RU')} ${isValid ? '(действителен)' : '(истёк)'}`);
44
+ }
45
+ }
46
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAC,KAAK,EAAC,MAAM,gBAAgB,CAAC;AACrC,OAAO,EAAC,UAAU,EAAE,YAAY,EAAE,UAAU,EAAC,MAAM,cAAc,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa,EAAE,UAAkB;IAClE,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;IAC/C,MAAM,KAAK,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;AAChF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,2CAA2C;IAC3C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,OAAO,MAAM,CAAC,KAAK,CAAC;IACpB,OAAO,MAAM,CAAC,cAAc,CAAC;IAE7B,UAAU,CAAC,MAAM,CAAC,CAAC;IAEnB,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;AAC5D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,WAAW,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,GAAG,CAAC,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAEvE,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEnD,OAAO,CAAC,GAAG,CACT,yBAAyB,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,IACxD,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAC/B,EAAE,CACH,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Управление конфигурацией CLI
3
+ * Сохраняет настройки в ~/.rustore/config.json
4
+ */
5
+ import type { Config } from './types.js';
6
+ /**
7
+ * Загружает конфигурацию из файла
8
+ */
9
+ export declare function loadConfig(): Config;
10
+ /**
11
+ * Сохраняет конфигурацию в файл
12
+ */
13
+ export declare function saveConfig(config: Config): void;
14
+ /**
15
+ * Получает путь к директории конфигурации
16
+ */
17
+ export declare function getConfigDir(): string;
18
+ /**
19
+ * Проверяет, существует ли конфигурация
20
+ */
21
+ export declare function configExists(): boolean;
22
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,YAAY,CAAC;AAKvC;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAanC;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAe/C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAEtC"}
package/dist/config.js ADDED
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Управление конфигурацией CLI
3
+ * Сохраняет настройки в ~/.rustore/config.json
4
+ */
5
+ import { readFileSync, writeFileSync, mkdirSync, existsSync } from 'node:fs';
6
+ import { join } from 'node:path';
7
+ import { homedir } from 'node:os';
8
+ const CONFIG_DIR = join(homedir(), '.rustore');
9
+ const CONFIG_FILE = join(CONFIG_DIR, 'config.json');
10
+ /**
11
+ * Загружает конфигурацию из файла
12
+ */
13
+ export function loadConfig() {
14
+ if (!existsSync(CONFIG_FILE)) {
15
+ return {};
16
+ }
17
+ try {
18
+ const content = readFileSync(CONFIG_FILE, 'utf-8');
19
+ return JSON.parse(content);
20
+ }
21
+ catch (error) {
22
+ throw new Error(`Ошибка чтения конфигурации: ${error instanceof Error ? error.message : String(error)}`);
23
+ }
24
+ }
25
+ /**
26
+ * Сохраняет конфигурацию в файл
27
+ */
28
+ export function saveConfig(config) {
29
+ try {
30
+ if (!existsSync(CONFIG_DIR)) {
31
+ mkdirSync(CONFIG_DIR, { recursive: true });
32
+ }
33
+ const existingConfig = existsSync(CONFIG_FILE) ? loadConfig() : {};
34
+ const mergedConfig = { ...existingConfig, ...config };
35
+ writeFileSync(CONFIG_FILE, JSON.stringify(mergedConfig, null, 2), 'utf-8');
36
+ }
37
+ catch (error) {
38
+ throw new Error(`Ошибка сохранения конфигурации: ${error instanceof Error ? error.message : String(error)}`);
39
+ }
40
+ }
41
+ /**
42
+ * Получает путь к директории конфигурации
43
+ */
44
+ export function getConfigDir() {
45
+ return CONFIG_DIR;
46
+ }
47
+ /**
48
+ * Проверяет, существует ли конфигурация
49
+ */
50
+ export function configExists() {
51
+ return existsSync(CONFIG_FILE);
52
+ }
53
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAC,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAC,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAC,IAAI,EAAC,MAAM,WAAW,CAAC;AAC/B,OAAO,EAAC,OAAO,EAAC,MAAM,SAAS,CAAC;AAGhC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEpD;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACnD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAc;IACvC,IAAI,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5B,SAAS,CAAC,UAAU,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC,CAAC;QAC3C,CAAC;QAED,MAAM,cAAc,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,MAAM,YAAY,GAAG,EAAC,GAAG,cAAc,EAAE,GAAG,MAAM,EAAC,CAAC;QAEpD,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC7E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAC5F,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC;AACjC,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Основной экспорт библиотеки
3
+ */
4
+ export * from './types.js';
5
+ export * from './config.js';
6
+ export * from './api/auth.js';
7
+ export * from './api/client.js';
8
+ export * from './api/apps.js';
9
+ export * from './api/payments.js';
10
+ export * from './api/payments-app.js';
11
+ export * from './api/catalog.js';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Основной экспорт библиотеки
3
+ */
4
+ export * from './types.js';
5
+ export * from './config.js';
6
+ export * from './api/auth.js';
7
+ export * from './api/client.js';
8
+ export * from './api/apps.js';
9
+ export * from './api/payments.js';
10
+ export * from './api/payments-app.js';
11
+ export * from './api/catalog.js';
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * Типы для работы с RuStore API
3
+ */
4
+ export interface AuthTokenResponse {
5
+ code: string;
6
+ message?: string;
7
+ body?: {
8
+ jwe: string;
9
+ ttl: number;
10
+ };
11
+ timestamp: string;
12
+ }
13
+ export interface AuthRequest {
14
+ keyId: string;
15
+ timestamp: string;
16
+ signature: string;
17
+ }
18
+ export interface Config {
19
+ keyId?: string;
20
+ privateKey?: string;
21
+ token?: string;
22
+ tokenExpiresAt?: number;
23
+ }
24
+ export interface ApiError {
25
+ code: string;
26
+ message?: string;
27
+ timestamp: string;
28
+ }
29
+ /**
30
+ * Типы для работы с приложениями
31
+ */
32
+ export interface App {
33
+ appId: number;
34
+ packageName: string;
35
+ appName: string;
36
+ iconUrl: string;
37
+ appStatus: string;
38
+ versionName: string;
39
+ versionCode: number;
40
+ companyName: string;
41
+ shortDescription: string;
42
+ appVerUpdatedAt: string;
43
+ activePrice: number;
44
+ paid: boolean;
45
+ deviceType: string;
46
+ }
47
+ export interface GetAppListResponse {
48
+ code: string;
49
+ message?: string;
50
+ body: {
51
+ content: App[];
52
+ continuationToken?: string;
53
+ };
54
+ timestamp: string;
55
+ }
56
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,GAAG;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE;QACJ,OAAO,EAAE,GAAG,EAAE,CAAC;QACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB"}
package/dist/types.js ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Типы для работы с RuStore API
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
package/package.json ADDED
@@ -0,0 +1,85 @@
1
+ {
2
+ "name": "rustore",
3
+ "version": "1.0.1",
4
+ "description": "CLI для работы с RuStore API",
5
+ "license": "MIT",
6
+ "homepage": "https://github.com/romankurnovskii/rustore#readme",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/romankurnovskii/rustore.git"
10
+ },
11
+ "bugs": {
12
+ "url": "https://github.com/romankurnovskii/rustore/issues"
13
+ },
14
+ "keywords": [
15
+ "rustore",
16
+ "api",
17
+ "cli",
18
+ "russia",
19
+ "app-store"
20
+ ],
21
+ "author": {
22
+ "name": "Roman Kurnovskii",
23
+ "email": "r.kurnovskii@gmail.com",
24
+ "url": "https://romankurnovskii.com"
25
+ },
26
+ "type": "module",
27
+ "sideEffects": false,
28
+ "exports": {
29
+ ".": {
30
+ "types": "./dist/index.d.ts",
31
+ "import": "./dist/index.js"
32
+ },
33
+ "./package.json": "./package.json"
34
+ },
35
+ "bin": {
36
+ "rustore": "./dist/bin.js"
37
+ },
38
+ "scripts": {
39
+ "start": "tsx src/bin.ts",
40
+ "build": "tsc",
41
+ "type-check": "tsc --noEmit",
42
+ "lint": "eslint \"{src,tests,example/src}/**/*.{ts,tsx}\"",
43
+ "lint:fix": "eslint --fix \"{src,tests,example/src}/**/*.{ts,tsx}\"",
44
+ "format": "prettier --write \"{src,tests,example/src}/**/*.{js,ts,jsx,tsx}\"",
45
+ "format:check": "prettier --check \"{src,tests,example/src}/**/*.{js,ts,jsx,tsx}\"",
46
+ "test": "jest --config jestconfig.json",
47
+ "test:watch": "jest --config jestconfig.json --watch",
48
+ "test:coverage": "jest --config jestconfig.json --coverage",
49
+ "prepare": "husky",
50
+ "prepublishOnly": "npm run type-check && npm run build && npm test && npm run format:check && npm run lint"
51
+ },
52
+ "files": [
53
+ "dist",
54
+ "LICENSE",
55
+ "README.md"
56
+ ],
57
+ "dependencies": {
58
+ "commander": "^14.0.2"
59
+ },
60
+ "devDependencies": {
61
+ "eslint-plugin-prettier": "^5.5.4",
62
+ "@types/jest": "^30.0.0",
63
+ "@types/node": "^25.0.3",
64
+ "@typescript-eslint/eslint-plugin": "^8.50.1",
65
+ "@typescript-eslint/parser": "^8.50.1",
66
+ "eslint": "^9.39.2",
67
+ "eslint-config-prettier": "^10.1.8",
68
+ "husky": "^9.1.7",
69
+ "jest": "^30.2.0",
70
+ "lint-staged": "^16.2.7",
71
+ "prettier": "^3.7.4",
72
+ "ts-jest": "^29.4.6",
73
+ "tsx": "^4.21.0",
74
+ "typescript": "^5.9.3"
75
+ },
76
+ "engines": {
77
+ "node": ">=22.0.0"
78
+ },
79
+ "lint-staged": {
80
+ "*.{ts,tsx,js,jsx}": [
81
+ "eslint --fix",
82
+ "prettier --write"
83
+ ]
84
+ }
85
+ }