dauth-context-react 2.0.0 → 2.2.0
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/README.md +15 -11
- package/dist/api/dauth.api.d.ts +2 -1
- package/dist/api/interfaces/dauth.api.responses.d.ts +7 -0
- package/dist/dauth-context-react.cjs.development.js +114 -18
- package/dist/dauth-context-react.cjs.development.js.map +1 -1
- package/dist/dauth-context-react.cjs.production.min.js +1 -1
- package/dist/dauth-context-react.cjs.production.min.js.map +1 -1
- package/dist/dauth-context-react.esm.js +114 -18
- package/dist/dauth-context-react.esm.js.map +1 -1
- package/dist/interfaces.d.ts +5 -1
- package/dist/reducer/dauth.actions.d.ts +5 -0
- package/package.json +4 -2
- package/src/api/dauth.api.ts +20 -0
- package/src/api/interfaces/dauth.api.responses.ts +8 -0
- package/src/index.tsx +29 -9
- package/src/initialDauthState.ts +1 -0
- package/src/interfaces.ts +5 -9
- package/src/reducer/dauth.actions.ts +24 -2
package/README.md
CHANGED
|
@@ -108,6 +108,9 @@ interface IDauthUser {
|
|
|
108
108
|
role: string;
|
|
109
109
|
telPrefix: string;
|
|
110
110
|
telSuffix: string;
|
|
111
|
+
birthDate?: Date;
|
|
112
|
+
country?: string;
|
|
113
|
+
metadata?: any;
|
|
111
114
|
createdAt: Date;
|
|
112
115
|
updatedAt: Date;
|
|
113
116
|
lastLogin: Date;
|
|
@@ -257,19 +260,19 @@ function LayoutMain() {
|
|
|
257
260
|
## How It Works
|
|
258
261
|
|
|
259
262
|
1. **On mount:** Checks the URL for a redirect token (`?dauth_state=...`), then attempts auto-login from localStorage.
|
|
260
|
-
2. **Token
|
|
261
|
-
3. **Localhost detection:** Automatically routes API calls to `localhost:4012` during development (detects `localhost`, `127.0.0.1`, `[::1]`, and `192.168.x.x`) and to `https
|
|
262
|
-
4. **Token storage:**
|
|
263
|
+
2. **Token refresh:** Proactively refreshes the access token before expiry (5 minutes before). Falls back to periodic refresh every 5 minutes if decode fails.
|
|
264
|
+
3. **Localhost detection:** Automatically routes API calls to `localhost:4012` during development (detects `localhost`, `127.0.0.1`, `[::1]`, and `192.168.x.x`) and to `https://dauth.ovh` in production.
|
|
265
|
+
4. **Token storage:** Access token stored in localStorage under `dauth_state`, refresh token under `dauth_refresh_token`.
|
|
263
266
|
|
|
264
267
|
## Development
|
|
265
268
|
|
|
266
269
|
```bash
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
270
|
+
pnpm start # Watch mode (tsdx watch)
|
|
271
|
+
pnpm build # Production build (CJS + ESM)
|
|
272
|
+
pnpm test # Run Jest tests
|
|
273
|
+
pnpm lint # ESLint via tsdx
|
|
274
|
+
pnpm size # Check bundle size (10KB budget per entry)
|
|
275
|
+
pnpm analyze # Bundle size analysis with visualization
|
|
273
276
|
```
|
|
274
277
|
|
|
275
278
|
### Bundle Outputs
|
|
@@ -278,9 +281,10 @@ npm run analyze # Bundle size analysis with visualization
|
|
|
278
281
|
- **ESM:** `dist/dauth-context-react.esm.js`
|
|
279
282
|
- **Types:** `dist/index.d.ts`
|
|
280
283
|
|
|
281
|
-
### CI
|
|
284
|
+
### CI/CD
|
|
282
285
|
|
|
283
|
-
GitHub Actions runs lint,
|
|
286
|
+
- **CI**: GitHub Actions runs lint, test, and build on push to `main` and PRs. Self-hosted runner, Node 22.
|
|
287
|
+
- **Publish**: Automated npm publish on `v*` tags via GitHub Actions.
|
|
284
288
|
|
|
285
289
|
## Author
|
|
286
290
|
|
package/dist/api/dauth.api.d.ts
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { IDauthUser } from '../interfaces';
|
|
2
|
-
import { IgetUserAPIResponse, IrefreshAccessTokenAPIResponse, IrefreshTokenAPIResponse, IsendEmailVerificationAPIResponse, IupdateUserAPIResponse } from './interfaces/dauth.api.responses';
|
|
2
|
+
import { IdeleteAccountAPIResponse, IgetUserAPIResponse, IrefreshAccessTokenAPIResponse, IrefreshTokenAPIResponse, IsendEmailVerificationAPIResponse, IupdateUserAPIResponse } from './interfaces/dauth.api.responses';
|
|
3
3
|
export declare const getUserAPI: (domainName: string, token: string) => Promise<IgetUserAPIResponse>;
|
|
4
4
|
export declare const updateUserAPI: (domainName: string, user: Partial<IDauthUser>, token: string) => Promise<IupdateUserAPIResponse>;
|
|
5
5
|
export declare const sendEmailVerificationAPI: (domainName: string, token: string) => Promise<IsendEmailVerificationAPIResponse>;
|
|
6
6
|
export declare const refreshAccessTokenAPI: (domainName: string, token: string) => Promise<IrefreshAccessTokenAPIResponse>;
|
|
7
7
|
export declare const refreshTokenAPI: (domainName: string, refreshToken: string) => Promise<IrefreshTokenAPIResponse>;
|
|
8
|
+
export declare const deleteAccountAPI: (domainName: string, token: string) => Promise<IdeleteAccountAPIResponse>;
|
|
8
9
|
export declare const logoutAPI: (domainName: string, refreshToken: string) => Promise<{
|
|
9
10
|
response: Response;
|
|
10
11
|
}>;
|
|
@@ -1,4 +1,11 @@
|
|
|
1
1
|
import { IDauthDomainState, IDauthUser } from '../../interfaces';
|
|
2
|
+
export interface IdeleteAccountAPIResponse {
|
|
3
|
+
response: Response;
|
|
4
|
+
data: {
|
|
5
|
+
status: string;
|
|
6
|
+
message: string;
|
|
7
|
+
};
|
|
8
|
+
}
|
|
2
9
|
export interface IgetUserAPIResponse {
|
|
3
10
|
response: Response;
|
|
4
11
|
data: {
|
|
@@ -176,6 +176,9 @@ var initialDauthState = {
|
|
|
176
176
|
},
|
|
177
177
|
sendEmailVerification: function sendEmailVerification() {
|
|
178
178
|
return Promise.resolve(false);
|
|
179
|
+
},
|
|
180
|
+
deleteAccount: function deleteAccount() {
|
|
181
|
+
return Promise.resolve(false);
|
|
179
182
|
}
|
|
180
183
|
};
|
|
181
184
|
|
|
@@ -391,11 +394,43 @@ var refreshTokenAPI = /*#__PURE__*/function () {
|
|
|
391
394
|
return _ref5.apply(this, arguments);
|
|
392
395
|
};
|
|
393
396
|
}();
|
|
394
|
-
var
|
|
395
|
-
var _ref6 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(domainName,
|
|
396
|
-
var params, response;
|
|
397
|
+
var deleteAccountAPI = /*#__PURE__*/function () {
|
|
398
|
+
var _ref6 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(domainName, token) {
|
|
399
|
+
var params, response, data;
|
|
397
400
|
return _regenerator().w(function (_context6) {
|
|
398
401
|
while (1) switch (_context6.n) {
|
|
402
|
+
case 0:
|
|
403
|
+
params = {
|
|
404
|
+
method: 'DELETE',
|
|
405
|
+
headers: {
|
|
406
|
+
Authorization: token,
|
|
407
|
+
'Content-Type': 'application/json'
|
|
408
|
+
}
|
|
409
|
+
};
|
|
410
|
+
_context6.n = 1;
|
|
411
|
+
return fetch(getServerBasePath() + "/app/" + domainName + "/user", params);
|
|
412
|
+
case 1:
|
|
413
|
+
response = _context6.v;
|
|
414
|
+
_context6.n = 2;
|
|
415
|
+
return response.json();
|
|
416
|
+
case 2:
|
|
417
|
+
data = _context6.v;
|
|
418
|
+
return _context6.a(2, {
|
|
419
|
+
response: response,
|
|
420
|
+
data: data
|
|
421
|
+
});
|
|
422
|
+
}
|
|
423
|
+
}, _callee6);
|
|
424
|
+
}));
|
|
425
|
+
return function deleteAccountAPI(_x10, _x11) {
|
|
426
|
+
return _ref6.apply(this, arguments);
|
|
427
|
+
};
|
|
428
|
+
}();
|
|
429
|
+
var logoutAPI = /*#__PURE__*/function () {
|
|
430
|
+
var _ref7 = /*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(domainName, refreshToken) {
|
|
431
|
+
var params, response;
|
|
432
|
+
return _regenerator().w(function (_context7) {
|
|
433
|
+
while (1) switch (_context7.n) {
|
|
399
434
|
case 0:
|
|
400
435
|
params = {
|
|
401
436
|
method: 'POST',
|
|
@@ -406,18 +441,18 @@ var logoutAPI = /*#__PURE__*/function () {
|
|
|
406
441
|
refreshToken: refreshToken
|
|
407
442
|
})
|
|
408
443
|
};
|
|
409
|
-
|
|
444
|
+
_context7.n = 1;
|
|
410
445
|
return fetch(getServerBasePath() + "/app/" + domainName + "/logout", params);
|
|
411
446
|
case 1:
|
|
412
|
-
response =
|
|
413
|
-
return
|
|
447
|
+
response = _context7.v;
|
|
448
|
+
return _context7.a(2, {
|
|
414
449
|
response: response
|
|
415
450
|
});
|
|
416
451
|
}
|
|
417
|
-
},
|
|
452
|
+
}, _callee7);
|
|
418
453
|
}));
|
|
419
|
-
return function logoutAPI(
|
|
420
|
-
return
|
|
454
|
+
return function logoutAPI(_x12, _x13) {
|
|
455
|
+
return _ref7.apply(this, arguments);
|
|
421
456
|
};
|
|
422
457
|
}();
|
|
423
458
|
|
|
@@ -808,8 +843,6 @@ function _sendEmailVerificationAction() {
|
|
|
808
843
|
function getAccessTokenAction(_x7) {
|
|
809
844
|
return _getAccessTokenAction.apply(this, arguments);
|
|
810
845
|
}
|
|
811
|
-
///////////////////////////////////////////
|
|
812
|
-
//////////////////////////////////////////
|
|
813
846
|
function _getAccessTokenAction() {
|
|
814
847
|
_getAccessTokenAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee7(_ref7) {
|
|
815
848
|
var dispatch, domainName, token_ls, payloadB64, payload, expiresIn, refreshedToken;
|
|
@@ -856,6 +889,41 @@ function _getAccessTokenAction() {
|
|
|
856
889
|
}));
|
|
857
890
|
return _getAccessTokenAction.apply(this, arguments);
|
|
858
891
|
}
|
|
892
|
+
function deleteAccountAction(_x8) {
|
|
893
|
+
return _deleteAccountAction.apply(this, arguments);
|
|
894
|
+
}
|
|
895
|
+
///////////////////////////////////////////
|
|
896
|
+
//////////////////////////////////////////
|
|
897
|
+
function _deleteAccountAction() {
|
|
898
|
+
_deleteAccountAction = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8(_ref8) {
|
|
899
|
+
var dispatch, domainName, token, result, _t8;
|
|
900
|
+
return _regenerator().w(function (_context8) {
|
|
901
|
+
while (1) switch (_context8.p = _context8.n) {
|
|
902
|
+
case 0:
|
|
903
|
+
dispatch = _ref8.dispatch, domainName = _ref8.domainName, token = _ref8.token;
|
|
904
|
+
_context8.p = 1;
|
|
905
|
+
_context8.n = 2;
|
|
906
|
+
return deleteAccountAPI(domainName, token);
|
|
907
|
+
case 2:
|
|
908
|
+
result = _context8.v;
|
|
909
|
+
if (!(result.response.status === 200)) {
|
|
910
|
+
_context8.n = 3;
|
|
911
|
+
break;
|
|
912
|
+
}
|
|
913
|
+
resetUser(dispatch);
|
|
914
|
+
return _context8.a(2, true);
|
|
915
|
+
case 3:
|
|
916
|
+
return _context8.a(2, false);
|
|
917
|
+
case 4:
|
|
918
|
+
_context8.p = 4;
|
|
919
|
+
_t8 = _context8.v;
|
|
920
|
+
console.error('Delete account error', _t8);
|
|
921
|
+
return _context8.a(2, false);
|
|
922
|
+
}
|
|
923
|
+
}, _callee8, null, [[1, 4]]);
|
|
924
|
+
}));
|
|
925
|
+
return _deleteAccountAction.apply(this, arguments);
|
|
926
|
+
}
|
|
859
927
|
var resetUser = function resetUser(dispatch) {
|
|
860
928
|
localStorage.removeItem(TOKEN_LS);
|
|
861
929
|
localStorage.removeItem(REFRESH_TOKEN_LS);
|
|
@@ -1027,13 +1095,13 @@ var DauthProvider = function DauthProvider(props) {
|
|
|
1027
1095
|
}, _callee5);
|
|
1028
1096
|
})), [domainName]);
|
|
1029
1097
|
var updateUser = React.useCallback(/*#__PURE__*/function () {
|
|
1030
|
-
var
|
|
1031
|
-
var name, lastname, nickname, telPrefix, telSuffix, language, avatar,
|
|
1098
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(fields) {
|
|
1099
|
+
var token_ls, name, lastname, nickname, telPrefix, telSuffix, language, avatar, birthDate, country, metadata, user;
|
|
1032
1100
|
return _regenerator().w(function (_context6) {
|
|
1033
1101
|
while (1) switch (_context6.n) {
|
|
1034
1102
|
case 0:
|
|
1035
|
-
name = _ref6.name, lastname = _ref6.lastname, nickname = _ref6.nickname, telPrefix = _ref6.telPrefix, telSuffix = _ref6.telSuffix, language = _ref6.language, avatar = _ref6.avatar;
|
|
1036
1103
|
token_ls = localStorage.getItem(TOKEN_LS);
|
|
1104
|
+
name = fields.name, lastname = fields.lastname, nickname = fields.nickname, telPrefix = fields.telPrefix, telSuffix = fields.telSuffix, language = fields.language, avatar = fields.avatar, birthDate = fields.birthDate, country = fields.country, metadata = fields.metadata;
|
|
1037
1105
|
user = {
|
|
1038
1106
|
name: name,
|
|
1039
1107
|
lastname: lastname,
|
|
@@ -1041,7 +1109,10 @@ var DauthProvider = function DauthProvider(props) {
|
|
|
1041
1109
|
telPrefix: telPrefix,
|
|
1042
1110
|
telSuffix: telSuffix,
|
|
1043
1111
|
language: language,
|
|
1044
|
-
avatar: avatar
|
|
1112
|
+
avatar: avatar,
|
|
1113
|
+
birthDate: birthDate,
|
|
1114
|
+
country: country,
|
|
1115
|
+
metadata: metadata
|
|
1045
1116
|
};
|
|
1046
1117
|
_context6.n = 1;
|
|
1047
1118
|
return setUpdateUserAction({
|
|
@@ -1056,7 +1127,7 @@ var DauthProvider = function DauthProvider(props) {
|
|
|
1056
1127
|
}, _callee6);
|
|
1057
1128
|
}));
|
|
1058
1129
|
return function (_x) {
|
|
1059
|
-
return
|
|
1130
|
+
return _ref6.apply(this, arguments);
|
|
1060
1131
|
};
|
|
1061
1132
|
}(), [domainName]);
|
|
1062
1133
|
var updateUserWithRedirect = React.useCallback(function () {
|
|
@@ -1087,6 +1158,30 @@ var DauthProvider = function DauthProvider(props) {
|
|
|
1087
1158
|
}
|
|
1088
1159
|
}, _callee7);
|
|
1089
1160
|
})), [domainName]);
|
|
1161
|
+
var deleteAccount = React.useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee8() {
|
|
1162
|
+
var token_ls;
|
|
1163
|
+
return _regenerator().w(function (_context8) {
|
|
1164
|
+
while (1) switch (_context8.n) {
|
|
1165
|
+
case 0:
|
|
1166
|
+
token_ls = localStorage.getItem(TOKEN_LS);
|
|
1167
|
+
if (token_ls) {
|
|
1168
|
+
_context8.n = 1;
|
|
1169
|
+
break;
|
|
1170
|
+
}
|
|
1171
|
+
return _context8.a(2, false);
|
|
1172
|
+
case 1:
|
|
1173
|
+
if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);
|
|
1174
|
+
_context8.n = 2;
|
|
1175
|
+
return deleteAccountAction({
|
|
1176
|
+
dispatch: dispatch,
|
|
1177
|
+
domainName: domainName,
|
|
1178
|
+
token: token_ls
|
|
1179
|
+
});
|
|
1180
|
+
case 2:
|
|
1181
|
+
return _context8.a(2, _context8.v);
|
|
1182
|
+
}
|
|
1183
|
+
}, _callee8);
|
|
1184
|
+
})), [domainName]);
|
|
1090
1185
|
var memoProvider = React.useMemo(function () {
|
|
1091
1186
|
return _extends({}, dauthState, {
|
|
1092
1187
|
loginWithRedirect: loginWithRedirect,
|
|
@@ -1094,9 +1189,10 @@ var DauthProvider = function DauthProvider(props) {
|
|
|
1094
1189
|
getAccessToken: getAccessToken,
|
|
1095
1190
|
updateUser: updateUser,
|
|
1096
1191
|
updateUserWithRedirect: updateUserWithRedirect,
|
|
1097
|
-
sendEmailVerification: sendEmailVerification
|
|
1192
|
+
sendEmailVerification: sendEmailVerification,
|
|
1193
|
+
deleteAccount: deleteAccount
|
|
1098
1194
|
});
|
|
1099
|
-
}, [dauthState, loginWithRedirect, logout, getAccessToken, updateUser, updateUserWithRedirect, sendEmailVerification]);
|
|
1195
|
+
}, [dauthState, loginWithRedirect, logout, getAccessToken, updateUser, updateUserWithRedirect, sendEmailVerification, deleteAccount]);
|
|
1100
1196
|
return React__default.createElement(DauthContext.Provider, {
|
|
1101
1197
|
value: memoProvider
|
|
1102
1198
|
}, children);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dauth-context-react.cjs.development.js","sources":["../src/initialDauthState.ts","../src/reducer/dauth.types.ts","../src/reducer/dauth.reducer.ts","../src/api/utils/config.ts","../src/api/dauth.api.ts","../src/constants.ts","../src/reducer/dauth.actions.ts","../src/api/utils/routes.ts","../src/index.tsx"],"sourcesContent":["import {\n IActionStatus,\n IDauthDomainState,\n IDauthState,\n IDauthUser,\n} from './interfaces';\n\nconst initialDauthState: IDauthState = {\n user: {\n language:\n (typeof window !== 'undefined'\n ? window.document.documentElement.getAttribute('lang')\n : null) || 'es',\n } as IDauthUser,\n domain: {} as IDauthDomainState,\n isLoading: true,\n isAuthenticated: false,\n loginWithRedirect: () => {},\n logout: () => {},\n getAccessToken: () => Promise.resolve(''),\n updateUser: () => Promise.resolve(false),\n updateUserWithRedirect: () => {},\n // Send email verification\n sendEmailVerificationStatus: {\n status: {\n type: 'info',\n message: 'Sending email verification...',\n } as IActionStatus,\n isLoading: false,\n },\n sendEmailVerification: () => Promise.resolve(false),\n};\n\nexport default initialDauthState;\n","export const LOGIN = 'LOGIN';\nexport const SET_IS_LOADING = 'SET_IS_LOADING';\nexport const UPDATE_USER = 'UPDATE_USER';\nexport const SET_SEND_EMAIL_VERIFICATION_IS_LOADING =\n 'SET_SEND_EMAIL_VERIFICATION_IS_LOADING';\nexport const SET_SEND_EMAIL_VERIFICATION_STATUS =\n 'SET_SEND_EMAIL_VERIFICATION_STATUS';\n","import { IDauthState } from '../interfaces';\nimport * as DauthTypes from './dauth.types';\n\nexport default function userReducer(state: IDauthState, action: any) {\n const { type, payload } = action;\n\n switch (type) {\n case DauthTypes.LOGIN: {\n const login: IDauthState = {\n ...state,\n user: payload.user,\n domain: payload.domain,\n isAuthenticated: payload.isAuthenticated,\n };\n return login;\n }\n\n case DauthTypes.SET_IS_LOADING: {\n const isLoading: IDauthState = {\n ...state,\n isLoading: payload.isLoading,\n };\n return isLoading;\n }\n\n case DauthTypes.UPDATE_USER: {\n const updateUser: IDauthState = {\n ...state,\n user: {\n ...state.user,\n ...payload,\n },\n };\n return updateUser;\n }\n\n case DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS: {\n const setSendEmailVerificationStatus: IDauthState = {\n ...state,\n sendEmailVerificationStatus: {\n ...state.sendEmailVerificationStatus,\n status: {\n type: payload.type,\n message: payload.message,\n },\n },\n };\n return setSendEmailVerificationStatus;\n }\n\n case DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING: {\n const setSendEmailVerificationIsLoading: IDauthState = {\n ...state,\n sendEmailVerificationStatus: {\n ...state.sendEmailVerificationStatus,\n isLoading: payload,\n },\n };\n return setSendEmailVerificationIsLoading;\n }\n\n default:\n return state;\n }\n}\n","export const apiVersion = 'v1';\nexport const serverDomain = 'dauth.ovh';\n\nfunction checkIsLocalhost(): boolean {\n if (typeof window === 'undefined') return false;\n const hostname = window.location.hostname;\n return Boolean(\n hostname === 'localhost' ||\n hostname === '[::1]' ||\n hostname.match(\n /(192)\\.(168)\\.(1)\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/gm\n ) ||\n hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n );\n}\n\nexport function getServerBasePath() {\n const isLocalhost = checkIsLocalhost();\n const serverPort = 4012;\n const serverLocalUrl = `${window.location.protocol}//${window.location.hostname}:${serverPort}/api/${apiVersion}`;\n const serverProdUrl = `https://${serverDomain}/api/${apiVersion}`;\n return isLocalhost ? serverLocalUrl : serverProdUrl;\n}\n\nexport function getClientBasePath() {\n const isLocalhost = checkIsLocalhost();\n const clientPort = 5185;\n const clientLocalUrl = `${window.location.protocol}//${window.location.hostname}:${clientPort}`;\n const clientProdUrl = `https://${serverDomain}`;\n return isLocalhost ? clientLocalUrl : clientProdUrl;\n}\n","import { getServerBasePath } from './utils/config';\nimport { IDauthUser } from '../interfaces';\nimport {\n IgetUserAPIResponse,\n IrefreshAccessTokenAPIResponse,\n IrefreshTokenAPIResponse,\n IsendEmailVerificationAPIResponse,\n IupdateUserAPIResponse,\n} from './interfaces/dauth.api.responses';\n\nexport const getUserAPI = async (\n domainName: string,\n token: string\n): Promise<IgetUserAPIResponse> => {\n const params = {\n method: 'GET',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/user`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const updateUserAPI = async (\n domainName: string,\n user: Partial<IDauthUser>,\n token: string\n): Promise<IupdateUserAPIResponse> => {\n const params = {\n method: 'PATCH',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(user),\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/user`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const sendEmailVerificationAPI = async (\n domainName: string,\n token: string\n): Promise<IsendEmailVerificationAPIResponse> => {\n const params = {\n method: 'GET',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/resend-email-verification`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const refreshAccessTokenAPI = async (\n domainName: string,\n token: string\n): Promise<IrefreshAccessTokenAPIResponse> => {\n const params = {\n method: 'GET',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/refresh-access-token`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const refreshTokenAPI = async (\n domainName: string,\n refreshToken: string\n): Promise<IrefreshTokenAPIResponse> => {\n const params = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refreshToken }),\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/refresh-token`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const logoutAPI = async (\n domainName: string,\n refreshToken: string\n): Promise<{ response: Response }> => {\n const params = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refreshToken }),\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/logout`,\n params\n );\n return { response };\n};\n","export const TOKEN_LS = 'dauth_state';\nexport const REFRESH_TOKEN_LS = 'dauth_refresh_token';\n","import {\n getUserAPI,\n logoutAPI,\n refreshTokenAPI,\n sendEmailVerificationAPI,\n updateUserAPI,\n} from '../api/dauth.api';\nimport { TOKEN_LS, REFRESH_TOKEN_LS } from '../constants';\nimport { IDauthDomainState, IDauthUser } from '../interfaces';\nimport * as DauthTypes from './dauth.types';\n\ntype TSetDauthStateAction = {\n dispatch: React.Dispatch<any>;\n token: string;\n refreshToken: string;\n domainName: string;\n};\nexport async function setDauthStateAction({\n dispatch,\n token,\n refreshToken,\n domainName,\n}: TSetDauthStateAction) {\n dispatch({ type: DauthTypes.SET_IS_LOADING, payload: { isLoading: true } });\n try {\n const getUserFetch = await getUserAPI(domainName, token);\n if (getUserFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: getUserFetch.data.user,\n domain: getUserFetch.data.domain,\n isAuthenticated: true,\n },\n });\n window.history.replaceState({}, document.title, window.location.pathname);\n localStorage.setItem(TOKEN_LS, token);\n localStorage.setItem(REFRESH_TOKEN_LS, refreshToken);\n return;\n } else {\n return resetUser(dispatch);\n }\n } catch (error) {\n console.error(error);\n return resetUser(dispatch);\n } finally {\n dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n }\n}\n\ntype TSetAutoLoginAction = {\n dispatch: React.Dispatch<any>;\n domainName: string;\n};\nexport async function setAutoLoginAction({\n dispatch,\n domainName,\n}: TSetAutoLoginAction) {\n dispatch({ type: DauthTypes.SET_IS_LOADING, payload: { isLoading: true } });\n const storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (!storedRefreshToken) {\n dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n return resetUser(dispatch);\n }\n try {\n const refreshResult = await refreshTokenAPI(domainName, storedRefreshToken);\n if (refreshResult.response.status === 200) {\n const newAccessToken = refreshResult.data.accessToken;\n const newRefreshToken = refreshResult.data.refreshToken;\n localStorage.setItem(TOKEN_LS, newAccessToken);\n localStorage.setItem(REFRESH_TOKEN_LS, newRefreshToken);\n const getUserFetch = await getUserAPI(domainName, newAccessToken);\n if (getUserFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: getUserFetch.data.user,\n domain: getUserFetch.data.domain,\n isAuthenticated: true,\n },\n });\n return;\n }\n }\n // Refresh failed — session expired\n resetUser(dispatch);\n } catch (error) {\n console.error(error);\n resetUser(dispatch);\n } finally {\n dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n }\n}\n\nexport async function setLogoutAction({\n dispatch,\n domainName,\n}: {\n dispatch: React.Dispatch<any>;\n domainName: string;\n}) {\n const storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (storedRefreshToken && domainName) {\n try {\n await logoutAPI(domainName, storedRefreshToken);\n } catch (_) {\n // Best-effort server-side logout\n }\n }\n dispatch({ type: DauthTypes.SET_IS_LOADING, payload: { isLoading: true } });\n dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: {\n language:\n window.document.documentElement.getAttribute('lang') || 'es',\n },\n domain: {},\n isAuthenticated: false,\n },\n });\n localStorage.removeItem(TOKEN_LS);\n localStorage.removeItem(REFRESH_TOKEN_LS);\n return dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n}\n\nexport async function refreshSessionAction({\n dispatch,\n domainName,\n}: {\n dispatch: React.Dispatch<any>;\n domainName: string;\n}) {\n const storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (!storedRefreshToken) {\n return resetUser(dispatch);\n }\n try {\n const refreshResult = await refreshTokenAPI(domainName, storedRefreshToken);\n if (refreshResult.response.status === 200) {\n localStorage.setItem(TOKEN_LS, refreshResult.data.accessToken);\n localStorage.setItem(REFRESH_TOKEN_LS, refreshResult.data.refreshToken);\n return;\n }\n // Refresh failed — revoked or expired\n resetUser(dispatch);\n } catch (error) {\n console.error(error);\n resetUser(dispatch);\n }\n}\n\ntype TSetUpdateAction = {\n dispatch: React.Dispatch<any>;\n domainName: string;\n user: Partial<IDauthUser>;\n token: string | null;\n};\nexport async function setUpdateUserAction({\n dispatch,\n domainName,\n user,\n token,\n}: TSetUpdateAction) {\n if (user.language) {\n window.document.documentElement.setAttribute('lang', user.language);\n }\n if (!token) {\n dispatch({\n type: DauthTypes.UPDATE_USER,\n payload: user,\n });\n return false;\n }\n try {\n const getUserFetch = await updateUserAPI(domainName, user, token);\n if (getUserFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.UPDATE_USER,\n payload: getUserFetch.data.user,\n });\n return true;\n } else {\n console.error('Update user error', getUserFetch.data.message);\n return false;\n }\n } catch (error) {\n console.error('Update user error', error);\n return false;\n }\n}\n\ntype TSetSendEmailVerificationAction = {\n dispatch: React.Dispatch<any>;\n domainName: string;\n token: string;\n};\nexport async function sendEmailVerificationAction({\n dispatch,\n domainName,\n token,\n}: TSetSendEmailVerificationAction) {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: true,\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: { type: 'info', message: 'Sending email verification...' },\n });\n try {\n const sendEmailFetch = await sendEmailVerificationAPI(domainName, token);\n if (sendEmailFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: { type: 'success', message: sendEmailFetch.data.message },\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: false,\n });\n return true;\n } else {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: { type: 'error', message: sendEmailFetch.data.message },\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: false,\n });\n return false;\n }\n } catch (error) {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: {\n type: 'error',\n message: 'Send email verification fetch error',\n },\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: false,\n });\n return false;\n }\n}\n\nexport async function getAccessTokenAction({\n dispatch,\n domainName,\n}: {\n dispatch: React.Dispatch<any>;\n domainName: string;\n}) {\n const token_ls = localStorage.getItem(TOKEN_LS);\n if (!token_ls) return 'token-not-found';\n // Decode JWT to check expiry (without verification — that's the server's job)\n try {\n const payloadB64 = token_ls.split('.')[1];\n if (payloadB64) {\n const payload = JSON.parse(atob(payloadB64));\n const expiresIn = (payload.exp || 0) * 1000 - Date.now();\n // If token expires in less than 5 minutes, refresh proactively\n if (expiresIn < 5 * 60 * 1000) {\n await refreshSessionAction({ dispatch, domainName });\n const refreshedToken = localStorage.getItem(TOKEN_LS);\n return refreshedToken || 'token-not-found';\n }\n }\n } catch (_) {\n // If decode fails, return stored token and let server validate\n }\n return token_ls;\n}\n\n///////////////////////////////////////////\n//////////////////////////////////////////\nexport const resetUser = (dispatch: React.Dispatch<any>) => {\n localStorage.removeItem(TOKEN_LS);\n localStorage.removeItem(REFRESH_TOKEN_LS);\n return dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: {} as IDauthUser,\n domain: {} as IDauthDomainState,\n isAuthenticated: false,\n },\n });\n};\n","export const routes = {\n signin: 'signin',\n updateUser: 'update-user',\n};\n","import React, {\n useReducer,\n useMemo,\n useEffect,\n useCallback,\n createContext,\n useContext,\n useRef,\n} from 'react';\nimport initialDauthState from './initialDauthState';\nimport userReducer from './reducer/dauth.reducer';\nimport * as action from './reducer/dauth.actions';\nimport { getClientBasePath } from './api/utils/config';\nimport { TOKEN_LS, REFRESH_TOKEN_LS } from './constants';\nimport { routes } from './api/utils/routes';\nimport { IDauthUser } from './interfaces';\nimport { SET_IS_LOADING } from './reducer/dauth.types';\n\ninterface DauthProviderProps {\n domainName: string;\n children: React.ReactNode;\n}\n\nexport const DauthProvider: React.FC<DauthProviderProps> = (\n props: DauthProviderProps\n) => {\n const { domainName, children } = props;\n const [dauthState, dispatch] = useReducer(userReducer, initialDauthState);\n const refreshTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Schedule next proactive refresh based on access token expiry\n const scheduleRefresh = useCallback(() => {\n if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);\n const token = localStorage.getItem(TOKEN_LS);\n if (!token) return;\n try {\n const payloadB64 = token.split('.')[1];\n if (!payloadB64) return;\n const payload = JSON.parse(atob(payloadB64));\n const expiresIn = (payload.exp || 0) * 1000 - Date.now();\n // Refresh 5 minutes before expiry, minimum 10 seconds\n const refreshIn = Math.max(expiresIn - 5 * 60 * 1000, 10_000);\n refreshTimerRef.current = setTimeout(async () => {\n await action.refreshSessionAction({ dispatch, domainName });\n scheduleRefresh();\n }, refreshIn);\n } catch (_) {\n // If decode fails, retry in 5 minutes\n refreshTimerRef.current = setTimeout(async () => {\n await action.refreshSessionAction({ dispatch, domainName });\n scheduleRefresh();\n }, 5 * 60 * 1000);\n }\n }, [domainName]);\n\n // Catch login redirect\n useEffect(() => {\n (async () => {\n const queryString = window.location.search;\n if (!queryString) return;\n const urlParams = new URLSearchParams(queryString);\n const token_url = urlParams.get(TOKEN_LS);\n const refresh_url = urlParams.get(REFRESH_TOKEN_LS);\n if (token_url && refresh_url && !dauthState.isAuthenticated) {\n return action.setDauthStateAction({\n dispatch,\n token: token_url,\n refreshToken: refresh_url,\n domainName,\n });\n }\n })();\n }, []);\n\n // Auto Login\n useEffect(() => {\n (async () => {\n const refreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (refreshToken && !dauthState.isAuthenticated) {\n return action.setAutoLoginAction({ dispatch, domainName });\n } else {\n return dispatch({\n type: SET_IS_LOADING,\n payload: { isLoading: false },\n });\n }\n })();\n }, []);\n\n // Schedule proactive refresh when authenticated\n useEffect(() => {\n if (dauthState.isAuthenticated) {\n scheduleRefresh();\n }\n return () => {\n if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);\n };\n }, [dauthState.isAuthenticated, scheduleRefresh]);\n\n const loginWithRedirect = useCallback(() => {\n return window.location.replace(\n `${getClientBasePath()}/${domainName}/${routes.signin}`\n );\n }, [domainName]);\n\n const logout = useCallback(() => {\n if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);\n return action.setLogoutAction({ dispatch, domainName });\n }, [domainName]);\n\n const getAccessToken = useCallback(async () => {\n const token = await action.getAccessTokenAction({ dispatch, domainName });\n return token as string;\n }, [domainName]);\n\n const updateUser = useCallback(\n async ({\n name,\n lastname,\n nickname,\n telPrefix,\n telSuffix,\n language,\n avatar,\n }: Partial<IDauthUser>) => {\n const token_ls = localStorage.getItem(TOKEN_LS);\n const user = {\n name,\n lastname,\n nickname,\n telPrefix,\n telSuffix,\n language,\n avatar,\n } as Partial<IDauthUser>;\n return (await action.setUpdateUserAction({\n dispatch,\n domainName,\n user,\n token: token_ls,\n })) as boolean;\n },\n [domainName]\n );\n\n const updateUserWithRedirect = useCallback(() => {\n const token_ls = localStorage.getItem(TOKEN_LS);\n if (!token_ls) return;\n return window.location.replace(\n `${getClientBasePath()}/${domainName}/${routes.updateUser}/${token_ls}`\n );\n }, [domainName]);\n\n const sendEmailVerification = useCallback(async () => {\n const token_ls = localStorage.getItem(TOKEN_LS);\n if (!token_ls) return false;\n return (await action.sendEmailVerificationAction({\n dispatch,\n domainName,\n token: token_ls,\n })) as boolean;\n }, [domainName]);\n\n const memoProvider = useMemo(\n () => ({\n ...dauthState,\n loginWithRedirect,\n logout,\n getAccessToken,\n updateUser,\n updateUserWithRedirect,\n sendEmailVerification,\n }),\n [\n dauthState,\n loginWithRedirect,\n logout,\n getAccessToken,\n updateUser,\n updateUserWithRedirect,\n sendEmailVerification,\n ]\n );\n\n return (\n <DauthContext.Provider value={memoProvider}>\n {children}\n </DauthContext.Provider>\n );\n};\n\nconst DauthContext = createContext(initialDauthState);\n\nexport const useDauth = () => {\n const context = useContext(DauthContext);\n if (!context) {\n throw new Error('useDauth must be used inside DauthProvider');\n }\n return context;\n};\n"],"names":["initialDauthState","user","language","window","document","documentElement","getAttribute","domain","isLoading","isAuthenticated","loginWithRedirect","logout","getAccessToken","Promise","resolve","updateUser","updateUserWithRedirect","sendEmailVerificationStatus","status","type","message","sendEmailVerification","LOGIN","SET_IS_LOADING","UPDATE_USER","SET_SEND_EMAIL_VERIFICATION_IS_LOADING","SET_SEND_EMAIL_VERIFICATION_STATUS","userReducer","state","action","payload","DauthTypes","login","_extends","setSendEmailVerificationStatus","setSendEmailVerificationIsLoading","apiVersion","serverDomain","checkIsLocalhost","hostname","location","Boolean","match","getServerBasePath","isLocalhost","serverPort","serverLocalUrl","protocol","serverProdUrl","getClientBasePath","clientPort","clientLocalUrl","clientProdUrl","getUserAPI","_ref","_asyncToGenerator","_regenerator","m","_callee","domainName","token","params","response","data","w","_context","n","method","headers","Authorization","fetch","v","json","a","_x","_x2","apply","arguments","updateUserAPI","_ref2","_callee2","_context2","body","JSON","stringify","_x3","_x4","_x5","sendEmailVerificationAPI","_ref3","_callee3","_context3","_x6","_x7","refreshTokenAPI","_ref5","_callee5","refreshToken","_context5","_x0","_x1","logoutAPI","_ref6","_callee6","_context6","_x10","_x11","TOKEN_LS","REFRESH_TOKEN_LS","setDauthStateAction","_setDauthStateAction","dispatch","getUserFetch","_t","p","history","replaceState","title","pathname","localStorage","setItem","resetUser","console","error","f","setAutoLoginAction","_setAutoLoginAction","storedRefreshToken","refreshResult","newAccessToken","newRefreshToken","_t2","getItem","accessToken","setLogoutAction","_setLogoutAction","removeItem","refreshSessionAction","_refreshSessionAction","_callee4","_ref4","_t4","_context4","setUpdateUserAction","_setUpdateUserAction","_t5","setAttribute","sendEmailVerificationAction","_sendEmailVerificationAction","sendEmailFetch","getAccessTokenAction","_getAccessTokenAction","_callee7","_ref7","token_ls","payloadB64","expiresIn","refreshedToken","_context7","split","parse","atob","exp","Date","now","routes","signin","DauthProvider","props","children","_useReducer","useReducer","dauthState","refreshTimerRef","useRef","scheduleRefresh","useCallback","current","clearTimeout","refreshIn","Math","max","setTimeout","_","useEffect","queryString","urlParams","token_url","refresh_url","search","URLSearchParams","get","replace","name","lastname","nickname","telPrefix","telSuffix","avatar","memoProvider","useMemo","React","DauthContext","Provider","value","createContext","useDauth","context","useContext","Error"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dauth-context-react.cjs.development.js","sources":["../src/initialDauthState.ts","../src/reducer/dauth.types.ts","../src/reducer/dauth.reducer.ts","../src/api/utils/config.ts","../src/api/dauth.api.ts","../src/constants.ts","../src/reducer/dauth.actions.ts","../src/api/utils/routes.ts","../src/index.tsx"],"sourcesContent":["import {\n IActionStatus,\n IDauthDomainState,\n IDauthState,\n IDauthUser,\n} from './interfaces';\n\nconst initialDauthState: IDauthState = {\n user: {\n language:\n (typeof window !== 'undefined'\n ? window.document.documentElement.getAttribute('lang')\n : null) || 'es',\n } as IDauthUser,\n domain: {} as IDauthDomainState,\n isLoading: true,\n isAuthenticated: false,\n loginWithRedirect: () => {},\n logout: () => {},\n getAccessToken: () => Promise.resolve(''),\n updateUser: () => Promise.resolve(false),\n updateUserWithRedirect: () => {},\n // Send email verification\n sendEmailVerificationStatus: {\n status: {\n type: 'info',\n message: 'Sending email verification...',\n } as IActionStatus,\n isLoading: false,\n },\n sendEmailVerification: () => Promise.resolve(false),\n deleteAccount: () => Promise.resolve(false),\n};\n\nexport default initialDauthState;\n","export const LOGIN = 'LOGIN';\nexport const SET_IS_LOADING = 'SET_IS_LOADING';\nexport const UPDATE_USER = 'UPDATE_USER';\nexport const SET_SEND_EMAIL_VERIFICATION_IS_LOADING =\n 'SET_SEND_EMAIL_VERIFICATION_IS_LOADING';\nexport const SET_SEND_EMAIL_VERIFICATION_STATUS =\n 'SET_SEND_EMAIL_VERIFICATION_STATUS';\n","import { IDauthState } from '../interfaces';\nimport * as DauthTypes from './dauth.types';\n\nexport default function userReducer(state: IDauthState, action: any) {\n const { type, payload } = action;\n\n switch (type) {\n case DauthTypes.LOGIN: {\n const login: IDauthState = {\n ...state,\n user: payload.user,\n domain: payload.domain,\n isAuthenticated: payload.isAuthenticated,\n };\n return login;\n }\n\n case DauthTypes.SET_IS_LOADING: {\n const isLoading: IDauthState = {\n ...state,\n isLoading: payload.isLoading,\n };\n return isLoading;\n }\n\n case DauthTypes.UPDATE_USER: {\n const updateUser: IDauthState = {\n ...state,\n user: {\n ...state.user,\n ...payload,\n },\n };\n return updateUser;\n }\n\n case DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS: {\n const setSendEmailVerificationStatus: IDauthState = {\n ...state,\n sendEmailVerificationStatus: {\n ...state.sendEmailVerificationStatus,\n status: {\n type: payload.type,\n message: payload.message,\n },\n },\n };\n return setSendEmailVerificationStatus;\n }\n\n case DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING: {\n const setSendEmailVerificationIsLoading: IDauthState = {\n ...state,\n sendEmailVerificationStatus: {\n ...state.sendEmailVerificationStatus,\n isLoading: payload,\n },\n };\n return setSendEmailVerificationIsLoading;\n }\n\n default:\n return state;\n }\n}\n","export const apiVersion = 'v1';\nexport const serverDomain = 'dauth.ovh';\n\nfunction checkIsLocalhost(): boolean {\n if (typeof window === 'undefined') return false;\n const hostname = window.location.hostname;\n return Boolean(\n hostname === 'localhost' ||\n hostname === '[::1]' ||\n hostname.match(\n /(192)\\.(168)\\.(1)\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/gm\n ) ||\n hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/)\n );\n}\n\nexport function getServerBasePath() {\n const isLocalhost = checkIsLocalhost();\n const serverPort = 4012;\n const serverLocalUrl = `${window.location.protocol}//${window.location.hostname}:${serverPort}/api/${apiVersion}`;\n const serverProdUrl = `https://${serverDomain}/api/${apiVersion}`;\n return isLocalhost ? serverLocalUrl : serverProdUrl;\n}\n\nexport function getClientBasePath() {\n const isLocalhost = checkIsLocalhost();\n const clientPort = 5185;\n const clientLocalUrl = `${window.location.protocol}//${window.location.hostname}:${clientPort}`;\n const clientProdUrl = `https://${serverDomain}`;\n return isLocalhost ? clientLocalUrl : clientProdUrl;\n}\n","import { getServerBasePath } from './utils/config';\nimport { IDauthUser } from '../interfaces';\nimport {\n IdeleteAccountAPIResponse,\n IgetUserAPIResponse,\n IrefreshAccessTokenAPIResponse,\n IrefreshTokenAPIResponse,\n IsendEmailVerificationAPIResponse,\n IupdateUserAPIResponse,\n} from './interfaces/dauth.api.responses';\n\nexport const getUserAPI = async (\n domainName: string,\n token: string\n): Promise<IgetUserAPIResponse> => {\n const params = {\n method: 'GET',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/user`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const updateUserAPI = async (\n domainName: string,\n user: Partial<IDauthUser>,\n token: string\n): Promise<IupdateUserAPIResponse> => {\n const params = {\n method: 'PATCH',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(user),\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/user`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const sendEmailVerificationAPI = async (\n domainName: string,\n token: string\n): Promise<IsendEmailVerificationAPIResponse> => {\n const params = {\n method: 'GET',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/resend-email-verification`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const refreshAccessTokenAPI = async (\n domainName: string,\n token: string\n): Promise<IrefreshAccessTokenAPIResponse> => {\n const params = {\n method: 'GET',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/refresh-access-token`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const refreshTokenAPI = async (\n domainName: string,\n refreshToken: string\n): Promise<IrefreshTokenAPIResponse> => {\n const params = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refreshToken }),\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/refresh-token`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const deleteAccountAPI = async (\n domainName: string,\n token: string\n): Promise<IdeleteAccountAPIResponse> => {\n const params = {\n method: 'DELETE',\n headers: {\n Authorization: token,\n 'Content-Type': 'application/json',\n },\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/user`,\n params\n );\n const data = await response.json();\n return { response, data };\n};\n\nexport const logoutAPI = async (\n domainName: string,\n refreshToken: string\n): Promise<{ response: Response }> => {\n const params = {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ refreshToken }),\n };\n const response = await fetch(\n `${getServerBasePath()}/app/${domainName}/logout`,\n params\n );\n return { response };\n};\n","export const TOKEN_LS = 'dauth_state';\nexport const REFRESH_TOKEN_LS = 'dauth_refresh_token';\n","import {\n deleteAccountAPI,\n getUserAPI,\n logoutAPI,\n refreshTokenAPI,\n sendEmailVerificationAPI,\n updateUserAPI,\n} from '../api/dauth.api';\nimport { TOKEN_LS, REFRESH_TOKEN_LS } from '../constants';\nimport { IDauthDomainState, IDauthUser } from '../interfaces';\nimport * as DauthTypes from './dauth.types';\n\ntype TSetDauthStateAction = {\n dispatch: React.Dispatch<any>;\n token: string;\n refreshToken: string;\n domainName: string;\n};\nexport async function setDauthStateAction({\n dispatch,\n token,\n refreshToken,\n domainName,\n}: TSetDauthStateAction) {\n dispatch({ type: DauthTypes.SET_IS_LOADING, payload: { isLoading: true } });\n try {\n const getUserFetch = await getUserAPI(domainName, token);\n if (getUserFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: getUserFetch.data.user,\n domain: getUserFetch.data.domain,\n isAuthenticated: true,\n },\n });\n window.history.replaceState({}, document.title, window.location.pathname);\n localStorage.setItem(TOKEN_LS, token);\n localStorage.setItem(REFRESH_TOKEN_LS, refreshToken);\n return;\n } else {\n return resetUser(dispatch);\n }\n } catch (error) {\n console.error(error);\n return resetUser(dispatch);\n } finally {\n dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n }\n}\n\ntype TSetAutoLoginAction = {\n dispatch: React.Dispatch<any>;\n domainName: string;\n};\nexport async function setAutoLoginAction({\n dispatch,\n domainName,\n}: TSetAutoLoginAction) {\n dispatch({ type: DauthTypes.SET_IS_LOADING, payload: { isLoading: true } });\n const storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (!storedRefreshToken) {\n dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n return resetUser(dispatch);\n }\n try {\n const refreshResult = await refreshTokenAPI(domainName, storedRefreshToken);\n if (refreshResult.response.status === 200) {\n const newAccessToken = refreshResult.data.accessToken;\n const newRefreshToken = refreshResult.data.refreshToken;\n localStorage.setItem(TOKEN_LS, newAccessToken);\n localStorage.setItem(REFRESH_TOKEN_LS, newRefreshToken);\n const getUserFetch = await getUserAPI(domainName, newAccessToken);\n if (getUserFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: getUserFetch.data.user,\n domain: getUserFetch.data.domain,\n isAuthenticated: true,\n },\n });\n return;\n }\n }\n // Refresh failed — session expired\n resetUser(dispatch);\n } catch (error) {\n console.error(error);\n resetUser(dispatch);\n } finally {\n dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n }\n}\n\nexport async function setLogoutAction({\n dispatch,\n domainName,\n}: {\n dispatch: React.Dispatch<any>;\n domainName: string;\n}) {\n const storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (storedRefreshToken && domainName) {\n try {\n await logoutAPI(domainName, storedRefreshToken);\n } catch (_) {\n // Best-effort server-side logout\n }\n }\n dispatch({ type: DauthTypes.SET_IS_LOADING, payload: { isLoading: true } });\n dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: {\n language: window.document.documentElement.getAttribute('lang') || 'es',\n },\n domain: {},\n isAuthenticated: false,\n },\n });\n localStorage.removeItem(TOKEN_LS);\n localStorage.removeItem(REFRESH_TOKEN_LS);\n return dispatch({\n type: DauthTypes.SET_IS_LOADING,\n payload: { isLoading: false },\n });\n}\n\nexport async function refreshSessionAction({\n dispatch,\n domainName,\n}: {\n dispatch: React.Dispatch<any>;\n domainName: string;\n}) {\n const storedRefreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (!storedRefreshToken) {\n return resetUser(dispatch);\n }\n try {\n const refreshResult = await refreshTokenAPI(domainName, storedRefreshToken);\n if (refreshResult.response.status === 200) {\n localStorage.setItem(TOKEN_LS, refreshResult.data.accessToken);\n localStorage.setItem(REFRESH_TOKEN_LS, refreshResult.data.refreshToken);\n return;\n }\n // Refresh failed — revoked or expired\n resetUser(dispatch);\n } catch (error) {\n console.error(error);\n resetUser(dispatch);\n }\n}\n\ntype TSetUpdateAction = {\n dispatch: React.Dispatch<any>;\n domainName: string;\n user: Partial<IDauthUser>;\n token: string | null;\n};\nexport async function setUpdateUserAction({\n dispatch,\n domainName,\n user,\n token,\n}: TSetUpdateAction) {\n if (user.language) {\n window.document.documentElement.setAttribute('lang', user.language);\n }\n if (!token) {\n dispatch({\n type: DauthTypes.UPDATE_USER,\n payload: user,\n });\n return false;\n }\n try {\n const getUserFetch = await updateUserAPI(domainName, user, token);\n if (getUserFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.UPDATE_USER,\n payload: getUserFetch.data.user,\n });\n return true;\n } else {\n console.error('Update user error', getUserFetch.data.message);\n return false;\n }\n } catch (error) {\n console.error('Update user error', error);\n return false;\n }\n}\n\ntype TSetSendEmailVerificationAction = {\n dispatch: React.Dispatch<any>;\n domainName: string;\n token: string;\n};\nexport async function sendEmailVerificationAction({\n dispatch,\n domainName,\n token,\n}: TSetSendEmailVerificationAction) {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: true,\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: { type: 'info', message: 'Sending email verification...' },\n });\n try {\n const sendEmailFetch = await sendEmailVerificationAPI(domainName, token);\n if (sendEmailFetch.response.status === 200) {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: { type: 'success', message: sendEmailFetch.data.message },\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: false,\n });\n return true;\n } else {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: { type: 'error', message: sendEmailFetch.data.message },\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: false,\n });\n return false;\n }\n } catch (error) {\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_STATUS,\n payload: {\n type: 'error',\n message: 'Send email verification fetch error',\n },\n });\n dispatch({\n type: DauthTypes.SET_SEND_EMAIL_VERIFICATION_IS_LOADING,\n payload: false,\n });\n return false;\n }\n}\n\nexport async function getAccessTokenAction({\n dispatch,\n domainName,\n}: {\n dispatch: React.Dispatch<any>;\n domainName: string;\n}) {\n const token_ls = localStorage.getItem(TOKEN_LS);\n if (!token_ls) return 'token-not-found';\n // Decode JWT to check expiry (without verification — that's the server's job)\n try {\n const payloadB64 = token_ls.split('.')[1];\n if (payloadB64) {\n const payload = JSON.parse(atob(payloadB64));\n const expiresIn = (payload.exp || 0) * 1000 - Date.now();\n // If token expires in less than 5 minutes, refresh proactively\n if (expiresIn < 5 * 60 * 1000) {\n await refreshSessionAction({ dispatch, domainName });\n const refreshedToken = localStorage.getItem(TOKEN_LS);\n return refreshedToken || 'token-not-found';\n }\n }\n } catch (_) {\n // If decode fails, return stored token and let server validate\n }\n return token_ls;\n}\n\nexport async function deleteAccountAction({\n dispatch,\n domainName,\n token,\n}: {\n dispatch: React.Dispatch<any>;\n domainName: string;\n token: string;\n}) {\n try {\n const result = await deleteAccountAPI(domainName, token);\n if (result.response.status === 200) {\n resetUser(dispatch);\n return true;\n }\n return false;\n } catch (error) {\n console.error('Delete account error', error);\n return false;\n }\n}\n\n///////////////////////////////////////////\n//////////////////////////////////////////\nexport const resetUser = (dispatch: React.Dispatch<any>) => {\n localStorage.removeItem(TOKEN_LS);\n localStorage.removeItem(REFRESH_TOKEN_LS);\n return dispatch({\n type: DauthTypes.LOGIN,\n payload: {\n user: {} as IDauthUser,\n domain: {} as IDauthDomainState,\n isAuthenticated: false,\n },\n });\n};\n","export const routes = {\n signin: 'signin',\n updateUser: 'update-user',\n};\n","import React, {\n useReducer,\n useMemo,\n useEffect,\n useCallback,\n createContext,\n useContext,\n useRef,\n} from 'react';\nimport initialDauthState from './initialDauthState';\nimport userReducer from './reducer/dauth.reducer';\nimport * as action from './reducer/dauth.actions';\nimport { getClientBasePath } from './api/utils/config';\nimport { TOKEN_LS, REFRESH_TOKEN_LS } from './constants';\nimport { routes } from './api/utils/routes';\nimport { IDauthUser } from './interfaces';\nimport { SET_IS_LOADING } from './reducer/dauth.types';\n\ninterface DauthProviderProps {\n domainName: string;\n children: React.ReactNode;\n}\n\nexport const DauthProvider: React.FC<DauthProviderProps> = (\n props: DauthProviderProps\n) => {\n const { domainName, children } = props;\n const [dauthState, dispatch] = useReducer(userReducer, initialDauthState);\n const refreshTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n // Schedule next proactive refresh based on access token expiry\n const scheduleRefresh = useCallback(() => {\n if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);\n const token = localStorage.getItem(TOKEN_LS);\n if (!token) return;\n try {\n const payloadB64 = token.split('.')[1];\n if (!payloadB64) return;\n const payload = JSON.parse(atob(payloadB64));\n const expiresIn = (payload.exp || 0) * 1000 - Date.now();\n // Refresh 5 minutes before expiry, minimum 10 seconds\n const refreshIn = Math.max(expiresIn - 5 * 60 * 1000, 10_000);\n refreshTimerRef.current = setTimeout(async () => {\n await action.refreshSessionAction({ dispatch, domainName });\n scheduleRefresh();\n }, refreshIn);\n } catch (_) {\n // If decode fails, retry in 5 minutes\n refreshTimerRef.current = setTimeout(async () => {\n await action.refreshSessionAction({ dispatch, domainName });\n scheduleRefresh();\n }, 5 * 60 * 1000);\n }\n }, [domainName]);\n\n // Catch login redirect\n useEffect(() => {\n (async () => {\n const queryString = window.location.search;\n if (!queryString) return;\n const urlParams = new URLSearchParams(queryString);\n const token_url = urlParams.get(TOKEN_LS);\n const refresh_url = urlParams.get(REFRESH_TOKEN_LS);\n if (token_url && refresh_url && !dauthState.isAuthenticated) {\n return action.setDauthStateAction({\n dispatch,\n token: token_url,\n refreshToken: refresh_url,\n domainName,\n });\n }\n })();\n }, []);\n\n // Auto Login\n useEffect(() => {\n (async () => {\n const refreshToken = localStorage.getItem(REFRESH_TOKEN_LS);\n if (refreshToken && !dauthState.isAuthenticated) {\n return action.setAutoLoginAction({ dispatch, domainName });\n } else {\n return dispatch({\n type: SET_IS_LOADING,\n payload: { isLoading: false },\n });\n }\n })();\n }, []);\n\n // Schedule proactive refresh when authenticated\n useEffect(() => {\n if (dauthState.isAuthenticated) {\n scheduleRefresh();\n }\n return () => {\n if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);\n };\n }, [dauthState.isAuthenticated, scheduleRefresh]);\n\n const loginWithRedirect = useCallback(() => {\n return window.location.replace(\n `${getClientBasePath()}/${domainName}/${routes.signin}`\n );\n }, [domainName]);\n\n const logout = useCallback(() => {\n if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);\n return action.setLogoutAction({ dispatch, domainName });\n }, [domainName]);\n\n const getAccessToken = useCallback(async () => {\n const token = await action.getAccessTokenAction({ dispatch, domainName });\n return token as string;\n }, [domainName]);\n\n const updateUser = useCallback(\n async (fields: Partial<IDauthUser>) => {\n const token_ls = localStorage.getItem(TOKEN_LS);\n const {\n name,\n lastname,\n nickname,\n telPrefix,\n telSuffix,\n language,\n avatar,\n birthDate,\n country,\n metadata,\n } = fields;\n const user = {\n name,\n lastname,\n nickname,\n telPrefix,\n telSuffix,\n language,\n avatar,\n birthDate,\n country,\n metadata,\n } as Partial<IDauthUser>;\n return (await action.setUpdateUserAction({\n dispatch,\n domainName,\n user,\n token: token_ls,\n })) as boolean;\n },\n [domainName]\n );\n\n const updateUserWithRedirect = useCallback(() => {\n const token_ls = localStorage.getItem(TOKEN_LS);\n if (!token_ls) return;\n return window.location.replace(\n `${getClientBasePath()}/${domainName}/${routes.updateUser}/${token_ls}`\n );\n }, [domainName]);\n\n const sendEmailVerification = useCallback(async () => {\n const token_ls = localStorage.getItem(TOKEN_LS);\n if (!token_ls) return false;\n return (await action.sendEmailVerificationAction({\n dispatch,\n domainName,\n token: token_ls,\n })) as boolean;\n }, [domainName]);\n\n const deleteAccount = useCallback(async () => {\n const token_ls = localStorage.getItem(TOKEN_LS);\n if (!token_ls) return false;\n if (refreshTimerRef.current) clearTimeout(refreshTimerRef.current);\n return (await action.deleteAccountAction({\n dispatch,\n domainName,\n token: token_ls,\n })) as boolean;\n }, [domainName]);\n\n const memoProvider = useMemo(\n () => ({\n ...dauthState,\n loginWithRedirect,\n logout,\n getAccessToken,\n updateUser,\n updateUserWithRedirect,\n sendEmailVerification,\n deleteAccount,\n }),\n [\n dauthState,\n loginWithRedirect,\n logout,\n getAccessToken,\n updateUser,\n updateUserWithRedirect,\n sendEmailVerification,\n deleteAccount,\n ]\n );\n\n return (\n <DauthContext.Provider value={memoProvider}>\n {children}\n </DauthContext.Provider>\n );\n};\n\nconst DauthContext = createContext(initialDauthState);\n\nexport const useDauth = () => {\n const context = useContext(DauthContext);\n if (!context) {\n throw new Error('useDauth must be used inside DauthProvider');\n }\n return context;\n};\n"],"names":["initialDauthState","user","language","window","document","documentElement","getAttribute","domain","isLoading","isAuthenticated","loginWithRedirect","logout","getAccessToken","Promise","resolve","updateUser","updateUserWithRedirect","sendEmailVerificationStatus","status","type","message","sendEmailVerification","deleteAccount","LOGIN","SET_IS_LOADING","UPDATE_USER","SET_SEND_EMAIL_VERIFICATION_IS_LOADING","SET_SEND_EMAIL_VERIFICATION_STATUS","userReducer","state","action","payload","DauthTypes","login","_extends","setSendEmailVerificationStatus","setSendEmailVerificationIsLoading","apiVersion","serverDomain","checkIsLocalhost","hostname","location","Boolean","match","getServerBasePath","isLocalhost","serverPort","serverLocalUrl","protocol","serverProdUrl","getClientBasePath","clientPort","clientLocalUrl","clientProdUrl","getUserAPI","_ref","_asyncToGenerator","_regenerator","m","_callee","domainName","token","params","response","data","w","_context","n","method","headers","Authorization","fetch","v","json","a","_x","_x2","apply","arguments","updateUserAPI","_ref2","_callee2","_context2","body","JSON","stringify","_x3","_x4","_x5","sendEmailVerificationAPI","_ref3","_callee3","_context3","_x6","_x7","refreshTokenAPI","_ref5","_callee5","refreshToken","_context5","_x0","_x1","deleteAccountAPI","_ref6","_callee6","_context6","_x10","_x11","logoutAPI","_ref7","_callee7","_context7","_x12","_x13","TOKEN_LS","REFRESH_TOKEN_LS","setDauthStateAction","_setDauthStateAction","dispatch","getUserFetch","_t","p","history","replaceState","title","pathname","localStorage","setItem","resetUser","console","error","f","setAutoLoginAction","_setAutoLoginAction","storedRefreshToken","refreshResult","newAccessToken","newRefreshToken","_t2","getItem","accessToken","setLogoutAction","_setLogoutAction","removeItem","refreshSessionAction","_refreshSessionAction","_callee4","_ref4","_t4","_context4","setUpdateUserAction","_setUpdateUserAction","_t5","setAttribute","sendEmailVerificationAction","_sendEmailVerificationAction","sendEmailFetch","getAccessTokenAction","_getAccessTokenAction","token_ls","payloadB64","expiresIn","refreshedToken","split","parse","atob","exp","Date","now","deleteAccountAction","_x8","_deleteAccountAction","_callee8","_ref8","result","_t8","_context8","routes","signin","DauthProvider","props","children","_useReducer","useReducer","dauthState","refreshTimerRef","useRef","scheduleRefresh","useCallback","current","clearTimeout","refreshIn","Math","max","setTimeout","_","useEffect","queryString","urlParams","token_url","refresh_url","search","URLSearchParams","get","replace","fields","name","lastname","nickname","telPrefix","telSuffix","avatar","birthDate","country","metadata","memoProvider","useMemo","React","DauthContext","Provider","value","createContext","useDauth","context","useContext","Error"],"mappings":"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"}
|