TypeScript SDK Π΄Π»Ρ ΡΠΈΠΏΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Ρ GraphQL API ΠΊΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π°
@coopenomics/sdk β ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ API ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Β«Π¦ΠΈΡΡΠΎΠ²ΠΎΠΉ ΠΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Β». ΠΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΠΎΠ»Π½ΡΡ ΡΠΈΠΏΠΈΠ·Π°ΡΠΈΡ Π·Π°ΠΏΡΠΎΡΠΎΠ², ΠΌΡΡΠ°ΡΠΈΠΉ ΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΠΎΠΊ ΡΠ΅ΡΠ΅Π· GraphQL Zeus. ΠΠΊΠ»ΡΡΠ°Π΅Ρ ΠΊΠ»Π°ΡΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½ΠΎΠΌ EOSIO, ΡΠΈΡΡΠΎΠ²ΡΠΌΠΈ ΠΏΠΎΠ΄ΠΏΠΈΡΡΠΌΠΈ, Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠ΅ΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ² ΠΈ JWT-Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ.
π ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡ: ΡΠΈΡΡΠΎΠ²ΠΎΠΉ-ΠΊΠΎΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ².ΡΡ/sdk
@wharfkit)graphql-wspnpm install --filter @coopenomics/sdk
# ΠΠ»Ρ Π²Π½Π΅ΡΠ½ΠΈΡ
ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²:
pnpm add @coopenomics/sdk
import { Client } from '@coopenomics/sdk'
const client = new Client({
api_url: '<CONTROLLER_API_URL>/v1/graphql',
chain_url: '<CHAIN_ENDPOINT>',
chain_id: '<CHAIN_ID>',
})
// Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° JWT-ΡΠΎΠΊΠ΅Π½Π°
client.setToken('<jwt_token>')
// ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π·Π°ΠΏΡΠΎΡΠ°
const result = await client.Query(Queries.GetSystemInfo, {})
| Π‘ΠΊΡΠΈΠΏΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
pnpm run build |
Π‘Π±ΠΎΡΠΊΠ° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ (unbuild, Ρ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΡΠΈΠΏΠΎΠ²) |
pnpm run dev |
Π Π΅ΠΆΠΈΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (unbuild --stub) |
pnpm run test |
ΠΠ°ΠΏΡΡΠΊ ΡΠ΅ΡΡΠΎΠ² (vitest, ΡΠ°ΠΉΠΌΠ°ΡΡ 60 ΡΠ΅ΠΊ) |
pnpm run lint |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΠΊΠΎΠ΄Π° (ESLint) |
pnpm run typecheck |
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠΈΠΏΠΎΠ² TypeScript (tsc --noEmit) |
pnpm run docs |
ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ (TypeDoc + Π°Π²ΡΠΎΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ) |
ΠΡΠ΅ ΡΠΊΡΠΈΠΏΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ ΠΈΠ· ΠΊΠΎΡΠ½Ρ ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠΈΠ»ΡΡΡ:
pnpm --filter @coopenomics/sdk run <ΡΠΊΡΠΈΠΏΡ>
SDK Π½Π΅ ΡΡΠ΅Π±ΡΠ΅Ρ .env ΡΠ°ΠΉΠ»ΠΎΠ² β ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°:
| ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ | ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ |
|---|---|
api_url |
URL GraphQL API ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° |
chain_url |
URL Π±Π»ΠΎΠΊΡΠ΅ΠΉΠ½-Π½ΠΎΠ΄Ρ |
chain_id |
ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ ΡΠ΅ΠΏΠΎΡΠΊΠΈ Π±Π»ΠΎΠΊΠΎΠ² |
src/
βββ classes/ # ΠΡΡΠΎΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠ΅ ΠΊΠ»Π°ΡΡΡ
β βββ account.ts # Π Π°Π±ΠΎΡΠ° Ρ Π°ΠΊΠΊΠ°ΡΠ½ΡΠ°ΠΌΠΈ
β βββ blockchain.ts # ΠΠ»ΠΎΠΊΡΠ΅ΠΉΠ½-ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
β βββ canvas.ts # ΠΠΈΠ·ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈΡΡ
β βββ crypto.ts # ΠΡΠΈΠΏΡΠΎΠ³ΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
β βββ document.ts # ΠΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠΎΠ±ΠΎΡΠΎΡ
β βββ vote.ts # ΠΠΎΠ»ΠΎΡΠΎΠ²Π°Π½ΠΈΠ΅
βββ mutations/ # Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΌΡΡΠ°ΡΠΈΠΈ (Zeus selectors)
βββ queries/ # Π’ΠΈΠΏΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ (Zeus selectors)
βββ selectors/ # ΠΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠ΅Π»Π΅ΠΊΡΠΎΡΡ ΠΏΠΎ Π΄ΠΎΠΌΠ΅Π½Π°ΠΌ
β βββ system/ # Π‘ΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ Π·Π°ΠΏΡΠΎΡΡ
β βββ registration/ # Π Π΅Π³ΠΈΡΡΡΠ°ΡΠΈΡ
β βββ wallet/ # ΠΠΎΡΠ΅Π»ΡΠΊ
β βββ gateway/ # ΠΠ»Π°ΡΠ΅ΠΆΠΈ
β βββ documents/ # ΠΠΎΠΊΡΠΌΠ΅Π½ΡΡ
β βββ decisions/ # Π Π΅ΡΠ΅Π½ΠΈΡ ΡΠΎΠ²Π΅ΡΠ°
β βββ meet/ # Π‘ΠΎΠ±ΡΠ°Π½ΠΈΡ
β βββ ledger/ # ΠΡΡ
Π³Π°Π»ΡΠ΅ΡΠΈΡ
β βββ extensions/ # Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΡ
β βββ ... # ΠΡΡΠ³ΠΈΠ΅ Π΄ΠΎΠΌΠ΅Π½Ρ
βββ types/ # Π’ΠΈΠΏΡ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ°
β βββ client/ # ΠΠΏΡΠΈΠΈ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ
β βββ blockchain/ # ΠΠ»ΠΎΠΊΡΠ΅ΠΉΠ½-ΡΠΈΠΏΡ
β βββ controller/ # Π’ΠΈΠΏΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ°
β βββ document/ # Π’ΠΈΠΏΡ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΎΠ²
βββ zeus/ # Π‘Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΊΠ»ΠΈΠ΅Π½Ρ GraphQL Zeus
βββ index.ts # Π’ΠΎΡΠΊΠ° Π²Ρ
ΠΎΠ΄Π° (ΡΠΊΡΠΏΠΎΡΡ Client)
Π‘Π΅Π»Π΅ΠΊΡΠΎΡΡ Π³Π΅Π½Π΅ΡΠΈΡΡΡΡΡΡ ΠΈΠ· GraphQL-ΡΡ
Π΅ΠΌΡ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ graphql-zeus. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ΅Π»Π΅ΠΊΡΠΎΡ Π²Π°Π»ΠΈΠ΄ΠΈΡΡΠ΅ΡΡΡ ΡΠ΅ΡΠ΅Π· MakeAllFieldsRequired Π΄Π»Ρ Π³Π°ΡΠ°Π½ΡΠΈΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ ΠΏΠΎΠ»Π΅ΠΉ.
pnpm --filter @coopenomics/sdk run test
ΠΡΠΎΠ΅ΠΊΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ 4 ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠ΅ΡΡΠ° Π½Π° vitest Ρ ΡΠ°ΠΉΠΌΠ°ΡΡΠΎΠΌ 60 ΡΠ΅ΠΊΡΠ½Π΄, ΠΏΡΠΎΠ²Π΅ΡΡΡΡΠΈΡ
ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° Ρ API.