@nauth-toolkit/client 0.1.49 → 0.1.50

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.
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
+ var __create = Object.create;
2
3
  var __defProp = Object.defineProperty;
3
4
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
5
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
5
7
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
8
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
9
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
@@ -17,19 +19,18 @@ var __copyProps = (to, from2, except, desc) => {
17
19
  }
18
20
  return to;
19
21
  };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
23
+ // If the importer is in node compatibility mode or this is not an ESM
24
+ // file that has been converted to a CommonJS file using a Babel-
25
+ // compatible transform (i.e. "__esModule" has not been set), then set
26
+ // "default" to the CommonJS "module.exports" for node compatibility.
27
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
28
+ mod
29
+ ));
20
30
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
21
- var __decorateClass = (decorators, target, key, kind) => {
22
- var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
23
- for (var i = decorators.length - 1, decorator; i >= 0; i--)
24
- if (decorator = decorators[i])
25
- result = (kind ? decorator(target, key, result) : decorator(result)) || result;
26
- if (kind && result) __defProp(target, key, result);
27
- return result;
28
- };
29
- var __decorateParam = (index, decorator) => (target, key) => decorator(target, key, index);
30
31
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
31
32
 
32
- // src/angular/index.ts
33
+ // tmp/ngc/angular/angular/index.js
33
34
  var index_exports = {};
34
35
  __export(index_exports, {
35
36
  AngularHttpAdapter: () => AngularHttpAdapter,
@@ -44,21 +45,21 @@ __export(index_exports, {
44
45
  });
45
46
  module.exports = __toCommonJS(index_exports);
46
47
 
47
- // src/angular/tokens.ts
48
+ // tmp/ngc/angular/angular/tokens.js
48
49
  var import_core = require("@angular/core");
49
50
  var NAUTH_CLIENT_CONFIG = new import_core.InjectionToken("NAUTH_CLIENT_CONFIG");
50
51
 
51
- // src/angular/auth.service.ts
52
+ // tmp/ngc/angular/angular/auth.service.js
52
53
  var import_core3 = require("@angular/core");
53
54
  var import_rxjs2 = require("rxjs");
54
55
  var import_operators = require("rxjs/operators");
55
56
 
56
- // src/angular/http-adapter.ts
57
+ // tmp/ngc/angular/angular/http-adapter.js
57
58
  var import_core2 = require("@angular/core");
58
59
  var import_http = require("@angular/common/http");
59
60
  var import_rxjs = require("rxjs");
60
61
 
61
- // src/core/errors.ts
62
+ // tmp/ngc/angular/core/errors.js
62
63
  var _NAuthClientError = class _NAuthClientError extends Error {
63
64
  /**
64
65
  * Create a new client error.
@@ -146,8 +147,69 @@ var _NAuthClientError = class _NAuthClientError extends Error {
146
147
  __name(_NAuthClientError, "NAuthClientError");
147
148
  var NAuthClientError = _NAuthClientError;
148
149
 
149
- // src/angular/http-adapter.ts
150
- var AngularHttpAdapter = class {
150
+ // tmp/ngc/angular/types/error.types.js
151
+ var NAuthErrorCode;
152
+ (function(NAuthErrorCode2) {
153
+ NAuthErrorCode2["AUTH_INVALID_CREDENTIALS"] = "AUTH_INVALID_CREDENTIALS";
154
+ NAuthErrorCode2["AUTH_ACCOUNT_LOCKED"] = "AUTH_ACCOUNT_LOCKED";
155
+ NAuthErrorCode2["AUTH_ACCOUNT_INACTIVE"] = "AUTH_ACCOUNT_INACTIVE";
156
+ NAuthErrorCode2["AUTH_TOKEN_EXPIRED"] = "AUTH_TOKEN_EXPIRED";
157
+ NAuthErrorCode2["AUTH_TOKEN_INVALID"] = "AUTH_TOKEN_INVALID";
158
+ NAuthErrorCode2["AUTH_BEARER_NOT_ALLOWED"] = "AUTH_BEARER_NOT_ALLOWED";
159
+ NAuthErrorCode2["AUTH_COOKIES_NOT_ALLOWED"] = "AUTH_COOKIES_NOT_ALLOWED";
160
+ NAuthErrorCode2["AUTH_CSRF_TOKEN_INVALID"] = "AUTH_CSRF_TOKEN_INVALID";
161
+ NAuthErrorCode2["AUTH_CSRF_TOKEN_MISSING"] = "AUTH_CSRF_TOKEN_MISSING";
162
+ NAuthErrorCode2["AUTH_TOKEN_REUSE_DETECTED"] = "AUTH_TOKEN_REUSE_DETECTED";
163
+ NAuthErrorCode2["AUTH_SESSION_NOT_FOUND"] = "AUTH_SESSION_NOT_FOUND";
164
+ NAuthErrorCode2["AUTH_SESSION_EXPIRED"] = "AUTH_SESSION_EXPIRED";
165
+ NAuthErrorCode2["SIGNUP_DISABLED"] = "SIGNUP_DISABLED";
166
+ NAuthErrorCode2["SIGNUP_EMAIL_EXISTS"] = "SIGNUP_EMAIL_EXISTS";
167
+ NAuthErrorCode2["SIGNUP_USERNAME_EXISTS"] = "SIGNUP_USERNAME_EXISTS";
168
+ NAuthErrorCode2["SIGNUP_PHONE_EXISTS"] = "SIGNUP_PHONE_EXISTS";
169
+ NAuthErrorCode2["SIGNUP_WEAK_PASSWORD"] = "SIGNUP_WEAK_PASSWORD";
170
+ NAuthErrorCode2["SIGNUP_PHONE_REQUIRED"] = "SIGNUP_PHONE_REQUIRED";
171
+ NAuthErrorCode2["SIGNUP_NOT_ALLOWED"] = "SIGNUP_NOT_ALLOWED";
172
+ NAuthErrorCode2["VERIFY_CODE_INVALID"] = "VERIFY_CODE_INVALID";
173
+ NAuthErrorCode2["VERIFY_CODE_EXPIRED"] = "VERIFY_CODE_EXPIRED";
174
+ NAuthErrorCode2["VERIFY_TOO_MANY_ATTEMPTS"] = "VERIFY_TOO_MANY_ATTEMPTS";
175
+ NAuthErrorCode2["VERIFY_ALREADY_VERIFIED"] = "VERIFY_ALREADY_VERIFIED";
176
+ NAuthErrorCode2["MFA_SETUP_REQUIRED"] = "MFA_SETUP_REQUIRED";
177
+ NAuthErrorCode2["RATE_LIMIT_SMS"] = "RATE_LIMIT_SMS";
178
+ NAuthErrorCode2["RATE_LIMIT_EMAIL"] = "RATE_LIMIT_EMAIL";
179
+ NAuthErrorCode2["RATE_LIMIT_LOGIN"] = "RATE_LIMIT_LOGIN";
180
+ NAuthErrorCode2["RATE_LIMIT_RESEND"] = "RATE_LIMIT_RESEND";
181
+ NAuthErrorCode2["SOCIAL_TOKEN_INVALID"] = "SOCIAL_TOKEN_INVALID";
182
+ NAuthErrorCode2["SOCIAL_ACCOUNT_LINKED"] = "SOCIAL_ACCOUNT_LINKED";
183
+ NAuthErrorCode2["SOCIAL_CONFIG_MISSING"] = "SOCIAL_CONFIG_MISSING";
184
+ NAuthErrorCode2["SOCIAL_EMAIL_REQUIRED"] = "SOCIAL_EMAIL_REQUIRED";
185
+ NAuthErrorCode2["SOCIAL_ACCOUNT_NOT_FOUND"] = "SOCIAL_ACCOUNT_NOT_FOUND";
186
+ NAuthErrorCode2["CHALLENGE_EXPIRED"] = "CHALLENGE_EXPIRED";
187
+ NAuthErrorCode2["CHALLENGE_INVALID"] = "CHALLENGE_INVALID";
188
+ NAuthErrorCode2["CHALLENGE_TYPE_MISMATCH"] = "CHALLENGE_TYPE_MISMATCH";
189
+ NAuthErrorCode2["CHALLENGE_MAX_ATTEMPTS"] = "CHALLENGE_MAX_ATTEMPTS";
190
+ NAuthErrorCode2["CHALLENGE_ALREADY_COMPLETED"] = "CHALLENGE_ALREADY_COMPLETED";
191
+ NAuthErrorCode2["VALIDATION_FAILED"] = "VALIDATION_FAILED";
192
+ NAuthErrorCode2["VALIDATION_INVALID_PHONE"] = "VALIDATION_INVALID_PHONE";
193
+ NAuthErrorCode2["VALIDATION_INVALID_EMAIL"] = "VALIDATION_INVALID_EMAIL";
194
+ NAuthErrorCode2["VALIDATION_INVALID_PASSWORD"] = "VALIDATION_INVALID_PASSWORD";
195
+ NAuthErrorCode2["PASSWORD_INCORRECT"] = "PASSWORD_INCORRECT";
196
+ NAuthErrorCode2["PASSWORD_REUSED"] = "PASSWORD_REUSED";
197
+ NAuthErrorCode2["PASSWORD_CHANGE_NOT_ALLOWED"] = "PASSWORD_CHANGE_NOT_ALLOWED";
198
+ NAuthErrorCode2["WEAK_PASSWORD"] = "SIGNUP_WEAK_PASSWORD";
199
+ NAuthErrorCode2["PASSWORD_RESET_CODE_INVALID"] = "PASSWORD_RESET_CODE_INVALID";
200
+ NAuthErrorCode2["PASSWORD_RESET_CODE_EXPIRED"] = "PASSWORD_RESET_CODE_EXPIRED";
201
+ NAuthErrorCode2["PASSWORD_RESET_MAX_ATTEMPTS"] = "PASSWORD_RESET_MAX_ATTEMPTS";
202
+ NAuthErrorCode2["RATE_LIMIT_PASSWORD_RESET"] = "RATE_LIMIT_PASSWORD_RESET";
203
+ NAuthErrorCode2["SIGNIN_BLOCKED_HIGH_RISK"] = "SIGNIN_BLOCKED_HIGH_RISK";
204
+ NAuthErrorCode2["RESOURCE_NOT_FOUND"] = "RESOURCE_NOT_FOUND";
205
+ NAuthErrorCode2["FORBIDDEN"] = "FORBIDDEN";
206
+ NAuthErrorCode2["INTERNAL_ERROR"] = "INTERNAL_ERROR";
207
+ NAuthErrorCode2["SERVICE_UNAVAILABLE"] = "SERVICE_UNAVAILABLE";
208
+ })(NAuthErrorCode || (NAuthErrorCode = {}));
209
+
210
+ // tmp/ngc/angular/angular/http-adapter.js
211
+ var i0 = __toESM(require("@angular/core"));
212
+ var _AngularHttpAdapter = class _AngularHttpAdapter {
151
213
  constructor() {
152
214
  __publicField(this, "http", (0, import_core2.inject)(import_http.HttpClient));
153
215
  }
@@ -160,15 +222,13 @@ var AngularHttpAdapter = class {
160
222
  */
161
223
  async request(config) {
162
224
  try {
163
- const data = await (0, import_rxjs.firstValueFrom)(
164
- this.http.request(config.method, config.url, {
165
- body: config.body,
166
- headers: config.headers,
167
- withCredentials: config.credentials === "include",
168
- observe: "body"
169
- // Only return body data
170
- })
171
- );
225
+ const data = await (0, import_rxjs.firstValueFrom)(this.http.request(config.method, config.url, {
226
+ body: config.body,
227
+ headers: config.headers,
228
+ withCredentials: config.credentials === "include",
229
+ observe: "body"
230
+ // Only return body data
231
+ }));
172
232
  return {
173
233
  data,
174
234
  status: 200,
@@ -179,7 +239,7 @@ var AngularHttpAdapter = class {
179
239
  } catch (error) {
180
240
  if (error instanceof import_http.HttpErrorResponse) {
181
241
  const errorData = error.error || {};
182
- const code = typeof errorData["code"] === "string" ? errorData.code : "INTERNAL_ERROR" /* INTERNAL_ERROR */;
242
+ const code = typeof errorData["code"] === "string" ? errorData.code : NAuthErrorCode.INTERNAL_ERROR;
183
243
  const message = typeof errorData["message"] === "string" ? errorData.message : error.message || `Request failed with status ${error.status}`;
184
244
  const timestamp = typeof errorData["timestamp"] === "string" ? errorData.timestamp : void 0;
185
245
  const details = errorData["details"];
@@ -195,12 +255,16 @@ var AngularHttpAdapter = class {
195
255
  }
196
256
  }
197
257
  };
198
- __name(AngularHttpAdapter, "AngularHttpAdapter");
199
- AngularHttpAdapter = __decorateClass([
200
- (0, import_core2.Injectable)({ providedIn: "root" })
201
- ], AngularHttpAdapter);
258
+ __name(_AngularHttpAdapter, "AngularHttpAdapter");
259
+ __publicField(_AngularHttpAdapter, "\u0275fac", i0.\u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: _AngularHttpAdapter, deps: [], target: i0.\u0275\u0275FactoryTarget.Injectable }));
260
+ __publicField(_AngularHttpAdapter, "\u0275prov", i0.\u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: _AngularHttpAdapter, providedIn: "root" }));
261
+ var AngularHttpAdapter = _AngularHttpAdapter;
262
+ i0.\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i0, type: AngularHttpAdapter, decorators: [{
263
+ type: import_core2.Injectable,
264
+ args: [{ providedIn: "root" }]
265
+ }] });
202
266
 
203
- // src/core/config.ts
267
+ // tmp/ngc/angular/core/config.js
204
268
  var defaultEndpoints = {
205
269
  login: "/login",
206
270
  signup: "/signup",
@@ -258,7 +322,7 @@ var resolveConfig = /* @__PURE__ */ __name((config, defaultAdapter) => {
258
322
  };
259
323
  }, "resolveConfig");
260
324
 
261
- // src/core/refresh.ts
325
+ // tmp/ngc/angular/core/refresh.js
262
326
  var ACCESS_TOKEN_KEY = "nauth_access_token";
263
327
  var REFRESH_TOKEN_KEY = "nauth_refresh_token";
264
328
  var ACCESS_EXPIRES_AT_KEY = "nauth_access_token_expires_at";
@@ -344,14 +408,15 @@ var _TokenManager = class _TokenManager {
344
408
  async assertHasRefreshToken() {
345
409
  const state = await this.getTokens();
346
410
  if (!state.refreshToken) {
347
- throw new NAuthClientError("AUTH_SESSION_NOT_FOUND" /* AUTH_SESSION_NOT_FOUND */, "No refresh token available");
411
+ throw new NAuthClientError(NAuthErrorCode.AUTH_SESSION_NOT_FOUND, "No refresh token available");
348
412
  }
349
413
  }
350
414
  /**
351
415
  * Broadcast a no-op write to trigger storage listeners in other tabs.
352
416
  */
353
417
  broadcastStorage() {
354
- if (!this.isBrowser) return;
418
+ if (!this.isBrowser)
419
+ return;
355
420
  try {
356
421
  window.localStorage.setItem("nauth_sync", Date.now().toString());
357
422
  } catch {
@@ -361,7 +426,7 @@ var _TokenManager = class _TokenManager {
361
426
  __name(_TokenManager, "TokenManager");
362
427
  var TokenManager = _TokenManager;
363
428
 
364
- // src/storage/browser.ts
429
+ // tmp/ngc/angular/storage/browser.js
365
430
  var _BrowserStorage = class _BrowserStorage {
366
431
  /**
367
432
  * Create a browser storage adapter.
@@ -388,7 +453,7 @@ var _BrowserStorage = class _BrowserStorage {
388
453
  __name(_BrowserStorage, "BrowserStorage");
389
454
  var BrowserStorage = _BrowserStorage;
390
455
 
391
- // src/storage/memory.ts
456
+ // tmp/ngc/angular/storage/memory.js
392
457
  var _InMemoryStorage = class _InMemoryStorage {
393
458
  constructor() {
394
459
  __publicField(this, "store", /* @__PURE__ */ new Map());
@@ -409,7 +474,7 @@ var _InMemoryStorage = class _InMemoryStorage {
409
474
  __name(_InMemoryStorage, "InMemoryStorage");
410
475
  var InMemoryStorage = _InMemoryStorage;
411
476
 
412
- // src/core/events.ts
477
+ // tmp/ngc/angular/core/events.js
413
478
  var _EventEmitter = class _EventEmitter {
414
479
  constructor() {
415
480
  __publicField(this, "listeners", /* @__PURE__ */ new Map());
@@ -485,7 +550,7 @@ var _EventEmitter = class _EventEmitter {
485
550
  __name(_EventEmitter, "EventEmitter");
486
551
  var EventEmitter = _EventEmitter;
487
552
 
488
- // src/adapters/fetch-adapter.ts
553
+ // tmp/ngc/angular/adapters/fetch-adapter.js
489
554
  var _FetchAdapter = class _FetchAdapter {
490
555
  /**
491
556
  * Execute HTTP request using native fetch.
@@ -508,7 +573,7 @@ var _FetchAdapter = class _FetchAdapter {
508
573
  try {
509
574
  response = await fetch(config.url, fetchOptions);
510
575
  } catch (error) {
511
- throw new NAuthClientError("INTERNAL_ERROR" /* INTERNAL_ERROR */, "Network request failed", {
576
+ throw new NAuthClientError(NAuthErrorCode.INTERNAL_ERROR, "Network request failed", {
512
577
  isNetworkError: true,
513
578
  details: { url: config.url, message: error.message }
514
579
  });
@@ -529,7 +594,7 @@ var _FetchAdapter = class _FetchAdapter {
529
594
  });
530
595
  if (!response.ok) {
531
596
  const errorData = typeof data === "object" && data !== null ? data : {};
532
- const code = typeof errorData["code"] === "string" ? errorData["code"] : "INTERNAL_ERROR" /* INTERNAL_ERROR */;
597
+ const code = typeof errorData["code"] === "string" ? errorData["code"] : NAuthErrorCode.INTERNAL_ERROR;
533
598
  const message = typeof errorData["message"] === "string" ? errorData["message"] : `Request failed with status ${status}`;
534
599
  const timestamp = typeof errorData["timestamp"] === "string" ? errorData["timestamp"] : void 0;
535
600
  const details = errorData["details"];
@@ -545,7 +610,17 @@ var _FetchAdapter = class _FetchAdapter {
545
610
  __name(_FetchAdapter, "FetchAdapter");
546
611
  var FetchAdapter = _FetchAdapter;
547
612
 
548
- // src/core/client.ts
613
+ // tmp/ngc/angular/types/auth.types.js
614
+ var AuthChallenge;
615
+ (function(AuthChallenge2) {
616
+ AuthChallenge2["VERIFY_EMAIL"] = "VERIFY_EMAIL";
617
+ AuthChallenge2["VERIFY_PHONE"] = "VERIFY_PHONE";
618
+ AuthChallenge2["MFA_REQUIRED"] = "MFA_REQUIRED";
619
+ AuthChallenge2["MFA_SETUP_REQUIRED"] = "MFA_SETUP_REQUIRED";
620
+ AuthChallenge2["FORCE_CHANGE_PASSWORD"] = "FORCE_CHANGE_PASSWORD";
621
+ })(AuthChallenge || (AuthChallenge = {}));
622
+
623
+ // tmp/ngc/angular/core/client.js
549
624
  var USER_KEY2 = "nauth_user";
550
625
  var CHALLENGE_KEY2 = "nauth_challenge_session";
551
626
  var hasWindow = /* @__PURE__ */ __name(() => typeof globalThis !== "undefined" && typeof globalThis.window !== "undefined", "hasWindow");
@@ -614,7 +689,7 @@ var _NAuthClient = class _NAuthClient {
614
689
  }
615
690
  return response;
616
691
  } catch (error) {
617
- const authError = error instanceof NAuthClientError ? error : new NAuthClientError("AUTH_INVALID_CREDENTIALS" /* AUTH_INVALID_CREDENTIALS */, error.message || "Login failed");
692
+ const authError = error instanceof NAuthClientError ? error : new NAuthClientError(NAuthErrorCode.AUTH_INVALID_CREDENTIALS, error.message || "Login failed");
618
693
  const errorEvent = { type: "auth:error", data: authError, timestamp: Date.now() };
619
694
  this.eventEmitter.emit(errorEvent);
620
695
  throw authError;
@@ -635,7 +710,7 @@ var _NAuthClient = class _NAuthClient {
635
710
  }
636
711
  return response;
637
712
  } catch (error) {
638
- const authError = error instanceof NAuthClientError ? error : new NAuthClientError("AUTH_INVALID_CREDENTIALS" /* AUTH_INVALID_CREDENTIALS */, error.message || "Signup failed");
713
+ const authError = error instanceof NAuthClientError ? error : new NAuthClientError(NAuthErrorCode.AUTH_INVALID_CREDENTIALS, error.message || "Signup failed");
639
714
  this.eventEmitter.emit({ type: "auth:error", data: authError, timestamp: Date.now() });
640
715
  throw authError;
641
716
  }
@@ -693,11 +768,7 @@ var _NAuthClient = class _NAuthClient {
693
768
  const payload = {
694
769
  forgetDevices: forgetDevices ?? false
695
770
  };
696
- const result = await this.post(
697
- this.config.endpoints.logoutAll,
698
- payload,
699
- true
700
- );
771
+ const result = await this.post(this.config.endpoints.logoutAll, payload, true);
701
772
  await this.clearAuthState(forgetDevices);
702
773
  this.eventEmitter.emit({
703
774
  type: "auth:logout",
@@ -726,30 +797,18 @@ var _NAuthClient = class _NAuthClient {
726
797
  * @throws {NAuthClientError} If validation fails
727
798
  */
728
799
  async respondToChallenge(response) {
729
- if (response.type === "MFA_SETUP_REQUIRED" /* MFA_SETUP_REQUIRED */ && response.method === "totp") {
800
+ if (response.type === AuthChallenge.MFA_SETUP_REQUIRED && response.method === "totp") {
730
801
  const setupData = response.setupData;
731
802
  if (!setupData || typeof setupData !== "object") {
732
- throw new NAuthClientError(
733
- "VALIDATION_FAILED" /* VALIDATION_FAILED */,
734
- "TOTP setup requires setupData with both secret and code",
735
- { details: { field: "setupData" } }
736
- );
803
+ throw new NAuthClientError(NAuthErrorCode.VALIDATION_FAILED, "TOTP setup requires setupData with both secret and code", { details: { field: "setupData" } });
737
804
  }
738
805
  const secret = setupData["secret"];
739
806
  const code = setupData["code"];
740
807
  if (!secret || typeof secret !== "string") {
741
- throw new NAuthClientError(
742
- "VALIDATION_FAILED" /* VALIDATION_FAILED */,
743
- "TOTP setup requires secret in setupData. Make sure to include the secret from getSetupData() response.",
744
- { details: { field: "secret" } }
745
- );
808
+ throw new NAuthClientError(NAuthErrorCode.VALIDATION_FAILED, "TOTP setup requires secret in setupData. Make sure to include the secret from getSetupData() response.", { details: { field: "secret" } });
746
809
  }
747
810
  if (!code || typeof code !== "string") {
748
- throw new NAuthClientError(
749
- "VALIDATION_FAILED" /* VALIDATION_FAILED */,
750
- "TOTP setup requires code in setupData. Please enter the verification code from your authenticator app.",
751
- { details: { field: "code" } }
752
- );
811
+ throw new NAuthClientError(NAuthErrorCode.VALIDATION_FAILED, "TOTP setup requires code in setupData. Please enter the verification code from your authenticator app.", { details: { field: "code" } });
753
812
  }
754
813
  }
755
814
  try {
@@ -764,10 +823,7 @@ var _NAuthClient = class _NAuthClient {
764
823
  }
765
824
  return result;
766
825
  } catch (error) {
767
- const authError = error instanceof NAuthClientError ? error : new NAuthClientError(
768
- "CHALLENGE_INVALID" /* CHALLENGE_INVALID */,
769
- error.message || "Challenge response failed"
770
- );
826
+ const authError = error instanceof NAuthClientError ? error : new NAuthClientError(NAuthErrorCode.CHALLENGE_INVALID, error.message || "Challenge response failed");
771
827
  const errorEvent = { type: "auth:error", data: authError, timestamp: Date.now() };
772
828
  this.eventEmitter.emit(errorEvent);
773
829
  throw authError;
@@ -877,11 +933,7 @@ var _NAuthClient = class _NAuthClient {
877
933
  * Verify MFA setup (authenticated user).
878
934
  */
879
935
  async verifyMfaSetup(method, setupData, deviceName) {
880
- return this.post(
881
- this.config.endpoints.mfaVerifySetup,
882
- { method, setupData, deviceName },
883
- true
884
- );
936
+ return this.post(this.config.endpoints.mfaVerifySetup, { method, setupData, deviceName }, true);
885
937
  }
886
938
  /**
887
939
  * Remove MFA method.
@@ -1005,7 +1057,7 @@ var _NAuthClient = class _NAuthClient {
1005
1057
  async exchangeSocialRedirect(exchangeToken) {
1006
1058
  const token = exchangeToken?.trim();
1007
1059
  if (!token) {
1008
- throw new NAuthClientError("CHALLENGE_INVALID" /* CHALLENGE_INVALID */, "Missing exchangeToken");
1060
+ throw new NAuthClientError(NAuthErrorCode.CHALLENGE_INVALID, "Missing exchangeToken");
1009
1061
  }
1010
1062
  const result = await this.post(this.config.endpoints.socialExchange, { exchangeToken: token });
1011
1063
  await this.handleAuthResponse(result);
@@ -1028,10 +1080,7 @@ var _NAuthClient = class _NAuthClient {
1028
1080
  }
1029
1081
  return result;
1030
1082
  } catch (error) {
1031
- const authError = error instanceof NAuthClientError ? error : new NAuthClientError(
1032
- "SOCIAL_TOKEN_INVALID" /* SOCIAL_TOKEN_INVALID */,
1033
- error.message || "Social verification failed"
1034
- );
1083
+ const authError = error instanceof NAuthClientError ? error : new NAuthClientError(NAuthErrorCode.SOCIAL_TOKEN_INVALID, error.message || "Social verification failed");
1035
1084
  const errorEvent = { type: "auth:error", data: authError, timestamp: Date.now() };
1036
1085
  this.eventEmitter.emit(errorEvent);
1037
1086
  throw authError;
@@ -1160,7 +1209,8 @@ var _NAuthClient = class _NAuthClient {
1160
1209
  */
1161
1210
  async getStoredChallenge() {
1162
1211
  const raw = await this.config.storage.getItem(CHALLENGE_KEY2);
1163
- if (!raw) return null;
1212
+ if (!raw)
1213
+ return null;
1164
1214
  try {
1165
1215
  return JSON.parse(raw);
1166
1216
  } catch {
@@ -1292,7 +1342,8 @@ var _NAuthClient = class _NAuthClient {
1292
1342
  * @private
1293
1343
  */
1294
1344
  getCsrfToken() {
1295
- if (!hasWindow() || typeof document === "undefined") return null;
1345
+ if (!hasWindow() || typeof document === "undefined")
1346
+ return null;
1296
1347
  const match = document.cookie.match(new RegExp(`(^| )${this.config.csrf.cookieName}=([^;]+)`));
1297
1348
  return match ? decodeURIComponent(match[2]) : null;
1298
1349
  }
@@ -1366,16 +1417,16 @@ var _NAuthClient = class _NAuthClient {
1366
1417
  __name(_NAuthClient, "NAuthClient");
1367
1418
  var NAuthClient = _NAuthClient;
1368
1419
 
1369
- // src/angular/auth.service.ts
1370
- var AuthService = class {
1420
+ // tmp/ngc/angular/angular/auth.service.js
1421
+ var i02 = __toESM(require("@angular/core"));
1422
+ var _AuthService = class _AuthService {
1371
1423
  /**
1372
1424
  * @param config - Injected client configuration
1373
1425
  *
1374
1426
  * Note: AngularHttpAdapter is automatically injected via Angular DI.
1375
1427
  * This ensures all requests go through Angular's HttpClient and interceptors.
1376
1428
  */
1377
- constructor(config, injector) {
1378
- this.injector = injector;
1429
+ constructor(config) {
1379
1430
  __publicField(this, "client");
1380
1431
  __publicField(this, "config");
1381
1432
  __publicField(this, "currentUserSubject", new import_rxjs2.BehaviorSubject(null));
@@ -1387,12 +1438,7 @@ var AuthService = class {
1387
1438
  throw new Error("NAUTH_CLIENT_CONFIG is required to initialize AuthService");
1388
1439
  }
1389
1440
  this.config = config;
1390
- const httpAdapter = config.httpAdapter ?? this.injector?.get(AngularHttpAdapter, null) ?? null;
1391
- if (!httpAdapter) {
1392
- throw new Error(
1393
- "AngularHttpAdapter is required. Ensure AngularHttpAdapter is provided in your module or pass httpAdapter in config."
1394
- );
1395
- }
1441
+ const httpAdapter = config.httpAdapter ?? (0, import_core3.inject)(AngularHttpAdapter);
1396
1442
  this.client = new NAuthClient({
1397
1443
  ...config,
1398
1444
  httpAdapter,
@@ -2063,7 +2109,8 @@ var AuthService = class {
2063
2109
  * Called automatically on construction.
2064
2110
  */
2065
2111
  async initialize() {
2066
- if (this.initialized) return;
2112
+ if (this.initialized)
2113
+ return;
2067
2114
  this.initialized = true;
2068
2115
  await this.client.initialize();
2069
2116
  const storedChallenge = await this.client.getStoredChallenge();
@@ -2088,16 +2135,23 @@ var AuthService = class {
2088
2135
  return response;
2089
2136
  }
2090
2137
  };
2091
- __name(AuthService, "AuthService");
2092
- AuthService = __decorateClass([
2093
- (0, import_core3.Injectable)({
2138
+ __name(_AuthService, "AuthService");
2139
+ __publicField(_AuthService, "\u0275fac", i02.\u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i02, type: _AuthService, deps: [{ token: NAUTH_CLIENT_CONFIG, optional: true }], target: i02.\u0275\u0275FactoryTarget.Injectable }));
2140
+ __publicField(_AuthService, "\u0275prov", i02.\u0275\u0275ngDeclareInjectable({ minVersion: "12.0.0", version: "21.0.5", ngImport: i02, type: _AuthService, providedIn: "root" }));
2141
+ var AuthService = _AuthService;
2142
+ i02.\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i02, type: AuthService, decorators: [{
2143
+ type: import_core3.Injectable,
2144
+ args: [{
2094
2145
  providedIn: "root"
2095
- }),
2096
- __decorateParam(0, (0, import_core3.Optional)()),
2097
- __decorateParam(0, (0, import_core3.Inject)(NAUTH_CLIENT_CONFIG))
2098
- ], AuthService);
2146
+ }]
2147
+ }], ctorParameters: /* @__PURE__ */ __name(() => [{ type: void 0, decorators: [{
2148
+ type: import_core3.Optional
2149
+ }, {
2150
+ type: import_core3.Inject,
2151
+ args: [NAUTH_CLIENT_CONFIG]
2152
+ }] }], "ctorParameters") });
2099
2153
 
2100
- // src/angular/auth.interceptor.ts
2154
+ // tmp/ngc/angular/angular/auth.interceptor.js
2101
2155
  var import_core4 = require("@angular/core");
2102
2156
  var import_common = require("@angular/common");
2103
2157
  var import_http2 = require("@angular/common/http");
@@ -2107,7 +2161,8 @@ var isRefreshing = false;
2107
2161
  var refreshTokenSubject = new import_rxjs3.BehaviorSubject(null);
2108
2162
  var retriedRequests = /* @__PURE__ */ new WeakSet();
2109
2163
  function getCsrfToken(cookieName) {
2110
- if (typeof document === "undefined") return null;
2164
+ if (typeof document === "undefined")
2165
+ return null;
2111
2166
  const match = document.cookie.match(new RegExp(`(^| )${cookieName}=([^;]+)`));
2112
2167
  return match ? decodeURIComponent(match[2]) : null;
2113
2168
  }
@@ -2145,72 +2200,63 @@ var authInterceptor = /* @__PURE__ */ __name((req, next) => {
2145
2200
  }
2146
2201
  }
2147
2202
  }
2148
- return next(authReq).pipe(
2149
- (0, import_rxjs3.catchError)((error) => {
2150
- const shouldHandle = error instanceof import_http2.HttpErrorResponse && error.status === 401 && isAuthApiRequest && !isRefreshEndpoint && !isPublicEndpoint && !retriedRequests.has(req);
2151
- if (!shouldHandle) {
2152
- return (0, import_rxjs3.throwError)(() => error);
2153
- }
2203
+ return next(authReq).pipe((0, import_rxjs3.catchError)((error) => {
2204
+ const shouldHandle = error instanceof import_http2.HttpErrorResponse && error.status === 401 && isAuthApiRequest && !isRefreshEndpoint && !isPublicEndpoint && !retriedRequests.has(req);
2205
+ if (!shouldHandle) {
2206
+ return (0, import_rxjs3.throwError)(() => error);
2207
+ }
2208
+ if (config.debug) {
2209
+ console.warn("[nauth-interceptor] 401 detected:", req.url);
2210
+ }
2211
+ if (!isRefreshing) {
2212
+ isRefreshing = true;
2213
+ refreshTokenSubject.next(null);
2154
2214
  if (config.debug) {
2155
- console.warn("[nauth-interceptor] 401 detected:", req.url);
2215
+ console.warn("[nauth-interceptor] Starting refresh...");
2156
2216
  }
2157
- if (!isRefreshing) {
2158
- isRefreshing = true;
2159
- refreshTokenSubject.next(null);
2217
+ const refresh$ = tokenDelivery === "cookies" ? http.post(refreshUrl, {}, { withCredentials: true }) : (0, import_rxjs3.from)(authService.refresh());
2218
+ return refresh$.pipe((0, import_rxjs3.switchMap)((response) => {
2160
2219
  if (config.debug) {
2161
- console.warn("[nauth-interceptor] Starting refresh...");
2220
+ console.warn("[nauth-interceptor] Refresh successful");
2162
2221
  }
2163
- const refresh$ = tokenDelivery === "cookies" ? http.post(refreshUrl, {}, { withCredentials: true }) : (0, import_rxjs3.from)(authService.refresh());
2164
- return refresh$.pipe(
2165
- (0, import_rxjs3.switchMap)((response) => {
2166
- if (config.debug) {
2167
- console.warn("[nauth-interceptor] Refresh successful");
2168
- }
2169
- isRefreshing = false;
2170
- const newToken = "accessToken" in response ? response.accessToken : "success";
2171
- refreshTokenSubject.next(newToken ?? "success");
2172
- const retryReq = buildRetryRequest(authReq, tokenDelivery, newToken);
2173
- retriedRequests.add(retryReq);
2174
- if (config.debug) {
2175
- console.warn("[nauth-interceptor] Retrying:", req.url);
2176
- }
2177
- return next(retryReq);
2178
- }),
2179
- (0, import_rxjs3.catchError)((err) => {
2180
- if (config.debug) {
2181
- console.error("[nauth-interceptor] Refresh failed:", err);
2182
- }
2183
- isRefreshing = false;
2184
- refreshTokenSubject.next(null);
2185
- if (config.redirects?.sessionExpired) {
2186
- router.navigateByUrl(config.redirects.sessionExpired).catch((navError) => {
2187
- if (config.debug) {
2188
- console.error("[nauth-interceptor] Navigation failed:", navError);
2189
- }
2190
- });
2191
- }
2192
- return (0, import_rxjs3.throwError)(() => err);
2193
- })
2194
- );
2195
- } else {
2222
+ isRefreshing = false;
2223
+ const newToken = "accessToken" in response ? response.accessToken : "success";
2224
+ refreshTokenSubject.next(newToken ?? "success");
2225
+ const retryReq = buildRetryRequest(authReq, tokenDelivery, newToken);
2226
+ retriedRequests.add(retryReq);
2227
+ if (config.debug) {
2228
+ console.warn("[nauth-interceptor] Retrying:", req.url);
2229
+ }
2230
+ return next(retryReq);
2231
+ }), (0, import_rxjs3.catchError)((err) => {
2196
2232
  if (config.debug) {
2197
- console.warn("[nauth-interceptor] Waiting for refresh...");
2233
+ console.error("[nauth-interceptor] Refresh failed:", err);
2198
2234
  }
2199
- return refreshTokenSubject.pipe(
2200
- (0, import_rxjs3.filter)((token) => token !== null),
2201
- (0, import_rxjs3.take)(1),
2202
- (0, import_rxjs3.switchMap)((token) => {
2235
+ isRefreshing = false;
2236
+ refreshTokenSubject.next(null);
2237
+ if (config.redirects?.sessionExpired) {
2238
+ router.navigateByUrl(config.redirects.sessionExpired).catch((navError) => {
2203
2239
  if (config.debug) {
2204
- console.warn("[nauth-interceptor] Refresh done, retrying:", req.url);
2240
+ console.error("[nauth-interceptor] Navigation failed:", navError);
2205
2241
  }
2206
- const retryReq = buildRetryRequest(authReq, tokenDelivery, token);
2207
- retriedRequests.add(retryReq);
2208
- return next(retryReq);
2209
- })
2210
- );
2242
+ });
2243
+ }
2244
+ return (0, import_rxjs3.throwError)(() => err);
2245
+ }));
2246
+ } else {
2247
+ if (config.debug) {
2248
+ console.warn("[nauth-interceptor] Waiting for refresh...");
2211
2249
  }
2212
- })
2213
- );
2250
+ return refreshTokenSubject.pipe((0, import_rxjs3.filter)((token) => token !== null), (0, import_rxjs3.take)(1), (0, import_rxjs3.switchMap)((token) => {
2251
+ if (config.debug) {
2252
+ console.warn("[nauth-interceptor] Refresh done, retrying:", req.url);
2253
+ }
2254
+ const retryReq = buildRetryRequest(authReq, tokenDelivery, token);
2255
+ retriedRequests.add(retryReq);
2256
+ return next(retryReq);
2257
+ }));
2258
+ }
2259
+ }));
2214
2260
  }, "authInterceptor");
2215
2261
  function buildRetryRequest(originalReq, tokenDelivery, newToken) {
2216
2262
  if (tokenDelivery === "json" && newToken && newToken !== "success") {
@@ -2229,7 +2275,7 @@ var _AuthInterceptor = class _AuthInterceptor {
2229
2275
  __name(_AuthInterceptor, "AuthInterceptor");
2230
2276
  var AuthInterceptor = _AuthInterceptor;
2231
2277
 
2232
- // src/angular/auth.guard.ts
2278
+ // tmp/ngc/angular/angular/auth.guard.js
2233
2279
  var import_core5 = require("@angular/core");
2234
2280
  var import_router2 = require("@angular/router");
2235
2281
  function authGuard(redirectTo = "/login") {
@@ -2249,6 +2295,8 @@ var _AuthGuard = class _AuthGuard {
2249
2295
  * @param router - Angular router
2250
2296
  */
2251
2297
  constructor(auth, router) {
2298
+ __publicField(this, "auth");
2299
+ __publicField(this, "router");
2252
2300
  this.auth = auth;
2253
2301
  this.router = router;
2254
2302
  }
@@ -2267,7 +2315,7 @@ var _AuthGuard = class _AuthGuard {
2267
2315
  __name(_AuthGuard, "AuthGuard");
2268
2316
  var AuthGuard = _AuthGuard;
2269
2317
 
2270
- // src/angular/social-redirect-callback.guard.ts
2318
+ // tmp/ngc/angular/angular/social-redirect-callback.guard.js
2271
2319
  var import_core6 = require("@angular/core");
2272
2320
  var import_common2 = require("@angular/common");
2273
2321
  var socialRedirectCallbackGuard = /* @__PURE__ */ __name(async () => {
@@ -2310,10 +2358,11 @@ var socialRedirectCallbackGuard = /* @__PURE__ */ __name(async () => {
2310
2358
  return false;
2311
2359
  }, "socialRedirectCallbackGuard");
2312
2360
 
2313
- // src/angular/auth.module.ts
2361
+ // tmp/ngc/angular/angular/auth.module.js
2314
2362
  var import_core7 = require("@angular/core");
2315
2363
  var import_http3 = require("@angular/common/http");
2316
- var NAuthModule = class {
2364
+ var i03 = __toESM(require("@angular/core"));
2365
+ var _NAuthModule = class _NAuthModule {
2317
2366
  /**
2318
2367
  * Configure the module with client settings.
2319
2368
  *
@@ -2321,7 +2370,7 @@ var NAuthModule = class {
2321
2370
  */
2322
2371
  static forRoot(config) {
2323
2372
  return {
2324
- ngModule: NAuthModule,
2373
+ ngModule: _NAuthModule,
2325
2374
  providers: [
2326
2375
  { provide: NAUTH_CLIENT_CONFIG, useValue: config },
2327
2376
  { provide: import_http3.HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true }
@@ -2329,10 +2378,15 @@ var NAuthModule = class {
2329
2378
  };
2330
2379
  }
2331
2380
  };
2332
- __name(NAuthModule, "NAuthModule");
2333
- NAuthModule = __decorateClass([
2334
- (0, import_core7.NgModule)({})
2335
- ], NAuthModule);
2381
+ __name(_NAuthModule, "NAuthModule");
2382
+ __publicField(_NAuthModule, "\u0275fac", i03.\u0275\u0275ngDeclareFactory({ minVersion: "12.0.0", version: "21.0.5", ngImport: i03, type: _NAuthModule, deps: [], target: i03.\u0275\u0275FactoryTarget.NgModule }));
2383
+ __publicField(_NAuthModule, "\u0275mod", i03.\u0275\u0275ngDeclareNgModule({ minVersion: "14.0.0", version: "21.0.5", ngImport: i03, type: _NAuthModule }));
2384
+ __publicField(_NAuthModule, "\u0275inj", i03.\u0275\u0275ngDeclareInjector({ minVersion: "12.0.0", version: "21.0.5", ngImport: i03, type: _NAuthModule }));
2385
+ var NAuthModule = _NAuthModule;
2386
+ i03.\u0275\u0275ngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.5", ngImport: i03, type: NAuthModule, decorators: [{
2387
+ type: import_core7.NgModule,
2388
+ args: [{}]
2389
+ }] });
2336
2390
  // Annotate the CommonJS export names for ESM import in node:
2337
2391
  0 && (module.exports = {
2338
2392
  AngularHttpAdapter,