Compare commits

...

15 Commits

Author SHA1 Message Date
kazukinagata
327cc23712 Upgrade axios 2021-02-15 14:12:53 +00:00
kazukinagata
9ec2e490a0 Merge branch 'multiAuth' of https://github.com/kazukinagata/redux-token-auth into multiAuth 2020-07-28 11:21:08 +09:00
kazukinagata
4cbd705da5 Change state type as any 2020-07-28 11:20:10 +09:00
kazukinagata
330f03f033 Change state type as any 2020-07-28 11:12:20 +09:00
kazukinagata
79708b37ae Change state type as unknown 2020-07-28 11:09:01 +09:00
kazukinagata
e85f39ebe2 Let developers to specify reducer key name 2020-07-27 22:48:19 +09:00
kazukinagata
255ee70ab6 Fix reducer type 2020-07-26 15:34:32 +09:00
kazukinagata
1a82e350f8 Build 2020-07-26 15:22:11 +09:00
kazukinagata
b091e39189 Type generateAuthActions config and remove storage.generateAuthActions 2020-07-26 15:21:21 +09:00
kazukinagata
33ed6ad156 Build 2020-07-26 15:03:01 +09:00
kazukinagata
e35e3398e8 Fix type errors 2020-07-26 15:02:52 +09:00
kazukinagata
5f49d5b7b1 Delete tsconfig.json > compilerOptions.types 2020-07-24 17:46:29 +09:00
kazukinagata
a1748afd09 Remove @types/react-native 2020-07-24 17:45:26 +09:00
kazukinagata
7a8b7134da Upgrade packages 2020-07-24 17:32:12 +09:00
kazukinagata
828d09869d Update node version 2020-07-24 17:14:53 +09:00
27 changed files with 3993 additions and 5333 deletions

2
.nvmrc
View File

@ -1 +1 @@
8.4.0 10.17.0

View File

@ -185,8 +185,16 @@ import SomeProtectedPageComponent from './components/SomeProtectedPageComponent'
import SignInPage from './components/SignInPage' import SignInPage from './components/SignInPage'
import { generateRequireSignInWrapper } from 'redux-token-auth' import { generateRequireSignInWrapper } from 'redux-token-auth'
// In this example we set `reduxTokenAuth` as reducer key.
// You can set other key name as you like.
const mapStateToProps = (state) => ({
hasVerificationBeenAttempted: state.reduxTokenAuth.currentUser.hasVerificationBeenAttempted,
isSignedIn: state.reduxTokenAuth.currentUser.isSignedIn
})
const requireSignIn = generateRequireSignInWrapper({ const requireSignIn = generateRequireSignInWrapper({
redirectPathIfNotSignedIn: '/signin', redirectPathIfNotSignedIn: '/signin',
mapStateToProps,
}) })
const history = createBrowserHistory({}) const history = createBrowserHistory({})

View File

@ -1,6 +1,6 @@
machine: machine:
node: node:
version: 8.4.0 version: 10.17.0
test: test:
override: override:
- npm test -- --coverage - npm test -- --coverage

15
dist/actions.js vendored
View File

@ -1,9 +1,10 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) { return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next()); step((generator = generator.apply(thisArg, _arguments || [])).next());
}); });
}; };
@ -14,8 +15,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
function step(op) { function step(op) {
if (f) throw new TypeError("Generator is already executing."); if (f) throw new TypeError("Generator is already executing.");
while (_) try { while (_) try {
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [0, t.value]; if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) { switch (op[0]) {
case 0: case 1: t = op; break; case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false }; case 4: _.label++; return { value: op[1], done: false };
@ -34,8 +35,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
} }
}; };
var _this = this;
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.setHasVerificationBeenAttempted = exports.signOutRequestFailed = exports.signOutRequestSucceeded = exports.signOutRequestSent = exports.signInRequestFailed = exports.signInRequestSucceeded = exports.signInRequestSent = exports.verifyTokenRequestFailed = exports.verifyTokenRequestSucceeded = exports.verifyTokenRequestSent = exports.registrationRequestFailed = exports.registrationRequestSucceeded = exports.registrationRequestSent = void 0;
var axios_1 = require("axios"); var axios_1 = require("axios");
var types_1 = require("./types"); var types_1 = require("./types");
var AsyncLocalStorage_1 = require("./AsyncLocalStorage"); var AsyncLocalStorage_1 = require("./AsyncLocalStorage");
@ -98,8 +99,8 @@ exports.setHasVerificationBeenAttempted = function (hasVerificationBeenAttempted
// Async Redux Thunk actions: // Async Redux Thunk actions:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var generateAuthActions = function (config) { var generateAuthActions = function (config) {
var authUrl = config.authUrl, storage = config.storage, userAttributes = config.userAttributes, userRegistrationAttributes = config.userRegistrationAttributes; var authUrl = config.authUrl, userAttributes = config.userAttributes, userRegistrationAttributes = config.userRegistrationAttributes;
var Storage = Boolean(storage.flushGetRequests) ? storage : AsyncLocalStorage_1.default; var Storage = AsyncLocalStorage_1.default;
var registerUser = function (userRegistrationDetails) { return function (dispatch) { var registerUser = function (userRegistrationDetails) { return function (dispatch) {
return __awaiter(this, void 0, void 0, function () { return __awaiter(this, void 0, void 0, function () {
var email, password, passwordConfirmation, data, response, userAttributesToSave, error_1; var email, password, passwordConfirmation, data, response, userAttributesToSave, error_1;
@ -249,7 +250,7 @@ var generateAuthActions = function (config) {
}); });
}); });
}; }; }; };
var verifyCredentials = function (store) { return __awaiter(_this, void 0, void 0, function () { var verifyCredentials = function (store) { return __awaiter(void 0, void 0, void 0, function () {
var verificationParams, _a, _b; var verificationParams, _a, _b;
return __generator(this, function (_c) { return __generator(this, function (_c) {
switch (_c.label) { switch (_c.label) {

2
dist/actions.js.map vendored

File diff suppressed because one or more lines are too long

View File

@ -1,35 +1,46 @@
"use strict"; "use strict";
var __extends = (this && this.__extends) || (function () { var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf || var extendStatics = function (d, b) {
extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return extendStatics(d, b);
};
return function (d, b) { return function (d, b) {
extendStatics(d, b); extendStatics(d, b);
function __() { this.constructor = d; } function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}; };
})(); })();
var __assign = (this && this.__assign) || Object.assign || function(t) { var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) { for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i]; s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p]; t[p] = s[p];
} }
return t; return t;
};
return __assign.apply(this, arguments);
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react"); var React = require("react");
var react_redux_1 = require("react-redux"); var react_redux_1 = require("react-redux");
var generateRequireSignInWrapper = function (_a) { var generateRequireSignInWrapper = function (_a) {
var redirectPathIfNotSignedIn = _a.redirectPathIfNotSignedIn; var redirectPathIfNotSignedIn = _a.redirectPathIfNotSignedIn, mapStateToProps = _a.mapStateToProps;
var requireSignInWrapper = function (PageComponent) { var requireSignInWrapper = function (PageComponent) {
// const mapStateToProps = (state: ReduxState) => ({
// hasVerificationBeenAttempted: state.reduxTokenAuth.currentUser.hasVerificationBeenAttempted,
// isSignedIn: state.reduxTokenAuth.currentUser.isSignedIn
// })
var connector = react_redux_1.connect(mapStateToProps);
var GatedPage = /** @class */ (function (_super) { var GatedPage = /** @class */ (function (_super) {
__extends(GatedPage, _super); __extends(GatedPage, _super);
function GatedPage() { function GatedPage() {
return _super !== null && _super.apply(this, arguments) || this; return _super !== null && _super.apply(this, arguments) || this;
} }
GatedPage.prototype.componentWillReceiveProps = function (nextProps) { GatedPage.prototype.componentDidUpdate = function () {
var history = nextProps.history, hasVerificationBeenAttempted = nextProps.hasVerificationBeenAttempted, isSignedIn = nextProps.isSignedIn; var _a = this.props, history = _a.history, hasVerificationBeenAttempted = _a.hasVerificationBeenAttempted, isSignedIn = _a.isSignedIn;
if (hasVerificationBeenAttempted && !isSignedIn) { if (hasVerificationBeenAttempted && !isSignedIn) {
history.replace(redirectPathIfNotSignedIn); history.replace(redirectPathIfNotSignedIn);
} }
@ -43,10 +54,6 @@ var generateRequireSignInWrapper = function (_a) {
}; };
return GatedPage; return GatedPage;
}(React.Component)); }(React.Component));
var mapStateToProps = function (state) { return ({
hasVerificationBeenAttempted: state.reduxTokenAuth.currentUser.hasVerificationBeenAttempted,
isSignedIn: state.reduxTokenAuth.currentUser.isSignedIn
}); };
return react_redux_1.connect(mapStateToProps)(GatedPage); return react_redux_1.connect(mapStateToProps)(GatedPage);
}; };
return requireSignInWrapper; return requireSignInWrapper;

View File

@ -1 +1 @@
{"version":3,"file":"generate-require-signin-wrapper.js","sourceRoot":"","sources":["../src/generate-require-signin-wrapper.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,6BAA8B;AAE9B,2CAAqC;AAOrC,IAAM,4BAA4B,GAAG,UACnC,EAAiE;QAA/D,wDAAyB;IAE3B,IAAM,oBAAoB,GAAG,UAAC,aAA6B;QASzD;YAAwB,6BAA6B;YAArD;;YAuBA,CAAC;YAtBQ,6CAAyB,GAAhC,UAAiC,SAAuB;gBAEpD,IAAA,2BAAO,EACP,qEAA4B,EAC5B,iCAAU,CACC;gBACb,IAAI,4BAA4B,IAAI,CAAC,UAAU,EAAE;oBAC/C,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAA;iBAC3C;YACH,CAAC;YAEM,0BAAM,GAAb;gBACQ,IAAA,eAGQ,EAFZ,8DAA4B,EAC5B,0BAAU,CACE;gBAEd,OAAO,CAAC,4BAA4B,IAAI,UAAU,CAAC,CAAC,CAAC;oBACnD,oBAAC,aAAa,eAAK,IAAI,CAAC,KAAK,EAAI;oBACjC,CAAC;wBACD,gCAAW,CAAC;YAChB,CAAC;YACH,gBAAC;QAAD,CAAC,AAvBD,CAAwB,KAAK,CAAC,SAAS,GAuBtC;QAED,IAAM,eAAe,GAAG,UAAC,KAAiB,IAAK,OAAA,CAAC;YAC9C,4BAA4B,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,4BAA4B;YAC3F,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU;SACxD,CAAC,EAH6C,CAG7C,CAAA;QAEF,OAAO,qBAAO,CACZ,eAAe,CAChB,CAAC,SAAS,CAAC,CAAA;IACd,CAAC,CAAA;IAED,OAAO,oBAAoB,CAAA;AAC7B,CAAC,CAAA;AAED,kBAAe,4BAA4B,CAAA"} {"version":3,"file":"generate-require-signin-wrapper.js","sourceRoot":"","sources":["../src/generate-require-signin-wrapper.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6BAA8B;AAC9B,2CAAqD;AAMrD,IAAM,4BAA4B,GAAG,UACnC,EAAkF;QAAhF,yBAAyB,+BAAA,EAAE,eAAe,qBAAA;IAE5C,IAAM,oBAAoB,GAAG,UAAC,aAA6D;QAEzF,oDAAoD;QACpD,iGAAiG;QACjG,4DAA4D;QAC5D,KAAK;QAEL,IAAM,SAAS,GAAG,qBAAO,CAAC,eAAe,CAAC,CAAA;QAQ1C;YAAwB,6BAAsB;YAA9C;;YAuBA,CAAC;YAtBQ,sCAAkB,GAAzB;gBACQ,IAAA,KAIF,IAAI,CAAC,KAAK,EAHZ,OAAO,aAAA,EACP,4BAA4B,kCAAA,EAC5B,UAAU,gBACE,CAAA;gBACd,IAAI,4BAA4B,IAAI,CAAC,UAAU,EAAE;oBAC/C,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAA;iBAC3C;YACH,CAAC;YAEM,0BAAM,GAAb;gBACQ,IAAA,KAGF,IAAI,CAAC,KAAK,EAFZ,4BAA4B,kCAAA,EAC5B,UAAU,gBACE,CAAA;gBAEd,OAAO,CAAC,4BAA4B,IAAI,UAAU,CAAC,CAAC,CAAC;oBACnD,oBAAC,aAAa,eAAK,IAAI,CAAC,KAAK,EAAI;oBACjC,CAAC;wBACD,gCAAW,CAAC;YAChB,CAAC;YACH,gBAAC;QAAD,CAAC,AAvBD,CAAwB,KAAK,CAAC,SAAS,GAuBtC;QAED,OAAO,qBAAO,CACZ,eAAe,CAChB,CAAC,SAAS,CAAC,CAAA;IACd,CAAC,CAAA;IAED,OAAO,oBAAoB,CAAA;AAC7B,CAAC,CAAA;AAED,kBAAe,4BAA4B,CAAA"}

1
dist/index.js vendored
View File

@ -1,5 +1,6 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.reduxTokenAuthReducer = exports.generateRequireSignInWrapper = exports.generateAuthActions = void 0;
var actions_1 = require("./actions"); var actions_1 = require("./actions");
exports.generateAuthActions = actions_1.default; exports.generateAuthActions = actions_1.default;
var reducers_1 = require("./reducers"); var reducers_1 = require("./reducers");

2
dist/index.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,qCAA2C;AAKzC,8BALK,iBAAmB,CAKL;AAJrB,uCAA8C;AAM5C,gCANK,kBAAqB,CAML;AALvB,qFAA4E;AAI1E,uCAJK,yCAA4B,CAIL"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,qCAA2C;AAKzC,8BALK,iBAAmB,CAKL;AAJrB,uCAA8C;AAM5C,gCANK,kBAAqB,CAML;AALvB,qFAA4E;AAI1E,uCAJK,yCAA4B,CAIL"}

View File

@ -1,11 +1,14 @@
"use strict"; "use strict";
var __assign = (this && this.__assign) || Object.assign || function(t) { var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) { for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i]; s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p]; t[p] = s[p];
} }
return t; return t;
};
return __assign.apply(this, arguments);
}; };
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
var types_1 = require("../../types"); var types_1 = require("../../types");
@ -18,28 +21,28 @@ var currentUser = function (state, action) {
case types_1.VERIFY_TOKEN_REQUEST_SENT: case types_1.VERIFY_TOKEN_REQUEST_SENT:
case types_1.SIGNIN_REQUEST_SENT: case types_1.SIGNIN_REQUEST_SENT:
case types_1.SIGNOUT_REQUEST_SENT: case types_1.SIGNOUT_REQUEST_SENT:
return __assign({}, state, { isLoading: true }); return __assign(__assign({}, state), { isLoading: true });
case types_1.VERIFY_TOKEN_REQUEST_SUCCEEDED: case types_1.VERIFY_TOKEN_REQUEST_SUCCEEDED:
return __assign({}, state, { attributes: __assign({}, action.payload.userAttributes), isLoading: false, isSignedIn: true, hasVerificationBeenAttempted: true }); return __assign(__assign({}, state), { attributes: __assign({}, action.payload.userAttributes), isLoading: false, isSignedIn: true, hasVerificationBeenAttempted: true });
case types_1.REGISTRATION_REQUEST_SUCCEEDED: case types_1.REGISTRATION_REQUEST_SUCCEEDED:
case types_1.SIGNIN_REQUEST_SUCCEEDED: case types_1.SIGNIN_REQUEST_SUCCEEDED:
return __assign({}, state, { attributes: __assign({}, action.payload.userAttributes), isLoading: false, isSignedIn: true }); return __assign(__assign({}, state), { attributes: __assign({}, action.payload.userAttributes), isLoading: false, isSignedIn: true });
case types_1.VERIFY_TOKEN_REQUEST_FAILED: case types_1.VERIFY_TOKEN_REQUEST_FAILED:
return __assign({}, state, { isLoading: false, isSignedIn: false, hasVerificationBeenAttempted: true }); return __assign(__assign({}, state), { isLoading: false, isSignedIn: false, hasVerificationBeenAttempted: true });
case types_1.REGISTRATION_REQUEST_FAILED: case types_1.REGISTRATION_REQUEST_FAILED:
case types_1.SIGNIN_REQUEST_FAILED: case types_1.SIGNIN_REQUEST_FAILED:
return __assign({}, state, { isLoading: false, isSignedIn: false }); return __assign(__assign({}, state), { isLoading: false, isSignedIn: false });
case types_1.SIGNOUT_REQUEST_SUCCEEDED: case types_1.SIGNOUT_REQUEST_SUCCEEDED:
var userAttributeKeys = Object.keys(state.attributes); var userAttributeKeys = Object.keys(state.attributes);
var allNullUserAttributes = userAttributeKeys.reduce(function (accumulatedNullUserAttributes, currentUserAttributeKey) { var allNullUserAttributes = userAttributeKeys.reduce(function (accumulatedNullUserAttributes, currentUserAttributeKey) {
return __assign({}, accumulatedNullUserAttributes, (_a = {}, _a[currentUserAttributeKey] = null, _a));
var _a; var _a;
return __assign(__assign({}, accumulatedNullUserAttributes), (_a = {}, _a[currentUserAttributeKey] = null, _a));
}, {}); }, {});
return __assign({}, state, { attributes: allNullUserAttributes, isLoading: false, isSignedIn: false }); return __assign(__assign({}, state), { attributes: allNullUserAttributes, isLoading: false, isSignedIn: false });
case types_1.SIGNOUT_REQUEST_FAILED: case types_1.SIGNOUT_REQUEST_FAILED:
return __assign({}, state, { isLoading: false }); return __assign(__assign({}, state), { isLoading: false });
case types_1.SET_HAS_VERIFICATION_BEEN_ATTEMPTED: case types_1.SET_HAS_VERIFICATION_BEEN_ATTEMPTED:
return __assign({}, state, { hasVerificationBeenAttempted: action.payload.hasVerificationBeenAttempted }); return __assign(__assign({}, state), { hasVerificationBeenAttempted: action.payload.hasVerificationBeenAttempted });
default: default:
return state; return state;
} }

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reducers/current-user/index.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,qCAiBoB;AACpB,qDAA8C;AAG5C,IAAA,iDAAwB,CACV;AAEhB,IAAM,WAAW,GAAG,UAAC,KAAyB,EAAE,MAAmB;IAA9C,sBAAA,EAAA,mBAAyB;IAC5C,QAAQ,MAAM,CAAC,IAAI,EAAE;QACnB,KAAK,iCAAyB,CAAC;QAC/B,KAAK,iCAAyB,CAAC;QAC/B,KAAK,2BAAmB,CAAC;QACzB,KAAK,4BAAoB;YACvB,oBACK,KAAK,IACR,SAAS,EAAE,IAAI,IAChB;QACH,KAAK,sCAA8B;YACjC,oBACK,KAAK,IACR,UAAU,eAAO,MAAM,CAAC,OAAO,CAAC,cAAc,GAC9C,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,IAAI,EAChB,4BAA4B,EAAE,IAAI,IACnC;QACH,KAAK,sCAA8B,CAAC;QACpC,KAAK,gCAAwB;YAC3B,oBACK,KAAK,IACR,UAAU,eAAO,MAAM,CAAC,OAAO,CAAC,cAAc,GAC9C,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,IAAI,IACjB;QACH,KAAK,mCAA2B;YAC9B,oBACK,KAAK,IACR,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,EACjB,4BAA4B,EAAE,IAAI,IACnC;QACH,KAAK,mCAA2B,CAAC;QACjC,KAAK,6BAAqB;YACxB,oBACK,KAAK,IACR,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,IAClB;QACH,KAAK,iCAAyB;YAC5B,IAAM,iBAAiB,GAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACjE,IAAM,qBAAqB,GAAmB,iBAAiB,CAAC,MAAM,CACpE,UAAC,6BAA6C,EAAE,uBAA+B;gBAC7E,oBACK,6BAA6B,eAC/B,uBAAuB,IAAG,IAAI,OAChC;;YACH,CAAC,EACD,EAAE,CACH,CAAA;YACD,oBACK,KAAK,IACR,UAAU,EAAE,qBAAqB,EACjC,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,IAClB;QACH,KAAK,8BAAsB;YACzB,oBACK,KAAK,IACR,SAAS,EAAE,KAAK,IACjB;QACH,KAAK,2CAAmC;YACtC,oBACK,KAAK,IACR,4BAA4B,EAAE,MAAM,CAAC,OAAO,CAAC,4BAA4B,IAC1E;QACH;YACE,OAAO,KAAK,CAAA;KACf;AACH,CAAC,CAAA;AAED,kBAAe,WAAW,CAAA"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/reducers/current-user/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,qCAiBoB;AACpB,qDAA8C;AAG5C,IAAa,WAAW,GACtB,uBAAY,YADU,CACV;AAEhB,IAAM,WAAW,GAAG,UAAC,KAAyB,EAAE,MAAmB;IAA9C,sBAAA,EAAA,mBAAyB;IAC5C,QAAQ,MAAM,CAAC,IAAI,EAAE;QACnB,KAAK,iCAAyB,CAAC;QAC/B,KAAK,iCAAyB,CAAC;QAC/B,KAAK,2BAAmB,CAAC;QACzB,KAAK,4BAAoB;YACvB,6BACK,KAAK,KACR,SAAS,EAAE,IAAI,IAChB;QACH,KAAK,sCAA8B;YACjC,6BACK,KAAK,KACR,UAAU,eAAO,MAAM,CAAC,OAAO,CAAC,cAAc,GAC9C,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,IAAI,EAChB,4BAA4B,EAAE,IAAI,IACnC;QACH,KAAK,sCAA8B,CAAC;QACpC,KAAK,gCAAwB;YAC3B,6BACK,KAAK,KACR,UAAU,eAAO,MAAM,CAAC,OAAO,CAAC,cAAc,GAC9C,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,IAAI,IACjB;QACH,KAAK,mCAA2B;YAC9B,6BACK,KAAK,KACR,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,EACjB,4BAA4B,EAAE,IAAI,IACnC;QACH,KAAK,mCAA2B,CAAC;QACjC,KAAK,6BAAqB;YACxB,6BACK,KAAK,KACR,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,IAClB;QACH,KAAK,iCAAyB;YAC5B,IAAM,iBAAiB,GAAa,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;YACjE,IAAM,qBAAqB,GAAmB,iBAAiB,CAAC,MAAM,CACpE,UAAC,6BAA6C,EAAE,uBAA+B;;gBAC7E,6BACK,6BAA6B,gBAC/B,uBAAuB,IAAG,IAAI,OAChC;YACH,CAAC,EACD,EAAE,CACH,CAAA;YACD,6BACK,KAAK,KACR,UAAU,EAAE,qBAAqB,EACjC,SAAS,EAAE,KAAK,EAChB,UAAU,EAAE,KAAK,IAClB;QACH,KAAK,8BAAsB;YACzB,6BACK,KAAK,KACR,SAAS,EAAE,KAAK,IACjB;QACH,KAAK,2CAAmC;YACtC,6BACK,KAAK,KACR,4BAA4B,EAAE,MAAM,CAAC,OAAO,CAAC,4BAA4B,IAC1E;QACH;YACE,OAAO,KAAK,CAAA;KACf;AACH,CAAC,CAAA;AAED,kBAAe,WAAW,CAAA"}

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reducers/index.ts"],"names":[],"mappings":";;AAAA,+BAGc;AACd,+CAAwC;AAExC,IAAM,qBAAqB,GAAgB,uBAAe,CAAC;IACzD,WAAW,wBAAA;CACZ,CAAC,CAAA;AAEF,kBAAe,qBAAqB,CAAA;AAEpC,wHAAwH;AACxH,4EAA4E;AAC5E,wHAAwH;AAExH,0CAA0C;AAC1C,2DAA2D;AAC3D,wDAAwD;AACxD,EAAE;AACF,wCAAwC;AACxC,2CAA2C;AAC3C,qBAAqB;AACrB,KAAK;AAEL,4EAA4E"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/reducers/index.ts"],"names":[],"mappings":";;AAAA,+BAEc;AACd,+CAAwC;AAExC,IAAM,qBAAqB,GAAG,uBAAe,CAAC;IAC5C,WAAW,wBAAA;CACZ,CAAC,CAAA;AAEF,kBAAe,qBAAqB,CAAA;AAEpC,wHAAwH;AACxH,4EAA4E;AAC5E,wHAAwH;AAExH,0CAA0C;AAC1C,2DAA2D;AAC3D,wDAAwD;AACxD,EAAE;AACF,wCAAwC;AACxC,2CAA2C;AAC3C,qBAAqB;AACrB,KAAK;AAEL,4EAA4E"}

11
dist/services/auth.js vendored
View File

@ -1,9 +1,10 @@
"use strict"; "use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) { return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next()); step((generator = generator.apply(thisArg, _arguments || [])).next());
}); });
}; };
@ -14,8 +15,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
function step(op) { function step(op) {
if (f) throw new TypeError("Generator is already executing."); if (f) throw new TypeError("Generator is already executing.");
while (_) try { while (_) try {
if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [0, t.value]; if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) { switch (op[0]) {
case 0: case 1: t = op; break; case 0: case 1: t = op; break;
case 4: _.label++; return { value: op[1], done: false }; case 4: _.label++; return { value: op[1], done: false };
@ -34,8 +35,8 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
} }
}; };
var _this = this;
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.getUserAttributesFromResponse = exports.deleteAuthHeadersFromDeviceStorage = exports.deleteAuthHeaders = exports.persistAuthHeadersInDeviceStorage = exports.setAuthHeaders = void 0;
var axios_1 = require("axios"); var axios_1 = require("axios");
var utility_1 = require("./utility"); var utility_1 = require("./utility");
var authHeaderKeys = [ var authHeaderKeys = [
@ -60,7 +61,7 @@ exports.deleteAuthHeaders = function () {
delete axios_1.default.defaults.headers.common[key]; delete axios_1.default.defaults.headers.common[key];
}); });
}; };
exports.deleteAuthHeadersFromDeviceStorage = function (Storage) { return __awaiter(_this, void 0, void 0, function () { exports.deleteAuthHeadersFromDeviceStorage = function (Storage) { return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) { return __generator(this, function (_a) {
authHeaderKeys.forEach(function (key) { authHeaderKeys.forEach(function (key) {
Storage.removeItem(key); Storage.removeItem(key);

View File

@ -1 +1 @@
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iBAuDA;;AAvDA,+BAAyB;AACzB,qCAAkD;AAQlD,IAAM,cAAc,GAAkB;IACpC,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,KAAK;CACN,CAAA;AAEY,QAAA,cAAc,GAAG,UAAC,OAAoB;IACjD,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;QACjC,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEY,QAAA,iCAAiC,GAAG,UAAC,OAAsB,EAAE,OAAoB;IAC5F,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;QACjC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;QACjC,OAAO,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEY,QAAA,kCAAkC,GAAG,UAAO,OAAsB;;QAC7E,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;YACjC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;;;KACH,CAAA;AAEY,QAAA,6BAA6B,GAAG,UAC3C,cAAoC,EACpC,QAAsB;IAEtB,IAAM,sBAAsB,GAAyB,gCAAsB,CAAC,cAAc,CAAC,CAAA;IAC3F,IAAM,yBAAyB,GAAa,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAC/E,IAAM,sBAAsB,GAAyB,EAAE,CAAA;IACvD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAC,GAAW;QAClD,IAAI,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACjD,sBAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC9E;IACH,CAAC,CAAC,CAAA;IACF,OAAO,sBAAsB,CAAA;AAC/B,CAAC,CAAA"} {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/services/auth.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+BAAyB;AACzB,qCAAkD;AAQlD,IAAM,cAAc,GAAkB;IACpC,cAAc;IACd,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,KAAK;CACN,CAAA;AAEY,QAAA,cAAc,GAAG,UAAC,OAAoB;IACjD,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;QACjC,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEY,QAAA,iCAAiC,GAAG,UAAC,OAAsB,EAAE,OAAoB;IAC5F,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;QACjC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEY,QAAA,iBAAiB,GAAG;IAC/B,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;QACjC,OAAO,eAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAA;AAEY,QAAA,kCAAkC,GAAG,UAAO,OAAsB;;QAC7E,cAAc,CAAC,OAAO,CAAC,UAAC,GAAW;YACjC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAA;QACzB,CAAC,CAAC,CAAA;;;KACH,CAAA;AAEY,QAAA,6BAA6B,GAAG,UAC3C,cAAoC,EACpC,QAAsB;IAEtB,IAAM,sBAAsB,GAAyB,gCAAsB,CAAC,cAAc,CAAC,CAAA;IAC3F,IAAM,yBAAyB,GAAa,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAC/E,IAAM,sBAAsB,GAAyB,EAAE,CAAA;IACvD,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAC,GAAW;QAClD,IAAI,yBAAyB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YACjD,sBAAsB,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;SAC9E;IACH,CAAC,CAAC,CAAA;IACF,OAAO,sBAAsB,CAAA;AAC/B,CAAC,CAAA"}

View File

@ -1,5 +1,6 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.invertMapKeysAndValues = void 0;
exports.invertMapKeysAndValues = function (stringMap) { exports.invertMapKeysAndValues = function (stringMap) {
var newStringMap = {}; var newStringMap = {};
for (var key in stringMap) { for (var key in stringMap) {

View File

@ -1 +1 @@
{"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/services/utility.ts"],"names":[],"mappings":";;AAEa,QAAA,sBAAsB,GAAG,UAAC,SAA+B;IACpE,IAAM,YAAY,GAAyB,EAAE,CAAA;IAC7C,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;QACzB,IAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QAC1B,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;KACxB;IACD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"} {"version":3,"file":"utility.js","sourceRoot":"","sources":["../../src/services/utility.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAG,UAAC,SAA+B;IACpE,IAAM,YAAY,GAAyB,EAAE,CAAA;IAC7C,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;QACzB,IAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QAC1B,YAAY,CAAC,GAAG,CAAC,GAAG,GAAG,CAAA;KACxB;IACD,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA"}

1
dist/types.js vendored
View File

@ -1,5 +1,6 @@
"use strict"; "use strict";
Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "__esModule", { value: true });
exports.SET_HAS_VERIFICATION_BEEN_ATTEMPTED = exports.SIGNOUT_REQUEST_FAILED = exports.SIGNOUT_REQUEST_SUCCEEDED = exports.SIGNOUT_REQUEST_SENT = exports.SIGNIN_REQUEST_FAILED = exports.SIGNIN_REQUEST_SUCCEEDED = exports.SIGNIN_REQUEST_SENT = exports.VERIFY_TOKEN_REQUEST_FAILED = exports.VERIFY_TOKEN_REQUEST_SUCCEEDED = exports.VERIFY_TOKEN_REQUEST_SENT = exports.REGISTRATION_REQUEST_FAILED = exports.REGISTRATION_REQUEST_SUCCEEDED = exports.REGISTRATION_REQUEST_SENT = void 0;
exports.REGISTRATION_REQUEST_SENT = 'redux-token-auth/REGISTRATION_REQUEST_SENT'; exports.REGISTRATION_REQUEST_SENT = 'redux-token-auth/REGISTRATION_REQUEST_SENT';
exports.REGISTRATION_REQUEST_SUCCEEDED = 'redux-token-auth/REGISTRATION_REQUEST_SUCCEEDED'; exports.REGISTRATION_REQUEST_SUCCEEDED = 'redux-token-auth/REGISTRATION_REQUEST_SUCCEEDED';
exports.REGISTRATION_REQUEST_FAILED = 'redux-token-auth/REGISTRATION_REQUEST_FAILED'; exports.REGISTRATION_REQUEST_FAILED = 'redux-token-auth/REGISTRATION_REQUEST_FAILED';

2
dist/types.js.map vendored
View File

@ -1 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;AA+Ca,QAAA,yBAAyB,GAA8B,4CAA4C,CAAA;AAGnG,QAAA,8BAA8B,GAAmC,iDAAiD,CAAA;AAGlH,QAAA,2BAA2B,GAAgC,8CAA8C,CAAA;AAGzG,QAAA,yBAAyB,GAA8B,4CAA4C,CAAA;AAGnG,QAAA,8BAA8B,GAAmC,iDAAiD,CAAA;AAGlH,QAAA,2BAA2B,GAAgC,8CAA8C,CAAA;AAGzG,QAAA,mBAAmB,GAAwB,sCAAsC,CAAA;AAGjF,QAAA,wBAAwB,GAA6B,2CAA2C,CAAA;AAGhG,QAAA,qBAAqB,GAA0B,wCAAwC,CAAA;AAGvF,QAAA,oBAAoB,GAAyB,uCAAuC,CAAA;AAGpF,QAAA,yBAAyB,GAA8B,4CAA4C,CAAA;AAGnG,QAAA,sBAAsB,GAA2B,yCAAyC,CAAA;AAG1F,QAAA,mCAAmC,GAAwC,sDAAsD,CAAA"} {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AA+Ca,QAAA,yBAAyB,GAA8B,4CAA4C,CAAA;AAGnG,QAAA,8BAA8B,GAAmC,iDAAiD,CAAA;AAGlH,QAAA,2BAA2B,GAAgC,8CAA8C,CAAA;AAGzG,QAAA,yBAAyB,GAA8B,4CAA4C,CAAA;AAGnG,QAAA,8BAA8B,GAAmC,iDAAiD,CAAA;AAGlH,QAAA,2BAA2B,GAAgC,8CAA8C,CAAA;AAGzG,QAAA,mBAAmB,GAAwB,sCAAsC,CAAA;AAGjF,QAAA,wBAAwB,GAA6B,2CAA2C,CAAA;AAGhG,QAAA,qBAAqB,GAA0B,wCAAwC,CAAA;AAGvF,QAAA,oBAAoB,GAAyB,uCAAuC,CAAA;AAGpF,QAAA,yBAAyB,GAA8B,4CAA4C,CAAA;AAGnG,QAAA,sBAAsB,GAA2B,yCAAyC,CAAA;AAG1F,QAAA,mCAAmC,GAAwC,sDAAsD,CAAA"}

12
index.d.ts vendored
View File

@ -1,12 +1,12 @@
import { Reducer } from 'redux' import { Reducer } from 'redux'
import {GenerateAuthActions} from './src/actions'
import {GenerateRequireSignInWrapper} from './src/generate-require-signin-wrapper'
import { import {
ActionsGeneratorExport, ReduxTokenAuthState,
GenerateRequireSignInWrapperConfig,
RequireSignInWrapper,
} from './src/types' } from './src/types'
export const reduxTokenAuthReducer: Reducer<{}> export const reduxTokenAuthReducer: Reducer<ReduxTokenAuthState>
export const generateAuthActions: ActionsGeneratorExport export const generateAuthActions: GenerateAuthActions
export const generateRequireSignInWrapper: (config: GenerateRequireSignInWrapperConfig) => RequireSignInWrapper export const generateRequireSignInWrapper: GenerateRequireSignInWrapper

5220
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -38,19 +38,19 @@
"author": "Kyle Corbelli", "author": "Kyle Corbelli",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@types/jest": "^20.0.8", "@types/jest": "^26.0.7",
"codecov": "^2.3.0", "@types/react": "^16.9.43",
"jest": "^21.0.0", "@types/react-redux": "^7.1.9",
"ts-jest": "^21.0.1", "codecov": "^3.7.2",
"typescript": "^2.5.2" "jest": "^26.1.0",
"ts-jest": "^26.1.3",
"typescript": "^3.9.7"
}, },
"dependencies": { "dependencies": {
"@types/react": "^16.0.5", "axios": "^0.21.1",
"@types/react-native": "^0.48.7", "react": "^16.13.1",
"@types/react-redux": "^5.0.9", "react-redux": "^7.2.0",
"axios": "^0.16.2", "redux": "^4.0.5",
"react": "^15.6.1", "redux-thunk": "^2.3.0"
"react-redux": "^5.0.6",
"redux": "^3.7.2"
} }
} }

View File

@ -1,6 +1,5 @@
import axios from 'axios' import axios from 'axios'
import { import {
Dispatch,
Store, Store,
} from 'redux' } from 'redux'
import { import {
@ -11,7 +10,6 @@ import {
UserRegistrationDetails, UserRegistrationDetails,
UserSignInCredentials, UserSignInCredentials,
UserSignOutCredentials, UserSignOutCredentials,
ActionsExport,
REGISTRATION_REQUEST_SENT, REGISTRATION_REQUEST_SENT,
REGISTRATION_REQUEST_SUCCEEDED, REGISTRATION_REQUEST_SUCCEEDED,
REGISTRATION_REQUEST_FAILED, REGISTRATION_REQUEST_FAILED,
@ -38,6 +36,8 @@ import {
SignOutRequestSucceededAction, SignOutRequestSucceededAction,
SignOutRequestFailedAction, SignOutRequestFailedAction,
SetHasVerificationBeenAttemptedAction, SetHasVerificationBeenAttemptedAction,
AppThunk,
GenerateAuthActionsConfig,
} from './types' } from './types'
import AsyncLocalStorage from './AsyncLocalStorage' import AsyncLocalStorage from './AsyncLocalStorage'
import { import {
@ -122,19 +122,18 @@ export const setHasVerificationBeenAttempted = (
// Async Redux Thunk actions: // Async Redux Thunk actions:
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
const generateAuthActions = (config: { [key: string]: any }): ActionsExport => { const generateAuthActions = (config: GenerateAuthActionsConfig) => {
const { const {
authUrl, authUrl,
storage,
userAttributes, userAttributes,
userRegistrationAttributes, userRegistrationAttributes,
} = config } = config
const Storage: DeviceStorage = Boolean(storage.flushGetRequests) ? storage : AsyncLocalStorage const Storage: DeviceStorage = AsyncLocalStorage
const registerUser = ( const registerUser = (
userRegistrationDetails: UserRegistrationDetails, userRegistrationDetails: UserRegistrationDetails,
) => async function (dispatch: Dispatch<{}>): Promise<void> { ): AppThunk => async function (dispatch) {
dispatch(registrationRequestSent()) dispatch(registrationRequestSent())
const { const {
email, email,
@ -168,7 +167,7 @@ const generateAuthActions = (config: { [key: string]: any }): ActionsExport => {
const verifyToken = ( const verifyToken = (
verificationParams: VerificationParams, verificationParams: VerificationParams,
) => async function (dispatch: Dispatch<{}>): Promise<void> { ): AppThunk => async function (dispatch) {
dispatch(verifyTokenRequestSent()) dispatch(verifyTokenRequestSent())
try { try {
const response = await axios({ const response = await axios({
@ -187,7 +186,7 @@ const generateAuthActions = (config: { [key: string]: any }): ActionsExport => {
const signInUser = ( const signInUser = (
userSignInCredentials: UserSignInCredentials, userSignInCredentials: UserSignInCredentials,
) => async function (dispatch: Dispatch<{}>): Promise<void> { ): AppThunk => async function (dispatch) {
dispatch(signInRequestSent()) dispatch(signInRequestSent())
const { const {
email, email,
@ -212,7 +211,7 @@ const generateAuthActions = (config: { [key: string]: any }): ActionsExport => {
} }
} }
const signOutUser = () => async function (dispatch: Dispatch<{}>): Promise<void> { const signOutUser = (): AppThunk => async function (dispatch) {
const userSignOutCredentials: UserSignOutCredentials = { const userSignOutCredentials: UserSignOutCredentials = {
'access-token': await Storage.getItem('access-token') as string, 'access-token': await Storage.getItem('access-token') as string,
client: await Storage.getItem('client') as string, client: await Storage.getItem('client') as string,
@ -257,3 +256,4 @@ const generateAuthActions = (config: { [key: string]: any }): ActionsExport => {
} }
export default generateAuthActions export default generateAuthActions
export type GenerateAuthActions = typeof generateAuthActions

View File

@ -1,31 +1,35 @@
import * as React from 'react' import * as React from 'react'
import { ComponentClass } from 'react' import { connect, ConnectedProps } from 'react-redux'
import { connect } from 'react-redux'
import { import {
GenerateRequireSignInWrapperConfig, GenerateRequireSignInWrapperConfig,
ReduxState, // ReduxState,
RequireSignInWrapper,
} from './types' } from './types'
const generateRequireSignInWrapper = ( const generateRequireSignInWrapper = (
{ redirectPathIfNotSignedIn }: GenerateRequireSignInWrapperConfig { redirectPathIfNotSignedIn, mapStateToProps }: GenerateRequireSignInWrapperConfig
): RequireSignInWrapper => { ) => {
const requireSignInWrapper = (PageComponent: ComponentClass): ComponentClass => { const requireSignInWrapper = (PageComponent: React.ComponentClass | React.FunctionComponent) => {
interface WrapperProps {
readonly hasVerificationBeenAttempted: boolean // const mapStateToProps = (state: ReduxState) => ({
readonly isSignedIn: boolean // hasVerificationBeenAttempted: state.reduxTokenAuth.currentUser.hasVerificationBeenAttempted,
// isSignedIn: state.reduxTokenAuth.currentUser.isSignedIn
// })
const connector = connect(mapStateToProps)
type PropsFromRedux = ConnectedProps<typeof connector>
type Props = PropsFromRedux & {
readonly history: { readonly history: {
readonly replace: (path: string) => void readonly replace: (path: string) => void
} }
} }
class GatedPage extends React.Component<Props> {
class GatedPage extends React.Component<WrapperProps> { public componentDidUpdate() {
public componentWillReceiveProps(nextProps: WrapperProps): void {
const { const {
history, history,
hasVerificationBeenAttempted, hasVerificationBeenAttempted,
isSignedIn, isSignedIn,
} = nextProps } = this.props
if (hasVerificationBeenAttempted && !isSignedIn) { if (hasVerificationBeenAttempted && !isSignedIn) {
history.replace(redirectPathIfNotSignedIn) history.replace(redirectPathIfNotSignedIn)
} }
@ -44,11 +48,6 @@ const generateRequireSignInWrapper = (
} }
} }
const mapStateToProps = (state: ReduxState) => ({
hasVerificationBeenAttempted: state.reduxTokenAuth.currentUser.hasVerificationBeenAttempted,
isSignedIn: state.reduxTokenAuth.currentUser.isSignedIn
})
return connect( return connect(
mapStateToProps, mapStateToProps,
)(GatedPage) )(GatedPage)
@ -58,3 +57,4 @@ const generateRequireSignInWrapper = (
} }
export default generateRequireSignInWrapper export default generateRequireSignInWrapper
export type GenerateRequireSignInWrapper = typeof generateRequireSignInWrapper

View File

@ -1,10 +1,9 @@
import { import {
combineReducers, combineReducers,
Reducer,
} from 'redux' } from 'redux'
import currentUser from './current-user' import currentUser from './current-user'
const reduxTokenAuthReducer: Reducer<{}> = combineReducers({ const reduxTokenAuthReducer = combineReducers({
currentUser, currentUser,
}) })

View File

@ -1,8 +1,8 @@
import { ComponentClass } from 'react'
import { import {
Dispatch,
Store, Store,
Action
} from 'redux' } from 'redux'
import { ThunkAction } from 'redux-thunk'
export interface UserAttributes { export interface UserAttributes {
[key: string]: string | number | null [key: string]: string | number | null
@ -19,9 +19,9 @@ export interface ReduxTokenAuthState {
readonly currentUser: User readonly currentUser: User
} }
export interface ReduxState { // export interface ReduxState {
readonly reduxTokenAuth: ReduxTokenAuthState // readonly reduxTokenAuth: ReduxTokenAuthState
} // }
export interface AuthHeaders { export interface AuthHeaders {
readonly 'access-token': string readonly 'access-token': string
@ -179,7 +179,15 @@ export type ReduxAction = RegistrationRequestSentAction
| SignOutRequestFailedAction | SignOutRequestFailedAction
| SetHasVerificationBeenAttemptedAction | SetHasVerificationBeenAttemptedAction
export type ReduxAsyncAction = (input?: any) => (dispatch: Dispatch<{}>) => Promise<void>
export type AppThunk<ReturnType = Promise<void>> = ThunkAction<
ReturnType,
object,
unknown,
Action<string>
>
export type ReduxAsyncAction = (input?: any) => AppThunk
export type VerifyCredentialsFunction = (store: Store<{}>) => void export type VerifyCredentialsFunction = (store: Store<{}>) => void
@ -199,9 +207,10 @@ export interface SingleLayerStringMap {
export interface GenerateRequireSignInWrapperConfig { export interface GenerateRequireSignInWrapperConfig {
readonly redirectPathIfNotSignedIn: string readonly redirectPathIfNotSignedIn: string
readonly mapStateToProps: (state: any) => {hasVerificationBeenAttempted: boolean, isSignedIn: boolean}
} }
export type RequireSignInWrapper = (PageComponent: ComponentClass) => ComponentClass // export type RequireSignInWrapper = (PageComponent: ComponentClass) => ComponentClass
export interface DeviceStorage { export interface DeviceStorage {
readonly getItem: (key: string) => Promise<any> readonly getItem: (key: string) => Promise<any>
@ -212,3 +221,9 @@ export interface DeviceStorage {
readonly multiGet: (keys: string[]) => Promise<any> readonly multiGet: (keys: string[]) => Promise<any>
readonly multiSet: (keyValuePairs: string[][]) => Promise<any> readonly multiSet: (keyValuePairs: string[][]) => Promise<any>
} }
export interface GenerateAuthActionsConfig {
authUrl: string
userAttributes: {[key: string]: any}
userRegistrationAttributes: {[key: string]: any}
}

View File

@ -29,7 +29,5 @@
"jest", "jest",
"src/setupTests.ts" "src/setupTests.ts"
], ],
"types": [ "types": []
"typePatches"
]
} }

3845
yarn.lock Normal file

File diff suppressed because it is too large Load Diff