@coopenomics/sdk 2026.2.22-2 → 2026.2.28-4
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 +82 -93
- package/dist/index.cjs +1039 -839
- package/dist/index.d.cts +2742 -1253
- package/dist/index.d.mts +2742 -1253
- package/dist/index.d.ts +2742 -1253
- package/dist/index.mjs +1038 -838
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -1,127 +1,116 @@
|
|
|
1
|
-
# @coopenomics/sdk
|
|
1
|
+
# 🔌 @coopenomics/sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> TypeScript SDK для типобезопасной работы с GraphQL API кооператива
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
https://цифровой-кооператив.рф/documentation
|
|
5
|
+
## Описание
|
|
7
6
|
|
|
8
|
-
|
|
7
|
+
`@coopenomics/sdk` — клиентская библиотека для программного взаимодействия с API платформы «Цифровой Кооператив». Обеспечивает полную типизацию запросов, мутаций и подписок через [GraphQL Zeus](https://github.com/graphql-editor/graphql-zeus). Включает классы для работы с блокчейном EOSIO, цифровыми подписями, генерацией документов и JWT-аутентификацией.
|
|
9
8
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
-
|
|
15
|
-
-
|
|
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
|
-
```
|
|
20
|
-
|
|
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
|
-
```
|
|
28
|
-
import {
|
|
32
|
+
```typescript
|
|
33
|
+
import { Client } from '@coopenomics/sdk'
|
|
29
34
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
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
|
-
|
|
41
|
+
// Установка JWT-токена
|
|
42
|
+
client.setToken('<jwt_token>')
|
|
39
43
|
|
|
40
|
-
|
|
41
|
-
client.
|
|
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
|
-
|
|
51
|
-
|
|
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
|
-
|
|
55
|
-
Queries.Accounts.GetAccount.query,
|
|
56
|
-
{ variables }
|
|
57
|
-
)
|
|
58
|
-
```
|
|
59
|
+
> Все скрипты запускаются из корня монорепозитория через фильтр: `pnpm --filter @coopenomics/sdk run <скрипт>`
|
|
59
60
|
|
|
60
|
-
|
|
61
|
+
## Конфигурация
|
|
61
62
|
|
|
62
|
-
|
|
63
|
-
Для изменения данных используется пространство Mutations. Например, создание паевого взноса:
|
|
63
|
+
SDK не требует `.env` файлов — параметры передаются при создании клиента:
|
|
64
64
|
|
|
65
|
-
|
|
66
|
-
|
|
65
|
+
| Параметр | Описание |
|
|
66
|
+
|----------|----------|
|
|
67
|
+
| `api_url` | URL GraphQL API контроллера |
|
|
68
|
+
| `chain_url` | URL блокчейн-ноды |
|
|
69
|
+
| `chain_id` | Идентификатор цепочки блоков |
|
|
67
70
|
|
|
68
|
-
|
|
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
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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
|
-
|
|
94
|
-
Некоторые мутации требуют списки значений, например, установка статуса платежа:
|
|
95
|
-
|
|
96
|
-
```ts
|
|
97
|
-
import { Mutations, Zeus } from '@coopenomics/sdk'
|
|
104
|
+
Селекторы генерируются из GraphQL-схемы контроллера с помощью `graphql-zeus`. Каждый селектор валидируется через `MakeAllFieldsRequired` для гарантии полноты полей.
|
|
98
105
|
|
|
99
|
-
|
|
100
|
-
data: { id: '<payment_id>', status: Zeus.PaymentStatus.PAID }
|
|
101
|
-
}
|
|
106
|
+
## Тестирование
|
|
102
107
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
{ variables }
|
|
106
|
-
)
|
|
108
|
+
```bash
|
|
109
|
+
pnpm --filter @coopenomics/sdk run test
|
|
107
110
|
```
|
|
108
111
|
|
|
109
|
-
|
|
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
|
-
|
|
116
|
+
[BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru)
|