@sentroy-co/client-sdk 2.13.7 → 2.13.9

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.
@@ -0,0 +1,623 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SentroyAuth = void 0;
37
+ const http_1 = require("./http");
38
+ const STORAGE_KEY_PREFIX = "sentroy.auth";
39
+ /**
40
+ * Base64URL → UTF-8 decode. Browser'da `atob` + manuel UTF-8 reconstruction;
41
+ * Node'da `Buffer.from(..., "base64url")`. Tek kod yolu, runtime detect.
42
+ */
43
+ function decodeBase64Url(s) {
44
+ // Pad + standard base64
45
+ const padded = s.replace(/-/g, "+").replace(/_/g, "/");
46
+ const pad = padded.length % 4 === 0 ? "" : "=".repeat(4 - (padded.length % 4));
47
+ if (typeof atob === "function") {
48
+ const binary = atob(padded + pad);
49
+ // UTF-8 reconstruction (JWT claims yabancı karakter içerebilir)
50
+ const bytes = new Uint8Array(binary.length);
51
+ for (let i = 0; i < binary.length; i++)
52
+ bytes[i] = binary.charCodeAt(i);
53
+ return new TextDecoder().decode(bytes);
54
+ }
55
+ // Node fallback
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ const B = globalThis.Buffer;
58
+ if (B)
59
+ return B.from(padded + pad, "base64").toString("utf8");
60
+ throw new Error("No base64 decoder available");
61
+ }
62
+ /**
63
+ * Optional `@simplewebauthn/browser` import — RP webauthn flow kullanmak
64
+ * isterse kendi devDependencies'ine ekler; lazy import ile bundle'a
65
+ * sızmaz.
66
+ */
67
+ async function loadSimpleWebAuthnBrowser() {
68
+ try {
69
+ // String-concat hides the specifier from TS resolver — `@simplewebauthn/browser`
70
+ // is an optional peer; SDK ships without it bundled. RP'nin npm install'unda
71
+ // varsa runtime'da çözülür, yoksa catch'e düşüp kullanıcıya net hata verir.
72
+ const specifier = "@simplewebauthn/" + "browser";
73
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
74
+ const mod = await Promise.resolve(`${specifier}`).then(s => __importStar(require(s)));
75
+ return {
76
+ startRegistration: mod.startRegistration,
77
+ startAuthentication: mod.startAuthentication,
78
+ };
79
+ }
80
+ catch {
81
+ throw new Error("Passkey support requires `@simplewebauthn/browser` — install it as a peer dependency.");
82
+ }
83
+ }
84
+ function localStorageAdapter(projectSlug) {
85
+ if (typeof window === "undefined" || !window.localStorage) {
86
+ return memoryStorageAdapter();
87
+ }
88
+ const key = `${STORAGE_KEY_PREFIX}.${projectSlug}`;
89
+ return {
90
+ read() {
91
+ try {
92
+ const raw = window.localStorage.getItem(key);
93
+ if (!raw)
94
+ return null;
95
+ return JSON.parse(raw);
96
+ }
97
+ catch {
98
+ return null;
99
+ }
100
+ },
101
+ write(value) {
102
+ try {
103
+ window.localStorage.setItem(key, JSON.stringify(value));
104
+ }
105
+ catch {
106
+ // QuotaExceeded, etc — degrade to memory silently.
107
+ }
108
+ },
109
+ clear() {
110
+ try {
111
+ window.localStorage.removeItem(key);
112
+ }
113
+ catch {
114
+ // ignore
115
+ }
116
+ },
117
+ };
118
+ }
119
+ function memoryStorageAdapter() {
120
+ let store = null;
121
+ return {
122
+ read: () => store,
123
+ write: (value) => {
124
+ store = value;
125
+ },
126
+ clear: () => {
127
+ store = null;
128
+ },
129
+ };
130
+ }
131
+ class SentroyAuth {
132
+ http;
133
+ storage;
134
+ listeners = new Set();
135
+ refreshSkew;
136
+ refreshTimer = null;
137
+ currentUser = null;
138
+ constructor(opts) {
139
+ this.http = new http_1.AuthHttp(opts);
140
+ this.refreshSkew = opts.refreshSkew ?? 300;
141
+ if (opts.storage === "memory") {
142
+ this.storage = memoryStorageAdapter();
143
+ }
144
+ else if (opts.storage &&
145
+ typeof opts.storage === "object" &&
146
+ "read" in opts.storage) {
147
+ this.storage = opts.storage;
148
+ }
149
+ else {
150
+ this.storage = localStorageAdapter(opts.projectSlug);
151
+ }
152
+ // Restore from storage on construct — `onAuthStateChanged` listener'ları
153
+ // henüz yok; ilk subscribe sırasında dispatch edilir.
154
+ const restored = this.storage.read();
155
+ if (restored) {
156
+ this.currentUser = restored.user;
157
+ this.scheduleRefresh(this.estimateExpiry(restored.accessToken));
158
+ }
159
+ }
160
+ // ─── Public API ──────────────────────────────────────────────────────────
161
+ get user() {
162
+ return this.currentUser;
163
+ }
164
+ get accessToken() {
165
+ return this.storage.read()?.accessToken ?? null;
166
+ }
167
+ async signUp(input) {
168
+ const res = await this.http.request("/signup", {
169
+ method: "POST",
170
+ json: input,
171
+ });
172
+ if (res.accessToken && res.refreshToken) {
173
+ this.persist({
174
+ accessToken: res.accessToken,
175
+ refreshToken: res.refreshToken,
176
+ user: res.user,
177
+ });
178
+ }
179
+ return res;
180
+ }
181
+ /**
182
+ * Sign in with email/password. MFA enrolled user'lar için response
183
+ * discriminated union: `kind: "mfa"` → caller `verifyMfa()` çağırır.
184
+ * `kind: "tokens"` → session kuruldu.
185
+ */
186
+ async signIn(input) {
187
+ const res = await this.http.request("/login", { method: "POST", json: input });
188
+ if ("mfaRequired" in res && res.mfaRequired) {
189
+ return { kind: "mfa", data: res };
190
+ }
191
+ const tokens = res;
192
+ this.persist({
193
+ accessToken: tokens.accessToken,
194
+ refreshToken: tokens.refreshToken,
195
+ user: tokens.user,
196
+ });
197
+ return { kind: "tokens", data: tokens };
198
+ }
199
+ /**
200
+ * MFA verify — `signIn` ile `kind: "mfa"` döndüyse, kullanıcıdan code
201
+ * (veya recovery code) alıp bu method'u çağır. Başarılıysa session
202
+ * kurulur ve login tamamlanır.
203
+ */
204
+ async verifyMfa(input) {
205
+ const res = await this.http.request("/login/mfa/verify", { method: "POST", json: input });
206
+ this.persist({
207
+ accessToken: res.accessToken,
208
+ refreshToken: res.refreshToken,
209
+ user: res.user,
210
+ });
211
+ return res;
212
+ }
213
+ async signOut() {
214
+ const restored = this.storage.read();
215
+ if (restored?.refreshToken) {
216
+ // Best-effort revoke — fail'ı sessizce yut (network problem
217
+ // sign-out'u bloklamasın).
218
+ await this.http
219
+ .request("/logout", {
220
+ method: "POST",
221
+ json: { refreshToken: restored.refreshToken },
222
+ })
223
+ .catch(() => { });
224
+ }
225
+ this.clearSession();
226
+ }
227
+ async sendPasswordReset(email) {
228
+ await this.http.request("/password-reset/request", {
229
+ method: "POST",
230
+ json: { email },
231
+ });
232
+ }
233
+ /**
234
+ * Reset password using token from email. `newPassword` policy +
235
+ * HaveIBeenPwned breach check yapılır.
236
+ */
237
+ async confirmPasswordReset(input) {
238
+ const res = await this.http.request("/password-reset/confirm", { method: "POST", json: input });
239
+ return res.user;
240
+ }
241
+ async verifyEmail(token) {
242
+ const res = await this.http.request("/verify-email", { method: "POST", json: { token } });
243
+ if (this.currentUser && this.currentUser.id === res.user.id) {
244
+ const restored = this.storage.read();
245
+ if (restored) {
246
+ this.persist({ ...restored, user: res.user });
247
+ }
248
+ else {
249
+ this.currentUser = res.user;
250
+ this.notify();
251
+ }
252
+ }
253
+ return res.user;
254
+ }
255
+ // ─── Magic link ──────────────────────────────────────────────────────────
256
+ /**
257
+ * Email magic-link request. Project'in `magicLinkEnabled` true
258
+ * olması gerekir. Uniform 200 response — email yoksa da hata vermez.
259
+ */
260
+ async sendMagicLink(input) {
261
+ await this.http.request("/magic-link/request", {
262
+ method: "POST",
263
+ json: input,
264
+ });
265
+ }
266
+ /**
267
+ * Magic link mail'inden gelen token ile login. Session kurulur.
268
+ */
269
+ async consumeMagicLink(token) {
270
+ const res = await this.http.request("/magic-link/consume", { method: "POST", json: { token } });
271
+ this.persist({
272
+ accessToken: res.accessToken,
273
+ refreshToken: res.refreshToken,
274
+ user: res.user,
275
+ });
276
+ return res;
277
+ }
278
+ // ─── Invitation ──────────────────────────────────────────────────────────
279
+ /**
280
+ * Accept admin invitation. Token mail'den gelir, kullanıcı password
281
+ * + optional displayName girer; hesap create + session kurulur.
282
+ */
283
+ async acceptInvitation(input) {
284
+ const res = await this.http.request("/invitation/accept", { method: "POST", json: input });
285
+ this.persist({
286
+ accessToken: res.accessToken,
287
+ refreshToken: res.refreshToken,
288
+ user: res.user,
289
+ });
290
+ return res;
291
+ }
292
+ // ─── Social federation ───────────────────────────────────────────────────
293
+ /**
294
+ * Provider authorize URL üret. `window.location.assign(url)` ile
295
+ * RP'nin sayfasından redirect — callback'te Sentroy session kurulur,
296
+ * redirectUri fragment'ında token'lar döner.
297
+ */
298
+ socialAuthorizeUrl(provider, opts = {}) {
299
+ const params = new URLSearchParams();
300
+ if (opts.redirectUri)
301
+ params.set("redirectUri", opts.redirectUri);
302
+ if (opts.rememberMe)
303
+ params.set("rememberMe", "1");
304
+ const qs = params.toString();
305
+ return `${this.http.baseUrl}/api/v1/auth/${this.http.projectSlug}/social/${provider}/authorize${qs ? `?${qs}` : ""}`;
306
+ }
307
+ /**
308
+ * `window.location.hash`tan social login redirect sonrası gelen
309
+ * `#access_token=...&refresh_token=...&token_type=Bearer` parse +
310
+ * session kur. RP sayfasına redirectUri varsayılan akış kullanıldıysa
311
+ * çağırın. Başarılıysa user döner, fail'da null.
312
+ */
313
+ async consumeRedirectFragment() {
314
+ if (typeof window === "undefined")
315
+ return null;
316
+ const hash = window.location.hash.replace(/^#/, "");
317
+ if (!hash)
318
+ return null;
319
+ const params = new URLSearchParams(hash);
320
+ const accessToken = params.get("access_token");
321
+ const refreshToken = params.get("refresh_token");
322
+ if (!accessToken || !refreshToken)
323
+ return null;
324
+ // Fragment'ı URL'den temizle (history clean)
325
+ window.history.replaceState(null, "", window.location.pathname + window.location.search);
326
+ const user = await this.fetchMe(accessToken);
327
+ if (!user)
328
+ return null;
329
+ this.persist({ accessToken, refreshToken, user });
330
+ return user;
331
+ }
332
+ // ─── /me (current user info) ─────────────────────────────────────────────
333
+ async getCurrentUser() {
334
+ const restored = this.storage.read();
335
+ if (!restored)
336
+ return null;
337
+ const user = await this.fetchMe(restored.accessToken);
338
+ if (user) {
339
+ this.persist({ ...restored, user });
340
+ }
341
+ return user;
342
+ }
343
+ async fetchMe(accessToken) {
344
+ try {
345
+ return await this.http.request("/me", {
346
+ method: "GET",
347
+ bearer: accessToken,
348
+ });
349
+ }
350
+ catch {
351
+ return null;
352
+ }
353
+ }
354
+ // ─── /me/sessions ────────────────────────────────────────────────────────
355
+ async listSessions() {
356
+ return this.http.request("/me/sessions", {
357
+ method: "GET",
358
+ bearer: this.requireToken(),
359
+ });
360
+ }
361
+ async revokeSession(id) {
362
+ await this.http.request(`/me/sessions/${encodeURIComponent(id)}`, {
363
+ method: "DELETE",
364
+ bearer: this.requireToken(),
365
+ });
366
+ }
367
+ // ─── /me/password ────────────────────────────────────────────────────────
368
+ /**
369
+ * Change password. Backend tüm session'ları revoke eder; SDK local
370
+ * session'ı temizler — caller `signIn` ile tekrar oturum açar.
371
+ */
372
+ async changePassword(input) {
373
+ await this.http.request("/me/password", {
374
+ method: "POST",
375
+ json: input,
376
+ bearer: this.requireToken(),
377
+ });
378
+ this.clearSession();
379
+ }
380
+ // ─── /me/email/change ────────────────────────────────────────────────────
381
+ /**
382
+ * Request email change — confirmation mail yeni adrese gönderilir.
383
+ * Kullanıcı `confirmEmailChange(token)` ile finalize eder.
384
+ */
385
+ async requestEmailChange(input) {
386
+ await this.http.request("/me/email/change-request", {
387
+ method: "POST",
388
+ json: input,
389
+ bearer: this.requireToken(),
390
+ });
391
+ }
392
+ /** Token-based confirm (mail link'inden gelir). */
393
+ async confirmEmailChange(token) {
394
+ const user = await this.http.request("/me/email/change-confirm", { method: "POST", json: { token } });
395
+ // Email changed — tüm sessions revoke edildi, local clear
396
+ this.clearSession();
397
+ return user;
398
+ }
399
+ // ─── /me/account (delete) ────────────────────────────────────────────────
400
+ async requestAccountDeletion(currentPassword) {
401
+ await this.http.request("/me/account/delete-request", {
402
+ method: "POST",
403
+ json: { currentPassword },
404
+ bearer: this.requireToken(),
405
+ });
406
+ }
407
+ async confirmAccountDeletion(token) {
408
+ await this.http.request("/me/account/delete-confirm", {
409
+ method: "POST",
410
+ json: { token },
411
+ });
412
+ this.clearSession();
413
+ }
414
+ // ─── /me/activity ────────────────────────────────────────────────────────
415
+ async getActivity() {
416
+ return this.http.request("/me/activity", {
417
+ method: "GET",
418
+ bearer: this.requireToken(),
419
+ });
420
+ }
421
+ // ─── /me/mfa ─────────────────────────────────────────────────────────────
422
+ mfa = {
423
+ getStatus: async () => this.http.request("/me/mfa", {
424
+ method: "GET",
425
+ bearer: this.requireToken(),
426
+ }),
427
+ enrollTotp: async () => this.http.request("/me/mfa/totp/enroll", {
428
+ method: "POST",
429
+ bearer: this.requireToken(),
430
+ }),
431
+ verifyTotpEnrollment: async (code) => this.http.request("/me/mfa/totp/verify-enrollment", { method: "POST", json: { code }, bearer: this.requireToken() }),
432
+ disableTotp: async (currentPassword) => {
433
+ await this.http.request("/me/mfa/totp/disable", {
434
+ method: "POST",
435
+ json: { currentPassword },
436
+ bearer: this.requireToken(),
437
+ });
438
+ },
439
+ };
440
+ // ─── /me/passkey + /passkey/auth ─────────────────────────────────────────
441
+ passkey = {
442
+ list: async () => this.http.request("/me/passkey", {
443
+ method: "GET",
444
+ bearer: this.requireToken(),
445
+ }),
446
+ delete: async (id) => {
447
+ await this.http.request(`/me/passkey/${encodeURIComponent(id)}`, {
448
+ method: "DELETE",
449
+ bearer: this.requireToken(),
450
+ });
451
+ },
452
+ /**
453
+ * Register a new passkey on this device.
454
+ *
455
+ * Browser-only: dynamically imports `@simplewebauthn/browser`. RP
456
+ * SDK kullanıyor ama webauthn/browser bağımlılığı yoksa caller
457
+ * `peerDependencies` aracılığıyla manuel ekler.
458
+ */
459
+ register: async (deviceName) => {
460
+ const begin = await this.http.request("/me/passkey/register/begin", {
461
+ method: "POST",
462
+ bearer: this.requireToken(),
463
+ });
464
+ const sw = await loadSimpleWebAuthnBrowser();
465
+ const attestation = await sw.startRegistration({
466
+ optionsJSON: begin.options,
467
+ });
468
+ await this.http.request("/me/passkey/register/complete", {
469
+ method: "POST",
470
+ json: {
471
+ challengeToken: begin.challengeToken,
472
+ response: attestation,
473
+ deviceName: deviceName ??
474
+ (typeof navigator !== "undefined"
475
+ ? navigator.userAgent.slice(0, 80)
476
+ : null),
477
+ },
478
+ bearer: this.requireToken(),
479
+ });
480
+ },
481
+ /**
482
+ * Sign in with passkey. Email opsiyonel — verilirse server o
483
+ * user'ın passkey'lerini allowList yapar, yoksa "usernameless".
484
+ * Session kurulur.
485
+ */
486
+ authenticate: async (opts = {}) => {
487
+ const begin = await this.http.request("/passkey/authenticate/begin", {
488
+ method: "POST",
489
+ json: { email: opts.email },
490
+ });
491
+ const sw = await loadSimpleWebAuthnBrowser();
492
+ const assertion = await sw.startAuthentication({
493
+ optionsJSON: begin.options,
494
+ });
495
+ const res = await this.http.request("/passkey/authenticate/complete", {
496
+ method: "POST",
497
+ json: {
498
+ challengeToken: begin.challengeToken,
499
+ response: assertion,
500
+ rememberMe: opts.rememberMe,
501
+ },
502
+ });
503
+ this.persist({
504
+ accessToken: res.accessToken,
505
+ refreshToken: res.refreshToken,
506
+ user: res.user,
507
+ });
508
+ return res;
509
+ },
510
+ };
511
+ /**
512
+ * Force refresh now — caller'ın sürdüğü access token süresi dolmuş
513
+ * olabilir; bu method yeni token'ları persist eder.
514
+ */
515
+ async refreshNow() {
516
+ await this.refresh();
517
+ }
518
+ /** Manual session injection — fragment / cookie redirect dışında tokens
519
+ * başka bir kanaldan elde edildiyse (örn. RP custom auth callback). */
520
+ setSession(input) {
521
+ this.persist(input);
522
+ }
523
+ requireToken() {
524
+ const restored = this.storage.read();
525
+ if (!restored?.accessToken) {
526
+ throw new Error("Not signed in — accessToken missing.");
527
+ }
528
+ return restored.accessToken;
529
+ }
530
+ /**
531
+ * Subscription pattern — Firebase Auth uyumlu. Caller'ın hemen mevcut
532
+ * state'i alabilmesi için constructor'da restore edilen user
533
+ * subscribe sırasında bir kez dispatch edilir.
534
+ */
535
+ onAuthStateChanged(listener) {
536
+ this.listeners.add(listener);
537
+ // Microtask gibi async dispatch — caller's `useEffect` cleanup race
538
+ // problemlerini önler.
539
+ Promise.resolve().then(() => listener(this.currentUser));
540
+ return () => {
541
+ this.listeners.delete(listener);
542
+ };
543
+ }
544
+ // ─── Internals ───────────────────────────────────────────────────────────
545
+ persist(value) {
546
+ this.storage.write(value);
547
+ this.currentUser = value.user;
548
+ this.notify();
549
+ this.scheduleRefresh(this.estimateExpiry(value.accessToken));
550
+ }
551
+ clearSession() {
552
+ this.storage.clear();
553
+ this.currentUser = null;
554
+ if (this.refreshTimer) {
555
+ clearTimeout(this.refreshTimer);
556
+ this.refreshTimer = null;
557
+ }
558
+ this.notify();
559
+ }
560
+ notify() {
561
+ for (const l of this.listeners) {
562
+ try {
563
+ l(this.currentUser);
564
+ }
565
+ catch {
566
+ // Listener hatası diğer subscriber'ları engellemesin.
567
+ }
568
+ }
569
+ }
570
+ /**
571
+ * JWT'nin `exp` claim'inden expiry'i tahmin et. Parsing fail ise
572
+ * 1 saat varsay (default access TTL). Refresh window: exp - skew.
573
+ *
574
+ * **Browser-safe**: `Buffer` Node'a özel, tarayıcıda yok. `atob`
575
+ * + URL-safe charset normalization ile decode ediyoruz.
576
+ */
577
+ estimateExpiry(accessToken) {
578
+ try {
579
+ const [, payloadB64] = accessToken.split(".");
580
+ const payload = JSON.parse(decodeBase64Url(payloadB64));
581
+ if (typeof payload.exp === "number") {
582
+ return payload.exp * 1000;
583
+ }
584
+ }
585
+ catch {
586
+ // ignore — fall through to default
587
+ }
588
+ return Date.now() + 60 * 60 * 1000;
589
+ }
590
+ scheduleRefresh(expiryMs) {
591
+ if (typeof window === "undefined")
592
+ return; // SSR'da auto-refresh yok
593
+ if (this.refreshTimer)
594
+ clearTimeout(this.refreshTimer);
595
+ const fireAt = expiryMs - this.refreshSkew * 1000;
596
+ const delay = Math.max(fireAt - Date.now(), 5_000);
597
+ this.refreshTimer = setTimeout(() => {
598
+ this.refresh().catch(() => {
599
+ // Refresh fail → session cleared, listener'lar null user görür
600
+ this.clearSession();
601
+ });
602
+ }, delay);
603
+ }
604
+ async refresh() {
605
+ const restored = this.storage.read();
606
+ if (!restored?.refreshToken) {
607
+ this.clearSession();
608
+ return;
609
+ }
610
+ const res = await this.http.request("/refresh", {
611
+ method: "POST",
612
+ json: { refreshToken: restored.refreshToken },
613
+ });
614
+ this.storage.write({
615
+ ...restored,
616
+ accessToken: res.accessToken,
617
+ refreshToken: res.refreshToken,
618
+ });
619
+ this.scheduleRefresh(this.estimateExpiry(res.accessToken));
620
+ }
621
+ }
622
+ exports.SentroyAuth = SentroyAuth;
623
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/auth/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ export interface AuthHttpOptions {
2
+ authBaseUrl?: string;
3
+ projectSlug: string;
4
+ apiKey?: string;
5
+ /** Hata-fırlatma yerine raw response döndür — caller fine-grained handling. */
6
+ rawErrors?: boolean;
7
+ }
8
+ export declare class AuthHttp {
9
+ readonly baseUrl: string;
10
+ readonly projectSlug: string;
11
+ readonly apiKey?: string;
12
+ constructor(opts: AuthHttpOptions);
13
+ url(path: string): string;
14
+ request<T>(path: string, init?: RequestInit & {
15
+ json?: unknown;
16
+ bearer?: string;
17
+ }): Promise<T>;
18
+ }
19
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/auth/http.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAED,qBAAa,QAAQ;IACnB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;gBAEZ,IAAI,EAAE,eAAe;IASjC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAKnB,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,WAAW,GAAG;QAClB,IAAI,CAAC,EAAE,OAAO,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;KACX,GACL,OAAO,CAAC,CAAC,CAAC;CAsDd"}