@nibssplc/cams-sdk-react 1.0.0-rc.132 → 1.0.0-rc.133

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.
package/dist/index.cjs.js CHANGED
@@ -1777,45 +1777,44 @@ var MFAGate = function (_a) {
1777
1777
  }
1778
1778
  return parsed.data;
1779
1779
  }, [MFAEndpoints]);
1780
- // Extract the specific values we need from context for dependencies
1780
+ // Extract primitives from context to avoid object reference churn in deps
1781
1781
  var contextRequiresMFA = "requiresMFA" in context ? context.requiresMFA : false;
1782
1782
  var contextAccessToken = "accessToken" in context ? context.accessToken : "";
1783
+ var contextIdToken = "idToken" in context ? context.idToken : "";
1784
+ var contextHasUser = !!context.user;
1785
+ var contextIsLoading = context.isLoading;
1786
+ // Use refs so callbacks never cause effect/useCallback to re-run
1787
+ var onAuthSuccessRef = React.useRef(onAuthSuccess);
1788
+ var contextOnAuthSuccessRef = React.useRef("onAuthSuccess" in context ? context.onAuthSuccess : undefined);
1789
+ React.useEffect(function () { onAuthSuccessRef.current = onAuthSuccess; }, [onAuthSuccess]);
1790
+ React.useEffect(function () { contextOnAuthSuccessRef.current = "onAuthSuccess" in context ? context.onAuthSuccess : undefined; });
1783
1791
  var fireOnAuthSuccess = React.useCallback(function (tokens) { return __awaiter$1(void 0, void 0, void 0, function () {
1784
- var _a;
1785
- return __generator$1(this, function (_b) {
1786
- switch (_b.label) {
1792
+ var _a, _b;
1793
+ return __generator$1(this, function (_c) {
1794
+ switch (_c.label) {
1787
1795
  case 0: return [4 /*yield*/, Promise.all([
1788
- onAuthSuccess === null || onAuthSuccess === void 0 ? void 0 : onAuthSuccess(tokens),
1789
- "onAuthSuccess" in context ? (_a = context.onAuthSuccess) === null || _a === void 0 ? void 0 : _a.call(context, tokens) : undefined,
1796
+ (_a = onAuthSuccessRef.current) === null || _a === void 0 ? void 0 : _a.call(onAuthSuccessRef, tokens),
1797
+ (_b = contextOnAuthSuccessRef.current) === null || _b === void 0 ? void 0 : _b.call(contextOnAuthSuccessRef, tokens),
1790
1798
  ])];
1791
1799
  case 1:
1792
- _b.sent();
1800
+ _c.sent();
1793
1801
  return [2 /*return*/];
1794
1802
  }
1795
1803
  });
1796
- }); }, [context, onAuthSuccess]);
1804
+ }); }, [] // stable — reads from refs
1805
+ );
1797
1806
  var handleComplete = React.useCallback(function (success) { return __awaiter$1(void 0, void 0, void 0, function () {
1798
- var accessToken, idToken;
1799
1807
  return __generator$1(this, function (_a) {
1800
- switch (_a.label) {
1801
- case 0:
1802
- if (!success) return [3 /*break*/, 2];
1803
- accessToken = "accessToken" in context ? context.accessToken : "";
1804
- idToken = "idToken" in context ? context.idToken : "";
1805
- camsSdk.Logger.info("MFA Authentication Successful");
1806
- setAuthState("Completing");
1807
- return [4 /*yield*/, fireOnAuthSuccess({ accessToken: accessToken, idToken: idToken })];
1808
- case 1:
1809
- _a.sent();
1810
- setAuthState("Authenticated");
1811
- return [3 /*break*/, 3];
1812
- case 2:
1813
- camsSdk.Logger.error("MFA Authentication Failed");
1814
- _a.label = 3;
1815
- case 3: return [2 /*return*/];
1808
+ if (success) {
1809
+ camsSdk.Logger.info("MFA Authentication Successful");
1810
+ setAuthState("Completing");
1816
1811
  }
1812
+ else {
1813
+ camsSdk.Logger.error("MFA Authentication Failed");
1814
+ }
1815
+ return [2 /*return*/];
1817
1816
  });
1818
- }); }, [context, fireOnAuthSuccess]);
1817
+ }); }, []);
1819
1818
  var handleAuthFailed = React.useCallback(function () { return __awaiter$1(void 0, void 0, void 0, function () {
1820
1819
  var _a;
1821
1820
  return __generator$1(this, function (_b) {
@@ -1835,11 +1834,11 @@ var MFAGate = function (_a) {
1835
1834
  });
1836
1835
  }); }, [context, onAuthError]);
1837
1836
  React.useEffect(function () {
1838
- if (context.isLoading) {
1837
+ if (contextIsLoading) {
1839
1838
  setAuthState("Loading");
1840
1839
  return;
1841
1840
  }
1842
- if (context.user) {
1841
+ if (contextHasUser) {
1843
1842
  setAuthState("Authenticated");
1844
1843
  return;
1845
1844
  }
@@ -1850,21 +1849,32 @@ var MFAGate = function (_a) {
1850
1849
  var shouldRequireMFA = requiresMFA !== null && requiresMFA !== void 0 ? requiresMFA : contextRequiresMFA;
1851
1850
  if (shouldRequireMFA) {
1852
1851
  setAuthState("MFA_Required");
1852
+ return;
1853
1853
  }
1854
- else {
1855
- var accessToken = "accessToken" in context ? context.accessToken : "";
1856
- var idToken = "idToken" in context ? context.idToken : "";
1857
- setAuthState("Completing");
1858
- fireOnAuthSuccess({ accessToken: accessToken, idToken: idToken }).then(function () { return setAuthState("Authenticated"); });
1859
- }
1854
+ // Only fire once — guard against re-running while already completing/authenticated
1855
+ setAuthState(function (prev) {
1856
+ if (prev === "Completing" || prev === "Authenticated")
1857
+ return prev;
1858
+ return "Completing";
1859
+ });
1860
1860
  }, [
1861
- context.isLoading,
1862
- context.user,
1861
+ contextIsLoading,
1862
+ contextHasUser,
1863
1863
  contextRequiresMFA,
1864
1864
  contextAccessToken,
1865
1865
  requiresMFA,
1866
- fireOnAuthSuccess,
1867
1866
  ]);
1867
+ // Separate effect: fire callback and advance to Authenticated only when Completing
1868
+ React.useEffect(function () {
1869
+ if (authState !== "Completing")
1870
+ return;
1871
+ var cancelled = false;
1872
+ fireOnAuthSuccess({ accessToken: contextAccessToken, idToken: contextIdToken }).then(function () {
1873
+ if (!cancelled)
1874
+ setAuthState("Authenticated");
1875
+ });
1876
+ return function () { cancelled = true; };
1877
+ }, [authState, contextAccessToken, contextIdToken, fireOnAuthSuccess]);
1868
1878
  if (useADLogin && !CredentialsAuthEndpoint)
1869
1879
  return jsxRuntime.jsx(ErrorFallback, { message: "Invalid AD Login Configuration." });
1870
1880
  if (!ValidatedMFAEndpoints)