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);
المستودع والمراجع
- الشيفرة:
sdk-node/ - الحزمة:
@corezt/ztxbas - مثال البدء:
quickstarts/node/