@times-components/user-state 0.3.31 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,17 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [0.4.0](https://github.com/newsuk/times-components/compare/@times-components/user-state@0.3.31...@times-components/user-state@0.4.0) (2022-08-18)
7
+
8
+
9
+ ### Features
10
+
11
+ * **TDP-1712:** remove react-native foreverrrrr ([#3064](https://github.com/newsuk/times-components/issues/3064)) ([2a20cb5](https://github.com/newsuk/times-components/commit/2a20cb5abc10a4e7ca2d62487967f8fcf4eccb62)), closes [#3037](https://github.com/newsuk/times-components/issues/3037) [#3045](https://github.com/newsuk/times-components/issues/3045) [#3050](https://github.com/newsuk/times-components/issues/3050) [#3056](https://github.com/newsuk/times-components/issues/3056) [#3057](https://github.com/newsuk/times-components/issues/3057) [#3066](https://github.com/newsuk/times-components/issues/3066) [#3065](https://github.com/newsuk/times-components/issues/3065) [#3037](https://github.com/newsuk/times-components/issues/3037) [#3045](https://github.com/newsuk/times-components/issues/3045) [#3045](https://github.com/newsuk/times-components/issues/3045) [#3056](https://github.com/newsuk/times-components/issues/3056) [#3066](https://github.com/newsuk/times-components/issues/3066) [#3069](https://github.com/newsuk/times-components/issues/3069) [#3068](https://github.com/newsuk/times-components/issues/3068) [#3070](https://github.com/newsuk/times-components/issues/3070) [#3072](https://github.com/newsuk/times-components/issues/3072) [#3073](https://github.com/newsuk/times-components/issues/3073) [#3071](https://github.com/newsuk/times-components/issues/3071) [#3074](https://github.com/newsuk/times-components/issues/3074) [#3076](https://github.com/newsuk/times-components/issues/3076) [#3079](https://github.com/newsuk/times-components/issues/3079) [#3078](https://github.com/newsuk/times-components/issues/3078) [#3083](https://github.com/newsuk/times-components/issues/3083) [#3087](https://github.com/newsuk/times-components/issues/3087) [#3091](https://github.com/newsuk/times-components/issues/3091) [#3096](https://github.com/newsuk/times-components/issues/3096) [#3102](https://github.com/newsuk/times-components/issues/3102) [#3105](https://github.com/newsuk/times-components/issues/3105) [#3108](https://github.com/newsuk/times-components/issues/3108) [#3111](https://github.com/newsuk/times-components/issues/3111) [#3112](https://github.com/newsuk/times-components/issues/3112) [#3113](https://github.com/newsuk/times-components/issues/3113) [#3114](https://github.com/newsuk/times-components/issues/3114) [#3120](https://github.com/newsuk/times-components/issues/3120) [#3119](https://github.com/newsuk/times-components/issues/3119) [#3112](https://github.com/newsuk/times-components/issues/3112) [#3126](https://github.com/newsuk/times-components/issues/3126) [#3112](https://github.com/newsuk/times-components/issues/3112) [#3126](https://github.com/newsuk/times-components/issues/3126) [#3127](https://github.com/newsuk/times-components/issues/3127) [#3116](https://github.com/newsuk/times-components/issues/3116) [#3128](https://github.com/newsuk/times-components/issues/3128) [#3132](https://github.com/newsuk/times-components/issues/3132) [#3133](https://github.com/newsuk/times-components/issues/3133)
12
+
13
+
14
+
15
+
16
+
6
17
  ## [0.3.31](https://github.com/newsuk/times-components/compare/@times-components/user-state@0.3.30...@times-components/user-state@0.3.31) (2022-08-05)
7
18
 
8
19
  **Note:** Version bump only for package @times-components/user-state
package/babel.config.js CHANGED
@@ -1,10 +1,7 @@
1
1
  module.exports = api => {
2
2
  api.cache(true);
3
3
  return {
4
- plugins: [
5
- "babel-plugin-styled-components",
6
- "@babel/plugin-transform-react-display-name"
7
- ],
8
- presets: ["module:metro-react-native-babel-preset"]
4
+ plugins: ["babel-plugin-styled-components"],
5
+ presets: ["@babel/preset-env", "@babel/preset-react"]
9
6
  };
10
7
  };
@@ -1 +1,54 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=_interopRequireDefault(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _context=_interopRequireDefault(require("@times-components/context"));var _utils=require("@times-components/utils");var _jsxFileName="/home/circleci/project/packages/user-state/src/client-user-state-consumer.js";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});}keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}function ClientUserStateConsumer(_ref){var children=_ref.children,_ref$serverRender=_ref.serverRender,serverRender=_ref$serverRender===void 0?true:_ref$serverRender;return _react.default.createElement(_context.default.Consumer,{__source:{fileName:_jsxFileName,lineNumber:26,columnNumber:5}},function(_ref2){var user=_ref2.user;return _react.default.createElement(_utils.ServerClientRender,{client:function client(){var _window=window,_window$nuk=_window.nuk,nuk=_window$nuk===void 0?{}:_window$nuk;var clientUser=nuk.user||{};return children({user:_objectSpread(_objectSpread({},user),clientUser)});},server:serverRender?function(){return children({user:user});}:null,__source:{fileName:_jsxFileName,lineNumber:28,columnNumber:9}});});}ClientUserStateConsumer.propTypes={children:_propTypes.default.func.isRequired,serverRender:_propTypes.default.bool};var _default=ClientUserStateConsumer;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _context = _interopRequireDefault(require("@times-components/context"));
13
+
14
+ var _utils = require("@times-components/utils");
15
+
16
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
+
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+
22
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
+
24
+ function ClientUserStateConsumer(_ref) {
25
+ var children = _ref.children,
26
+ _ref$serverRender = _ref.serverRender,
27
+ serverRender = _ref$serverRender === void 0 ? true : _ref$serverRender;
28
+ return /*#__PURE__*/_react["default"].createElement(_context["default"].Consumer, null, function (_ref2) {
29
+ var user = _ref2.user;
30
+ return /*#__PURE__*/_react["default"].createElement(_utils.ServerClientRender, {
31
+ client: function client() {
32
+ var _window = window,
33
+ _window$nuk = _window.nuk,
34
+ nuk = _window$nuk === void 0 ? {} : _window$nuk;
35
+ var clientUser = nuk.user || {};
36
+ return children({
37
+ user: _objectSpread(_objectSpread({}, user), clientUser)
38
+ });
39
+ },
40
+ server: serverRender ? function () {
41
+ return children({
42
+ user: user
43
+ });
44
+ } : null
45
+ });
46
+ });
47
+ }
48
+
49
+ ClientUserStateConsumer.propTypes = {
50
+ children: _propTypes["default"].func.isRequired,
51
+ serverRender: _propTypes["default"].bool
52
+ };
53
+ var _default = ClientUserStateConsumer;
54
+ exports["default"] = _default;
package/dist/matchers.js CHANGED
@@ -1 +1,60 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.isLoggedInOrShared=exports.shouldShowFullArticle=exports.isNonMeteredExpiredUser=exports.isSubscriber=exports.isMetered=exports.isShared=exports.isMeteredExpired=exports.hasAccess=exports.isLoggedIn=void 0;var isLoggedIn=function isLoggedIn(userState){return userState.isLoggedIn;};exports.isLoggedIn=isLoggedIn;var hasAccess=function hasAccess(userState){return userState.hasAccess;};exports.hasAccess=hasAccess;var isMeteredExpired=function isMeteredExpired(userState){return isLoggedIn(userState)&&userState.isMeteredExpired;};exports.isMeteredExpired=isMeteredExpired;var isShared=function isShared(userState){return userState.isShared;};exports.isShared=isShared;var isMetered=function isMetered(userState){return isLoggedIn(userState)&&userState.isMetered;};exports.isMetered=isMetered;var isSubscriber=function isSubscriber(userState){return isLoggedIn(userState)&&!userState.isMetered&&!userState.isMeteredExpired;};exports.isSubscriber=isSubscriber;var isNonMeteredExpiredUser=function isNonMeteredExpiredUser(user){return isLoggedIn(user)&&!isMeteredExpired(user);};exports.isNonMeteredExpiredUser=isNonMeteredExpiredUser;var shouldShowFullArticle=function shouldShowFullArticle(user){return isShared(user)||isNonMeteredExpiredUser(user)||hasAccess(user);};exports.shouldShowFullArticle=shouldShowFullArticle;var isLoggedInOrShared=function isLoggedInOrShared(user){return isShared(user)||isLoggedIn(user);};exports.isLoggedInOrShared=isLoggedInOrShared;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.isLoggedInOrShared = exports.shouldShowFullArticle = exports.isNonMeteredExpiredUser = exports.isSubscriber = exports.isMetered = exports.isShared = exports.isMeteredExpired = exports.hasAccess = exports.isLoggedIn = void 0;
7
+
8
+ var isLoggedIn = function isLoggedIn(userState) {
9
+ return userState.isLoggedIn;
10
+ };
11
+
12
+ exports.isLoggedIn = isLoggedIn;
13
+
14
+ var hasAccess = function hasAccess(userState) {
15
+ return userState.hasAccess;
16
+ };
17
+
18
+ exports.hasAccess = hasAccess;
19
+
20
+ var isMeteredExpired = function isMeteredExpired(userState) {
21
+ return isLoggedIn(userState) && userState.isMeteredExpired;
22
+ };
23
+
24
+ exports.isMeteredExpired = isMeteredExpired;
25
+
26
+ var isShared = function isShared(userState) {
27
+ return userState.isShared;
28
+ };
29
+
30
+ exports.isShared = isShared;
31
+
32
+ var isMetered = function isMetered(userState) {
33
+ return isLoggedIn(userState) && userState.isMetered;
34
+ };
35
+
36
+ exports.isMetered = isMetered;
37
+
38
+ var isSubscriber = function isSubscriber(userState) {
39
+ return isLoggedIn(userState) && !userState.isMetered && !userState.isMeteredExpired;
40
+ };
41
+
42
+ exports.isSubscriber = isSubscriber;
43
+
44
+ var isNonMeteredExpiredUser = function isNonMeteredExpiredUser(user) {
45
+ return isLoggedIn(user) && !isMeteredExpired(user);
46
+ };
47
+
48
+ exports.isNonMeteredExpiredUser = isNonMeteredExpiredUser;
49
+
50
+ var shouldShowFullArticle = function shouldShowFullArticle(user) {
51
+ return isShared(user) || isNonMeteredExpiredUser(user) || hasAccess(user);
52
+ };
53
+
54
+ exports.shouldShowFullArticle = shouldShowFullArticle;
55
+
56
+ var isLoggedInOrShared = function isLoggedInOrShared(user) {
57
+ return isShared(user) || isLoggedIn(user);
58
+ };
59
+
60
+ exports.isLoggedInOrShared = isLoggedInOrShared;
@@ -1 +1,46 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;function mockUserState(){jest.mock("@times-components/user-state",function(){var RealUserState=require.requireActual("@times-components/user-state").default;function MockUserState(_ref){var state=_ref.state,_ref$children=_ref.children,children=_ref$children===void 0?null:_ref$children,_ref$fallback=_ref.fallback,fallback=_ref$fallback===void 0?null:_ref$fallback;return MockUserState.mockStates.find(function(s){return s===state;})?children:fallback;}Object.keys(RealUserState).reduce(function(acc,key){acc[key]=RealUserState[key];return acc;},MockUserState);MockUserState.mockReset=function(){MockUserState.mockStates=[RealUserState.fullArticle,RealUserState.loggedIn,RealUserState.loggedInOrShared,RealUserState.subscriber];};MockUserState.mockReset();return MockUserState;});var UserState=require("@times-components/user-state");beforeEach(function(){UserState.mockReset();});return UserState;}var _default=mockUserState;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ /* eslint-disable no-undef,global-require,import/no-extraneous-dependencies */
9
+ function mockUserState() {
10
+ jest.mock("@times-components/user-state", function () {
11
+ var RealUserState = require.requireActual("@times-components/user-state")["default"];
12
+
13
+ function MockUserState(_ref) {
14
+ var state = _ref.state,
15
+ _ref$children = _ref.children,
16
+ children = _ref$children === void 0 ? null : _ref$children,
17
+ _ref$fallback = _ref.fallback,
18
+ fallback = _ref$fallback === void 0 ? null : _ref$fallback;
19
+ return MockUserState.mockStates.find(function (s) {
20
+ return s === state;
21
+ }) ? children : fallback;
22
+ }
23
+
24
+ Object.keys(RealUserState).reduce(function (acc, key) {
25
+ acc[key] = RealUserState[key];
26
+ return acc;
27
+ }, MockUserState);
28
+
29
+ MockUserState.mockReset = function () {
30
+ MockUserState.mockStates = [RealUserState.fullArticle, RealUserState.loggedIn, RealUserState.loggedInOrShared, RealUserState.subscriber];
31
+ };
32
+
33
+ MockUserState.mockReset();
34
+ return MockUserState;
35
+ });
36
+
37
+ var UserState = require("@times-components/user-state");
38
+
39
+ beforeEach(function () {
40
+ UserState.mockReset();
41
+ });
42
+ return UserState;
43
+ }
44
+
45
+ var _default = mockUserState;
46
+ exports["default"] = _default;
package/dist/states.js CHANGED
@@ -1 +1,22 @@
1
- Object.defineProperty(exports,"__esModule",{value:true});exports.default=exports.GUEST=exports.RA_EXPIRED=exports.RA=exports.SUBSCRIBER=void 0;var SUBSCRIBER="Subscriber";exports.SUBSCRIBER=SUBSCRIBER;var RA="Registered Access";exports.RA=RA;var RA_EXPIRED="Registered Access (Expired)";exports.RA_EXPIRED=RA_EXPIRED;var GUEST="Guest";exports.GUEST=GUEST;var USER_STATES={SUBSCRIBER:SUBSCRIBER,RA:RA,RA_EXPIRED:RA_EXPIRED,GUEST:GUEST};var _default=USER_STATES;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = exports.GUEST = exports.RA_EXPIRED = exports.RA = exports.SUBSCRIBER = void 0;
7
+ var SUBSCRIBER = "Subscriber";
8
+ exports.SUBSCRIBER = SUBSCRIBER;
9
+ var RA = "Registered Access";
10
+ exports.RA = RA;
11
+ var RA_EXPIRED = "Registered Access (Expired)";
12
+ exports.RA_EXPIRED = RA_EXPIRED;
13
+ var GUEST = "Guest";
14
+ exports.GUEST = GUEST;
15
+ var USER_STATES = {
16
+ SUBSCRIBER: SUBSCRIBER,
17
+ RA: RA,
18
+ RA_EXPIRED: RA_EXPIRED,
19
+ GUEST: GUEST
20
+ };
21
+ var _default = USER_STATES;
22
+ exports["default"] = _default;
@@ -1 +1,48 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});exports.default=void 0;var _defineProperty2=_interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));var _react=require("@storybook/addon-knobs/react");var _states=require("./states");var _activeStatesPerUserS;function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);if(enumerableOnly){symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable;});}keys.push.apply(keys,symbols);}return keys;}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};if(i%2){ownKeys(Object(source),true).forEach(function(key){(0,_defineProperty2.default)(target,key,source[key]);});}else if(Object.getOwnPropertyDescriptors){Object.defineProperties(target,Object.getOwnPropertyDescriptors(source));}else{ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}}return target;}var activeStatesPerUserState=(_activeStatesPerUserS={},(0,_defineProperty2.default)(_activeStatesPerUserS,_states.SUBSCRIBER,["isLoggedIn"]),(0,_defineProperty2.default)(_activeStatesPerUserS,_states.RA,["isLoggedIn","isMetered"]),(0,_defineProperty2.default)(_activeStatesPerUserS,_states.RA_EXPIRED,["isLoggedIn","isMetered","isMeteredExpired"]),(0,_defineProperty2.default)(_activeStatesPerUserS,_states.GUEST,[]),_activeStatesPerUserS);var userStatesOptions=[_states.SUBSCRIBER,_states.RA,_states.RA_EXPIRED,_states.GUEST];function addUserStateKnobs(){var defaultState=arguments.length>0&&arguments[0]!==undefined?arguments[0]:_states.SUBSCRIBER;window.nuk=window.nuk||{};Object.defineProperty(window.nuk,"user",{enumerable:true,configurable:true,get:function get(){var groupId="User State";var userStateName=(0,_react.select)("Current User State",userStatesOptions,defaultState,groupId);var isShared=(0,_react.boolean)("Is Shared",false,groupId);var activeStateNames=activeStatesPerUserState[userStateName];var activeStates=activeStateNames.reduce(function(acc,name){return _objectSpread(_objectSpread({},acc),{},(0,_defineProperty2.default)({},name,true));},{});return _objectSpread({isLoggedIn:false,isMetered:false,isMeteredExpired:false,isShared:isShared},activeStates);}});}var _default=addUserStateKnobs;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = void 0;
7
+
8
+ var _react = require("@storybook/addon-knobs/react");
9
+
10
+ var _states = require("./states");
11
+
12
+ var _activeStatesPerUserS;
13
+
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
15
+
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
17
+
18
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
19
+
20
+ var activeStatesPerUserState = (_activeStatesPerUserS = {}, _defineProperty(_activeStatesPerUserS, _states.SUBSCRIBER, ["isLoggedIn"]), _defineProperty(_activeStatesPerUserS, _states.RA, ["isLoggedIn", "isMetered"]), _defineProperty(_activeStatesPerUserS, _states.RA_EXPIRED, ["isLoggedIn", "isMetered", "isMeteredExpired"]), _defineProperty(_activeStatesPerUserS, _states.GUEST, []), _activeStatesPerUserS);
21
+ var userStatesOptions = [_states.SUBSCRIBER, _states.RA, _states.RA_EXPIRED, _states.GUEST];
22
+
23
+ function addUserStateKnobs() {
24
+ var defaultState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _states.SUBSCRIBER;
25
+ window.nuk = window.nuk || {};
26
+ Object.defineProperty(window.nuk, "user", {
27
+ enumerable: true,
28
+ configurable: true,
29
+ get: function get() {
30
+ var groupId = "User State";
31
+ var userStateName = (0, _react.select)("Current User State", userStatesOptions, defaultState, groupId);
32
+ var isShared = (0, _react["boolean"])("Is Shared", false, groupId);
33
+ var activeStateNames = activeStatesPerUserState[userStateName];
34
+ var activeStates = activeStateNames.reduce(function (acc, name) {
35
+ return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, name, true));
36
+ }, {});
37
+ return _objectSpread({
38
+ isLoggedIn: false,
39
+ isMetered: false,
40
+ isMeteredExpired: false,
41
+ isShared: isShared
42
+ }, activeStates);
43
+ }
44
+ });
45
+ }
46
+
47
+ var _default = addUserStateKnobs;
48
+ exports["default"] = _default;
@@ -1 +1,87 @@
1
- var _interopRequireDefault=require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"mockUserState",{enumerable:true,get:function get(){return _mockUserState.default;}});Object.defineProperty(exports,"USER_STATES",{enumerable:true,get:function get(){return _states.default;}});Object.defineProperty(exports,"addUserStateKnobs",{enumerable:true,get:function get(){return _storybookHelper.default;}});exports.default=void 0;var _react=_interopRequireDefault(require("react"));var _propTypes=_interopRequireDefault(require("prop-types"));var _clientUserStateConsumer=_interopRequireDefault(require("./client-user-state-consumer"));var _matchers=require("./matchers");var _mockUserState=_interopRequireDefault(require("./mock-user-state"));var _states=_interopRequireDefault(require("./states"));var _storybookHelper=_interopRequireDefault(require("./storybook-helper"));var _jsxFileName="/home/circleci/project/packages/user-state/src/user-state.js";function UserState(_ref){var shouldRenderInCurrentUserState=_ref.state,children=_ref.children,fallback=_ref.fallback,serverRender=_ref.serverRender;return _react.default.createElement(_clientUserStateConsumer.default,{serverRender:serverRender,__source:{fileName:_jsxFileName,lineNumber:34,columnNumber:5}},function(_ref2){var user=_ref2.user;return shouldRenderInCurrentUserState(user)?children:fallback;});}UserState.loggedIn=_matchers.isLoggedIn;UserState.meteredExpired=_matchers.isMeteredExpired;UserState.metered=_matchers.isMetered;UserState.shared=_matchers.isShared;UserState.nonMeteredExpiredUser=_matchers.isNonMeteredExpiredUser;UserState.fullArticle=_matchers.shouldShowFullArticle;UserState.subscriber=_matchers.isSubscriber;UserState.loggedInOrShared=_matchers.isLoggedInOrShared;UserState.hasAccess=_matchers.hasAccess;UserState.propTypes={state:_propTypes.default.func.isRequired,children:_propTypes.default.node,fallback:_propTypes.default.node,serverRender:_propTypes.default.bool};UserState.defaultProps={children:null,serverRender:true,fallback:null};var _default=UserState;exports.default=_default;
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "mockUserState", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _mockUserState["default"];
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "USER_STATES", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _states["default"];
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "addUserStateKnobs", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _storybookHelper["default"];
22
+ }
23
+ });
24
+ exports["default"] = void 0;
25
+
26
+ var _react = _interopRequireDefault(require("react"));
27
+
28
+ var _propTypes = _interopRequireDefault(require("prop-types"));
29
+
30
+ var _clientUserStateConsumer = _interopRequireDefault(require("./client-user-state-consumer"));
31
+
32
+ var _matchers = require("./matchers");
33
+
34
+ var _mockUserState = _interopRequireDefault(require("./mock-user-state"));
35
+
36
+ var _states = _interopRequireDefault(require("./states"));
37
+
38
+ var _storybookHelper = _interopRequireDefault(require("./storybook-helper"));
39
+
40
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
41
+
42
+ /**
43
+ * This is a component to assist you in rendering UI that depends on certain
44
+ * user states.
45
+ *
46
+ * Currently, it uses `ClientUserStateConsumer` to render the UI in a
47
+ * safe manner, as we have to deal with state that differs on the client and
48
+ * on the server.
49
+ *
50
+ * However, the API is written in such a way that this can easily be removed
51
+ * once we can rely on the state being the same.
52
+ */
53
+ function UserState(_ref) {
54
+ var shouldRenderInCurrentUserState = _ref.state,
55
+ children = _ref.children,
56
+ fallback = _ref.fallback,
57
+ serverRender = _ref.serverRender;
58
+ return /*#__PURE__*/_react["default"].createElement(_clientUserStateConsumer["default"], {
59
+ serverRender: serverRender
60
+ }, function (_ref2) {
61
+ var user = _ref2.user;
62
+ return shouldRenderInCurrentUserState(user) ? children : fallback;
63
+ });
64
+ }
65
+
66
+ UserState.loggedIn = _matchers.isLoggedIn;
67
+ UserState.meteredExpired = _matchers.isMeteredExpired;
68
+ UserState.metered = _matchers.isMetered;
69
+ UserState.shared = _matchers.isShared;
70
+ UserState.nonMeteredExpiredUser = _matchers.isNonMeteredExpiredUser;
71
+ UserState.fullArticle = _matchers.shouldShowFullArticle;
72
+ UserState.subscriber = _matchers.isSubscriber;
73
+ UserState.loggedInOrShared = _matchers.isLoggedInOrShared;
74
+ UserState.hasAccess = _matchers.hasAccess;
75
+ UserState.propTypes = {
76
+ state: _propTypes["default"].func.isRequired,
77
+ children: _propTypes["default"].node,
78
+ fallback: _propTypes["default"].node,
79
+ serverRender: _propTypes["default"].bool
80
+ };
81
+ UserState.defaultProps = {
82
+ children: null,
83
+ serverRender: true,
84
+ fallback: null
85
+ };
86
+ var _default = UserState;
87
+ exports["default"] = _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@times-components/user-state",
3
- "version": "0.3.31",
3
+ "version": "0.4.0",
4
4
  "description": "Selectively render react components based on current user state",
5
5
  "main": "dist/user-state",
6
6
  "dev": "src/user-state",
@@ -21,10 +21,7 @@
21
21
  "url": "git+https://github.com/newsuk/times-components.git"
22
22
  },
23
23
  "keywords": [
24
- "react-native-web",
25
24
  "react",
26
- "native",
27
- "web",
28
25
  "user-state",
29
26
  "component"
30
27
  ],
@@ -35,16 +32,16 @@
35
32
  "homepage": "https://github.com/newsuk/times-components#readme",
36
33
  "dependencies": {
37
34
  "@storybook/addon-knobs": "5.3.18",
38
- "@times-components/context": "1.9.4",
39
- "@times-components/utils": "6.14.4",
35
+ "@times-components/context": "1.10.0",
36
+ "@times-components/utils": "6.15.0",
40
37
  "prop-types": "15.7.2"
41
38
  },
42
39
  "devDependencies": {
43
40
  "@babel/core": "7.4.4",
44
41
  "@times-components/eslint-config-thetimes": "0.8.18",
45
- "@times-components/jest-configurator": "2.8.1",
46
- "@times-components/jest-serializer": "3.3.1",
47
- "@times-components/webpack-configurator": "2.0.30",
42
+ "@times-components/jest-configurator-web": "0.8.0",
43
+ "@times-components/jest-serializer": "3.4.0",
44
+ "@times-components/webpack-configurator": "2.1.0",
48
45
  "babel-jest": "24.8.0",
49
46
  "babel-loader": "8.0.5",
50
47
  "eslint": "5.9.0",
@@ -52,10 +49,8 @@
52
49
  "prettier": "1.14.3",
53
50
  "react": "16.9.0",
54
51
  "react-dom": "16.9.0",
55
- "react-native": "0.61.5",
56
52
  "react-test-renderer": "16.9.0",
57
- "webpack": "4.30.0",
58
- "webpack-cli": "3.3.1"
53
+ "webpack": "4.30.0"
59
54
  },
60
55
  "resolutions": {
61
56
  "react": "16.9.0",
@@ -63,12 +58,10 @@
63
58
  },
64
59
  "peerDependencies": {
65
60
  "react": ">=16.9",
66
- "react-dom": ">=16.9",
67
- "react-native": ">=0.59",
68
- "react-native-web": "0.11.4"
61
+ "react-dom": ">=16.9"
69
62
  },
70
63
  "publishConfig": {
71
64
  "access": "public"
72
65
  },
73
- "gitHead": "fe60c81e878283bf0ca451dd4806232f6cd104ee"
66
+ "gitHead": "fe2f12b7448a88662c53f840772282cd97756c5c"
74
67
  }
package/rnw.js CHANGED
@@ -1 +1 @@
1
- module.exports=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=5)}([function(e,r){e.exports=require("@babel/runtime/helpers/interopRequireDefault")},function(e,r){e.exports=require("react")},function(e,r){e.exports=require("prop-types")},function(e,r){e.exports=require("@babel/runtime/helpers/defineProperty")},function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.default=r.GUEST=r.RA_EXPIRED=r.RA=r.SUBSCRIBER=void 0;r.SUBSCRIBER="Subscriber";var t="Registered Access";r.RA=t;r.RA_EXPIRED="Registered Access (Expired)";r.GUEST="Guest";var n={SUBSCRIBER:"Subscriber",RA:t,RA_EXPIRED:"Registered Access (Expired)",GUEST:"Guest"};r.default=n},function(e,r,t){var n=t(0);Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"mockUserState",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(r,"USER_STATES",{enumerable:!0,get:function(){return c.default}}),Object.defineProperty(r,"addUserStateKnobs",{enumerable:!0,get:function(){return d.default}}),r.default=void 0;var o=n(t(1)),u=(n(t(2)),n(t(6))),i=t(9),s=n(t(10)),c=n(t(4)),d=n(t(13));function a(e){var r=e.state,t=e.children,n=e.fallback,i=e.serverRender;return o.default.createElement(u.default,{serverRender:i},(function(e){var o=e.user;return r(o)?t:n}))}a.loggedIn=i.isLoggedIn,a.meteredExpired=i.isMeteredExpired,a.metered=i.isMetered,a.shared=i.isShared,a.nonMeteredExpiredUser=i.isNonMeteredExpiredUser,a.fullArticle=i.shouldShowFullArticle,a.subscriber=i.isSubscriber,a.loggedInOrShared=i.isLoggedInOrShared,a.hasAccess=i.hasAccess,a.defaultProps={children:null,serverRender:!0,fallback:null};var l=a;r.default=l},function(e,r,t){var n=t(0);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var o=n(t(3)),u=n(t(1)),i=(n(t(2)),n(t(7))),s=t(8);function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function d(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?c(Object(t),!0).forEach((function(r){(0,o.default)(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var a=function(e){var r=e.children,t=e.serverRender,n=void 0===t||t;return u.default.createElement(i.default.Consumer,null,(function(e){var t=e.user;return u.default.createElement(s.ServerClientRender,{client:function(){var e=window.nuk,n=(void 0===e?{}:e).user||{};return r({user:d(d({},t),n)})},server:n?function(){return r({user:t})}:null})}))};r.default=a},function(e,r){e.exports=require("@times-components/context/rnw")},function(e,r){e.exports=require("@times-components/utils/rnw")},function(e,r){Object.defineProperty(r,"__esModule",{value:!0}),r.isLoggedInOrShared=r.shouldShowFullArticle=r.isNonMeteredExpiredUser=r.isSubscriber=r.isMetered=r.isShared=r.isMeteredExpired=r.hasAccess=r.isLoggedIn=void 0;var t=function(e){return e.isLoggedIn};r.isLoggedIn=t;var n=function(e){return e.hasAccess};r.hasAccess=n;var o=function(e){return t(e)&&e.isMeteredExpired};r.isMeteredExpired=o;var u=function(e){return e.isShared};r.isShared=u;r.isMetered=function(e){return t(e)&&e.isMetered};r.isSubscriber=function(e){return t(e)&&!e.isMetered&&!e.isMeteredExpired};var i=function(e){return t(e)&&!o(e)};r.isNonMeteredExpiredUser=i;r.shouldShowFullArticle=function(e){return u(e)||i(e)||n(e)};r.isLoggedInOrShared=function(e){return u(e)||t(e)}},function(e,r,t){Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var n=function(){jest.mock("@times-components/user-state",(function(){var e=t(11).requireActual("@times-components/user-state").default;function r(e){var t=e.state,n=e.children,o=void 0===n?null:n,u=e.fallback,i=void 0===u?null:u;return r.mockStates.find((function(e){return e===t}))?o:i}return Object.keys(e).reduce((function(r,t){return r[t]=e[t],r}),r),r.mockReset=function(){r.mockStates=[e.fullArticle,e.loggedIn,e.loggedInOrShared,e.subscriber]},r.mockReset(),r}));var e=t(12);return beforeEach((function(){e.mockReset()})),e};r.default=n},function(e,r){function t(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=11},function(e,r){e.exports=require("@times-components/user-state/rnw")},function(e,r,t){var n=t(0);Object.defineProperty(r,"__esModule",{value:!0}),r.default=void 0;var o,u=n(t(3)),i=t(14),s=t(4);function c(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function d(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?c(Object(t),!0).forEach((function(r){(0,u.default)(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):c(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}var a=(o={},(0,u.default)(o,s.SUBSCRIBER,["isLoggedIn"]),(0,u.default)(o,s.RA,["isLoggedIn","isMetered"]),(0,u.default)(o,s.RA_EXPIRED,["isLoggedIn","isMetered","isMeteredExpired"]),(0,u.default)(o,s.GUEST,[]),o),l=[s.SUBSCRIBER,s.RA,s.RA_EXPIRED,s.GUEST];var f=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:s.SUBSCRIBER;window.nuk=window.nuk||{},Object.defineProperty(window.nuk,"user",{enumerable:!0,configurable:!0,get:function(){var r=(0,i.select)("Current User State",l,e,"User State"),t=(0,i.boolean)("Is Shared",!1,"User State"),n=a[r].reduce((function(e,r){return d(d({},e),{},(0,u.default)({},r,!0))}),{});return d({isLoggedIn:!1,isMetered:!1,isMeteredExpired:!1,isShared:t},n)}})};r.default=f},function(e,r){e.exports=require("@storybook/addon-knobs/react")}]);
1
+ module.exports=function(e){var r={};function t(n){if(r[n])return r[n].exports;var o=r[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,t),o.l=!0,o.exports}return t.m=e,t.c=r,t.d=function(e,r,n){t.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:n})},t.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},t.t=function(e,r){if(1&r&&(e=t(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(t.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var o in e)t.d(n,o,function(r){return e[r]}.bind(null,o));return n},t.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return t.d(r,"a",r),r},t.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},t.p="",t(t.s=7)}([function(e,r){e.exports=require("react")},function(e,r){e.exports=require("@storybook/addon-knobs/react")},function(e,r){e.exports=require("prop-types")},function(e,r){e.exports=require("@times-components/context/rnw")},function(e,r){e.exports=require("@times-components/utils/rnw")},function(e,r){function t(e){var r=new Error("Cannot find module '"+e+"'");throw r.code="MODULE_NOT_FOUND",r}t.keys=function(){return[]},t.resolve=t,e.exports=t,t.id=5},function(e,r){e.exports=require("@times-components/user-state/rnw")},function(e,r,t){"use strict";t.r(r);var n=t(0),o=t.n(n),u=(t(2),t(3)),i=t.n(u),c=t(4);function s(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function f(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?s(Object(t),!0).forEach((function(r){a(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):s(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function a(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var l=function(e){var r=e.children,t=e.serverRender,n=void 0===t||t;return o.a.createElement(i.a.Consumer,null,(function(e){var t=e.user;return o.a.createElement(c.ServerClientRender,{client:function(){var e=window.nuk,n=(void 0===e?{}:e).user||{};return r({user:f(f({},t),n)})},server:n?function(){return r({user:t})}:null})}))},d=function(e){return e.isLoggedIn},b=function(e){return e.hasAccess},p=function(e){return d(e)&&e.isMeteredExpired},O=function(e){return e.isShared},v=function(e){return d(e)&&!p(e)};var g,y=function(){jest.mock("@times-components/user-state",(function(){var e=t(5).requireActual("@times-components/user-state").default;function r(e){var t=e.state,n=e.children,o=void 0===n?null:n,u=e.fallback,i=void 0===u?null:u;return r.mockStates.find((function(e){return e===t}))?o:i}return Object.keys(e).reduce((function(r,t){return r[t]=e[t],r}),r),r.mockReset=function(){r.mockStates=[e.fullArticle,e.loggedIn,e.loggedInOrShared,e.subscriber]},r.mockReset(),r}));var e=t(6);return beforeEach((function(){e.mockReset()})),e},m="Registered Access",j="Registered Access (Expired)",S={SUBSCRIBER:"Subscriber",RA:m,RA_EXPIRED:j,GUEST:"Guest"},w=t(1);function P(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function h(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?P(Object(t),!0).forEach((function(r){E(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):P(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function E(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var x=(E(g={},"Subscriber",["isLoggedIn"]),E(g,m,["isLoggedIn","isMetered"]),E(g,j,["isLoggedIn","isMetered","isMeteredExpired"]),E(g,"Guest",[]),g),k=["Subscriber",m,j,"Guest"];var R=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"Subscriber";window.nuk=window.nuk||{},Object.defineProperty(window.nuk,"user",{enumerable:!0,configurable:!0,get:function(){var r=Object(w.select)("Current User State",k,e,"User State"),t=Object(w.boolean)("Is Shared",!1,"User State"),n=x[r].reduce((function(e,r){return h(h({},e),{},E({},r,!0))}),{});return h({isLoggedIn:!1,isMetered:!1,isMeteredExpired:!1,isShared:t},n)}})};function M(e){var r=e.state,t=e.children,n=e.fallback,u=e.serverRender;return o.a.createElement(l,{serverRender:u},(function(e){var o=e.user;return r(o)?t:n}))}t.d(r,"mockUserState",(function(){return y})),t.d(r,"USER_STATES",(function(){return S})),t.d(r,"addUserStateKnobs",(function(){return R})),M.loggedIn=d,M.meteredExpired=p,M.metered=function(e){return d(e)&&e.isMetered},M.shared=O,M.nonMeteredExpiredUser=v,M.fullArticle=function(e){return O(e)||v(e)||b(e)},M.subscriber=function(e){return d(e)&&!e.isMetered&&!e.isMeteredExpired},M.loggedInOrShared=function(e){return O(e)||d(e)},M.hasAccess=b,M.defaultProps={children:null,serverRender:!0,fallback:null};r.default=M}]);