react-generic-user 0.0.0-stage → 0.0.1-1
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/LICENSE +121 -0
- package/dist/components.css +2 -0
- package/dist/components.d.ts +17 -0
- package/dist/components.js +167 -0
- package/dist/context.d.ts +3 -0
- package/dist/context.js +115 -0
- package/dist/harness.d.ts +40 -0
- package/dist/harness.js +28 -0
- package/dist/index.css +2 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +340 -0
- package/dist/redux.d.ts +11 -0
- package/dist/redux.js +179 -0
- package/dist/test/components.d.ts +1 -0
- package/dist/test/context.d.ts +1 -0
- package/dist/test/helper.d.ts +11 -0
- package/dist/test/redux.d.ts +1 -0
- package/dist/type.d.ts +152 -0
- package/dist/type.js +41 -0
- package/package.json +306 -4
- package/readme.md +136 -0
- package/README.md +0 -3
package/dist/index.js
ADDED
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
if(typeof window==='undefined'||window===null)var window=(typeof globalThis==='undefined'||globalThis===null)?{}:globalThis;import { default as __WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__ } from "react-input-material/components/TextInput";
|
|
2
|
+
import { Button as __WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__ } from "@rmwc/button";
|
|
3
|
+
import { useDispatch as __WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useDispatch__, useSelector as __WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__ } from "react-redux";
|
|
4
|
+
import { createAsyncThunk as __WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__, createSlice as __WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createSlice__ } from "@reduxjs/toolkit";
|
|
5
|
+
import * as __WEBPACK_EXTERNAL_MODULE_clientnode__ from "clientnode";
|
|
6
|
+
import * as __WEBPACK_EXTERNAL_MODULE_core_js_modules_es_array_includes_js_66c3fd7d__ from "core-js/modules/es.array.includes.js";
|
|
7
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
|
|
8
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react_generic_tools_67824958__ from "react-generic-tools";
|
|
9
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__ from "react/jsx-runtime";
|
|
10
|
+
/******/ var __webpack_modules__ = ([
|
|
11
|
+
/* 0 */
|
|
12
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
13
|
+
|
|
14
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
15
|
+
/* harmony export */ u: function() { return /* binding */ ACTION_NAME_PREFIX; }
|
|
16
|
+
/* harmony export */ });
|
|
17
|
+
// -*- coding: utf-8 -*-
|
|
18
|
+
/** @module type *//* !
|
|
19
|
+
region header
|
|
20
|
+
[Project page](https://tsickert.com/react-generic-user)
|
|
21
|
+
|
|
22
|
+
Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
|
|
23
|
+
|
|
24
|
+
License
|
|
25
|
+
-------
|
|
26
|
+
|
|
27
|
+
This library written by Torben Sickert stands under a creative commons
|
|
28
|
+
naming 3.0 unported license.
|
|
29
|
+
See https://creativecommons.org/licenses/by/3.0/deed.de
|
|
30
|
+
endregion
|
|
31
|
+
*/// region imports
|
|
32
|
+
// endregion
|
|
33
|
+
// NOTE: Has to be redeclared since it is not exported by "@reduxjs/toolkit".
|
|
34
|
+
// region exports
|
|
35
|
+
/// region routing
|
|
36
|
+
/**
|
|
37
|
+
* Minimal location representation to stay independent of a concrete routing
|
|
38
|
+
* library (e.g. "react-router" locations are compatible).
|
|
39
|
+
*//**
|
|
40
|
+
* Integration of the used routing library.
|
|
41
|
+
* Using "react-router" for example: "{Redirect: Navigate, useLocation}".
|
|
42
|
+
*//// endregion
|
|
43
|
+
/// region universal
|
|
44
|
+
//// region hooks
|
|
45
|
+
//// endregion
|
|
46
|
+
/// endregion
|
|
47
|
+
/// region context
|
|
48
|
+
//// region expected given integration by library's usage
|
|
49
|
+
//// endregion
|
|
50
|
+
/// endregion
|
|
51
|
+
/// region redux
|
|
52
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
53
|
+
var ACTION_NAME_PREFIX="user";//// region expected given integration by library's usage
|
|
54
|
+
//// endregion
|
|
55
|
+
/// endregion
|
|
56
|
+
// endregion
|
|
57
|
+
|
|
58
|
+
/***/ }),
|
|
59
|
+
/* 1 */
|
|
60
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
61
|
+
|
|
62
|
+
var x = function(y) {
|
|
63
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
64
|
+
}
|
|
65
|
+
var y = function(x) { return function() { return x; }; }
|
|
66
|
+
module.exports = x({ ["createContext"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.createContext; }, ["memo"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.memo; }, ["useContext"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.useContext; }, ["useEffect"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.useEffect; }, ["useState"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.useState; } });
|
|
67
|
+
|
|
68
|
+
/***/ }),
|
|
69
|
+
/* 2 */
|
|
70
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__) {
|
|
71
|
+
|
|
72
|
+
// extracted by mini-css-extract-plugin
|
|
73
|
+
/* harmony default export */ __webpack_exports__.A = ({"login":"login","loginStatus":"login__status","loginButton":"login__button","loginName":"login__name","loginPassword":"login__password"});
|
|
74
|
+
|
|
75
|
+
/***/ }),
|
|
76
|
+
/* 3 */
|
|
77
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
78
|
+
|
|
79
|
+
var x = function(y) {
|
|
80
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
81
|
+
}
|
|
82
|
+
var y = function(x) { return function() { return x; }; }
|
|
83
|
+
module.exports = x({ ["Fragment"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.Fragment; }, ["jsx"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.jsx; }, ["jsxs"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_jsx_runtime_00f484c1__.jsxs; } });
|
|
84
|
+
|
|
85
|
+
/***/ }),
|
|
86
|
+
/* 4 */
|
|
87
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
88
|
+
|
|
89
|
+
var x = function(y) {
|
|
90
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
91
|
+
}
|
|
92
|
+
var y = function(x) { return function() { return x; }; }
|
|
93
|
+
module.exports = x({ });
|
|
94
|
+
|
|
95
|
+
/***/ }),
|
|
96
|
+
/* 5 */
|
|
97
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
// EXPORTS
|
|
101
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
102
|
+
sr: function() { return /* binding */ CSS_CLASS_NAMES; },
|
|
103
|
+
WV: function() { return /* binding */ componentFactory; }
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
// UNUSED EXPORTS: default
|
|
107
|
+
|
|
108
|
+
// EXTERNAL MODULE: external "clientnode"
|
|
109
|
+
var external_clientnode_ = __webpack_require__(8);
|
|
110
|
+
// EXTERNAL MODULE: external "react"
|
|
111
|
+
var external_react_ = __webpack_require__(1);
|
|
112
|
+
;// external "react-input-material/components/TextInput"
|
|
113
|
+
|
|
114
|
+
// EXTERNAL MODULE: external "react-generic-tools"
|
|
115
|
+
var external_react_generic_tools_ = __webpack_require__(9);
|
|
116
|
+
;// external "@rmwc/button"
|
|
117
|
+
|
|
118
|
+
// EXTERNAL MODULE: ./src/style.module.css
|
|
119
|
+
var style_module = __webpack_require__(2);
|
|
120
|
+
// EXTERNAL MODULE: external "react/jsx-runtime"
|
|
121
|
+
var jsx_runtime_ = __webpack_require__(3);
|
|
122
|
+
;// ./src/components.tsx
|
|
123
|
+
// #!/usr/bin/env babel-node
|
|
124
|
+
// -*- coding: utf-8 -*-
|
|
125
|
+
/** @module index *//* !
|
|
126
|
+
region header
|
|
127
|
+
[Project page](https://tsickert.com/react-generic-user)
|
|
128
|
+
|
|
129
|
+
Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
|
|
130
|
+
endregion
|
|
131
|
+
*/// region imports
|
|
132
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var r,e,o="function"==typeof Symbol?Symbol:{},n=o.iterator||"@@iterator",a=o.toStringTag||"@@toStringTag";function i(o,n,a,i){var u=n&&n.prototype instanceof Generator?n:Generator,f=Object.create(u.prototype);return _regeneratorDefine2(f,"_invoke",function(t,o,n){var a,i,u,f=0,p=n||[],y=!1,G={p:0,n:0,v:r,a:l,f:l.bind(r,4),d:function d(t,e){return a=t,i=0,u=r,G.n=e,c}};function l(t,o){for(i=t,u=o,e=0;!y&&f&&!n&&e<p.length;e++){var n,a=p[e],l=G.p,F=a[2];t>3?(n=F===o)&&(u=a[(i=a[4])?5:(i=3,3)],a[4]=a[5]=r):a[0]<=l&&((n=t<2&&l<a[1])?(i=0,G.v=o,G.n=a[1]):l<F&&(n=t<3||a[0]>o||o>F)&&(a[4]=t,a[5]=o,G.n=F,i=0))}if(n||t>1)return c;throw y=!0,o}return function(n,p,F){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&l(p,F),i=p,u=F;(e=i<2?r:u)||!y;){a||(i?i<3?(i>1&&(G.n=-1),l(i,u)):G.n=u:G.v=u);try{if(f=2,a){if(i||(n="next"),e=a[n]){if(!(e=e.call(a,u)))throw TypeError("iterator result is not an object");if(!e.done)return e;u=e.value,i<2&&(i=0)}else 1===i&&(e=a.return)&&e.call(a),i<2&&(u=TypeError("The iterator does not provide a '"+n+"' method"),i=1);a=r}else if((e=(y=G.n<0)?u:t.call(o,G))!==c)break}catch(t){a=r,i=1,u=t}finally{f=1}}return{value:e,done:y}}}(o,a,i),!0),f}var c={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}e=Object.getPrototypeOf;var u=[][n]?e(e([][n]())):(_regeneratorDefine2(e={},n,function(){return this}),e),f=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(u);function p(r){return Object.setPrototypeOf?Object.setPrototypeOf(r,GeneratorFunctionPrototype):(r.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(r,a,"GeneratorFunction")),r.prototype=Object.create(f),r}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(f,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,a,"GeneratorFunction"),_regeneratorDefine2(f),_regeneratorDefine2(f,a,"Generator"),_regeneratorDefine2(f,n,function(){return this}),_regeneratorDefine2(f,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:p}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}function _slicedToArray(e,i){return _iterableToArrayLimit(e,i)||_unsupportedIterableToArray(e,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,t){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(Array.isArray(r)&&(null==e||e===("undefined"!=typeof Symbol&&[][Symbol.iterator])||e===[]["@@iterator"]))return r;if(null!=e){var l,n,i,a,u=[],o=!0,f=!1;try{if(i=(e=e.call(r)).next,0===t){if(Object(e)!==e)return;o=!1}else for(;!(o=(l=i.call(e)).done)&&(u.push(l.value),u.length!==t);o=!0);}catch(r){f=!0,n=r}finally{try{if(!o&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw n}}return u}}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(r,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))})}return r}function _defineProperty(r,t,o){return(t=_toPropertyKey(t))in r?Object.defineProperty(r,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[t]=o,r}function _toPropertyKey(r){var o=_toPrimitive(r,"string");return"symbol"==_typeof(o)?o:o+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var r;if("undefined"!=typeof Symbol&&void 0!==(r=t[Symbol.toPrimitive])){var i=r.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)};// endregion
|
|
133
|
+
var CSS_CLASS_NAMES=style_module/* default */.A;/**
|
|
134
|
+
* Creates components to protect content and to log in.
|
|
135
|
+
* NOTE: User hook should either be a "ContextUserHook" or "ReduxUserHook".
|
|
136
|
+
* @param useUser - Hook to retrieve current user.
|
|
137
|
+
* @param routing - Integration of the used routing library.
|
|
138
|
+
* @param routing.Redirect - Component redirecting to given location.
|
|
139
|
+
* @param routing.useLocation - Hook to determine current location.
|
|
140
|
+
* @returns Components.
|
|
141
|
+
*/var componentFactory=function componentFactory(useUser,_ref){var Redirect=_ref.Redirect,useLocation=_ref.useLocation;return{/**
|
|
142
|
+
* @param options - Options for given component.
|
|
143
|
+
* @param options.children - Content to render when authenticated.
|
|
144
|
+
* @param options.fallbackLocation - Location to redirect to when
|
|
145
|
+
* authentication was unsuccessful.
|
|
146
|
+
* @param options.loadingFallback - String to show when determining
|
|
147
|
+
* authentication result.
|
|
148
|
+
* @returns An content to be rendered.
|
|
149
|
+
* A wrapper for <Route> that redirects to the login screen if you're
|
|
150
|
+
* not yet authenticated.
|
|
151
|
+
*/Authenticated:/*#__PURE__*/(0,external_react_.memo)(function(_ref2){var _fallbackLocation;var children=_ref2.children,fallbackLocation=_ref2.fallbackLocation,_ref2$loadingFallback=_ref2.loadingFallback,loadingFallback=_ref2$loadingFallback===void 0?"loading...":_ref2$loadingFallback;var location=useLocation();var user=useUser();(0,external_react_.useEffect)(function(){if(user.session.authenticated===null)user.authenticate()},[user.session.authenticated]);fallbackLocation=(0,external_react_generic_tools_.useMemorizedValue)(typeof fallbackLocation==="string"?{pathname:fallbackLocation}:fallbackLocation,fallbackLocation);var loginTarget=(0,external_react_generic_tools_.useMemorizedValue)(_objectSpread({},fallbackLocation),fallbackLocation);if(user.session.authenticated){if((0,external_clientnode_.isFunction)(children))return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children({fallbackLocation:fallbackLocation,location:location,user:user})});return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:children})}if(user.session.authenticated===null)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{children:loadingFallback!==null&&loadingFallback!==void 0?loadingFallback:""});if(((_fallbackLocation=fallbackLocation)===null||_fallbackLocation===void 0?void 0:_fallbackLocation.pathname)===location.pathname)return/*#__PURE__*/(0,jsx_runtime_.jsx)(jsx_runtime_.Fragment,{});return/*#__PURE__*/(0,jsx_runtime_.jsx)(Redirect,{replace:true,state:{from:location},to:loginTarget})}),Login:function Login(_ref3){var buttonProperties=_ref3.buttonProperties,inputProperties=_ref3.inputProperties,loginProperties=_ref3.loginProperties,passwordProperties=_ref3.passwordProperties,children=_ref3.children,onSubmitted=_ref3.onSubmitted,onSuccess=_ref3.onSuccess;var user=useUser();var _useState=(0,external_react_.useState)(_objectSpread(_objectSpread({},loginProperties),{},{invalid:true})),_useState2=_slicedToArray(_useState,2),loginInput=_useState2[0],setLoginInput=_useState2[1];var _useState3=(0,external_react_.useState)(_objectSpread(_objectSpread({},passwordProperties),{},{invalid:true})),_useState4=_slicedToArray(_useState3,2),passwordInput=_useState4[0],setPasswordInput=_useState4[1];var _useState5=(0,external_react_.useState)(false),_useState6=_slicedToArray(_useState5,2),submitted=_useState6[0],setSubmitted=_useState6[1];var _useState7=(0,external_react_.useState)(false),_useState8=_slicedToArray(_useState7,2),sent=_useState8[0],setSent=_useState8[1];(0,external_react_.useEffect)(function(){if(user.session.authenticated&&onSuccess)onSuccess(user)},[user.session.authenticated,onSuccess]);var login=(0,external_react_generic_tools_.useMemorizedValue)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(event){var _loginInput$value,_passwordInput$value;var result,_loginInput$value2,_passwordInput$value2,_result;return _regenerator().w(function(_context){while(1)switch(_context.n){case 0:event.preventDefault();result=onSubmitted&&onSubmitted((_loginInput$value=loginInput.value)!==null&&_loginInput$value!==void 0?_loginInput$value:null,(_passwordInput$value=passwordInput.value)!==null&&_passwordInput$value!==void 0?_passwordInput$value:null);if(!(typeof result!=="boolean"||result)){_context.n=1;break}setSubmitted(true);if(!(loginInput.valid&&passwordInput.valid)){_context.n=1;break}_result=user.login({login:(_loginInput$value2=loginInput.value)!==null&&_loginInput$value2!==void 0?_loginInput$value2:null,password:(_passwordInput$value2=passwordInput.value)!==null&&_passwordInput$value2!==void 0?_passwordInput$value2:null});setSent(true);if(!(onSuccess&&_result!==null&&_result!==void 0&&_result.then)){_context.n=1;break}_context.n=1;return _result.then(function(){onSuccess(user)});case 1:return _context.a(2)}},_callee)})),onSubmitted,onSuccess,loginInput.value,loginInput.valid,passwordInput.value,passwordInput.valid,setSent,setSubmitted);var renderStatus=(0,external_react_generic_tools_.useMemorizedValue)((0,external_clientnode_.isFunction)(children)?children:children?function(){return children}:function(_ref5){var sent=_ref5.sent,submitted=_ref5.submitted,pending=_ref5.pending,authenticated=_ref5.authenticated,loginInput=_ref5.loginInput,passwordInput=_ref5.passwordInput;return pending?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,children:"authenticating..."}):submitted&&!authenticated&&(sent||loginInput.invalid||passwordInput.invalid)?/*#__PURE__*/(0,jsx_runtime_.jsx)("div",{className:CSS_CLASS_NAMES.loginStatus,role:"alert",children:loginInput.invalid?"Please type valid login.":passwordInput.invalid?"Please type valid password.":"Invalid credentials!"}):""},children);var setSentToFalse=(0,external_react_generic_tools_.useMemorizedValue)(function(){setSent(false)},setSent);return/*#__PURE__*/(0,jsx_runtime_.jsxs)("form",{className:CSS_CLASS_NAMES.login,children:[renderStatus({sent:sent,submitted:submitted,pending:Boolean(user.session.authenticating),authenticated:Boolean(user.session.authenticated),loginInput:loginInput,passwordInput:passwordInput}),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginName,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"username"}),name:"login",onChange:setLoginInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"account_circle"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(loginProperties||{},inputProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE_react_input_material_components_TextInput_e3667393_default__,_objectSpread(_objectSpread({className:CSS_CLASS_NAMES.loginPassword,componentProperties:(0,external_react_generic_tools_.useMemorizedValue)({autoComplete:"current-password"}),name:"password",onChange:setPasswordInput,onChangeValue:setSentToFalse,required:true,trailingIcon:"password_preset"},(0,external_react_generic_tools_.useMemorizedValue)(inputProperties||{},inputProperties)),(0,external_react_generic_tools_.useMemorizedValue)(passwordProperties||{},passwordProperties))),/*#__PURE__*/(0,jsx_runtime_.jsx)(__WEBPACK_EXTERNAL_MODULE__rmwc_button_e0454fea_Button__,_objectSpread({children:"Log in",className:CSS_CLASS_NAMES.loginButton,onClick:(0,external_react_generic_tools_.useMemorizedValue)(function(event){void login(event)},login),trailingIcon:"input"},(0,external_react_generic_tools_.useMemorizedValue)(buttonProperties||{},buttonProperties)))]})}}};/* harmony default export */ var components = ((/* unused pure expression or super */ null && (componentFactory)));
|
|
152
|
+
|
|
153
|
+
/***/ }),
|
|
154
|
+
/* 6 */
|
|
155
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
156
|
+
|
|
157
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
158
|
+
/* harmony export */ t: function() { return /* binding */ sessionFactory; }
|
|
159
|
+
/* harmony export */ });
|
|
160
|
+
/* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);
|
|
161
|
+
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
|
|
162
|
+
/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);
|
|
163
|
+
// #!/usr/bin/env babel-node
|
|
164
|
+
// -*- coding: utf-8 -*-
|
|
165
|
+
/** @module index *//* !
|
|
166
|
+
region header
|
|
167
|
+
[Project page](https://tsickert.com/react-generic-user)
|
|
168
|
+
|
|
169
|
+
Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
|
|
170
|
+
endregion
|
|
171
|
+
*/// region imports
|
|
172
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(r,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))})}return r}function _defineProperty(r,t,o){return(t=_toPropertyKey(t))in r?Object.defineProperty(r,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[t]=o,r}function _toPropertyKey(r){var o=_toPrimitive(r,"string");return"symbol"==_typeof(o)?o:o+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var r;if("undefined"!=typeof Symbol&&void 0!==(r=t[Symbol.toPrimitive])){var i=r.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}function _slicedToArray(e,i){return _iterableToArrayLimit(e,i)||_unsupportedIterableToArray(e,i)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(t,e){if(t){if("string"==typeof t)return _arrayLikeToArray(t,e);var o={}.toString.call(t).slice(8,-1);return"Object"===o&&t.constructor&&(o=t.constructor.name),"Map"===o||"Set"===o?Array.from(t):"Arguments"===o||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(o)?_arrayLikeToArray(t,e):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,t){var e=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(Array.isArray(r)&&(null==e||e===("undefined"!=typeof Symbol&&[][Symbol.iterator])||e===[]["@@iterator"]))return r;if(null!=e){var l,n,i,a,u=[],o=!0,f=!1;try{if(i=(e=e.call(r)).next,0===t){if(Object(e)!==e)return;o=!1}else for(;!(o=(l=i.call(e)).done)&&(u.push(l.value),u.length!==t);o=!0);}catch(r){f=!0,n=r}finally{try{if(!o&&null!=e.return&&(a=e.return(),Object(a)!==a))return}finally{if(f)throw n}}return u}};// endregion
|
|
173
|
+
var sessionFactory=function sessionFactory(_ref){var _authenticate=_ref.authenticate,_login=_ref.login,_logout=_ref.logout;var userContext=/*#__PURE__*/(0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);var useUser=function useUser(){var user=(0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(userContext);if(user===undefined)throw new Error("No user context available. Did you wrap components using "+"the user context into the \"UserProvider\" component?");return user};var useHasRole=function useHasRole(role){var _user$session$userCon;var user=useUser();var roles=(_user$session$userCon=user.session.userContext)===null||_user$session$userCon===void 0?void 0:_user$session$userCon.roles;return Boolean(roles&&[].concat(role).every(function(role){return roles.includes(role)}))};var useUserState=function useUserState(options){if(options===void 0){options={}}var _useState=(0,react__WEBPACK_IMPORTED_MODULE_1__.useState)({session:{authenticated:null,authenticating:null,deauthenticating:null},authenticate:function authenticate(){setUser(function(oldUser){/*
|
|
174
|
+
If already an authentication request is running do
|
|
175
|
+
nothing.
|
|
176
|
+
*/if(oldUser.session.authenticating)return oldUser;var authenticater=function authenticater(){return new Promise(function(resolve,reject){_authenticate(oldUser.session).then(function(userContext){setUser(function(oldUser){if(options.onAuthenticate)options.onAuthenticate(userContext);resolve(userContext);return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{authenticated:true,authenticating:null,userContext:userContext})})})}).catch(function(error){setUser(function(oldUser){/*
|
|
177
|
+
eslint-disable
|
|
178
|
+
prefer-promise-reject-errors
|
|
179
|
+
*/reject(error);/*
|
|
180
|
+
eslint-enable
|
|
181
|
+
prefer-promise-reject-errors
|
|
182
|
+
*/return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{authenticating:null})})})})})};return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{authenticating:oldUser.session.deauthenticating?oldUser.session.deauthenticating.then(authenticater,authenticater):authenticater()})})})},login:function login(loginData){setUser(function(oldUser){if(oldUser.session.authenticating)return oldUser;var authenticater=function authenticater(){return new Promise(function(resolve,reject){_login(loginData).then(function(userContext){setUser(function(oldUser){if(options.onAuthenticate)options.onAuthenticate(userContext);resolve(userContext);return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{authenticated:true,authenticating:null,userContext:userContext})})})}).catch(function(error){setUser(function(oldUser){/*
|
|
183
|
+
eslint-disable
|
|
184
|
+
prefer-promise-reject-errors
|
|
185
|
+
*/reject(error);/*
|
|
186
|
+
eslint-enable
|
|
187
|
+
prefer-promise-reject-errors
|
|
188
|
+
*/return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{authenticating:null})})})})})};return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{authenticating:oldUser.session.deauthenticating?oldUser.session.deauthenticating.then(authenticater,authenticater):authenticater()})})})},logout:function logout(){setUser(function(oldUser){if(oldUser.session.deauthenticating)return oldUser;var deauthenticater=function deauthenticater(){return new Promise(function(resolve,reject){_logout(oldUser.session).then(function(deauthenticated){setUser(function(oldUser){if(deauthenticated&&options.onDeauthenticate)options.onDeauthenticate(oldUser.session.userContext);resolve(deauthenticated);return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{authenticated:!deauthenticated,deauthenticating:null,userContext:deauthenticated?undefined:oldUser.session.userContext})})})}).catch(function(error){setUser(function(oldUser){/*
|
|
189
|
+
eslint-disable
|
|
190
|
+
prefer-promise-reject-errors
|
|
191
|
+
*/reject(error);/*
|
|
192
|
+
eslint-enable
|
|
193
|
+
prefer-promise-reject-errors
|
|
194
|
+
*/return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{deauthenticating:null})})})})})};return _objectSpread(_objectSpread({},oldUser),{},{session:_objectSpread(_objectSpread({},oldUser.session),{},{deauthenticating:oldUser.session.authenticating?oldUser.session.authenticating.then(deauthenticater,deauthenticater):deauthenticater()})})})}}),_useState2=_slicedToArray(_useState,2),user=_useState2[0],setUser=_useState2[1];return user};return{UserProvider:function UserProvider(_ref2){var children=_ref2.children,options=_ref2.options;return/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_2__.jsx)(userContext.Provider,{value:useUserState(options),children:children})},userContext:userContext,useHasRole:useHasRole,useIsAdmin:function useIsAdmin(){return useHasRole("_admin")},useUser:useUser,useUserState:useUserState}};/* unused harmony default export */ var __WEBPACK_DEFAULT_EXPORT__ = ((/* unused pure expression or super */ null && (sessionFactory)));
|
|
195
|
+
|
|
196
|
+
/***/ }),
|
|
197
|
+
/* 7 */
|
|
198
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
// EXPORTS
|
|
202
|
+
__webpack_require__.d(__webpack_exports__, {
|
|
203
|
+
t: function() { return /* binding */ sessionFactory; }
|
|
204
|
+
});
|
|
205
|
+
|
|
206
|
+
// UNUSED EXPORTS: default
|
|
207
|
+
|
|
208
|
+
// EXTERNAL MODULE: external "core-js/modules/es.array.includes.js"
|
|
209
|
+
var es_array_includes_js_ = __webpack_require__(4);
|
|
210
|
+
// EXTERNAL MODULE: external "clientnode"
|
|
211
|
+
var external_clientnode_ = __webpack_require__(8);
|
|
212
|
+
// EXTERNAL MODULE: external "react"
|
|
213
|
+
var external_react_ = __webpack_require__(1);
|
|
214
|
+
// EXTERNAL MODULE: external "react-generic-tools"
|
|
215
|
+
var external_react_generic_tools_ = __webpack_require__(9);
|
|
216
|
+
;// external "react-redux"
|
|
217
|
+
|
|
218
|
+
;// external "@reduxjs/toolkit"
|
|
219
|
+
|
|
220
|
+
// EXTERNAL MODULE: ./src/type.ts
|
|
221
|
+
var type = /*#__PURE__*/__webpack_require__(0);
|
|
222
|
+
;// ./src/redux.ts
|
|
223
|
+
// #!/usr/bin/env babel-node
|
|
224
|
+
// -*- coding: utf-8 -*-
|
|
225
|
+
/** @module redux *//* !
|
|
226
|
+
region header
|
|
227
|
+
[Project page](https://tsickert.com/react-generic-user)
|
|
228
|
+
|
|
229
|
+
Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
|
|
230
|
+
endregion
|
|
231
|
+
*/// region imports
|
|
232
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(r,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))})}return r}function _defineProperty(r,t,o){return(t=_toPropertyKey(t))in r?Object.defineProperty(r,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[t]=o,r}function _toPropertyKey(r){var o=_toPrimitive(r,"string");return"symbol"==_typeof(o)?o:o+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var r;if("undefined"!=typeof Symbol&&void 0!==(r=t[Symbol.toPrimitive])){var i=r.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)};// endregion
|
|
233
|
+
var useNoLocation=function useNoLocation(){return null};/**
|
|
234
|
+
* Creates a redux slice, thunks and hooks to manage a user session.
|
|
235
|
+
* @param handler - Implements authentication, login and logout.
|
|
236
|
+
* @param options - Additional options.
|
|
237
|
+
* @param options.useLocation - Hook to determine current location. Needed to
|
|
238
|
+
* remember initially requested locations.
|
|
239
|
+
* @returns Session slice, thunks and hooks.
|
|
240
|
+
*/var sessionFactory=function sessionFactory(handler,_temp){var _ref=_temp===void 0?{}:_temp,_ref$useLocation=_ref.useLocation,useLocation=_ref$useLocation===void 0?useNoLocation:_ref$useLocation;/*
|
|
241
|
+
NOTE: We wrap handler calls via "(...parameters) => handler..." to
|
|
242
|
+
allow setting handler after this factory function has been called.
|
|
243
|
+
*/var authenticateThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/authenticate"),function(){return handler.authenticate.apply(handler,arguments)});var loginThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/login"),function(){return handler.login.apply(handler,arguments)});var logoutThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/logout"),function(){return handler.logout.apply(handler,arguments)});var useHasRole=function useHasRole(role){var session=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__(function(state){return state.user});var userContext=session===null||session===void 0?void 0:session.userContext;var roles=userContext===null||userContext===void 0?void 0:userContext.roles;return Boolean(roles&&[].concat(role).every(function(role){return roles.includes(role)}))};var slice=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createSlice__({name:type/* ACTION_NAME_PREFIX */.u,initialState:{authenticated:null,authenticating:false,deauthenticating:false,initialRequestedLocation:undefined,userContext:undefined},selectors:{selectUser:function selectUser(slice){return slice}},reducers:{deauthenticate:function deauthenticate(state){return _objectSpread(_objectSpread({},state),{},{authenticated:false,userContext:undefined})},setInitialRequestedLocation:function setInitialRequestedLocation(state,_ref2){var payload=_ref2.payload;return _objectSpread(_objectSpread({},state),{},{initialRequestedLocation:payload})}},extraReducers:function extraReducers(builder){builder.addCase(logoutThunk.fulfilled,function(state,action){state.deauthenticating=false;if(action.payload){state.authenticated=false;state.userContext=undefined}}).addCase(logoutThunk.pending,function(state){state.deauthenticating=true}).addCase(logoutThunk.rejected,function(state){state.deauthenticating=false}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/fulfilled"),"".concat(loginThunk.typePrefix,"/fulfilled")].includes(action.type)},function(state,action){state.authenticating=false;if(typeof action.payload==="boolean")state.authenticated=action.payload;else if((0,external_clientnode_.isObject)(action.payload)){state.authenticated=true;state.userContext=action.payload}else state.authenticated=false}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/pending"),"".concat(loginThunk.typePrefix,"/pending")].includes(action.type)},function(state){state.authenticating=true}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/rejected"),"".concat(loginThunk.typePrefix,"/rejected")].includes(action.type)},function(state){state.authenticating=false})}});return{authenticateThunk:authenticateThunk,loginThunk:loginThunk,logoutThunk:logoutThunk,slice:slice,useHasRole:useHasRole,useIsAdmin:function useIsAdmin(){return useHasRole("_admin")},useUser:function useUser(data,isLoginLocation){if(data===void 0){data={}}if(isLoginLocation===void 0){isLoginLocation=function isLoginLocation(location){return location.pathname.endsWith("/login")}}var dispatch=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useDispatch__();var location=useLocation();var session=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__(slice.selectors.selectUser);(0,external_react_.useEffect)(function(){if(location&&!isLoginLocation(location)&&(!session||session.initialRequestedLocation===undefined||session.authenticated&&session.initialRequestedLocation!==null))dispatch(slice.actions.setInitialRequestedLocation(session!==null&&session!==void 0&&session.authenticated?null:location))},[dispatch,location,session===null||session===void 0?void 0:session.authenticated,session===null||session===void 0?void 0:session.initialRequestedLocation]);if(session===null)throw new Error("No user redux state found. Did you register a "+"corresponding redux slice?");var authenticate=(0,external_react_generic_tools_.useMemorizedValue)(function(){dispatch(authenticateThunk(data))},dispatch);var login=(0,external_react_generic_tools_.useMemorizedValue)(function(_ref3){var login=_ref3.login,password=_ref3.password;dispatch(loginThunk(_objectSpread(_objectSpread({},data),{},{login:login,password:password})))},dispatch);var logout=(0,external_react_generic_tools_.useMemorizedValue)(function(){dispatch(logoutThunk(data))},dispatch);return (0,external_react_generic_tools_.useMemorizedValue)({authenticate:authenticate,login:login,logout:logout,session:session},authenticateThunk,dispatch,session)}}};/* harmony default export */ var redux = ((/* unused pure expression or super */ null && (sessionFactory)));
|
|
244
|
+
|
|
245
|
+
/***/ }),
|
|
246
|
+
/* 8 */
|
|
247
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
248
|
+
|
|
249
|
+
var x = function(y) {
|
|
250
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
251
|
+
}
|
|
252
|
+
var y = function(x) { return function() { return x; }; }
|
|
253
|
+
module.exports = x({ ["isFunction"]: function() { return __WEBPACK_EXTERNAL_MODULE_clientnode__.isFunction; }, ["isObject"]: function() { return __WEBPACK_EXTERNAL_MODULE_clientnode__.isObject; } });
|
|
254
|
+
|
|
255
|
+
/***/ }),
|
|
256
|
+
/* 9 */
|
|
257
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
258
|
+
|
|
259
|
+
var x = function(y) {
|
|
260
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
261
|
+
}
|
|
262
|
+
var y = function(x) { return function() { return x; }; }
|
|
263
|
+
module.exports = x({ ["useMemorizedValue"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_generic_tools_67824958__.useMemorizedValue; } });
|
|
264
|
+
|
|
265
|
+
/***/ })
|
|
266
|
+
/******/ ]);
|
|
267
|
+
/************************************************************************/
|
|
268
|
+
/******/ // The module cache
|
|
269
|
+
/******/ var __webpack_module_cache__ = {};
|
|
270
|
+
/******/
|
|
271
|
+
/******/ // The require function
|
|
272
|
+
/******/ function __webpack_require__(moduleId) {
|
|
273
|
+
/******/ // Check if module is in cache
|
|
274
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
275
|
+
/******/ if (cachedModule !== undefined) {
|
|
276
|
+
/******/ return cachedModule.exports;
|
|
277
|
+
/******/ }
|
|
278
|
+
/******/ // Create a new module (and put it into the cache)
|
|
279
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
280
|
+
/******/ // no module.id needed
|
|
281
|
+
/******/ // no module.loaded needed
|
|
282
|
+
/******/ exports: {}
|
|
283
|
+
/******/ };
|
|
284
|
+
/******/
|
|
285
|
+
/******/ // Execute the module function
|
|
286
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
287
|
+
/******/
|
|
288
|
+
/******/ // Return the exports of the module
|
|
289
|
+
/******/ return module.exports;
|
|
290
|
+
/******/ }
|
|
291
|
+
/******/
|
|
292
|
+
/************************************************************************/
|
|
293
|
+
/******/ /* webpack/runtime/define property getters */
|
|
294
|
+
/******/ // define getter/value functions for harmony exports
|
|
295
|
+
/******/ __webpack_require__.d = function(exports, definition) {
|
|
296
|
+
/******/ for(var key in definition) {
|
|
297
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
298
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
299
|
+
/******/ }
|
|
300
|
+
/******/ }
|
|
301
|
+
/******/ };
|
|
302
|
+
/******/
|
|
303
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
304
|
+
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); };
|
|
305
|
+
/******/
|
|
306
|
+
/************************************************************************/
|
|
307
|
+
var __webpack_exports__ = {};
|
|
308
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
309
|
+
/* harmony export */ WV: function() { return /* reexport safe */ _components_js__WEBPACK_IMPORTED_MODULE_0__.WV; },
|
|
310
|
+
/* harmony export */ l$: function() { return /* reexport safe */ _redux_js__WEBPACK_IMPORTED_MODULE_2__.t; },
|
|
311
|
+
/* harmony export */ qJ: function() { return /* reexport safe */ _context_js__WEBPACK_IMPORTED_MODULE_1__.t; },
|
|
312
|
+
/* harmony export */ sr: function() { return /* reexport safe */ _components_js__WEBPACK_IMPORTED_MODULE_0__.sr; },
|
|
313
|
+
/* harmony export */ uI: function() { return /* reexport safe */ _type_js__WEBPACK_IMPORTED_MODULE_3__.u; }
|
|
314
|
+
/* harmony export */ });
|
|
315
|
+
/* harmony import */ var _components_js__WEBPACK_IMPORTED_MODULE_0__ = /*#__PURE__*/__webpack_require__(5);
|
|
316
|
+
/* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_1__ = /*#__PURE__*/__webpack_require__(6);
|
|
317
|
+
/* harmony import */ var _redux_js__WEBPACK_IMPORTED_MODULE_2__ = /*#__PURE__*/__webpack_require__(7);
|
|
318
|
+
/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_3__ = /*#__PURE__*/__webpack_require__(0);
|
|
319
|
+
// #!/usr/bin/env babel-node
|
|
320
|
+
// -*- coding: utf-8 -*-
|
|
321
|
+
/** @module index *//* !
|
|
322
|
+
region header
|
|
323
|
+
[Project page](https://tsickert.com/react-generic-user)
|
|
324
|
+
|
|
325
|
+
Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
|
|
326
|
+
|
|
327
|
+
License
|
|
328
|
+
-------
|
|
329
|
+
|
|
330
|
+
This library written by Torben Sickert stands under a creative commons
|
|
331
|
+
naming 3.0 unported license.
|
|
332
|
+
See https://creativecommons.org/licenses/by/3.0/deed.de
|
|
333
|
+
endregion
|
|
334
|
+
*/
|
|
335
|
+
var __webpack_exports__ACTION_NAME_PREFIX = __webpack_exports__.uI;
|
|
336
|
+
var __webpack_exports__CSS_CLASS_NAMES = __webpack_exports__.sr;
|
|
337
|
+
var __webpack_exports__componentFactory = __webpack_exports__.WV;
|
|
338
|
+
var __webpack_exports__contextSessionFactory = __webpack_exports__.qJ;
|
|
339
|
+
var __webpack_exports__reduxSessionFactory = __webpack_exports__.l$;
|
|
340
|
+
export { __webpack_exports__ACTION_NAME_PREFIX as ACTION_NAME_PREFIX, __webpack_exports__CSS_CLASS_NAMES as CSS_CLASS_NAMES, __webpack_exports__componentFactory as componentFactory, __webpack_exports__contextSessionFactory as contextSessionFactory, __webpack_exports__reduxSessionFactory as reduxSessionFactory };
|
package/dist/redux.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AsyncThunkConfig, BaseLoginData, BaseUserContext, BaseUserSession, ReduxSessionHandler, ReduxSessionOptions, ReduxSessionService } from './type';
|
|
2
|
+
/**
|
|
3
|
+
* Creates a redux slice, thunks and hooks to manage a user session.
|
|
4
|
+
* @param handler - Implements authentication, login and logout.
|
|
5
|
+
* @param options - Additional options.
|
|
6
|
+
* @param options.useLocation - Hook to determine current location. Needed to
|
|
7
|
+
* remember initially requested locations.
|
|
8
|
+
* @returns Session slice, thunks and hooks.
|
|
9
|
+
*/
|
|
10
|
+
export declare const sessionFactory: <LoginData extends BaseLoginData = BaseLoginData, UserContext extends BaseUserContext = BaseUserContext, SessionType extends BaseUserSession<UserContext> = BaseUserSession<UserContext>, AsyncThunkOptions extends AsyncThunkConfig = AsyncThunkConfig>(handler: ReduxSessionHandler<LoginData, UserContext, AsyncThunkOptions>, { useLocation }?: ReduxSessionOptions) => ReduxSessionService<LoginData, UserContext, SessionType, AsyncThunkOptions>;
|
|
11
|
+
export default sessionFactory;
|
package/dist/redux.js
ADDED
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
if(typeof window==='undefined'||window===null)var window=(typeof globalThis==='undefined'||globalThis===null)?{}:globalThis;import * as __WEBPACK_EXTERNAL_MODULE_clientnode__ from "clientnode";
|
|
2
|
+
import * as __WEBPACK_EXTERNAL_MODULE_core_js_modules_es_array_includes_js_66c3fd7d__ from "core-js/modules/es.array.includes.js";
|
|
3
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react__ from "react";
|
|
4
|
+
import * as __WEBPACK_EXTERNAL_MODULE_react_generic_tools_67824958__ from "react-generic-tools";
|
|
5
|
+
import { useDispatch as __WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useDispatch__, useSelector as __WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__ } from "react-redux";
|
|
6
|
+
import { createAsyncThunk as __WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__, createSlice as __WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createSlice__ } from "@reduxjs/toolkit";
|
|
7
|
+
/******/ var __webpack_modules__ = ([
|
|
8
|
+
/* 0 */
|
|
9
|
+
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
10
|
+
|
|
11
|
+
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
|
|
12
|
+
/* harmony export */ u: function() { return /* binding */ ACTION_NAME_PREFIX; }
|
|
13
|
+
/* harmony export */ });
|
|
14
|
+
// -*- coding: utf-8 -*-
|
|
15
|
+
/** @module type *//* !
|
|
16
|
+
region header
|
|
17
|
+
[Project page](https://tsickert.com/react-generic-user)
|
|
18
|
+
|
|
19
|
+
Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
|
|
20
|
+
|
|
21
|
+
License
|
|
22
|
+
-------
|
|
23
|
+
|
|
24
|
+
This library written by Torben Sickert stands under a creative commons
|
|
25
|
+
naming 3.0 unported license.
|
|
26
|
+
See https://creativecommons.org/licenses/by/3.0/deed.de
|
|
27
|
+
endregion
|
|
28
|
+
*/// region imports
|
|
29
|
+
// endregion
|
|
30
|
+
// NOTE: Has to be redeclared since it is not exported by "@reduxjs/toolkit".
|
|
31
|
+
// region exports
|
|
32
|
+
/// region routing
|
|
33
|
+
/**
|
|
34
|
+
* Minimal location representation to stay independent of a concrete routing
|
|
35
|
+
* library (e.g. "react-router" locations are compatible).
|
|
36
|
+
*//**
|
|
37
|
+
* Integration of the used routing library.
|
|
38
|
+
* Using "react-router" for example: "{Redirect: Navigate, useLocation}".
|
|
39
|
+
*//// endregion
|
|
40
|
+
/// region universal
|
|
41
|
+
//// region hooks
|
|
42
|
+
//// endregion
|
|
43
|
+
/// endregion
|
|
44
|
+
/// region context
|
|
45
|
+
//// region expected given integration by library's usage
|
|
46
|
+
//// endregion
|
|
47
|
+
/// endregion
|
|
48
|
+
/// region redux
|
|
49
|
+
// eslint-disable-next-line @typescript-eslint/consistent-type-definitions
|
|
50
|
+
var ACTION_NAME_PREFIX="user";//// region expected given integration by library's usage
|
|
51
|
+
//// endregion
|
|
52
|
+
/// endregion
|
|
53
|
+
// endregion
|
|
54
|
+
|
|
55
|
+
/***/ }),
|
|
56
|
+
/* 1 */
|
|
57
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
58
|
+
|
|
59
|
+
var x = function(y) {
|
|
60
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
61
|
+
}
|
|
62
|
+
var y = function(x) { return function() { return x; }; }
|
|
63
|
+
module.exports = x({ ["useEffect"]: function() { return __WEBPACK_EXTERNAL_MODULE_react__.useEffect; } });
|
|
64
|
+
|
|
65
|
+
/***/ }),
|
|
66
|
+
/* 2 */,
|
|
67
|
+
/* 3 */,
|
|
68
|
+
/* 4 */
|
|
69
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
70
|
+
|
|
71
|
+
var x = function(y) {
|
|
72
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
73
|
+
}
|
|
74
|
+
var y = function(x) { return function() { return x; }; }
|
|
75
|
+
module.exports = x({ });
|
|
76
|
+
|
|
77
|
+
/***/ }),
|
|
78
|
+
/* 5 */,
|
|
79
|
+
/* 6 */,
|
|
80
|
+
/* 7 */,
|
|
81
|
+
/* 8 */
|
|
82
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
83
|
+
|
|
84
|
+
var x = function(y) {
|
|
85
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
86
|
+
}
|
|
87
|
+
var y = function(x) { return function() { return x; }; }
|
|
88
|
+
module.exports = x({ ["isObject"]: function() { return __WEBPACK_EXTERNAL_MODULE_clientnode__.isObject; } });
|
|
89
|
+
|
|
90
|
+
/***/ }),
|
|
91
|
+
/* 9 */
|
|
92
|
+
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
93
|
+
|
|
94
|
+
var x = function(y) {
|
|
95
|
+
var x = {}; __webpack_require__.d(x, y); return x
|
|
96
|
+
}
|
|
97
|
+
var y = function(x) { return function() { return x; }; }
|
|
98
|
+
module.exports = x({ ["useMemorizedValue"]: function() { return __WEBPACK_EXTERNAL_MODULE_react_generic_tools_67824958__.useMemorizedValue; } });
|
|
99
|
+
|
|
100
|
+
/***/ })
|
|
101
|
+
/******/ ]);
|
|
102
|
+
/************************************************************************/
|
|
103
|
+
/******/ // The module cache
|
|
104
|
+
/******/ var __webpack_module_cache__ = {};
|
|
105
|
+
/******/
|
|
106
|
+
/******/ // The require function
|
|
107
|
+
/******/ function __webpack_require__(moduleId) {
|
|
108
|
+
/******/ // Check if module is in cache
|
|
109
|
+
/******/ var cachedModule = __webpack_module_cache__[moduleId];
|
|
110
|
+
/******/ if (cachedModule !== undefined) {
|
|
111
|
+
/******/ return cachedModule.exports;
|
|
112
|
+
/******/ }
|
|
113
|
+
/******/ // Create a new module (and put it into the cache)
|
|
114
|
+
/******/ var module = __webpack_module_cache__[moduleId] = {
|
|
115
|
+
/******/ // no module.id needed
|
|
116
|
+
/******/ // no module.loaded needed
|
|
117
|
+
/******/ exports: {}
|
|
118
|
+
/******/ };
|
|
119
|
+
/******/
|
|
120
|
+
/******/ // Execute the module function
|
|
121
|
+
/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
|
|
122
|
+
/******/
|
|
123
|
+
/******/ // Return the exports of the module
|
|
124
|
+
/******/ return module.exports;
|
|
125
|
+
/******/ }
|
|
126
|
+
/******/
|
|
127
|
+
/************************************************************************/
|
|
128
|
+
/******/ /* webpack/runtime/define property getters */
|
|
129
|
+
/******/ // define getter/value functions for harmony exports
|
|
130
|
+
/******/ __webpack_require__.d = function(exports, definition) {
|
|
131
|
+
/******/ for(var key in definition) {
|
|
132
|
+
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
|
133
|
+
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
|
134
|
+
/******/ }
|
|
135
|
+
/******/ }
|
|
136
|
+
/******/ };
|
|
137
|
+
/******/
|
|
138
|
+
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
|
139
|
+
/******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); };
|
|
140
|
+
/******/
|
|
141
|
+
/************************************************************************/
|
|
142
|
+
|
|
143
|
+
// EXTERNAL MODULE: external "core-js/modules/es.array.includes.js"
|
|
144
|
+
var es_array_includes_js_ = __webpack_require__(4);
|
|
145
|
+
// EXTERNAL MODULE: external "clientnode"
|
|
146
|
+
var external_clientnode_ = __webpack_require__(8);
|
|
147
|
+
// EXTERNAL MODULE: external "react"
|
|
148
|
+
var external_react_ = __webpack_require__(1);
|
|
149
|
+
// EXTERNAL MODULE: external "react-generic-tools"
|
|
150
|
+
var external_react_generic_tools_ = __webpack_require__(9);
|
|
151
|
+
;// external "react-redux"
|
|
152
|
+
|
|
153
|
+
;// external "@reduxjs/toolkit"
|
|
154
|
+
|
|
155
|
+
// EXTERNAL MODULE: ./src/type.ts
|
|
156
|
+
var type = /*#__PURE__*/__webpack_require__(0);
|
|
157
|
+
;// ./src/redux.ts
|
|
158
|
+
// #!/usr/bin/env babel-node
|
|
159
|
+
// -*- coding: utf-8 -*-
|
|
160
|
+
/** @module redux *//* !
|
|
161
|
+
region header
|
|
162
|
+
[Project page](https://tsickert.com/react-generic-user)
|
|
163
|
+
|
|
164
|
+
Copyright Torben Sickert (info["~at~"]tsickert.com) 16.12.2012
|
|
165
|
+
endregion
|
|
166
|
+
*/// region imports
|
|
167
|
+
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(o),!0).forEach(function(t){_defineProperty(r,t,o[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):ownKeys(Object(o)).forEach(function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))})}return r}function _defineProperty(r,t,o){return(t=_toPropertyKey(t))in r?Object.defineProperty(r,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):r[t]=o,r}function _toPropertyKey(r){var o=_toPrimitive(r,"string");return"symbol"==_typeof(o)?o:o+""}function _toPrimitive(t,e){if("object"!=_typeof(t)||!t)return t;var r;if("undefined"!=typeof Symbol&&void 0!==(r=t[Symbol.toPrimitive])){var i=r.call(t,e||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)};// endregion
|
|
168
|
+
var useNoLocation=function useNoLocation(){return null};/**
|
|
169
|
+
* Creates a redux slice, thunks and hooks to manage a user session.
|
|
170
|
+
* @param handler - Implements authentication, login and logout.
|
|
171
|
+
* @param options - Additional options.
|
|
172
|
+
* @param options.useLocation - Hook to determine current location. Needed to
|
|
173
|
+
* remember initially requested locations.
|
|
174
|
+
* @returns Session slice, thunks and hooks.
|
|
175
|
+
*/var sessionFactory=function sessionFactory(handler,_temp){var _ref=_temp===void 0?{}:_temp,_ref$useLocation=_ref.useLocation,useLocation=_ref$useLocation===void 0?useNoLocation:_ref$useLocation;/*
|
|
176
|
+
NOTE: We wrap handler calls via "(...parameters) => handler..." to
|
|
177
|
+
allow setting handler after this factory function has been called.
|
|
178
|
+
*/var authenticateThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/authenticate"),function(){return handler.authenticate.apply(handler,arguments)});var loginThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/login"),function(){return handler.login.apply(handler,arguments)});var logoutThunk=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createAsyncThunk__("".concat(type/* ACTION_NAME_PREFIX */.u,"/logout"),function(){return handler.logout.apply(handler,arguments)});var useHasRole=function useHasRole(role){var session=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__(function(state){return state.user});var userContext=session===null||session===void 0?void 0:session.userContext;var roles=userContext===null||userContext===void 0?void 0:userContext.roles;return Boolean(roles&&[].concat(role).every(function(role){return roles.includes(role)}))};var slice=__WEBPACK_EXTERNAL_MODULE__reduxjs_toolkit_b9e87ac4_createSlice__({name:type/* ACTION_NAME_PREFIX */.u,initialState:{authenticated:null,authenticating:false,deauthenticating:false,initialRequestedLocation:undefined,userContext:undefined},selectors:{selectUser:function selectUser(slice){return slice}},reducers:{deauthenticate:function deauthenticate(state){return _objectSpread(_objectSpread({},state),{},{authenticated:false,userContext:undefined})},setInitialRequestedLocation:function setInitialRequestedLocation(state,_ref2){var payload=_ref2.payload;return _objectSpread(_objectSpread({},state),{},{initialRequestedLocation:payload})}},extraReducers:function extraReducers(builder){builder.addCase(logoutThunk.fulfilled,function(state,action){state.deauthenticating=false;if(action.payload){state.authenticated=false;state.userContext=undefined}}).addCase(logoutThunk.pending,function(state){state.deauthenticating=true}).addCase(logoutThunk.rejected,function(state){state.deauthenticating=false}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/fulfilled"),"".concat(loginThunk.typePrefix,"/fulfilled")].includes(action.type)},function(state,action){state.authenticating=false;if(typeof action.payload==="boolean")state.authenticated=action.payload;else if((0,external_clientnode_.isObject)(action.payload)){state.authenticated=true;state.userContext=action.payload}else state.authenticated=false}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/pending"),"".concat(loginThunk.typePrefix,"/pending")].includes(action.type)},function(state){state.authenticating=true}).addMatcher(function(action){return["".concat(authenticateThunk.typePrefix,"/rejected"),"".concat(loginThunk.typePrefix,"/rejected")].includes(action.type)},function(state){state.authenticating=false})}});return{authenticateThunk:authenticateThunk,loginThunk:loginThunk,logoutThunk:logoutThunk,slice:slice,useHasRole:useHasRole,useIsAdmin:function useIsAdmin(){return useHasRole("_admin")},useUser:function useUser(data,isLoginLocation){if(data===void 0){data={}}if(isLoginLocation===void 0){isLoginLocation=function isLoginLocation(location){return location.pathname.endsWith("/login")}}var dispatch=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useDispatch__();var location=useLocation();var session=__WEBPACK_EXTERNAL_MODULE_react_redux_1ffa815c_useSelector__(slice.selectors.selectUser);(0,external_react_.useEffect)(function(){if(location&&!isLoginLocation(location)&&(!session||session.initialRequestedLocation===undefined||session.authenticated&&session.initialRequestedLocation!==null))dispatch(slice.actions.setInitialRequestedLocation(session!==null&&session!==void 0&&session.authenticated?null:location))},[dispatch,location,session===null||session===void 0?void 0:session.authenticated,session===null||session===void 0?void 0:session.initialRequestedLocation]);if(session===null)throw new Error("No user redux state found. Did you register a "+"corresponding redux slice?");var authenticate=(0,external_react_generic_tools_.useMemorizedValue)(function(){dispatch(authenticateThunk(data))},dispatch);var login=(0,external_react_generic_tools_.useMemorizedValue)(function(_ref3){var login=_ref3.login,password=_ref3.password;dispatch(loginThunk(_objectSpread(_objectSpread({},data),{},{login:login,password:password})))},dispatch);var logout=(0,external_react_generic_tools_.useMemorizedValue)(function(){dispatch(logoutThunk(data))},dispatch);return (0,external_react_generic_tools_.useMemorizedValue)({authenticate:authenticate,login:login,logout:logout,session:session},authenticateThunk,dispatch,session)}}};/* harmony default export */ var redux = (sessionFactory);
|
|
179
|
+
export { redux as default, sessionFactory };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settles pending promises and renders resulting updates.
|
|
3
|
+
* @returns Promise resolving when settled.
|
|
4
|
+
*/
|
|
5
|
+
export declare const settle: () => Promise<void>;
|
|
6
|
+
/**
|
|
7
|
+
* Calls given callback and settles resulting tasks afterward.
|
|
8
|
+
* @param callback - Callback to call.
|
|
9
|
+
* @returns Callback's result.
|
|
10
|
+
*/
|
|
11
|
+
export declare const trigger: <Type>(callback: () => Type) => Promise<Type>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|