powr-sdk-web 4.0.7 → 4.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -93,6 +93,12 @@ Object.defineProperty(exports, "PowrBaseWaitlist", {
93
93
  return _waitlists["default"];
94
94
  }
95
95
  });
96
+ Object.defineProperty(exports, "PowrScheduledTasks", {
97
+ enumerable: true,
98
+ get: function get() {
99
+ return _PowrScheduledTasks["default"];
100
+ }
101
+ });
96
102
  Object.defineProperty(exports, "PowrTable", {
97
103
  enumerable: true,
98
104
  get: function get() {
@@ -115,4 +121,5 @@ var _chat = _interopRequireDefault(require("./chat"));
115
121
  var _feeds = _interopRequireDefault(require("./feeds"));
116
122
  var _admin = _interopRequireDefault(require("./admin"));
117
123
  var _tools = _interopRequireDefault(require("./tools"));
124
+ var _PowrScheduledTasks = _interopRequireDefault(require("./scheduledTasks/PowrScheduledTasks"));
118
125
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
@@ -0,0 +1,951 @@
1
+ "use strict";
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); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _lucideReact = require("lucide-react");
10
+ 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 _t7 in e) "default" !== _t7 && {}.hasOwnProperty.call(e, _t7) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t7)) && (i.get || i.set) ? o(f, _t7, i) : f[_t7] = e[_t7]); return f; })(e, t); }
11
+ 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; }
12
+ 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; }
13
+ 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; }
14
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
15
+ 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); }
16
+ 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 }; })(); }
17
+ 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); }
18
+ 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); }
19
+ 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); }); }; }
20
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
21
+ 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."); }
22
+ 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; } }
23
+ 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; }
24
+ 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; } }
25
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
26
+ var PowrScheduledTasks = function PowrScheduledTasks(_ref) {
27
+ var _tools$find;
28
+ var apiUrl = _ref.apiUrl,
29
+ onError = _ref.onError,
30
+ projectId = _ref.projectId;
31
+ var _useState = (0, _react.useState)([]),
32
+ _useState2 = _slicedToArray(_useState, 2),
33
+ tasks = _useState2[0],
34
+ setTasks = _useState2[1];
35
+ var _useState3 = (0, _react.useState)([]),
36
+ _useState4 = _slicedToArray(_useState3, 2),
37
+ tools = _useState4[0],
38
+ setTools = _useState4[1];
39
+ var _useState5 = (0, _react.useState)(true),
40
+ _useState6 = _slicedToArray(_useState5, 2),
41
+ loading = _useState6[0],
42
+ setLoading = _useState6[1];
43
+ var _useState7 = (0, _react.useState)(false),
44
+ _useState8 = _slicedToArray(_useState7, 2),
45
+ showCreateModal = _useState8[0],
46
+ setShowCreateModal = _useState8[1];
47
+ var _useState9 = (0, _react.useState)(null),
48
+ _useState0 = _slicedToArray(_useState9, 2),
49
+ editingTask = _useState0[0],
50
+ setEditingTask = _useState0[1];
51
+ var _useState1 = (0, _react.useState)({
52
+ name: '',
53
+ description: '',
54
+ cronExpression: '',
55
+ toolId: '',
56
+ actionId: '',
57
+ params: {},
58
+ isActive: true
59
+ }),
60
+ _useState10 = _slicedToArray(_useState1, 2),
61
+ formData = _useState10[0],
62
+ setFormData = _useState10[1];
63
+ (0, _react.useEffect)(function () {
64
+ fetchTasks();
65
+ fetchTools();
66
+ }, []);
67
+ var fetchTasks = /*#__PURE__*/function () {
68
+ var _ref2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee() {
69
+ var response, result, _t;
70
+ return _regenerator().w(function (_context) {
71
+ while (1) switch (_context.n) {
72
+ case 0:
73
+ _context.p = 0;
74
+ _context.n = 1;
75
+ return fetch("".concat(apiUrl, "/scheduled-tasks"));
76
+ case 1:
77
+ response = _context.v;
78
+ _context.n = 2;
79
+ return response.json();
80
+ case 2:
81
+ result = _context.v;
82
+ if (result.success) {
83
+ setTasks(result.tasks || []);
84
+ } else {
85
+ onError && onError(result.message);
86
+ }
87
+ _context.n = 4;
88
+ break;
89
+ case 3:
90
+ _context.p = 3;
91
+ _t = _context.v;
92
+ console.error('Error fetching tasks:', _t);
93
+ onError && onError('Failed to fetch scheduled tasks');
94
+ case 4:
95
+ _context.p = 4;
96
+ setLoading(false);
97
+ return _context.f(4);
98
+ case 5:
99
+ return _context.a(2);
100
+ }
101
+ }, _callee, null, [[0, 3, 4, 5]]);
102
+ }));
103
+ return function fetchTasks() {
104
+ return _ref2.apply(this, arguments);
105
+ };
106
+ }();
107
+ var fetchTools = /*#__PURE__*/function () {
108
+ var _ref3 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2() {
109
+ var response, result, _t2;
110
+ return _regenerator().w(function (_context2) {
111
+ while (1) switch (_context2.n) {
112
+ case 0:
113
+ _context2.p = 0;
114
+ _context2.n = 1;
115
+ return fetch("".concat(apiUrl, "/tools"));
116
+ case 1:
117
+ response = _context2.v;
118
+ _context2.n = 2;
119
+ return response.json();
120
+ case 2:
121
+ result = _context2.v;
122
+ if (result.success) {
123
+ setTools(result.data || []);
124
+ }
125
+ _context2.n = 4;
126
+ break;
127
+ case 3:
128
+ _context2.p = 3;
129
+ _t2 = _context2.v;
130
+ console.error('Error fetching tools:', _t2);
131
+ case 4:
132
+ return _context2.a(2);
133
+ }
134
+ }, _callee2, null, [[0, 3]]);
135
+ }));
136
+ return function fetchTools() {
137
+ return _ref3.apply(this, arguments);
138
+ };
139
+ }();
140
+ var handleSubmit = /*#__PURE__*/function () {
141
+ var _ref4 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(e) {
142
+ var url, method, response, result, _t3;
143
+ return _regenerator().w(function (_context3) {
144
+ while (1) switch (_context3.n) {
145
+ case 0:
146
+ e.preventDefault();
147
+ _context3.p = 1;
148
+ url = editingTask ? "".concat(apiUrl, "/scheduled-tasks/").concat(editingTask.id) : "".concat(apiUrl, "/scheduled-tasks");
149
+ method = editingTask ? 'PUT' : 'POST';
150
+ _context3.n = 2;
151
+ return fetch(url, {
152
+ method: method,
153
+ headers: {
154
+ 'Content-Type': 'application/json'
155
+ },
156
+ body: JSON.stringify(formData)
157
+ });
158
+ case 2:
159
+ response = _context3.v;
160
+ _context3.n = 3;
161
+ return response.json();
162
+ case 3:
163
+ result = _context3.v;
164
+ if (result.success) {
165
+ setShowCreateModal(false);
166
+ setEditingTask(null);
167
+ resetForm();
168
+ fetchTasks();
169
+ } else {
170
+ onError && onError(result.message);
171
+ }
172
+ _context3.n = 5;
173
+ break;
174
+ case 4:
175
+ _context3.p = 4;
176
+ _t3 = _context3.v;
177
+ console.error('Error saving task:', _t3);
178
+ onError && onError('Failed to save task');
179
+ case 5:
180
+ return _context3.a(2);
181
+ }
182
+ }, _callee3, null, [[1, 4]]);
183
+ }));
184
+ return function handleSubmit(_x) {
185
+ return _ref4.apply(this, arguments);
186
+ };
187
+ }();
188
+ var handleToggleTask = /*#__PURE__*/function () {
189
+ var _ref5 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(taskId, isActive) {
190
+ var response, result, _t4;
191
+ return _regenerator().w(function (_context4) {
192
+ while (1) switch (_context4.n) {
193
+ case 0:
194
+ _context4.p = 0;
195
+ _context4.n = 1;
196
+ return fetch("".concat(apiUrl, "/scheduled-tasks/").concat(taskId, "/toggle"), {
197
+ method: 'POST',
198
+ headers: {
199
+ 'Content-Type': 'application/json'
200
+ },
201
+ body: JSON.stringify({
202
+ isActive: isActive
203
+ })
204
+ });
205
+ case 1:
206
+ response = _context4.v;
207
+ _context4.n = 2;
208
+ return response.json();
209
+ case 2:
210
+ result = _context4.v;
211
+ if (result.success) {
212
+ fetchTasks();
213
+ } else {
214
+ onError && onError(result.message);
215
+ }
216
+ _context4.n = 4;
217
+ break;
218
+ case 3:
219
+ _context4.p = 3;
220
+ _t4 = _context4.v;
221
+ console.error('Error toggling task:', _t4);
222
+ onError && onError('Failed to toggle task');
223
+ case 4:
224
+ return _context4.a(2);
225
+ }
226
+ }, _callee4, null, [[0, 3]]);
227
+ }));
228
+ return function handleToggleTask(_x2, _x3) {
229
+ return _ref5.apply(this, arguments);
230
+ };
231
+ }();
232
+ var handleExecuteTask = /*#__PURE__*/function () {
233
+ var _ref6 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(taskId) {
234
+ var response, result, _t5;
235
+ return _regenerator().w(function (_context5) {
236
+ while (1) switch (_context5.n) {
237
+ case 0:
238
+ _context5.p = 0;
239
+ _context5.n = 1;
240
+ return fetch("".concat(apiUrl, "/scheduled-tasks/").concat(taskId, "/execute"), {
241
+ method: 'POST'
242
+ });
243
+ case 1:
244
+ response = _context5.v;
245
+ _context5.n = 2;
246
+ return response.json();
247
+ case 2:
248
+ result = _context5.v;
249
+ if (result.success) {
250
+ onError && onError('Task executed successfully!');
251
+ fetchTasks();
252
+ } else {
253
+ onError && onError(result.message);
254
+ }
255
+ _context5.n = 4;
256
+ break;
257
+ case 3:
258
+ _context5.p = 3;
259
+ _t5 = _context5.v;
260
+ console.error('Error executing task:', _t5);
261
+ onError && onError('Failed to execute task');
262
+ case 4:
263
+ return _context5.a(2);
264
+ }
265
+ }, _callee5, null, [[0, 3]]);
266
+ }));
267
+ return function handleExecuteTask(_x4) {
268
+ return _ref6.apply(this, arguments);
269
+ };
270
+ }();
271
+ var handleDeleteTask = /*#__PURE__*/function () {
272
+ var _ref7 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee6(taskId) {
273
+ var response, result, _t6;
274
+ return _regenerator().w(function (_context6) {
275
+ while (1) switch (_context6.n) {
276
+ case 0:
277
+ if (confirm('Are you sure you want to delete this task?')) {
278
+ _context6.n = 1;
279
+ break;
280
+ }
281
+ return _context6.a(2);
282
+ case 1:
283
+ _context6.p = 1;
284
+ _context6.n = 2;
285
+ return fetch("".concat(apiUrl, "/scheduled-tasks/").concat(taskId), {
286
+ method: 'DELETE'
287
+ });
288
+ case 2:
289
+ response = _context6.v;
290
+ _context6.n = 3;
291
+ return response.json();
292
+ case 3:
293
+ result = _context6.v;
294
+ if (result.success) {
295
+ fetchTasks();
296
+ } else {
297
+ onError && onError(result.message);
298
+ }
299
+ _context6.n = 5;
300
+ break;
301
+ case 4:
302
+ _context6.p = 4;
303
+ _t6 = _context6.v;
304
+ console.error('Error deleting task:', _t6);
305
+ onError && onError('Failed to delete task');
306
+ case 5:
307
+ return _context6.a(2);
308
+ }
309
+ }, _callee6, null, [[1, 4]]);
310
+ }));
311
+ return function handleDeleteTask(_x5) {
312
+ return _ref7.apply(this, arguments);
313
+ };
314
+ }();
315
+ var handleEditTask = function handleEditTask(task) {
316
+ setEditingTask(task);
317
+ setFormData({
318
+ name: task.name,
319
+ description: task.description,
320
+ cronExpression: task.cronExpression,
321
+ toolId: task.toolId,
322
+ actionId: task.actionId,
323
+ params: task.params,
324
+ isActive: task.isActive
325
+ });
326
+ setShowCreateModal(true);
327
+ };
328
+ var resetForm = function resetForm() {
329
+ setFormData({
330
+ name: '',
331
+ description: '',
332
+ cronExpression: '',
333
+ toolId: '',
334
+ actionId: '',
335
+ params: {},
336
+ isActive: true
337
+ });
338
+ };
339
+ var getToolName = function getToolName(toolId) {
340
+ var tool = tools.find(function (t) {
341
+ return t.id === toolId;
342
+ });
343
+ return (tool === null || tool === void 0 ? void 0 : tool.name) || toolId;
344
+ };
345
+ var getActionName = function getActionName(toolId, actionId) {
346
+ var _tool$actions;
347
+ var tool = tools.find(function (t) {
348
+ return t.id === toolId;
349
+ });
350
+ var action = tool === null || tool === void 0 || (_tool$actions = tool.actions) === null || _tool$actions === void 0 ? void 0 : _tool$actions.find(function (a) {
351
+ return a.id === actionId;
352
+ });
353
+ return (action === null || action === void 0 ? void 0 : action.name) || actionId;
354
+ };
355
+ var formatCronExpression = function formatCronExpression(cron) {
356
+ var parts = cron.split(' ');
357
+ if (parts.length === 5) {
358
+ var _parts = _slicedToArray(parts, 5),
359
+ minute = _parts[0],
360
+ hour = _parts[1],
361
+ day = _parts[2],
362
+ month = _parts[3],
363
+ weekday = _parts[4];
364
+ return "".concat(minute, " ").concat(hour, " ").concat(day, " ").concat(month, " ").concat(weekday);
365
+ }
366
+ return cron;
367
+ };
368
+ var formatDate = function formatDate(dateString) {
369
+ if (!dateString) return 'Never';
370
+ return new Date(dateString).toLocaleString();
371
+ };
372
+ if (loading) {
373
+ return /*#__PURE__*/_react["default"].createElement("div", {
374
+ style: {
375
+ padding: '20px',
376
+ textAlign: 'center'
377
+ }
378
+ }, /*#__PURE__*/_react["default"].createElement("div", null, "Loading scheduled tasks..."));
379
+ }
380
+ return /*#__PURE__*/_react["default"].createElement("div", {
381
+ style: {
382
+ padding: '20px',
383
+ maxWidth: '1200px',
384
+ margin: '0 auto'
385
+ }
386
+ }, /*#__PURE__*/_react["default"].createElement("div", {
387
+ style: {
388
+ display: 'flex',
389
+ justifyContent: 'space-between',
390
+ alignItems: 'center',
391
+ marginBottom: '30px',
392
+ borderBottom: '1px solid #e5e7eb',
393
+ paddingBottom: '20px'
394
+ }
395
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("h1", {
396
+ style: {
397
+ fontSize: '2rem',
398
+ fontWeight: 'bold',
399
+ color: '#1f2937',
400
+ margin: '0 0 8px 0'
401
+ }
402
+ }, "\uD83D\uDCC5 Scheduled Tasks"), /*#__PURE__*/_react["default"].createElement("p", {
403
+ style: {
404
+ color: '#6b7280',
405
+ margin: '0',
406
+ fontSize: '1.1rem'
407
+ }
408
+ }, "Manage your automated workflows and scheduled actions")), /*#__PURE__*/_react["default"].createElement("button", {
409
+ onClick: function onClick() {
410
+ setEditingTask(null);
411
+ resetForm();
412
+ setShowCreateModal(true);
413
+ },
414
+ style: {
415
+ background: 'linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%)',
416
+ color: 'white',
417
+ padding: '12px 24px',
418
+ borderRadius: '8px',
419
+ border: 'none',
420
+ fontSize: '1rem',
421
+ fontWeight: '600',
422
+ cursor: 'pointer',
423
+ display: 'flex',
424
+ alignItems: 'center',
425
+ gap: '8px',
426
+ transition: 'all 0.3s ease',
427
+ boxShadow: '0 4px 15px rgba(59, 130, 246, 0.3)'
428
+ }
429
+ }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Plus, {
430
+ size: 20
431
+ }), "Create Task")), /*#__PURE__*/_react["default"].createElement("div", {
432
+ style: {
433
+ background: 'white',
434
+ borderRadius: '12px',
435
+ boxShadow: '0 4px 6px -1px rgba(0, 0, 0, 0.1)',
436
+ overflow: 'hidden'
437
+ }
438
+ }, tasks.length === 0 ? /*#__PURE__*/_react["default"].createElement("div", {
439
+ style: {
440
+ padding: '60px 20px',
441
+ textAlign: 'center',
442
+ color: '#6b7280'
443
+ }
444
+ }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Clock, {
445
+ size: 48,
446
+ style: {
447
+ marginBottom: '16px',
448
+ opacity: 0.5
449
+ }
450
+ }), /*#__PURE__*/_react["default"].createElement("h3", {
451
+ style: {
452
+ margin: '0 0 8px 0',
453
+ fontSize: '1.25rem'
454
+ }
455
+ }, "No scheduled tasks yet"), /*#__PURE__*/_react["default"].createElement("p", {
456
+ style: {
457
+ margin: '0 0 24px 0'
458
+ }
459
+ }, "Create your first scheduled task to automate your workflows"), /*#__PURE__*/_react["default"].createElement("button", {
460
+ onClick: function onClick() {
461
+ setEditingTask(null);
462
+ resetForm();
463
+ setShowCreateModal(true);
464
+ },
465
+ style: {
466
+ background: 'linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%)',
467
+ color: 'white',
468
+ padding: '10px 20px',
469
+ borderRadius: '6px',
470
+ border: 'none',
471
+ fontSize: '0.9rem',
472
+ fontWeight: '500',
473
+ cursor: 'pointer'
474
+ }
475
+ }, "Create Your First Task")) : /*#__PURE__*/_react["default"].createElement("div", {
476
+ style: {
477
+ overflowX: 'auto'
478
+ }
479
+ }, /*#__PURE__*/_react["default"].createElement("table", {
480
+ style: {
481
+ width: '100%',
482
+ borderCollapse: 'collapse',
483
+ fontSize: '0.9rem'
484
+ }
485
+ }, /*#__PURE__*/_react["default"].createElement("thead", null, /*#__PURE__*/_react["default"].createElement("tr", {
486
+ style: {
487
+ background: '#f9fafb',
488
+ borderBottom: '1px solid #e5e7eb'
489
+ }
490
+ }, /*#__PURE__*/_react["default"].createElement("th", {
491
+ style: {
492
+ padding: '16px',
493
+ textAlign: 'left',
494
+ fontWeight: '600',
495
+ color: '#374151'
496
+ }
497
+ }, "Task"), /*#__PURE__*/_react["default"].createElement("th", {
498
+ style: {
499
+ padding: '16px',
500
+ textAlign: 'left',
501
+ fontWeight: '600',
502
+ color: '#374151'
503
+ }
504
+ }, "Schedule"), /*#__PURE__*/_react["default"].createElement("th", {
505
+ style: {
506
+ padding: '16px',
507
+ textAlign: 'left',
508
+ fontWeight: '600',
509
+ color: '#374151'
510
+ }
511
+ }, "Last Run"), /*#__PURE__*/_react["default"].createElement("th", {
512
+ style: {
513
+ padding: '16px',
514
+ textAlign: 'left',
515
+ fontWeight: '600',
516
+ color: '#374151'
517
+ }
518
+ }, "Next Run"), /*#__PURE__*/_react["default"].createElement("th", {
519
+ style: {
520
+ padding: '16px',
521
+ textAlign: 'center',
522
+ fontWeight: '600',
523
+ color: '#374151'
524
+ }
525
+ }, "Status"), /*#__PURE__*/_react["default"].createElement("th", {
526
+ style: {
527
+ padding: '16px',
528
+ textAlign: 'center',
529
+ fontWeight: '600',
530
+ color: '#374151'
531
+ }
532
+ }, "Actions"))), /*#__PURE__*/_react["default"].createElement("tbody", null, tasks.map(function (task) {
533
+ return /*#__PURE__*/_react["default"].createElement("tr", {
534
+ key: task.id,
535
+ style: {
536
+ borderBottom: '1px solid #f3f4f6',
537
+ transition: 'background-color 0.2s ease'
538
+ }
539
+ }, /*#__PURE__*/_react["default"].createElement("td", {
540
+ style: {
541
+ padding: '16px'
542
+ }
543
+ }, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement("div", {
544
+ style: {
545
+ fontWeight: '600',
546
+ color: '#1f2937',
547
+ marginBottom: '4px'
548
+ }
549
+ }, task.name), /*#__PURE__*/_react["default"].createElement("div", {
550
+ style: {
551
+ color: '#6b7280',
552
+ fontSize: '0.85rem',
553
+ marginBottom: '4px'
554
+ }
555
+ }, task.description), /*#__PURE__*/_react["default"].createElement("div", {
556
+ style: {
557
+ color: '#3b82f6',
558
+ fontSize: '0.8rem',
559
+ fontWeight: '500'
560
+ }
561
+ }, getToolName(task.toolId), " \u2192 ", getActionName(task.toolId, task.actionId)))), /*#__PURE__*/_react["default"].createElement("td", {
562
+ style: {
563
+ padding: '16px'
564
+ }
565
+ }, /*#__PURE__*/_react["default"].createElement("div", {
566
+ style: {
567
+ fontFamily: 'monospace',
568
+ fontSize: '0.8rem',
569
+ color: '#374151',
570
+ background: '#f3f4f6',
571
+ padding: '4px 8px',
572
+ borderRadius: '4px'
573
+ }
574
+ }, formatCronExpression(task.cronExpression))), /*#__PURE__*/_react["default"].createElement("td", {
575
+ style: {
576
+ padding: '16px',
577
+ color: '#6b7280',
578
+ fontSize: '0.85rem'
579
+ }
580
+ }, formatDate(task.lastRun)), /*#__PURE__*/_react["default"].createElement("td", {
581
+ style: {
582
+ padding: '16px',
583
+ color: '#6b7280',
584
+ fontSize: '0.85rem'
585
+ }
586
+ }, formatDate(task.nextRun)), /*#__PURE__*/_react["default"].createElement("td", {
587
+ style: {
588
+ padding: '16px',
589
+ textAlign: 'center'
590
+ }
591
+ }, /*#__PURE__*/_react["default"].createElement("span", {
592
+ style: {
593
+ padding: '4px 12px',
594
+ borderRadius: '20px',
595
+ fontSize: '0.75rem',
596
+ fontWeight: '600',
597
+ background: task.isActive ? '#dcfce7' : '#fef2f2',
598
+ color: task.isActive ? '#166534' : '#dc2626'
599
+ }
600
+ }, task.isActive ? 'Active' : 'Inactive')), /*#__PURE__*/_react["default"].createElement("td", {
601
+ style: {
602
+ padding: '16px',
603
+ textAlign: 'center'
604
+ }
605
+ }, /*#__PURE__*/_react["default"].createElement("div", {
606
+ style: {
607
+ display: 'flex',
608
+ gap: '8px',
609
+ justifyContent: 'center',
610
+ flexWrap: 'wrap'
611
+ }
612
+ }, /*#__PURE__*/_react["default"].createElement("button", {
613
+ onClick: function onClick() {
614
+ return handleToggleTask(task.id, !task.isActive);
615
+ },
616
+ style: {
617
+ padding: '6px',
618
+ borderRadius: '6px',
619
+ border: 'none',
620
+ cursor: 'pointer',
621
+ background: task.isActive ? '#fef2f2' : '#dcfce7',
622
+ color: task.isActive ? '#dc2626' : '#166534'
623
+ },
624
+ title: task.isActive ? 'Pause Task' : 'Activate Task'
625
+ }, task.isActive ? /*#__PURE__*/_react["default"].createElement(_lucideReact.Pause, {
626
+ size: 16
627
+ }) : /*#__PURE__*/_react["default"].createElement(_lucideReact.Play, {
628
+ size: 16
629
+ })), /*#__PURE__*/_react["default"].createElement("button", {
630
+ onClick: function onClick() {
631
+ return handleExecuteTask(task.id);
632
+ },
633
+ style: {
634
+ padding: '6px',
635
+ borderRadius: '6px',
636
+ border: 'none',
637
+ cursor: 'pointer',
638
+ background: '#dbeafe',
639
+ color: '#1d4ed8'
640
+ },
641
+ title: "Execute Now"
642
+ }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Zap, {
643
+ size: 16
644
+ })), /*#__PURE__*/_react["default"].createElement("button", {
645
+ onClick: function onClick() {
646
+ return handleEditTask(task);
647
+ },
648
+ style: {
649
+ padding: '6px',
650
+ borderRadius: '6px',
651
+ border: 'none',
652
+ cursor: 'pointer',
653
+ background: '#fef3c7',
654
+ color: '#d97706'
655
+ },
656
+ title: "Edit Task"
657
+ }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Edit, {
658
+ size: 16
659
+ })), /*#__PURE__*/_react["default"].createElement("button", {
660
+ onClick: function onClick() {
661
+ return handleDeleteTask(task.id);
662
+ },
663
+ style: {
664
+ padding: '6px',
665
+ borderRadius: '6px',
666
+ border: 'none',
667
+ cursor: 'pointer',
668
+ background: '#fee2e2',
669
+ color: '#dc2626'
670
+ },
671
+ title: "Delete Task"
672
+ }, /*#__PURE__*/_react["default"].createElement(_lucideReact.Trash2, {
673
+ size: 16
674
+ })))));
675
+ }))))), showCreateModal && /*#__PURE__*/_react["default"].createElement("div", {
676
+ style: {
677
+ position: 'fixed',
678
+ top: 0,
679
+ left: 0,
680
+ right: 0,
681
+ bottom: 0,
682
+ background: 'rgba(0, 0, 0, 0.5)',
683
+ display: 'flex',
684
+ alignItems: 'center',
685
+ justifyContent: 'center',
686
+ zIndex: 1000
687
+ }
688
+ }, /*#__PURE__*/_react["default"].createElement("div", {
689
+ style: {
690
+ background: 'white',
691
+ borderRadius: '12px',
692
+ padding: '24px',
693
+ width: '90%',
694
+ maxWidth: '600px',
695
+ maxHeight: '90vh',
696
+ overflowY: 'auto'
697
+ }
698
+ }, /*#__PURE__*/_react["default"].createElement("div", {
699
+ style: {
700
+ display: 'flex',
701
+ justifyContent: 'space-between',
702
+ alignItems: 'center',
703
+ marginBottom: '24px'
704
+ }
705
+ }, /*#__PURE__*/_react["default"].createElement("h2", {
706
+ style: {
707
+ margin: 0,
708
+ fontSize: '1.5rem',
709
+ fontWeight: '600'
710
+ }
711
+ }, editingTask ? 'Edit Task' : 'Create New Task'), /*#__PURE__*/_react["default"].createElement("button", {
712
+ onClick: function onClick() {
713
+ setShowCreateModal(false);
714
+ setEditingTask(null);
715
+ resetForm();
716
+ },
717
+ style: {
718
+ background: 'none',
719
+ border: 'none',
720
+ fontSize: '1.5rem',
721
+ cursor: 'pointer',
722
+ color: '#6b7280'
723
+ }
724
+ }, "\xD7")), /*#__PURE__*/_react["default"].createElement("form", {
725
+ onSubmit: handleSubmit
726
+ }, /*#__PURE__*/_react["default"].createElement("div", {
727
+ style: {
728
+ marginBottom: '16px'
729
+ }
730
+ }, /*#__PURE__*/_react["default"].createElement("label", {
731
+ style: {
732
+ display: 'block',
733
+ marginBottom: '8px',
734
+ fontWeight: '500',
735
+ color: '#374151'
736
+ }
737
+ }, "Task Name *"), /*#__PURE__*/_react["default"].createElement("input", {
738
+ type: "text",
739
+ value: formData.name,
740
+ onChange: function onChange(e) {
741
+ return setFormData(_objectSpread(_objectSpread({}, formData), {}, {
742
+ name: e.target.value
743
+ }));
744
+ },
745
+ required: true,
746
+ style: {
747
+ width: '100%',
748
+ padding: '10px 12px',
749
+ border: '1px solid #d1d5db',
750
+ borderRadius: '6px',
751
+ fontSize: '0.9rem'
752
+ },
753
+ placeholder: "e.g., Daily Weather Check"
754
+ })), /*#__PURE__*/_react["default"].createElement("div", {
755
+ style: {
756
+ marginBottom: '16px'
757
+ }
758
+ }, /*#__PURE__*/_react["default"].createElement("label", {
759
+ style: {
760
+ display: 'block',
761
+ marginBottom: '8px',
762
+ fontWeight: '500',
763
+ color: '#374151'
764
+ }
765
+ }, "Description"), /*#__PURE__*/_react["default"].createElement("textarea", {
766
+ value: formData.description,
767
+ onChange: function onChange(e) {
768
+ return setFormData(_objectSpread(_objectSpread({}, formData), {}, {
769
+ description: e.target.value
770
+ }));
771
+ },
772
+ rows: 3,
773
+ style: {
774
+ width: '100%',
775
+ padding: '10px 12px',
776
+ border: '1px solid #d1d5db',
777
+ borderRadius: '6px',
778
+ fontSize: '0.9rem',
779
+ resize: 'vertical'
780
+ },
781
+ placeholder: "Describe what this task does..."
782
+ })), /*#__PURE__*/_react["default"].createElement("div", {
783
+ style: {
784
+ marginBottom: '16px'
785
+ }
786
+ }, /*#__PURE__*/_react["default"].createElement("label", {
787
+ style: {
788
+ display: 'block',
789
+ marginBottom: '8px',
790
+ fontWeight: '500',
791
+ color: '#374151'
792
+ }
793
+ }, "Cron Expression *"), /*#__PURE__*/_react["default"].createElement("input", {
794
+ type: "text",
795
+ value: formData.cronExpression,
796
+ onChange: function onChange(e) {
797
+ return setFormData(_objectSpread(_objectSpread({}, formData), {}, {
798
+ cronExpression: e.target.value
799
+ }));
800
+ },
801
+ required: true,
802
+ style: {
803
+ width: '100%',
804
+ padding: '10px 12px',
805
+ border: '1px solid #d1d5db',
806
+ borderRadius: '6px',
807
+ fontSize: '0.9rem',
808
+ fontFamily: 'monospace'
809
+ },
810
+ placeholder: "0 9 * * * (every day at 9 AM)"
811
+ }), /*#__PURE__*/_react["default"].createElement("div", {
812
+ style: {
813
+ fontSize: '0.8rem',
814
+ color: '#6b7280',
815
+ marginTop: '4px'
816
+ }
817
+ }, "Format: minute hour day month weekday")), /*#__PURE__*/_react["default"].createElement("div", {
818
+ style: {
819
+ marginBottom: '16px'
820
+ }
821
+ }, /*#__PURE__*/_react["default"].createElement("label", {
822
+ style: {
823
+ display: 'block',
824
+ marginBottom: '8px',
825
+ fontWeight: '500',
826
+ color: '#374151'
827
+ }
828
+ }, "Tool *"), /*#__PURE__*/_react["default"].createElement("select", {
829
+ value: formData.toolId,
830
+ onChange: function onChange(e) {
831
+ setFormData(_objectSpread(_objectSpread({}, formData), {}, {
832
+ toolId: e.target.value,
833
+ actionId: '' // Reset action when tool changes
834
+ }));
835
+ },
836
+ required: true,
837
+ style: {
838
+ width: '100%',
839
+ padding: '10px 12px',
840
+ border: '1px solid #d1d5db',
841
+ borderRadius: '6px',
842
+ fontSize: '0.9rem'
843
+ }
844
+ }, /*#__PURE__*/_react["default"].createElement("option", {
845
+ value: ""
846
+ }, "Select a tool..."), tools.map(function (tool) {
847
+ return /*#__PURE__*/_react["default"].createElement("option", {
848
+ key: tool.id,
849
+ value: tool.id
850
+ }, tool.icon, " ", tool.name);
851
+ }))), /*#__PURE__*/_react["default"].createElement("div", {
852
+ style: {
853
+ marginBottom: '16px'
854
+ }
855
+ }, /*#__PURE__*/_react["default"].createElement("label", {
856
+ style: {
857
+ display: 'block',
858
+ marginBottom: '8px',
859
+ fontWeight: '500',
860
+ color: '#374151'
861
+ }
862
+ }, "Action *"), /*#__PURE__*/_react["default"].createElement("select", {
863
+ value: formData.actionId,
864
+ onChange: function onChange(e) {
865
+ return setFormData(_objectSpread(_objectSpread({}, formData), {}, {
866
+ actionId: e.target.value
867
+ }));
868
+ },
869
+ required: true,
870
+ disabled: !formData.toolId,
871
+ style: {
872
+ width: '100%',
873
+ padding: '10px 12px',
874
+ border: '1px solid #d1d5db',
875
+ borderRadius: '6px',
876
+ fontSize: '0.9rem'
877
+ }
878
+ }, /*#__PURE__*/_react["default"].createElement("option", {
879
+ value: ""
880
+ }, "Select an action..."), formData.toolId && ((_tools$find = tools.find(function (t) {
881
+ return t.id === formData.toolId;
882
+ })) === null || _tools$find === void 0 || (_tools$find = _tools$find.actions) === null || _tools$find === void 0 ? void 0 : _tools$find.map(function (action) {
883
+ return /*#__PURE__*/_react["default"].createElement("option", {
884
+ key: action.id,
885
+ value: action.id
886
+ }, action.name);
887
+ })))), /*#__PURE__*/_react["default"].createElement("div", {
888
+ style: {
889
+ marginBottom: '24px'
890
+ }
891
+ }, /*#__PURE__*/_react["default"].createElement("label", {
892
+ style: {
893
+ display: 'flex',
894
+ alignItems: 'center',
895
+ gap: '8px',
896
+ cursor: 'pointer'
897
+ }
898
+ }, /*#__PURE__*/_react["default"].createElement("input", {
899
+ type: "checkbox",
900
+ checked: formData.isActive,
901
+ onChange: function onChange(e) {
902
+ return setFormData(_objectSpread(_objectSpread({}, formData), {}, {
903
+ isActive: e.target.checked
904
+ }));
905
+ },
906
+ style: {
907
+ margin: 0
908
+ }
909
+ }), /*#__PURE__*/_react["default"].createElement("span", {
910
+ style: {
911
+ fontWeight: '500',
912
+ color: '#374151'
913
+ }
914
+ }, "Activate task immediately"))), /*#__PURE__*/_react["default"].createElement("div", {
915
+ style: {
916
+ display: 'flex',
917
+ gap: '12px',
918
+ justifyContent: 'flex-end'
919
+ }
920
+ }, /*#__PURE__*/_react["default"].createElement("button", {
921
+ type: "button",
922
+ onClick: function onClick() {
923
+ setShowCreateModal(false);
924
+ setEditingTask(null);
925
+ resetForm();
926
+ },
927
+ style: {
928
+ padding: '10px 20px',
929
+ border: '1px solid #d1d5db',
930
+ borderRadius: '6px',
931
+ background: 'white',
932
+ color: '#374151',
933
+ fontSize: '0.9rem',
934
+ fontWeight: '500',
935
+ cursor: 'pointer'
936
+ }
937
+ }, "Cancel"), /*#__PURE__*/_react["default"].createElement("button", {
938
+ type: "submit",
939
+ style: {
940
+ padding: '10px 20px',
941
+ border: 'none',
942
+ borderRadius: '6px',
943
+ background: 'linear-gradient(135deg, #3b82f6 0%, #1d4ed8 100%)',
944
+ color: 'white',
945
+ fontSize: '0.9rem',
946
+ fontWeight: '500',
947
+ cursor: 'pointer'
948
+ }
949
+ }, editingTask ? 'Update Task' : 'Create Task'))))));
950
+ };
951
+ var _default = exports["default"] = PowrScheduledTasks;
@@ -19,9 +19,6 @@ var config = require('../config');
19
19
  // Get auth token from localStorage or other auth mechanism
20
20
  var getAuthToken = exports.getAuthToken = function getAuthToken() {
21
21
  if (typeof window !== 'undefined') {
22
- // Try different token storage patterns
23
- var token = localStorage.getItem('token');
24
- if (token) return token;
25
22
  var authStore = localStorage.getItem('auth-store');
26
23
  if (authStore) {
27
24
  var _auth$state;
package/package.json CHANGED
@@ -1,43 +1,43 @@
1
- {
2
- "name": "powr-sdk-web",
3
- "version": "4.0.7",
4
- "main": "dist/index.js",
5
- "scripts": {
6
- "build": "babel src -d dist --copy-files",
7
- "prepublishOnly": "npm run build"
8
- },
9
- "keywords": [
10
- "react",
11
- "component",
12
- "npm",
13
- "file-upload",
14
- "powrbase",
15
- "comments"
16
- ],
17
- "author": "Lawazia Tech",
18
- "license": "MIT",
19
- "repository": {
20
- "type": "git",
21
- "url": "https://github.com/lawaziatech/powr-sdk-web.git"
22
- },
23
- "peerDependencies": {
24
- "filepond": "*",
25
- "react": "*",
26
- "react-dom": "*",
27
- "react-toastify": "*"
28
- },
29
- "dependencies": {
30
- "axios": "^1.7.7",
31
- "filepond": "*",
32
- "powr-sdk-web": "^2.1.0",
33
- "react-filepond": "^7.1.2",
34
- "react-hook-form": "^7.58.0"
35
- },
36
- "devDependencies": {
37
- "@babel/cli": "^7.24.1",
38
- "@babel/core": "^7.24.4",
39
- "@babel/preset-env": "^7.24.4",
40
- "@babel/preset-react": "^7.24.1",
41
- "prop-types": "^15.8.1"
42
- }
43
- }
1
+ {
2
+ "name": "powr-sdk-web",
3
+ "version": "4.0.9",
4
+ "main": "dist/index.js",
5
+ "scripts": {
6
+ "build": "babel src -d dist --copy-files",
7
+ "prepublishOnly": "npm run build"
8
+ },
9
+ "keywords": [
10
+ "react",
11
+ "component",
12
+ "npm",
13
+ "file-upload",
14
+ "powrbase",
15
+ "comments"
16
+ ],
17
+ "author": "Lawazia Tech",
18
+ "license": "MIT",
19
+ "repository": {
20
+ "type": "git",
21
+ "url": "https://github.com/lawaziatech/powr-sdk-web.git"
22
+ },
23
+ "peerDependencies": {
24
+ "filepond": "*",
25
+ "react": "*",
26
+ "react-dom": "*",
27
+ "react-toastify": "*"
28
+ },
29
+ "dependencies": {
30
+ "axios": "^1.7.7",
31
+ "filepond": "*",
32
+ "powr-sdk-web": "^2.1.0",
33
+ "react-filepond": "^7.1.2",
34
+ "react-hook-form": "^7.58.0"
35
+ },
36
+ "devDependencies": {
37
+ "@babel/cli": "^7.24.1",
38
+ "@babel/core": "^7.24.4",
39
+ "@babel/preset-env": "^7.24.4",
40
+ "@babel/preset-react": "^7.24.1",
41
+ "prop-types": "^15.8.1"
42
+ }
43
+ }