@coopenomics/sdk 2026.2.22-2 → 2026.3.4-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.
package/README.md CHANGED
@@ -1,127 +1,116 @@
1
- # @coopenomics/sdk
1
+ # 🔌 @coopenomics/sdk
2
2
 
3
- [@coopenomics/sdk](https://coopenomics.world) это SDK-клиент, обеспечивающий удобный программный доступ к запросам, мутациям и подпискам [GraphQL-API](/graphql) с полной типизацией входных и выходных данных на TypeScript. Он предназначен для интеграции с `MONO` и [Кооперативной Экономикой](https://coopenomics.world), упрощая взаимодействие с системой.
3
+ > TypeScript SDK для типобезопасной работы с GraphQL API кооператива
4
4
 
5
- ## Документация
6
- https://цифровой-кооператив.рф/documentation
5
+ ## Описание
7
6
 
8
- ## Возможности SDK
7
+ `@coopenomics/sdk` клиентская библиотека для программного взаимодействия с API платформы «Цифровой Кооператив». Обеспечивает полную типизацию запросов, мутаций и подписок через [GraphQL Zeus](https://github.com/graphql-editor/graphql-zeus). Включает классы для работы с блокчейном EOSIO, цифровыми подписями, генерацией документов и JWT-аутентификацией.
9
8
 
10
- - **Запросы** к `MONO` с автоматической типизацией.
11
- - **Мутации** данных с валидацией входных параметров.
12
- - **Подписки** на события в системе.
13
- - **Классы** для работы с блокчейном, цифровыми подписями и документами.
14
- - **Интеграция с блокчейном**, включая отправку транзакций.
15
- - **Поддержка JWT-токенов** для аутентификации.
9
+ 📖 Документация: [цифровой-кооператив.рф/sdk](https://цифровой-кооператив.рф/sdk)
10
+
11
+ ## Возможности
12
+
13
+ - **Типобезопасные запросы** все GraphQL-запросы и мутации полностью типизированы через Zeus-селекторы
14
+ - **Блокчейн-операции** подпись транзакций, работа с аккаунтами и ключами EOSIO (`@wharfkit`)
15
+ - **Документооборот** — генерация, подпись и верификация юридических документов
16
+ - **Голосование** — участие в голосованиях совета кооператива
17
+ - **Подписки в реальном времени** — WebSocket-подписки на события через `graphql-ws`
18
+ - **JWT-аутентификация** — управление токенами доступа
19
+ - **Canvas** — утилиты для генерации визуальных представлений
16
20
 
17
21
  ## Установка
18
22
 
19
- ```sh
20
- npm install @coopenomics/sdk
21
- # или
23
+ ```bash
24
+ pnpm install --filter @coopenomics/sdk
25
+
26
+ # Для внешних проектов:
22
27
  pnpm add @coopenomics/sdk
23
28
  ```
24
29
 
25
- Подключение
30
+ ## Быстрый старт
26
31
 
27
- ```ts
28
- import { createClient } from '@coopenomics/sdk'
32
+ ```typescript
33
+ import { Client } from '@coopenomics/sdk'
29
34
 
30
- // создаём клиент
31
- const client = createClient({
32
- api_url: 'http://127.0.0.1:2998/v1/graphql', // адрес MONO GraphQL-API
33
- chain_url: 'https://api.coopenomics.world', // адрес конечной точки блокчейна
34
- chain_id: 'cae86058a6d8698833afb474ab8a5ad8599c6cf54f9ebcf275dbac7055c16fe1', // идентификатор цепочки блоков
35
+ const client = new Client({
36
+ api_url: '<CONTROLLER_API_URL>/v1/graphql',
37
+ chain_url: '<CHAIN_ENDPOINT>',
38
+ chain_id: '<CHAIN_ID>',
35
39
  })
36
- ```
37
40
 
38
- Аутентификация выполняется с помощью JWT:
41
+ // Установка JWT-токена
42
+ client.setToken('<jwt_token>')
39
43
 
40
- ```ts
41
- client.setToken('<your_access_token>')
44
+ // Выполнение типизированного запроса
45
+ const result = await client.Query(Queries.GetSystemInfo, {})
42
46
  ```
43
47
 
44
- ## Запросы
45
- Для выполнения запросов используйте пространство Queries. Например, получение данных об аккаунте:
46
-
47
- ```ts
48
- import { Queries } from '@coopenomics/sdk'
48
+ ## Скрипты
49
49
 
50
- const variables: Queries.Accounts.GetAccount.IInput = {
51
- data: { username: '<username>' }
52
- }
50
+ | Скрипт | Описание |
51
+ |--------|----------|
52
+ | `pnpm run build` | Сборка библиотеки (`unbuild`, с предварительной проверкой типов) |
53
+ | `pnpm run dev` | Режим разработки (`unbuild --stub`) |
54
+ | `pnpm run test` | Запуск тестов (`vitest`, таймаут 60 сек) |
55
+ | `pnpm run lint` | Проверка кода (`ESLint`) |
56
+ | `pnpm run typecheck` | Проверка типов TypeScript (`tsc --noEmit`) |
57
+ | `pnpm run docs` | Генерация документации (`TypeDoc` + автокомментарии) |
53
58
 
54
- const { [Queries.Accounts.GetAccount.name]: result } = await client.Query(
55
- Queries.Accounts.GetAccount.query,
56
- { variables }
57
- )
58
- ```
59
+ > Все скрипты запускаются из корня монорепозитория через фильтр: `pnpm --filter @coopenomics/sdk run <скрипт>`
59
60
 
60
- Результат будет типизирован в соответствии с Queries.Accounts.GetAccount.IOutput.
61
+ ## Конфигурация
61
62
 
62
- ## Мутации
63
- Для изменения данных используется пространство Mutations. Например, создание паевого взноса:
63
+ SDK не требует `.env` файлов — параметры передаются при создании клиента:
64
64
 
65
- ```ts
66
- import { Mutations } from '@coopenomics/sdk'
65
+ | Параметр | Описание |
66
+ |----------|----------|
67
+ | `api_url` | URL GraphQL API контроллера |
68
+ | `chain_url` | URL блокчейн-ноды |
69
+ | `chain_id` | Идентификатор цепочки блоков |
67
70
 
68
- const variables: Mutations.Payments.CreateDepositPayment.IInput = {
69
- data: { username: '<username>', quantity: '100.00' }
70
- }
71
+ ## Архитектура
71
72
 
72
- const { [Mutations.Payments.CreateDepositPayment.name]: result } = await client.Mutation(
73
- Mutations.Payments.CreateDepositPayment.mutation,
74
- { variables }
75
- )
76
73
  ```
77
-
78
- Результат будет типизирован в соответствии с Mutations.Payments.CreateDepositPayment.IOutput.
79
-
80
- ### Работа с блокчейном
81
- SDK включает классы для взаимодействия с блокчейном, например:
82
-
83
- ```ts
84
-
85
- import { Blockchain } from '@coopenomics/sdk'
86
-
87
- const blockchain = new Blockchain(client)
88
- blockchain.setWif(<username>, <wif>)
89
-
90
- const tableData = await blockchain.getAllRows('some_contract', 'some_scope', 'some_table')
74
+ src/
75
+ ├── classes/ # Высокоуровневые классы
76
+ │ ├── account.ts # Работа с аккаунтами
77
+ │ ├── blockchain.ts # Блокчейн-операции
78
+ │ ├── canvas.ts # Визуальные утилиты
79
+ │ ├── crypto.ts # Криптографические операции
80
+ │ ├── document.ts # Документооборот
81
+ │ └── vote.ts # Голосование
82
+ ├── mutations/ # Типизированные мутации (Zeus selectors)
83
+ ├── queries/ # Типизированные запросы (Zeus selectors)
84
+ ├── selectors/ # Переиспользуемые селекторы по доменам
85
+ │ ├── system/ # Системные запросы
86
+ │ ├── registration/ # Регистрация
87
+ │ ├── wallet/ # Кошелёк
88
+ │ ├── gateway/ # Платежи
89
+ │ ├── documents/ # Документы
90
+ │ ├── decisions/ # Решения совета
91
+ │ ├── meet/ # Собрания
92
+ │ ├── ledger/ # Бухгалтерия
93
+ │ ├── extensions/ # Расширения
94
+ │ └── ... # Другие домены
95
+ ├── types/ # Типы и интерфейсы клиента
96
+ │ ├── client/ # Опции подключения
97
+ │ ├── blockchain/ # Блокчейн-типы
98
+ │ ├── controller/ # Типы контроллера
99
+ │ └── document/ # Типы документов
100
+ ├── zeus/ # Сгенерированный клиент GraphQL Zeus
101
+ └── index.ts # Точка входа (экспорт Client)
91
102
  ```
92
103
 
93
- ### Использование списков Zeus
94
- Некоторые мутации требуют списки значений, например, установка статуса платежа:
95
-
96
- ```ts
97
- import { Mutations, Zeus } from '@coopenomics/sdk'
104
+ Селекторы генерируются из GraphQL-схемы контроллера с помощью `graphql-zeus`. Каждый селектор валидируется через `MakeAllFieldsRequired` для гарантии полноты полей.
98
105
 
99
- const variables: Mutations.Payments.SetPaymentStatus.IInput = {
100
- data: { id: '<payment_id>', status: Zeus.PaymentStatus.PAID }
101
- }
106
+ ## Тестирование
102
107
 
103
- const { [Mutations.Payments.SetPaymentStatus.name]: result } = await client.Mutation(
104
- Mutations.Payments.SetPaymentStatus.mutation,
105
- { variables }
106
- )
108
+ ```bash
109
+ pnpm --filter @coopenomics/sdk run test
107
110
  ```
108
111
 
109
- Полный список доступных значений находится в документации SDK.
110
-
111
- ### Дополнительная информация
112
- Общая документация: https://цифровой-кооператив.рф/documentation
113
-
114
- Руководство по SDK: https://цифровой-кооператив.рф/sdk
115
-
116
- Документация GraphQL API: https://цифровой-кооператив.рф/graphql
117
-
118
- Кооперативная Экономика: https://coopenomics.world
112
+ Проект содержит 4 интеграционных теста на `vitest` с таймаутом 60 секунд, проверяющих корректность работы клиента с API.
119
113
 
120
114
  ## Лицензия
121
- Продукт Потребительского Кооператива "ВОСХОД" распространяется по лицензии BY-NC-SA 4.0.
122
-
123
- Разрешено делиться, копировать и распространять материал на любом носителе и форме, адаптировать, делать ремиксы, видоизменять и создавать новое, опираясь на этот материал. При использовании, Вы должны обеспечить указание авторства, предоставить ссылку, и обозначить изменения, если таковые были сделаны. Если вы перерабатываете, преобразовываете материал или берёте его за основу для производного произведения, вы должны распространять переделанные вами части материала на условиях той же лицензии, в соответствии с которой распространяется оригинал. Запрещено коммерческое использование материала. Использование в коммерческих целях – это использование, в первую очередь направленное на получение коммерческого преимущества или денежного вознаграждения.
124
-
125
- Юридический текст лицензии: https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru
126
115
 
127
- © 2025 Потребительский Кооператив "ВОСХОД". Все права защищены.
116
+ [BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru)