@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 +11 -0
- package/babel.config.js +2 -5
- package/dist/client-user-state-consumer.js +54 -1
- package/dist/matchers.js +60 -1
- package/dist/mock-user-state.js +46 -1
- package/dist/states.js +22 -1
- package/dist/storybook-helper.js +48 -1
- package/dist/user-state.js +87 -1
- package/package.json +9 -16
- package/rnw.js +1 -1
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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;
|
package/dist/mock-user-state.js
CHANGED
|
@@ -1 +1,46 @@
|
|
|
1
|
-
|
|
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
|
-
|
|
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;
|
package/dist/storybook-helper.js
CHANGED
|
@@ -1 +1,48 @@
|
|
|
1
|
-
|
|
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;
|
package/dist/user-state.js
CHANGED
|
@@ -1 +1,87 @@
|
|
|
1
|
-
|
|
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
|
+
"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.
|
|
39
|
-
"@times-components/utils": "6.
|
|
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": "
|
|
46
|
-
"@times-components/jest-serializer": "3.
|
|
47
|
-
"@times-components/webpack-configurator": "2.0
|
|
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": "
|
|
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=
|
|
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}]);
|