powr-sdk-web 6.12.0 → 6.13.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.
@@ -55,5 +55,10 @@ var CORE_SECTION_LOADERS = exports.CORE_SECTION_LOADERS = {
55
55
  return Promise.resolve().then(function () {
56
56
  return _interopRequireWildcard(require('../track/admin'));
57
57
  });
58
+ },
59
+ scheduler: function scheduler() {
60
+ return Promise.resolve().then(function () {
61
+ return _interopRequireWildcard(require('../scheduler/admin'));
62
+ });
58
63
  }
59
64
  };
package/dist/config.js CHANGED
@@ -7,5 +7,12 @@ var config = {
7
7
  powrUrl: process.env.NEXT_PUBLIC_POWR_URL,
8
8
  defaultPowrUrl: DEFAULT_POWR_API_URL
9
9
  };
10
+
11
+ /** Prop, then NEXT_PUBLIC_POWR_URL, then the stable host. Empty prop must not become the URL "undefined". */
12
+ function resolvePowrApiUrl(apiUrl) {
13
+ var raw = apiUrl || config.powrUrl || config.defaultPowrUrl || "";
14
+ return String(raw).replace(/\/$/, "");
15
+ }
10
16
  module.exports = config;
11
- module.exports.DEFAULT_POWR_API_URL = DEFAULT_POWR_API_URL;
17
+ module.exports.DEFAULT_POWR_API_URL = DEFAULT_POWR_API_URL;
18
+ module.exports.resolvePowrApiUrl = resolvePowrApiUrl;
@@ -111,6 +111,7 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
111
111
  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; }
112
112
  function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
113
113
  function _toPrimitive(t, e) { if ("object" != _typeof(t) || !t) return t; var r; if ("undefined" != typeof Symbol && void 0 !== (r = t[Symbol.toPrimitive])) { var i = r.call(t, e || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === e ? String : Number)(t); }
114
+ var config = require('../config');
114
115
  function getUserId(user) {
115
116
  if (!user) return null;
116
117
  var id = user.powrId || user._id || user.id;
@@ -267,7 +268,7 @@ function _refreshAccessToken() {
267
268
  }
268
269
  });
269
270
  case 1:
270
- url = "".concat(apiUrl, "/auth/refresh-token?projectId=").concat(projectId);
271
+ url = "".concat(config.resolvePowrApiUrl(apiUrl), "/auth/refresh-token?projectId=").concat(projectId);
271
272
  _context3.n = 2;
272
273
  return fetch(url, {
273
274
  method: 'POST',
@@ -310,19 +311,20 @@ function updatePowrUser(_x5) {
310
311
  }
311
312
  function _updatePowrUser() {
312
313
  _updatePowrUser = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(_ref2) {
313
- var apiUrl, projectId, userId, token, refreshToken, body, onTokenRefreshed, activeToken, putUser, response, data, refreshed;
314
+ var apiUrl, projectId, userId, token, refreshToken, body, onTokenRefreshed, activeToken, host, putUser, response, data, refreshed;
314
315
  return _regenerator().w(function (_context5) {
315
316
  while (1) switch (_context5.n) {
316
317
  case 0:
317
318
  apiUrl = _ref2.apiUrl, projectId = _ref2.projectId, userId = _ref2.userId, token = _ref2.token, refreshToken = _ref2.refreshToken, body = _ref2.body, onTokenRefreshed = _ref2.onTokenRefreshed;
318
319
  activeToken = token;
320
+ host = config.resolvePowrApiUrl(apiUrl);
319
321
  putUser = /*#__PURE__*/function () {
320
322
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4() {
321
323
  var url;
322
324
  return _regenerator().w(function (_context4) {
323
325
  while (1) switch (_context4.n) {
324
326
  case 0:
325
- url = "".concat(apiUrl, "/users/").concat(userId, "?projectId=").concat(projectId);
327
+ url = "".concat(host, "/users/").concat(userId, "?projectId=").concat(projectId);
326
328
  return _context4.a(2, fetch(url, {
327
329
  method: 'PUT',
328
330
  headers: {
@@ -354,7 +356,7 @@ function _updatePowrUser() {
354
356
  }
355
357
  _context5.n = 3;
356
358
  return refreshAccessToken({
357
- apiUrl: apiUrl,
359
+ apiUrl: host,
358
360
  projectId: projectId,
359
361
  refreshToken: refreshToken
360
362
  });
@@ -0,0 +1,212 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports["default"] = PowrSchedulerAdmin;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _auth = require("../utils/auth");
9
+ var _config = require("../config");
10
+ var _session = require("../session");
11
+ var cache;
12
+ function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var r, c, a = Object.defineProperty, n = { __proto__: null, "default": e }; if (Object(e) !== e) return n; if (cache || "function" != typeof WeakMap || (cache = new WeakMap()), cache) { if (cache.has(e)) return cache.get(e); cache.set(e, n); } for (c in e) "default" !== c && {}.hasOwnProperty.call(e, c) && ((r = a && Object.getOwnPropertyDescriptor(e, c)) && (r.get || r.set) ? a(n, c, r) : n[c] = e[c]); return n; }
13
+ 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 }; })(); }
14
+ 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); }
15
+ 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); }
16
+ 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); }); }; }
17
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
18
+ 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."); }
19
+ 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; } }
20
+ 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; }
21
+ 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; } }
22
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
23
+ function when(value) {
24
+ if (!value) return "—";
25
+ var date = new Date(value);
26
+ if (Number.isNaN(date.getTime())) return "—";
27
+ return date.toLocaleString();
28
+ }
29
+ function PowrSchedulerAdmin(_ref) {
30
+ var projectId = _ref.projectId,
31
+ apiUrl = _ref.apiUrl;
32
+ var session = (0, _session.usePowrSession)();
33
+ var _useState = (0, _react.useState)([]),
34
+ _useState2 = _slicedToArray(_useState, 2),
35
+ rows = _useState2[0],
36
+ setRows = _useState2[1];
37
+ var _useState3 = (0, _react.useState)(true),
38
+ _useState4 = _slicedToArray(_useState3, 2),
39
+ loading = _useState4[0],
40
+ setLoading = _useState4[1];
41
+ var _useState5 = (0, _react.useState)(""),
42
+ _useState6 = _slicedToArray(_useState5, 2),
43
+ error = _useState6[0],
44
+ setError = _useState6[1];
45
+ var _useState7 = (0, _react.useState)(""),
46
+ _useState8 = _slicedToArray(_useState7, 2),
47
+ busy = _useState8[0],
48
+ setBusy = _useState8[1];
49
+ var load = (0, _react.useCallback)(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
50
+ var host, headers, _yield$apiCall, data, ok;
51
+ return _regenerator().w(function (_context) {
52
+ while (1) switch (_context.n) {
53
+ case 0:
54
+ setLoading(true);
55
+ setError("");
56
+ host = apiUrl || _config.DEFAULT_POWR_API_URL;
57
+ headers = session !== null && session !== void 0 && session.token ? {
58
+ Authorization: "Bearer ".concat(session.token)
59
+ } : undefined;
60
+ _context.n = 1;
61
+ return (0, _auth.apiCall)(host, "/scheduler", projectId, {
62
+ headers: headers
63
+ });
64
+ case 1:
65
+ _yield$apiCall = _context.v;
66
+ data = _yield$apiCall.data;
67
+ ok = _yield$apiCall.ok;
68
+ if (!ok || !(data !== null && data !== void 0 && data.success)) {
69
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Failed to load schedules.");
70
+ setRows([]);
71
+ } else {
72
+ setRows(Array.isArray(data.data) ? data.data : []);
73
+ }
74
+ setLoading(false);
75
+ case 2:
76
+ return _context.a(2);
77
+ }
78
+ }, _callee);
79
+ })), [apiUrl, projectId, session === null || session === void 0 ? void 0 : session.token]);
80
+ (0, _react.useEffect)(function () {
81
+ load()["catch"](function () {
82
+ setError("Failed to load schedules.");
83
+ setLoading(false);
84
+ });
85
+ }, [load]);
86
+ function send(_x, _x2, _x3) {
87
+ return _send.apply(this, arguments);
88
+ }
89
+ function _send() {
90
+ _send = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(id, path, _ref3) {
91
+ var method, body, host, headers, _yield$apiCall2, data, ok;
92
+ return _regenerator().w(function (_context2) {
93
+ while (1) switch (_context2.p = _context2.n) {
94
+ case 0:
95
+ method = _ref3.method, body = _ref3.body;
96
+ setBusy(id + path);
97
+ setError("");
98
+ _context2.p = 1;
99
+ host = apiUrl || _config.DEFAULT_POWR_API_URL;
100
+ headers = session !== null && session !== void 0 && session.token ? {
101
+ Authorization: "Bearer ".concat(session.token)
102
+ } : undefined;
103
+ _context2.n = 2;
104
+ return (0, _auth.apiCall)(host, path, projectId, {
105
+ method: method,
106
+ headers: headers,
107
+ body: body
108
+ });
109
+ case 2:
110
+ _yield$apiCall2 = _context2.v;
111
+ data = _yield$apiCall2.data;
112
+ ok = _yield$apiCall2.ok;
113
+ if (!(!ok || !(data !== null && data !== void 0 && data.success))) {
114
+ _context2.n = 3;
115
+ break;
116
+ }
117
+ setError((data === null || data === void 0 ? void 0 : data.message) || "Could not update.");
118
+ return _context2.a(2);
119
+ case 3:
120
+ _context2.n = 4;
121
+ return load();
122
+ case 4:
123
+ _context2.p = 4;
124
+ setBusy("");
125
+ return _context2.f(4);
126
+ case 5:
127
+ return _context2.a(2);
128
+ }
129
+ }, _callee2, null, [[1,, 4, 5]]);
130
+ }));
131
+ return _send.apply(this, arguments);
132
+ }
133
+ if (loading) return /*#__PURE__*/_react["default"].createElement("p", null, "Loading schedules\u2026");
134
+ if (error && !rows.length) return /*#__PURE__*/_react["default"].createElement("p", null, error);
135
+ if (!rows.length) return /*#__PURE__*/_react["default"].createElement("p", null, "No schedules for this project.");
136
+ return /*#__PURE__*/_react["default"].createElement("div", null, error ? /*#__PURE__*/_react["default"].createElement("p", null, error) : null, /*#__PURE__*/_react["default"].createElement("table", {
137
+ style: {
138
+ width: "100%",
139
+ borderCollapse: "collapse",
140
+ fontSize: 14
141
+ }
142
+ }, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", null, ["Name", "When", "On", "Last run", "Result", ""].map(function (label) {
143
+ return /*#__PURE__*/_react["default"].createElement("th", {
144
+ key: label || "actions",
145
+ style: {
146
+ textAlign: "left",
147
+ padding: "8px 6px",
148
+ borderBottom: "1px solid #e5e7eb"
149
+ }
150
+ }, label);
151
+ }))), /*#__PURE__*/_react["default"].createElement("tbody", null, rows.map(function (row) {
152
+ var result = row.lastOk == null ? "—" : row.lastOk ? "OK" : row.lastError || "Fail";
153
+ return /*#__PURE__*/_react["default"].createElement("tr", {
154
+ key: row._id
155
+ }, /*#__PURE__*/_react["default"].createElement("td", {
156
+ style: {
157
+ padding: "8px 6px",
158
+ verticalAlign: "top"
159
+ }
160
+ }, row.name), /*#__PURE__*/_react["default"].createElement("td", {
161
+ style: {
162
+ padding: "8px 6px",
163
+ verticalAlign: "top"
164
+ }
165
+ }, row.when || row.cron), /*#__PURE__*/_react["default"].createElement("td", {
166
+ style: {
167
+ padding: "8px 6px",
168
+ verticalAlign: "top"
169
+ }
170
+ }, row.enabled ? "On" : "Off"), /*#__PURE__*/_react["default"].createElement("td", {
171
+ style: {
172
+ padding: "8px 6px",
173
+ verticalAlign: "top"
174
+ }
175
+ }, when(row.lastRunAt)), /*#__PURE__*/_react["default"].createElement("td", {
176
+ style: {
177
+ padding: "8px 6px",
178
+ verticalAlign: "top",
179
+ color: row.lastOk === false ? "#b91c1c" : "inherit"
180
+ }
181
+ }, result), /*#__PURE__*/_react["default"].createElement("td", {
182
+ style: {
183
+ padding: "8px 6px",
184
+ verticalAlign: "top",
185
+ whiteSpace: "nowrap"
186
+ }
187
+ }, /*#__PURE__*/_react["default"].createElement("button", {
188
+ type: "button",
189
+ disabled: busy !== "",
190
+ onClick: function onClick() {
191
+ return send(row._id, "/scheduler/".concat(row._id), {
192
+ method: "PATCH",
193
+ body: {
194
+ enabled: !row.enabled
195
+ }
196
+ });
197
+ },
198
+ style: {
199
+ marginRight: 8
200
+ }
201
+ }, row.enabled ? "Turn off" : "Turn on"), /*#__PURE__*/_react["default"].createElement("button", {
202
+ type: "button",
203
+ disabled: busy !== "",
204
+ onClick: function onClick() {
205
+ return send(row._id, "/scheduler/".concat(row._id, "/run"), {
206
+ method: "POST",
207
+ body: {}
208
+ });
209
+ }
210
+ }, "Run now")));
211
+ }))));
212
+ }
@@ -72,12 +72,6 @@ function parseDest(url) {
72
72
  return null;
73
73
  }
74
74
  }
75
- function resolvePowrApiUrl(apiUrl) {
76
- if (apiUrl) return String(apiUrl).replace(/\/$/, "");
77
- if (config.powrUrl) return String(config.powrUrl).replace(/\/$/, "");
78
- if (config.defaultPowrUrl) return String(config.defaultPowrUrl).replace(/\/$/, "");
79
- return "";
80
- }
81
75
 
82
76
  /**
83
77
  * @param {string} url
@@ -163,7 +157,7 @@ function _openPowrLogin() {
163
157
  apiUrl = options.apiUrl, projectIdOpt = options.projectId, origins = options.origins, _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) {
164
158
  if (typeof window !== "undefined") window.location.assign(ssoUrl);
165
159
  } : _options$navigate;
166
- powrApi = resolvePowrApiUrl(apiUrl);
160
+ powrApi = config.resolvePowrApiUrl(apiUrl);
167
161
  dest = matchPowrTarget(url, origins);
168
162
  projectId = projectIdOpt || (dest === null || dest === void 0 ? void 0 : dest.projectId);
169
163
  if (!(!dest || !token || !powrApi || !projectId)) {
@@ -69,6 +69,7 @@ var createAuthHeaders = exports.createAuthHeaders = function createAuthHeaders()
69
69
  var apiCall = exports.apiCall = /*#__PURE__*/function () {
70
70
  var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(apiUrl, endpoint, projectId) {
71
71
  var options,
72
+ host,
72
73
  url,
73
74
  separator,
74
75
  optionHeaders,
@@ -82,12 +83,8 @@ var apiCall = exports.apiCall = /*#__PURE__*/function () {
82
83
  while (1) switch (_context.n) {
83
84
  case 0:
84
85
  options = _args.length > 3 && _args[3] !== undefined ? _args[3] : {};
85
- if (apiUrl) {} else if (config.powrUrl) {
86
- apiUrl = config.powrUrl;
87
- } else {
88
- apiUrl = config.defaultPowrUrl;
89
- }
90
- url = "".concat(apiUrl).concat(endpoint); // Prop wins; NEXT_PUBLIC_PROJECT_ID is the default for every component.
86
+ host = config.resolvePowrApiUrl(apiUrl);
87
+ url = "".concat(host).concat(endpoint); // Prop wins; NEXT_PUBLIC_PROJECT_ID is the default for every component.
91
88
  if (!projectId && config.projectId) {
92
89
  projectId = config.projectId;
93
90
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "powr-sdk-web",
3
- "version": "6.12.0",
3
+ "version": "6.13.0",
4
4
  "main": "dist/index.js",
5
5
  "files": [
6
6
  "dist"