powr-sdk-web 5.9.1 → 5.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -129,7 +129,7 @@ var CreatePost = function CreatePost(_ref) {
129
129
  }();
130
130
  var handleFileUpload = /*#__PURE__*/function () {
131
131
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(files) {
132
- var uploadedFiles, _iterator, _step, file, formData, _yield$apiCall2, data, ok, _t2, _t3;
132
+ var uploadedFiles, _iterator, _step, file, _data$data, formData, _yield$apiCall2, data, ok, fileUrl, _t2, _t3;
133
133
  return _regenerator().w(function (_context2) {
134
134
  while (1) switch (_context2.p = _context2.n) {
135
135
  case 0:
@@ -148,7 +148,7 @@ var CreatePost = function CreatePost(_ref) {
148
148
  formData.append('file', file);
149
149
  formData.append('projectId', process.env.NEXT_PUBLIC_PROJECT_ID);
150
150
  _context2.n = 4;
151
- return (0, _auth.apiCall)(apiUrl, '/files/upload', projectId, {
151
+ return (0, _auth.apiCall)(apiUrl, '/files', projectId, {
152
152
  method: 'POST',
153
153
  body: formData
154
154
  });
@@ -156,9 +156,10 @@ var CreatePost = function CreatePost(_ref) {
156
156
  _yield$apiCall2 = _context2.v;
157
157
  data = _yield$apiCall2.data;
158
158
  ok = _yield$apiCall2.ok;
159
- if (ok && data.success) {
159
+ fileUrl = (data === null || data === void 0 ? void 0 : data.url) || (data === null || data === void 0 || (_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data.url);
160
+ if (ok && fileUrl) {
160
161
  uploadedFiles.push({
161
- url: data.data.url,
162
+ url: fileUrl,
162
163
  type: file.type.startsWith('image/') ? 'image' : 'document',
163
164
  filename: file.name
164
165
  });
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
 
3
+ 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); }
3
4
  Object.defineProperty(exports, "__esModule", {
4
5
  value: true
5
6
  });
@@ -21,6 +22,12 @@ Object.defineProperty(exports, "DEFAULT_COUNTRY_CODE", {
21
22
  return _phone.DEFAULT_COUNTRY_CODE;
22
23
  }
23
24
  });
25
+ Object.defineProperty(exports, "DEFAULT_POWR_TARGETS", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _sso.DEFAULT_POWR_TARGETS;
29
+ }
30
+ });
24
31
  Object.defineProperty(exports, "OnboardingShell", {
25
32
  enumerable: true,
26
33
  get: function get() {
@@ -105,6 +112,12 @@ Object.defineProperty(exports, "PowrBaseReviews", {
105
112
  return _reviews["default"];
106
113
  }
107
114
  });
115
+ Object.defineProperty(exports, "PowrBaseSso", {
116
+ enumerable: true,
117
+ get: function get() {
118
+ return _sso["default"];
119
+ }
120
+ });
108
121
  Object.defineProperty(exports, "PowrBaseSwiper", {
109
122
  enumerable: true,
110
123
  get: function get() {
@@ -183,6 +196,12 @@ Object.defineProperty(exports, "buildPhoneFromParts", {
183
196
  return _phone.buildPhoneFromParts;
184
197
  }
185
198
  });
199
+ Object.defineProperty(exports, "buildPowrSsoUrl", {
200
+ enumerable: true,
201
+ get: function get() {
202
+ return _sso.buildPowrSsoUrl;
203
+ }
204
+ });
186
205
  Object.defineProperty(exports, "coercePhoneForStorage", {
187
206
  enumerable: true,
188
207
  get: function get() {
@@ -267,6 +286,24 @@ Object.defineProperty(exports, "isValidPhone", {
267
286
  return _phone.isValidPhone;
268
287
  }
269
288
  });
289
+ Object.defineProperty(exports, "issueLoginCode", {
290
+ enumerable: true,
291
+ get: function get() {
292
+ return _sso.issueLoginCode;
293
+ }
294
+ });
295
+ Object.defineProperty(exports, "loginWithCode", {
296
+ enumerable: true,
297
+ get: function get() {
298
+ return _sso.loginWithCode;
299
+ }
300
+ });
301
+ Object.defineProperty(exports, "matchPowrTarget", {
302
+ enumerable: true,
303
+ get: function get() {
304
+ return _sso.matchPowrTarget;
305
+ }
306
+ });
270
307
  Object.defineProperty(exports, "mergePowrSteps", {
271
308
  enumerable: true,
272
309
  get: function get() {
@@ -291,6 +328,12 @@ Object.defineProperty(exports, "normalizePhone", {
291
328
  return _phone.normalizePhone;
292
329
  }
293
330
  });
331
+ Object.defineProperty(exports, "openPowrLogin", {
332
+ enumerable: true,
333
+ get: function get() {
334
+ return _sso.openPowrLogin;
335
+ }
336
+ });
294
337
  Object.defineProperty(exports, "parsePhone", {
295
338
  enumerable: true,
296
339
  get: function get() {
@@ -309,6 +352,12 @@ Object.defineProperty(exports, "resolveCountry", {
309
352
  return _phone.resolveCountry;
310
353
  }
311
354
  });
355
+ Object.defineProperty(exports, "safeNextPath", {
356
+ enumerable: true,
357
+ get: function get() {
358
+ return _sso.safeNextPath;
359
+ }
360
+ });
312
361
  var _table = _interopRequireDefault(require("./table"));
313
362
  var _swiper = _interopRequireDefault(require("./swiper"));
314
363
  var _reviews = _interopRequireDefault(require("./reviews"));
@@ -321,6 +370,7 @@ var _calendar = _interopRequireDefault(require("./calendar"));
321
370
  var _blogs = _interopRequireDefault(require("./blogs"));
322
371
  var _likes = _interopRequireDefault(require("./likes"));
323
372
  var _auth = _interopRequireDefault(require("./auth"));
373
+ var _sso = _interopRequireWildcard(require("./sso"));
324
374
  var _forms = _interopRequireDefault(require("./forms"));
325
375
  var _chat = _interopRequireDefault(require("./chat"));
326
376
  var _feeds = _interopRequireDefault(require("./feeds"));
@@ -334,4 +384,5 @@ var _onboarding = require("./onboarding");
334
384
  var _phone = require("./utils/phone");
335
385
  var _jwt = require("./utils/jwt");
336
386
  var _sessionMessages = require("./utils/sessionMessages");
387
+ 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); }
337
388
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.issueLoginCode = issueLoginCode;
7
+ exports.loginWithCode = loginWithCode;
8
+ exports.readHandoffParams = readHandoffParams;
9
+ exports.safeNextPath = safeNextPath;
10
+ exports.stripHandoffParams = stripHandoffParams;
11
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
12
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
13
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
14
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
15
+ function joinApi(apiUrl, path) {
16
+ var base = String(apiUrl || "").replace(/\/+$/, "");
17
+ var p = String(path || "").replace(/^\/+/, "");
18
+ return "".concat(base, "/").concat(p);
19
+ }
20
+
21
+ /** Safe in-app path from `?next=` (relative only). */
22
+ function safeNextPath(next) {
23
+ var fallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "/";
24
+ if (next && String(next).startsWith("/") && !String(next).startsWith("//")) {
25
+ return String(next);
26
+ }
27
+ return fallback;
28
+ }
29
+
30
+ /**
31
+ * Issue a one-time login code (caller must already be authenticated).
32
+ * @param {string} apiUrl - Powr API base (…/powr)
33
+ * @param {string} bearerToken
34
+ */
35
+ function issueLoginCode(_x, _x2) {
36
+ return _issueLoginCode.apply(this, arguments);
37
+ }
38
+ /**
39
+ * Exchange loginId for session (same shape as /login).
40
+ * @param {string} apiUrl
41
+ * @param {string} loginId
42
+ */
43
+ function _issueLoginCode() {
44
+ _issueLoginCode = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(apiUrl, bearerToken) {
45
+ var res, data;
46
+ return _regenerator().w(function (_context) {
47
+ while (1) switch (_context.n) {
48
+ case 0:
49
+ _context.n = 1;
50
+ return fetch(joinApi(apiUrl, "auth/issue-login-code"), {
51
+ method: "POST",
52
+ headers: {
53
+ Authorization: "Bearer ".concat(bearerToken),
54
+ "Content-Type": "application/json"
55
+ }
56
+ });
57
+ case 1:
58
+ res = _context.v;
59
+ _context.n = 2;
60
+ return res.json()["catch"](function () {
61
+ return {};
62
+ });
63
+ case 2:
64
+ data = _context.v;
65
+ if (!(!res.ok || !data.success || !data.loginId)) {
66
+ _context.n = 3;
67
+ break;
68
+ }
69
+ throw new Error(data.message || "Could not start sign-in");
70
+ case 3:
71
+ return _context.a(2, data);
72
+ }
73
+ }, _callee);
74
+ }));
75
+ return _issueLoginCode.apply(this, arguments);
76
+ }
77
+ function loginWithCode(_x3, _x4) {
78
+ return _loginWithCode.apply(this, arguments);
79
+ }
80
+ function _loginWithCode() {
81
+ _loginWithCode = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(apiUrl, loginId) {
82
+ var res, data, err;
83
+ return _regenerator().w(function (_context2) {
84
+ while (1) switch (_context2.n) {
85
+ case 0:
86
+ _context2.n = 1;
87
+ return fetch(joinApi(apiUrl, "auth/login-with-code"), {
88
+ method: "POST",
89
+ headers: {
90
+ "Content-Type": "application/json"
91
+ },
92
+ body: JSON.stringify({
93
+ loginId: loginId
94
+ })
95
+ });
96
+ case 1:
97
+ res = _context2.v;
98
+ _context2.n = 2;
99
+ return res.json()["catch"](function () {
100
+ return {};
101
+ });
102
+ case 2:
103
+ data = _context2.v;
104
+ if (!(!res.ok || !data.success || !data.token || !data.user)) {
105
+ _context2.n = 3;
106
+ break;
107
+ }
108
+ err = new Error(data.message || "This login link expired");
109
+ err.status = res.status;
110
+ err.data = data;
111
+ throw err;
112
+ case 3:
113
+ return _context2.a(2, data);
114
+ }
115
+ }, _callee2);
116
+ }));
117
+ return _loginWithCode.apply(this, arguments);
118
+ }
119
+ function readHandoffParams() {
120
+ if (typeof window === "undefined") {
121
+ return {
122
+ loginId: null,
123
+ next: ""
124
+ };
125
+ }
126
+ var params = new URLSearchParams(window.location.search);
127
+ return {
128
+ loginId: params.get("loginId"),
129
+ next: params.get("next") || ""
130
+ };
131
+ }
132
+ function stripHandoffParams() {
133
+ if (typeof window === "undefined") return;
134
+ var params = new URLSearchParams(window.location.search);
135
+ params["delete"]("loginId");
136
+ params["delete"]("next");
137
+ var rest = params.toString();
138
+ window.history.replaceState({}, "", "".concat(window.location.pathname).concat(rest ? "?".concat(rest) : "").concat(window.location.hash));
139
+ }
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ Object.defineProperty(exports, "DEFAULT_POWR_TARGETS", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _openPowrLogin.DEFAULT_POWR_TARGETS;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "buildPowrSsoUrl", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _openPowrLogin.buildPowrSsoUrl;
16
+ }
17
+ });
18
+ exports["default"] = PowrBaseSso;
19
+ Object.defineProperty(exports, "issueLoginCode", {
20
+ enumerable: true,
21
+ get: function get() {
22
+ return _api.issueLoginCode;
23
+ }
24
+ });
25
+ Object.defineProperty(exports, "loginWithCode", {
26
+ enumerable: true,
27
+ get: function get() {
28
+ return _api.loginWithCode;
29
+ }
30
+ });
31
+ Object.defineProperty(exports, "matchPowrTarget", {
32
+ enumerable: true,
33
+ get: function get() {
34
+ return _openPowrLogin.matchPowrTarget;
35
+ }
36
+ });
37
+ Object.defineProperty(exports, "openPowrLogin", {
38
+ enumerable: true,
39
+ get: function get() {
40
+ return _openPowrLogin.openPowrLogin;
41
+ }
42
+ });
43
+ Object.defineProperty(exports, "readHandoffParams", {
44
+ enumerable: true,
45
+ get: function get() {
46
+ return _api.readHandoffParams;
47
+ }
48
+ });
49
+ Object.defineProperty(exports, "safeNextPath", {
50
+ enumerable: true,
51
+ get: function get() {
52
+ return _api.safeNextPath;
53
+ }
54
+ });
55
+ Object.defineProperty(exports, "stripHandoffParams", {
56
+ enumerable: true,
57
+ get: function get() {
58
+ return _api.stripHandoffParams;
59
+ }
60
+ });
61
+ var _react = _interopRequireWildcard(require("react"));
62
+ var _api = require("./api");
63
+ var _openPowrLogin = require("./openPowrLogin");
64
+ 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); }
65
+ 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); }
66
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
67
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
68
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
69
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
70
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
71
+ 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."); }
72
+ 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; } }
73
+ 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; }
74
+ 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; } }
75
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
76
+ 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; }
77
+ 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; }
78
+ 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; }
79
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
80
+ 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); }
81
+ var shellStyle = {
82
+ display: "flex",
83
+ minHeight: "100vh",
84
+ flexDirection: "column",
85
+ alignItems: "center",
86
+ justifyContent: "center",
87
+ padding: "0 1.5rem",
88
+ textAlign: "center",
89
+ background: "var(--background, #fafafa)",
90
+ color: "var(--foreground, #111)",
91
+ fontFamily: "system-ui, -apple-system, Segoe UI, Roboto, sans-serif"
92
+ };
93
+ var mutedStyle = {
94
+ fontSize: "0.875rem",
95
+ fontWeight: 500,
96
+ color: "var(--muted-foreground, #737373)",
97
+ margin: 0
98
+ };
99
+ var titleStyle = {
100
+ marginTop: "1.5rem",
101
+ fontSize: "1.25rem",
102
+ fontWeight: 600,
103
+ letterSpacing: "-0.025em",
104
+ marginBottom: 0
105
+ };
106
+ var bodyStyle = {
107
+ marginTop: "0.5rem",
108
+ maxWidth: "24rem",
109
+ fontSize: "0.875rem",
110
+ color: "var(--muted-foreground, #737373)",
111
+ marginBottom: 0
112
+ };
113
+ var errorTextStyle = _objectSpread(_objectSpread({}, bodyStyle), {}, {
114
+ color: "var(--destructive, #dc2626)"
115
+ });
116
+ var spinnerStyle = {
117
+ marginTop: "1.5rem",
118
+ width: "2.5rem",
119
+ height: "2.5rem",
120
+ borderRadius: "9999px",
121
+ border: "2px solid var(--primary, #2563eb)",
122
+ borderTopColor: "transparent",
123
+ animation: "powr-sso-spin 0.7s linear infinite"
124
+ };
125
+ var btnStyle = {
126
+ marginTop: "1.5rem",
127
+ display: "inline-flex",
128
+ alignItems: "center",
129
+ justifyContent: "center",
130
+ borderRadius: "0.5rem",
131
+ background: "var(--primary, #2563eb)",
132
+ color: "var(--primary-foreground, #fff)",
133
+ padding: "0.5rem 1rem",
134
+ fontSize: "0.875rem",
135
+ fontWeight: 500,
136
+ textDecoration: "none",
137
+ border: "none",
138
+ cursor: "pointer"
139
+ };
140
+
141
+ /**
142
+ * Cross-app SSO handoff UI (UrbanStall → Powr apps).
143
+ * Apps keep a thin `/sso` page that renders this with `apiUrl` + `onSuccess`.
144
+ *
145
+ * @param {object} props
146
+ * @param {string} props.apiUrl - Powr API base ending in /powr (or /powr/)
147
+ * @param {string} [props.appName]
148
+ * @param {boolean} [props.ready=true] - Wait (e.g. auth hydrate) before exchanging code
149
+ * @param {string} [props.loginHref="/login"]
150
+ * @param {string} [props.loginId] - Defaults to ?loginId=
151
+ * @param {string} [props.next] - Defaults to ?next=
152
+ * @param {(data: object, ctx: { next: string, safeNext: string }) => void | Promise<void>} props.onSuccess
153
+ * @param {string} [props.signingInTitle]
154
+ * @param {string} [props.signingInMessage]
155
+ * @param {string} [props.errorTitle]
156
+ */
157
+ function PowrBaseSso(_ref) {
158
+ var apiUrl = _ref.apiUrl,
159
+ _ref$appName = _ref.appName,
160
+ appName = _ref$appName === void 0 ? "App" : _ref$appName,
161
+ _ref$ready = _ref.ready,
162
+ ready = _ref$ready === void 0 ? true : _ref$ready,
163
+ _ref$loginHref = _ref.loginHref,
164
+ loginHref = _ref$loginHref === void 0 ? "/login" : _ref$loginHref,
165
+ loginIdProp = _ref.loginId,
166
+ nextProp = _ref.next,
167
+ onSuccess = _ref.onSuccess,
168
+ _ref$signingInTitle = _ref.signingInTitle,
169
+ signingInTitle = _ref$signingInTitle === void 0 ? "Signing you in…" : _ref$signingInTitle,
170
+ _ref$signingInMessage = _ref.signingInMessage,
171
+ signingInMessage = _ref$signingInMessage === void 0 ? "Finishing your UrbanStall handoff. This only takes a moment." : _ref$signingInMessage,
172
+ _ref$errorTitle = _ref.errorTitle,
173
+ errorTitle = _ref$errorTitle === void 0 ? "Sign-in link expired" : _ref$errorTitle;
174
+ var fromUrl = (0, _react.useState)(function () {
175
+ return (0, _api.readHandoffParams)();
176
+ })[0];
177
+ var loginId = loginIdProp !== undefined ? loginIdProp : fromUrl.loginId;
178
+ var next = nextProp !== undefined ? nextProp : fromUrl.next;
179
+ var _useState = (0, _react.useState)(loginId ? null : "Missing login link"),
180
+ _useState2 = _slicedToArray(_useState, 2),
181
+ error = _useState2[0],
182
+ setError = _useState2[1];
183
+ var _useState3 = (0, _react.useState)(Boolean(loginId)),
184
+ _useState4 = _slicedToArray(_useState3, 2),
185
+ busy = _useState4[0],
186
+ setBusy = _useState4[1];
187
+ var started = (0, _react.useRef)(false);
188
+ var onSuccessRef = (0, _react.useRef)(onSuccess);
189
+ onSuccessRef.current = onSuccess;
190
+ (0, _react.useEffect)(function () {
191
+ if (!loginId || !ready || !apiUrl || started.current) return;
192
+ started.current = true;
193
+ setBusy(true);
194
+ (0, _api.loginWithCode)(apiUrl, loginId).then(/*#__PURE__*/function () {
195
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(data) {
196
+ var cb;
197
+ return _regenerator().w(function (_context) {
198
+ while (1) switch (_context.n) {
199
+ case 0:
200
+ (0, _api.stripHandoffParams)();
201
+ cb = onSuccessRef.current;
202
+ if (!(typeof cb === "function")) {
203
+ _context.n = 1;
204
+ break;
205
+ }
206
+ _context.n = 1;
207
+ return cb(data, {
208
+ next: next,
209
+ safeNext: (0, _api.safeNextPath)(next, "/")
210
+ });
211
+ case 1:
212
+ return _context.a(2);
213
+ }
214
+ }, _callee);
215
+ }));
216
+ return function (_x) {
217
+ return _ref2.apply(this, arguments);
218
+ };
219
+ }())["catch"](function (err) {
220
+ (0, _api.stripHandoffParams)();
221
+ setError((err === null || err === void 0 ? void 0 : err.message) || "Could not finish sign-in");
222
+ setBusy(false);
223
+ });
224
+ }, [loginId, next, ready, apiUrl]);
225
+ return /*#__PURE__*/_react["default"].createElement("div", {
226
+ style: shellStyle
227
+ }, /*#__PURE__*/_react["default"].createElement("style", null, "@keyframes powr-sso-spin{to{transform:rotate(360deg)}}"), /*#__PURE__*/_react["default"].createElement("p", {
228
+ style: mutedStyle
229
+ }, appName), busy && !error ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
230
+ style: spinnerStyle,
231
+ "aria-hidden": true
232
+ }), /*#__PURE__*/_react["default"].createElement("h1", {
233
+ style: titleStyle
234
+ }, signingInTitle), /*#__PURE__*/_react["default"].createElement("p", {
235
+ style: bodyStyle
236
+ }, signingInMessage)) : null, error ? /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("h1", {
237
+ style: titleStyle
238
+ }, errorTitle), /*#__PURE__*/_react["default"].createElement("p", {
239
+ style: errorTextStyle
240
+ }, error), /*#__PURE__*/_react["default"].createElement("a", {
241
+ href: loginHref,
242
+ style: btnStyle
243
+ }, "Continue to login")) : null);
244
+ }
@@ -0,0 +1,165 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DEFAULT_POWR_TARGETS = void 0;
7
+ exports.buildPowrSsoUrl = buildPowrSsoUrl;
8
+ exports.matchPowrTarget = matchPowrTarget;
9
+ exports.openPowrLogin = openPowrLogin;
10
+ var _api = require("./api");
11
+ function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
12
+ function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
13
+ function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
14
+ function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
15
+ function _createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t["return"] || t["return"](); } finally { if (u) throw o; } } }; }
16
+ 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; } }
17
+ 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; }
18
+ function normalizeOrigin(value) {
19
+ return String(value || "").replace(/\/$/, "").toLowerCase();
20
+ }
21
+
22
+ /**
23
+ * Default Lawazia Powr app origin → /powr API map (prod + common local Quiz).
24
+ * Host apps can pass `targets` to override (e.g. from NEXT_PUBLIC_* env).
25
+ */
26
+ var DEFAULT_POWR_TARGETS = exports.DEFAULT_POWR_TARGETS = [{
27
+ origins: ["https://rasoi.lawazia.tech"],
28
+ powrApiUrl: "https://rasoiapp-api-690167968218.europe-west1.run.app/powr"
29
+ }, {
30
+ origins: ["https://win.urbanstall.app"],
31
+ powrApiUrl: "https://quizapp-api-new-762437065717.asia-south1.run.app/powr"
32
+ }, {
33
+ origins: ["http://localhost:3001", "http://127.0.0.1:3001", "http://localhost:3010", "http://127.0.0.1:3010"],
34
+ powrApiUrl: "http://localhost:3000/powr"
35
+ }, {
36
+ origins: ["https://earn.urbanstall.app"],
37
+ powrApiUrl: "https://ads-app-api-429552207832.asia-east1.run.app/powr"
38
+ }];
39
+
40
+ /**
41
+ * @param {string} url
42
+ * @param {Array<{ origins: string[], powrApiUrl: string }>} [targets]
43
+ * @returns {{ origin: string, powrApiUrl: string, pathname: string, search: string, hash: string } | null}
44
+ */
45
+ function matchPowrTarget(url) {
46
+ var targets = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_POWR_TARGETS;
47
+ var parsed;
48
+ try {
49
+ parsed = new URL(url);
50
+ } catch (_unused) {
51
+ return null;
52
+ }
53
+ var origin = normalizeOrigin(parsed.origin);
54
+ var _iterator = _createForOfIteratorHelper(targets),
55
+ _step;
56
+ try {
57
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
58
+ var target = _step.value;
59
+ if ((target.origins || []).some(function (o) {
60
+ return normalizeOrigin(o) === origin;
61
+ })) {
62
+ return {
63
+ origin: parsed.origin.replace(/\/$/, ""),
64
+ powrApiUrl: String(target.powrApiUrl).replace(/\/$/, ""),
65
+ pathname: parsed.pathname || "/",
66
+ search: parsed.search || "",
67
+ hash: parsed.hash || ""
68
+ };
69
+ }
70
+ }
71
+ } catch (err) {
72
+ _iterator.e(err);
73
+ } finally {
74
+ _iterator.f();
75
+ }
76
+ return null;
77
+ }
78
+
79
+ /**
80
+ * Build destination `/sso?loginId=` (+ optional `next`) on the sibling app.
81
+ */
82
+ function buildPowrSsoUrl(target, loginId) {
83
+ var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},
84
+ _ref$ssoPath = _ref.ssoPath,
85
+ ssoPath = _ref$ssoPath === void 0 ? "/sso" : _ref$ssoPath;
86
+ var params = new URLSearchParams();
87
+ params.set("loginId", loginId);
88
+ var path = target.pathname || "/";
89
+ if (path && path !== "/" && path !== "/login" && path !== ssoPath) {
90
+ params.set("next", "".concat(path).concat(target.search || ""));
91
+ }
92
+ var basePath = ssoPath.startsWith("/") ? ssoPath : "/".concat(ssoPath);
93
+ return "".concat(target.origin).concat(basePath, "?").concat(params.toString());
94
+ }
95
+ function openPlain(url) {
96
+ if (typeof window === "undefined") return;
97
+ window.open(url, "_blank", "noopener,noreferrer");
98
+ }
99
+
100
+ /**
101
+ * Issue a login code on the target Powr API and navigate to `/sso?loginId=`.
102
+ * Falls back to opening the original URL when there is no token, no match, or issue fails.
103
+ *
104
+ * @param {string} url - Destination app URL (banner link, etc.)
105
+ * @param {string|null|undefined} token - Caller auth JWT (UrbanStall or Powr)
106
+ * @param {object} [options]
107
+ * @param {Array<{ origins: string[], powrApiUrl: string }>} [options.targets]
108
+ * @param {string} [options.ssoPath="/sso"]
109
+ * @param {(url: string) => void} [options.onFallback] - default window.open
110
+ * @param {(ssoUrl: string) => void} [options.navigate] - default location.assign
111
+ */
112
+ function openPowrLogin(_x, _x2) {
113
+ return _openPowrLogin.apply(this, arguments);
114
+ }
115
+ function _openPowrLogin() {
116
+ _openPowrLogin = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(url, token) {
117
+ var options,
118
+ _options$targets,
119
+ targets,
120
+ _options$ssoPath,
121
+ ssoPath,
122
+ _options$onFallback,
123
+ onFallback,
124
+ _options$navigate,
125
+ navigate,
126
+ target,
127
+ data,
128
+ _args = arguments,
129
+ _t;
130
+ return _regenerator().w(function (_context) {
131
+ while (1) switch (_context.p = _context.n) {
132
+ case 0:
133
+ options = _args.length > 2 && _args[2] !== undefined ? _args[2] : {};
134
+ _options$targets = options.targets, targets = _options$targets === void 0 ? DEFAULT_POWR_TARGETS : _options$targets, _options$ssoPath = options.ssoPath, ssoPath = _options$ssoPath === void 0 ? "/sso" : _options$ssoPath, _options$onFallback = options.onFallback, onFallback = _options$onFallback === void 0 ? openPlain : _options$onFallback, _options$navigate = options.navigate, navigate = _options$navigate === void 0 ? function (ssoUrl) {
135
+ if (typeof window !== "undefined") window.location.assign(ssoUrl);
136
+ } : _options$navigate;
137
+ target = matchPowrTarget(url, targets);
138
+ if (!(!target || !token)) {
139
+ _context.n = 1;
140
+ break;
141
+ }
142
+ onFallback(url);
143
+ return _context.a(2);
144
+ case 1:
145
+ _context.p = 1;
146
+ _context.n = 2;
147
+ return (0, _api.issueLoginCode)(target.powrApiUrl, token);
148
+ case 2:
149
+ data = _context.v;
150
+ navigate(buildPowrSsoUrl(target, data.loginId, {
151
+ ssoPath: ssoPath
152
+ }));
153
+ _context.n = 4;
154
+ break;
155
+ case 3:
156
+ _context.p = 3;
157
+ _t = _context.v;
158
+ onFallback(url);
159
+ case 4:
160
+ return _context.a(2);
161
+ }
162
+ }, _callee, null, [[1, 3]]);
163
+ }));
164
+ return _openPowrLogin.apply(this, arguments);
165
+ }
@@ -4,9 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.getAuthToken = exports.createAuthHeaders = exports.apiCall = void 0;
7
+ var _excluded = ["headers"];
7
8
  function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
8
9
  function _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
9
- 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); }
10
+ function _objectWithoutProperties(e, t) { if (null == e) return {}; var o, r, i = _objectWithoutPropertiesLoose(e, t); if (Object.getOwnPropertySymbols) { var n = Object.getOwnPropertySymbols(e); for (r = 0; r < n.length; r++) o = n[r], -1 === t.indexOf(o) && {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]); } return i; }
11
+ function _objectWithoutPropertiesLoose(r, e) { if (null == r) return {}; var t = {}; for (var n in r) if ({}.hasOwnProperty.call(r, n)) { if (-1 !== e.indexOf(n)) continue; t[n] = r[n]; } return t; }
10
12
  function asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
11
13
  function _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
12
14
  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; }
@@ -14,6 +16,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
14
16
  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; }
15
17
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
16
18
  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); }
19
+ 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); }
17
20
  var config = require('../config');
18
21
 
19
22
  // Get auth token from localStorage or other auth mechanism
@@ -28,24 +31,46 @@ var getAuthToken = exports.getAuthToken = function getAuthToken() {
28
31
  }
29
32
  return null;
30
33
  };
34
+ var isFormDataBody = function isFormDataBody(body) {
35
+ if (!body || _typeof(body) !== 'object') return false;
36
+ if (typeof FormData !== 'undefined' && body instanceof FormData) return true;
37
+ return Object.prototype.toString.call(body) === '[object FormData]';
38
+ };
31
39
 
32
- // Create headers with authentication
40
+ // Create headers with authentication.
41
+ // FormData must not set Content-Type — the browser needs the multipart boundary.
33
42
  var createAuthHeaders = exports.createAuthHeaders = function createAuthHeaders() {
34
43
  var additionalHeaders = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
44
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
45
+ omitJsonContentType = _ref.omitJsonContentType;
35
46
  var token = getAuthToken();
36
- return _objectSpread(_objectSpread({
37
- 'Content-Type': 'application/json'
38
- }, token && {
47
+ var headers = _objectSpread(_objectSpread({}, token && {
39
48
  'Authorization': "Bearer ".concat(token)
40
49
  }), additionalHeaders);
50
+ if (omitJsonContentType) {
51
+ Object.keys(headers).forEach(function (key) {
52
+ if (key.toLowerCase() === 'content-type') delete headers[key];
53
+ });
54
+ return headers;
55
+ }
56
+ var hasContentType = Object.keys(headers).some(function (key) {
57
+ return key.toLowerCase() === 'content-type';
58
+ });
59
+ if (!hasContentType) {
60
+ headers['Content-Type'] = 'application/json';
61
+ }
62
+ return headers;
41
63
  };
42
64
 
43
65
  // API helper function with authentication
44
66
  var apiCall = exports.apiCall = /*#__PURE__*/function () {
45
- var _ref = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(apiUrl, endpoint, projectId) {
67
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(apiUrl, endpoint, projectId) {
46
68
  var options,
47
69
  url,
48
70
  separator,
71
+ optionHeaders,
72
+ rest,
73
+ isFormData,
49
74
  requestConfig,
50
75
  response,
51
76
  data,
@@ -65,11 +90,14 @@ var apiCall = exports.apiCall = /*#__PURE__*/function () {
65
90
  separator = endpoint.includes('?') ? '&' : '?';
66
91
  url = "".concat(url).concat(separator, "projectId=").concat(projectId);
67
92
  }
68
- console.log('url', url);
69
- requestConfig = _objectSpread({
70
- headers: createAuthHeaders(options.headers)
71
- }, options); // If body is provided and is an object, stringify it
72
- if (requestConfig.body && _typeof(requestConfig.body) === 'object' && !(requestConfig.body instanceof FormData)) {
93
+ optionHeaders = options.headers, rest = _objectWithoutProperties(options, _excluded);
94
+ isFormData = isFormDataBody(rest.body);
95
+ requestConfig = _objectSpread(_objectSpread({}, rest), {}, {
96
+ headers: createAuthHeaders(optionHeaders, {
97
+ omitJsonContentType: isFormData
98
+ })
99
+ });
100
+ if (requestConfig.body && _typeof(requestConfig.body) === 'object' && !isFormData) {
73
101
  requestConfig.body = JSON.stringify(requestConfig.body);
74
102
  }
75
103
  _context.n = 1;
@@ -89,6 +117,6 @@ var apiCall = exports.apiCall = /*#__PURE__*/function () {
89
117
  }, _callee);
90
118
  }));
91
119
  return function apiCall(_x, _x2, _x3) {
92
- return _ref.apply(this, arguments);
120
+ return _ref2.apply(this, arguments);
93
121
  };
94
122
  }();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "5.9.1",
3
+ "version": "5.10.1",
4
4
  "main": "dist/index.js",
5
5
  "scripts": {
6
6
  "build": "babel src -d dist --copy-files",