إنتقل إلى المحتوى الرئيسي

SDK لـNode / TypeScript

عميل TypeScript وفق الأساليب المألوفة للغة، دون اعتماديات تشغيل خارجية؛ يستخدم fetch المدمجة في Node وnode:crypto.

التثبيت​

npm install @corezt/ztxbas

يتطلب Node 18 أو أحدث.

الاستيراد​

import { Client, ChallengeDeniedError } from '@corezt/ztxbas';

مثال متكامل مختصر​

const c = new Client(
'https://ztxbas.example.com',
'app_YOUR_APPLICATION_ID',
'YOUR_HMAC_SECRET_HEX',
);

await c.registerUser({ email: 'alice@example.com' });
await c.registerOrigin({
origin: 'https://app.example.com',
display_name: 'Example App',
});

const ch = await c.createChallenge({
user_email: 'alice@example.com',
origin: 'https://app.example.com',
});

const claims = await c.pollChallenge(ch.challenge_id);
console.log(claims.email, claims.origin);

الأخطاء بوصفها أصنافًا ذات أنواع محددة​

ترث جميع أخطاء SDK من ZtxbasError. طابقها باستخدام instanceof:

import {
ChallengeDeniedError,
ChallengeExpiredError,
UnregisteredOriginError,
} from '@corezt/ztxbas';

try {
await c.pollChallenge(ch.challenge_id);
} catch (e) {
if (e instanceof ChallengeDeniedError) { /* user Denied */ }
else if (e instanceof ChallengeExpiredError) { /* TTL elapsed */ }
else if (e instanceof UnregisteredOriginError) { /* programmer error */ }
else throw e;
}

وضع التحقق فقط​

import { Verifier } from '@corezt/ztxbas';

const v = new Verifier(
'https://ztxbas.example.com/.well-known/jwks.json',
{ expectedIssuer: 'https://ztxbas.example.com' },
);
const claims = await v.verify(jwtFromMobile);

المستودع والمراجع​