powr-sdk-web 6.0.0 → 6.2.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() {
@@ -286,6 +334,12 @@ Object.defineProperty(exports, "evaluateSteps", {
286
334
  return _onboarding.evaluateSteps;
287
335
  }
288
336
  });
337
+ Object.defineProperty(exports, "fetchThemePreference", {
338
+ enumerable: true,
339
+ get: function get() {
340
+ return _theme.fetchThemePreference;
341
+ }
342
+ });
289
343
  Object.defineProperty(exports, "formatPhoneForSms", {
290
344
  enumerable: true,
291
345
  get: function get() {
@@ -316,6 +370,12 @@ Object.defineProperty(exports, "getPhoneLookupVariants", {
316
370
  return _phone.getPhoneLookupVariants;
317
371
  }
318
372
  });
373
+ Object.defineProperty(exports, "getPowrUserId", {
374
+ enumerable: true,
375
+ get: function get() {
376
+ return _session.getPowrUserId;
377
+ }
378
+ });
319
379
  Object.defineProperty(exports, "getUserId", {
320
380
  enumerable: true,
321
381
  get: function get() {
@@ -340,6 +400,12 @@ Object.defineProperty(exports, "isJwtExpired", {
340
400
  return _jwt.isJwtExpired;
341
401
  }
342
402
  });
403
+ Object.defineProperty(exports, "isPowrAdmin", {
404
+ enumerable: true,
405
+ get: function get() {
406
+ return _session.isPowrAdmin;
407
+ }
408
+ });
343
409
  Object.defineProperty(exports, "isValidPhone", {
344
410
  enumerable: true,
345
411
  get: function get() {
@@ -406,6 +472,12 @@ Object.defineProperty(exports, "parsePhone", {
406
472
  return _phone.parsePhone;
407
473
  }
408
474
  });
475
+ Object.defineProperty(exports, "powrThemeInitScript", {
476
+ enumerable: true,
477
+ get: function get() {
478
+ return _theme.powrThemeInitScript;
479
+ }
480
+ });
409
481
  Object.defineProperty(exports, "powrThemeStorageKey", {
410
482
  enumerable: true,
411
483
  get: function get() {
@@ -424,6 +496,18 @@ Object.defineProperty(exports, "profileNameStep", {
424
496
  return _onboarding.profileNameStep;
425
497
  }
426
498
  });
499
+ Object.defineProperty(exports, "readStoredSession", {
500
+ enumerable: true,
501
+ get: function get() {
502
+ return _session.readStoredSession;
503
+ }
504
+ });
505
+ Object.defineProperty(exports, "resolveAccess", {
506
+ enumerable: true,
507
+ get: function get() {
508
+ return _session.resolveAccess;
509
+ }
510
+ });
427
511
  Object.defineProperty(exports, "resolveCountry", {
428
512
  enumerable: true,
429
513
  get: function get() {
@@ -442,18 +526,42 @@ Object.defineProperty(exports, "safeNextPath", {
442
526
  return _sso.safeNextPath;
443
527
  }
444
528
  });
529
+ Object.defineProperty(exports, "saveThemePreference", {
530
+ enumerable: true,
531
+ get: function get() {
532
+ return _theme.saveThemePreference;
533
+ }
534
+ });
445
535
  Object.defineProperty(exports, "tokensToCssVars", {
446
536
  enumerable: true,
447
537
  get: function get() {
448
538
  return _theme.tokensToCssVars;
449
539
  }
450
540
  });
541
+ Object.defineProperty(exports, "usePowrSession", {
542
+ enumerable: true,
543
+ get: function get() {
544
+ return _session.usePowrSession;
545
+ }
546
+ });
451
547
  Object.defineProperty(exports, "usePowrTheme", {
452
548
  enumerable: true,
453
549
  get: function get() {
454
550
  return _theme.usePowrTheme;
455
551
  }
456
552
  });
553
+ Object.defineProperty(exports, "usePowrThemeHost", {
554
+ enumerable: true,
555
+ get: function get() {
556
+ return _theme.usePowrThemeHost;
557
+ }
558
+ });
559
+ Object.defineProperty(exports, "writeStoredSession", {
560
+ enumerable: true,
561
+ get: function get() {
562
+ return _session.writeStoredSession;
563
+ }
564
+ });
457
565
  var _table = _interopRequireDefault(require("./table"));
458
566
  var _swiper = _interopRequireDefault(require("./swiper"));
459
567
  var _reviews = _interopRequireDefault(require("./reviews"));
@@ -481,5 +589,7 @@ var _phone = require("./utils/phone");
481
589
  var _jwt = require("./utils/jwt");
482
590
  var _sessionMessages = require("./utils/sessionMessages");
483
591
  var _theme = require("./theme");
592
+ var _session = require("./session");
593
+ var _shell = require("./shell");
484
594
  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
595
  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;