powr-sdk-web 6.0.0 → 6.1.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.
@@ -688,13 +688,13 @@ var PowrLogin = function PowrLogin(_ref) {
688
688
  style: styles.card
689
689
  }, /*#__PURE__*/_react["default"].createElement("div", {
690
690
  style: styles.header
691
- }, /*#__PURE__*/_react["default"].createElement("div", {
691
+ }, appLogo ? /*#__PURE__*/_react["default"].createElement("div", {
692
692
  style: styles.logoContainer
693
693
  }, /*#__PURE__*/_react["default"].createElement("img", {
694
694
  src: appLogo,
695
695
  alt: "".concat(appName, " Logo"),
696
696
  style: styles.logoImage
697
- })), /*#__PURE__*/_react["default"].createElement("h1", {
697
+ })) : null, /*#__PURE__*/_react["default"].createElement("h1", {
698
698
  style: styles.title
699
699
  }, isLogin ? 'Welcome to' : 'Join', " ", appName), /*#__PURE__*/_react["default"].createElement("div", {
700
700
  style: styles.subtitleContainer
package/dist/index.js CHANGED
@@ -58,6 +58,12 @@ Object.defineProperty(exports, "OnboardingShell", {
58
58
  return _onboarding.OnboardingShell;
59
59
  }
60
60
  });
61
+ Object.defineProperty(exports, "POWR_ADMIN_ACCESS", {
62
+ enumerable: true,
63
+ get: function get() {
64
+ return _session.POWR_ADMIN_ACCESS;
65
+ }
66
+ });
61
67
  Object.defineProperty(exports, "POWR_CSS_VAR_NAMES", {
62
68
  enumerable: true,
63
69
  get: function get() {
@@ -76,6 +82,18 @@ Object.defineProperty(exports, "POWR_SCHEMES", {
76
82
  return _theme.POWR_SCHEMES;
77
83
  }
78
84
  });
85
+ Object.defineProperty(exports, "POWR_SESSION_STORAGE_KEY", {
86
+ enumerable: true,
87
+ get: function get() {
88
+ return _session.POWR_SESSION_STORAGE_KEY;
89
+ }
90
+ });
91
+ Object.defineProperty(exports, "POWR_SHELL_MODES", {
92
+ enumerable: true,
93
+ get: function get() {
94
+ return _shell.POWR_SHELL_MODES;
95
+ }
96
+ });
79
97
  Object.defineProperty(exports, "POWR_TOKENS", {
80
98
  enumerable: true,
81
99
  get: function get() {
@@ -112,6 +130,12 @@ Object.defineProperty(exports, "PowrBaseAdmin", {
112
130
  return _PowrBaseAdminFull["default"];
113
131
  }
114
132
  });
133
+ Object.defineProperty(exports, "PowrBaseAppWrapper", {
134
+ enumerable: true,
135
+ get: function get() {
136
+ return _shell.PowrBaseAppWrapper;
137
+ }
138
+ });
115
139
  Object.defineProperty(exports, "PowrBaseBlogs", {
116
140
  enumerable: true,
117
141
  get: function get() {
@@ -226,6 +250,12 @@ Object.defineProperty(exports, "PowrOnboardingProvider", {
226
250
  return _onboarding.PowrOnboardingProvider;
227
251
  }
228
252
  });
253
+ Object.defineProperty(exports, "PowrSessionProvider", {
254
+ enumerable: true,
255
+ get: function get() {
256
+ return _session.PowrSessionProvider;
257
+ }
258
+ });
229
259
  Object.defineProperty(exports, "PowrTable", {
230
260
  enumerable: true,
231
261
  get: function get() {
@@ -238,12 +268,24 @@ Object.defineProperty(exports, "PowrThemeProvider", {
238
268
  return _theme.PowrThemeProvider;
239
269
  }
240
270
  });
271
+ Object.defineProperty(exports, "PowrThemeSettings", {
272
+ enumerable: true,
273
+ get: function get() {
274
+ return _theme.PowrThemeSettings;
275
+ }
276
+ });
241
277
  Object.defineProperty(exports, "SESSION_MESSAGES", {
242
278
  enumerable: true,
243
279
  get: function get() {
244
280
  return _sessionMessages.SESSION_MESSAGES;
245
281
  }
246
282
  });
283
+ Object.defineProperty(exports, "accessFromToken", {
284
+ enumerable: true,
285
+ get: function get() {
286
+ return _session.accessFromToken;
287
+ }
288
+ });
247
289
  Object.defineProperty(exports, "addPhoneStep", {
248
290
  enumerable: true,
249
291
  get: function get() {
@@ -262,6 +304,12 @@ Object.defineProperty(exports, "buildPowrSsoUrl", {
262
304
  return _sso.buildPowrSsoUrl;
263
305
  }
264
306
  });
307
+ Object.defineProperty(exports, "clearStoredSession", {
308
+ enumerable: true,
309
+ get: function get() {
310
+ return _session.clearStoredSession;
311
+ }
312
+ });
265
313
  Object.defineProperty(exports, "coercePhoneForStorage", {
266
314
  enumerable: true,
267
315
  get: function get() {
@@ -316,6 +364,12 @@ Object.defineProperty(exports, "getPhoneLookupVariants", {
316
364
  return _phone.getPhoneLookupVariants;
317
365
  }
318
366
  });
367
+ Object.defineProperty(exports, "getPowrUserId", {
368
+ enumerable: true,
369
+ get: function get() {
370
+ return _session.getPowrUserId;
371
+ }
372
+ });
319
373
  Object.defineProperty(exports, "getUserId", {
320
374
  enumerable: true,
321
375
  get: function get() {
@@ -340,6 +394,12 @@ Object.defineProperty(exports, "isJwtExpired", {
340
394
  return _jwt.isJwtExpired;
341
395
  }
342
396
  });
397
+ Object.defineProperty(exports, "isPowrAdmin", {
398
+ enumerable: true,
399
+ get: function get() {
400
+ return _session.isPowrAdmin;
401
+ }
402
+ });
343
403
  Object.defineProperty(exports, "isValidPhone", {
344
404
  enumerable: true,
345
405
  get: function get() {
@@ -424,6 +484,18 @@ Object.defineProperty(exports, "profileNameStep", {
424
484
  return _onboarding.profileNameStep;
425
485
  }
426
486
  });
487
+ Object.defineProperty(exports, "readStoredSession", {
488
+ enumerable: true,
489
+ get: function get() {
490
+ return _session.readStoredSession;
491
+ }
492
+ });
493
+ Object.defineProperty(exports, "resolveAccess", {
494
+ enumerable: true,
495
+ get: function get() {
496
+ return _session.resolveAccess;
497
+ }
498
+ });
427
499
  Object.defineProperty(exports, "resolveCountry", {
428
500
  enumerable: true,
429
501
  get: function get() {
@@ -448,12 +520,24 @@ Object.defineProperty(exports, "tokensToCssVars", {
448
520
  return _theme.tokensToCssVars;
449
521
  }
450
522
  });
523
+ Object.defineProperty(exports, "usePowrSession", {
524
+ enumerable: true,
525
+ get: function get() {
526
+ return _session.usePowrSession;
527
+ }
528
+ });
451
529
  Object.defineProperty(exports, "usePowrTheme", {
452
530
  enumerable: true,
453
531
  get: function get() {
454
532
  return _theme.usePowrTheme;
455
533
  }
456
534
  });
535
+ Object.defineProperty(exports, "writeStoredSession", {
536
+ enumerable: true,
537
+ get: function get() {
538
+ return _session.writeStoredSession;
539
+ }
540
+ });
457
541
  var _table = _interopRequireDefault(require("./table"));
458
542
  var _swiper = _interopRequireDefault(require("./swiper"));
459
543
  var _reviews = _interopRequireDefault(require("./reviews"));
@@ -481,5 +565,7 @@ var _phone = require("./utils/phone");
481
565
  var _jwt = require("./utils/jwt");
482
566
  var _sessionMessages = require("./utils/sessionMessages");
483
567
  var _theme = require("./theme");
568
+ var _session = require("./session");
569
+ var _shell = require("./shell");
484
570
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
485
571
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -0,0 +1,217 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.POWR_SESSION_STORAGE_KEY = exports.POWR_ADMIN_ACCESS = void 0;
7
+ exports.PowrSessionProvider = PowrSessionProvider;
8
+ exports.accessFromToken = accessFromToken;
9
+ exports.clearStoredSession = clearStoredSession;
10
+ exports["default"] = void 0;
11
+ exports.getPowrUserId = getPowrUserId;
12
+ exports.isPowrAdmin = isPowrAdmin;
13
+ exports.readStoredSession = readStoredSession;
14
+ exports.resolveAccess = resolveAccess;
15
+ exports.usePowrSession = usePowrSession;
16
+ exports.writeStoredSession = writeStoredSession;
17
+ var _react = _interopRequireWildcard(require("react"));
18
+ var _jwt = require("../utils/jwt");
19
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
20
+ 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); }
21
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
22
+ 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."); }
23
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
24
+ 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; }
25
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
26
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
27
+ 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; }
28
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
29
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
30
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
31
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
32
+ /**
33
+ * Powr session — the file every new app used to copy (`utils/store.ts`).
34
+ *
35
+ * Owns `localStorage['auth-store']` in the zustand-persist shape
36
+ * `{ state: { user, token }, version }` so:
37
+ * - `apiCall` (utils/auth.getAuthToken) keeps reading the bearer from it
38
+ * - apps that already run a zustand `auth-store` can pass `user`/`token`
39
+ * as props (controlled) and nothing moves.
40
+ *
41
+ * No zustand dependency. Plain React context.
42
+ */
43
+
44
+ var POWR_SESSION_STORAGE_KEY = exports.POWR_SESSION_STORAGE_KEY = "auth-store";
45
+ var POWR_ADMIN_ACCESS = exports.POWR_ADMIN_ACCESS = 100;
46
+ function accessFromToken(token) {
47
+ var _decodeJwtPayload;
48
+ var access = Number((_decodeJwtPayload = (0, _jwt.decodeJwtPayload)(token)) === null || _decodeJwtPayload === void 0 ? void 0 : _decodeJwtPayload.access);
49
+ return Number.isFinite(access) ? access : undefined;
50
+ }
51
+
52
+ /** `user.access` wins; falls back to the JWT claim; 0 when neither. */
53
+ function resolveAccess(user, token) {
54
+ var _accessFromToken;
55
+ var fromUser = Number(user === null || user === void 0 ? void 0 : user.access);
56
+ if (Number.isFinite(fromUser)) return fromUser;
57
+ return (_accessFromToken = accessFromToken(token)) !== null && _accessFromToken !== void 0 ? _accessFromToken : 0;
58
+ }
59
+ function isPowrAdmin(user, token) {
60
+ return resolveAccess(user, token) === POWR_ADMIN_ACCESS;
61
+ }
62
+ function getPowrUserId(user) {
63
+ return String((user === null || user === void 0 ? void 0 : user.powrId) || (user === null || user === void 0 ? void 0 : user._id) || (user === null || user === void 0 ? void 0 : user.userId) || "");
64
+ }
65
+ function readStoredSession() {
66
+ if (typeof window === "undefined") return null;
67
+ try {
68
+ var raw = window.localStorage.getItem(POWR_SESSION_STORAGE_KEY);
69
+ if (!raw) return null;
70
+ var parsed = JSON.parse(raw);
71
+ var state = (parsed === null || parsed === void 0 ? void 0 : parsed.state) || parsed || {};
72
+ return {
73
+ user: state.user || null,
74
+ token: state.token || null,
75
+ refreshToken: state.refreshToken || null
76
+ };
77
+ } catch (_unused) {
78
+ return null;
79
+ }
80
+ }
81
+ function writeStoredSession(_ref) {
82
+ var user = _ref.user,
83
+ token = _ref.token,
84
+ refreshToken = _ref.refreshToken;
85
+ if (typeof window === "undefined") return;
86
+ window.localStorage.setItem(POWR_SESSION_STORAGE_KEY, JSON.stringify({
87
+ state: {
88
+ user: user,
89
+ token: token,
90
+ refreshToken: refreshToken
91
+ },
92
+ version: 0
93
+ }));
94
+ }
95
+ function clearStoredSession() {
96
+ if (typeof window === "undefined") return;
97
+ window.localStorage.removeItem(POWR_SESSION_STORAGE_KEY);
98
+ }
99
+ var EMPTY = {
100
+ user: null,
101
+ token: null,
102
+ refreshToken: null
103
+ };
104
+ var PowrSessionContext = /*#__PURE__*/(0, _react.createContext)(_objectSpread(_objectSpread({}, EMPTY), {}, {
105
+ hydrated: false,
106
+ access: 0,
107
+ isPowrAdmin: false,
108
+ userId: "",
109
+ controlled: false,
110
+ setSession: function setSession() {},
111
+ clear: function clear() {}
112
+ }));
113
+
114
+ /**
115
+ * @param {object} props
116
+ * @param {object|null} [props.user] - Controlled mode: app's own store is truth.
117
+ * @param {string|null} [props.token] - Controlled mode.
118
+ * @param {string|null} [props.refreshToken]
119
+ * @param {(session: {user, token, refreshToken}) => void} [props.onChange] - After setSession / clear.
120
+ * @param {() => void} [props.onLogout] - Controlled mode: clear your store here.
121
+ * @param {boolean} [props.persist=true] - Uncontrolled mode: write `auth-store`.
122
+ */
123
+ function PowrSessionProvider(_ref2) {
124
+ var userProp = _ref2.user,
125
+ tokenProp = _ref2.token,
126
+ refreshTokenProp = _ref2.refreshToken,
127
+ onChange = _ref2.onChange,
128
+ onLogout = _ref2.onLogout,
129
+ _ref2$persist = _ref2.persist,
130
+ persist = _ref2$persist === void 0 ? true : _ref2$persist,
131
+ children = _ref2.children;
132
+ var controlled = userProp !== undefined || tokenProp !== undefined;
133
+ var _useState = (0, _react.useState)(EMPTY),
134
+ _useState2 = _slicedToArray(_useState, 2),
135
+ local = _useState2[0],
136
+ setLocal = _useState2[1];
137
+ var _useState3 = (0, _react.useState)(controlled),
138
+ _useState4 = _slicedToArray(_useState3, 2),
139
+ hydrated = _useState4[0],
140
+ setHydrated = _useState4[1];
141
+ var onChangeRef = (0, _react.useRef)(onChange);
142
+ onChangeRef.current = onChange;
143
+ (0, _react.useEffect)(function () {
144
+ if (controlled) return;
145
+ var stored = readStoredSession();
146
+ if (stored !== null && stored !== void 0 && stored.token && !(0, _jwt.isJwtExpired)(stored.token)) {
147
+ setLocal({
148
+ user: stored.user,
149
+ token: stored.token,
150
+ refreshToken: stored.refreshToken
151
+ });
152
+ } else if (stored) {
153
+ clearStoredSession();
154
+ }
155
+ setHydrated(true);
156
+ }, [controlled]);
157
+
158
+ // Follow other tabs (and legacy zustand stores in the same origin).
159
+ (0, _react.useEffect)(function () {
160
+ if (controlled || typeof window === "undefined") return undefined;
161
+ var onStorage = function onStorage(e) {
162
+ if (e.key && e.key !== POWR_SESSION_STORAGE_KEY) return;
163
+ setLocal(readStoredSession() || EMPTY);
164
+ };
165
+ window.addEventListener("storage", onStorage);
166
+ return function () {
167
+ return window.removeEventListener("storage", onStorage);
168
+ };
169
+ }, [controlled]);
170
+ var setSession = (0, _react.useCallback)(function (user, token) {
171
+ var _onChangeRef$current;
172
+ var refreshToken = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
173
+ var next = {
174
+ user: user || null,
175
+ token: token || null,
176
+ refreshToken: refreshToken
177
+ };
178
+ if (!controlled) {
179
+ setLocal(next);
180
+ if (persist) writeStoredSession(next);
181
+ }
182
+ (_onChangeRef$current = onChangeRef.current) === null || _onChangeRef$current === void 0 || _onChangeRef$current.call(onChangeRef, next);
183
+ }, [controlled, persist]);
184
+ var clear = (0, _react.useCallback)(function () {
185
+ var _onChangeRef$current2;
186
+ if (!controlled) {
187
+ setLocal(EMPTY);
188
+ clearStoredSession();
189
+ }
190
+ onLogout === null || onLogout === void 0 || onLogout();
191
+ (_onChangeRef$current2 = onChangeRef.current) === null || _onChangeRef$current2 === void 0 || _onChangeRef$current2.call(onChangeRef, EMPTY);
192
+ }, [controlled, onLogout]);
193
+ var current = controlled ? {
194
+ user: userProp || null,
195
+ token: tokenProp || null,
196
+ refreshToken: refreshTokenProp || null
197
+ } : local;
198
+ var value = (0, _react.useMemo)(function () {
199
+ var access = resolveAccess(current.user, current.token);
200
+ return _objectSpread(_objectSpread({}, current), {}, {
201
+ hydrated: hydrated,
202
+ access: access,
203
+ isPowrAdmin: access === POWR_ADMIN_ACCESS,
204
+ userId: getPowrUserId(current.user),
205
+ controlled: controlled,
206
+ setSession: setSession,
207
+ clear: clear
208
+ });
209
+ }, [current.user, current.token, current.refreshToken, hydrated, controlled, setSession, clear]);
210
+ return /*#__PURE__*/_react["default"].createElement(PowrSessionContext.Provider, {
211
+ value: value
212
+ }, children);
213
+ }
214
+ function usePowrSession() {
215
+ return (0, _react.useContext)(PowrSessionContext);
216
+ }
217
+ var _default = exports["default"] = PowrSessionProvider;