@nocobase/plugin-async-task-manager 2.2.0-beta.1 → 2.2.0-beta.2

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.
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("dayjs"),require("react"),require("antd"),require("@nocobase/client"),require("@nocobase/utils/client")):"function"==typeof define&&define.amd?define("@nocobase/plugin-async-task-manager",["react-i18next","dayjs","react","antd","@nocobase/client","@nocobase/utils/client"],t):"object"==typeof exports?exports["@nocobase/plugin-async-task-manager"]=t(require("react-i18next"),require("dayjs"),require("react"),require("antd"),require("@nocobase/client"),require("@nocobase/utils/client")):e["@nocobase/plugin-async-task-manager"]=t(e["react-i18next"],e.dayjs,e.react,e.antd,e["@nocobase/client"],e["@nocobase/utils/client"])}(self,function(e,t,n,r,o,a){return function(){var i={912:function(e,t,n){e.exports=function(e){"use strict";var t={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,t){return"W"===t?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,t){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1100?"上午":n<1300?"中午":n<1800?"下午":"晚上"}};return(e&&"object"==typeof e&&"default"in e?e:{default:e}).default.locale(t,null,!0),t}(n(185))},264:function(e){e.exports=function(e,t,n){e=e||{};var r=t.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function a(e,t,n,o){return r.fromToBase(e,t,n,o)}n.en.relativeTime=o,r.fromToBase=function(t,r,a,i,c){for(var l,s,u,f=a.$locale().relativeTime||o,p=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],d=p.length,y=0;y<d;y+=1){var m=p[y];m.d&&(l=i?n(t).diff(a,m.d,!0):a.diff(t,m.d,!0));var b=(e.rounding||Math.round)(Math.abs(l));if(u=l>0,b<=m.r||!m.r){b<=1&&y>0&&(m=p[y-1]);var v=f[m.l];c&&(b=c(""+b)),s="string"==typeof v?v.replace("%d",b):v(b,r,m.l,u);break}}if(r)return s;var h=u?f.future:f.past;return"function"==typeof h?h(s):h.replace("%s",s)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var i=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(i(this),e)},r.fromNow=function(e){return this.from(i(this),e)}}},342:function(e){"use strict";e.exports=o},768:function(e){"use strict";e.exports=a},59:function(e){"use strict";e.exports=r},185:function(e){"use strict";e.exports=t},155:function(e){"use strict";e.exports=n},953:function(t){"use strict";t.exports=e}},c={};function l(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return i[e].call(n.exports,n,n.exports,l),n.exports}l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,{a:t}),t},l.d=function(e,t){for(var n in t)l.o(t,n)&&!l.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.g.importScripts&&(s=l.g.location+"");var s,u=l.g.document;if(!s&&u&&(u.currentScript&&"SCRIPT"===u.currentScript.tagName.toUpperCase()&&(s=u.currentScript.src),!s)){var f=u.getElementsByTagName("script");if(f.length)for(var p=f.length-1;p>-1&&(!s||!/^http(s?):/.test(s));)s=f[p--].src}if(!s)throw Error("Automatic publicPath is not supported in this browser");l.p=s.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/");var d={};return!function(){"use strict";var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src&&(e=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@nocobase/plugin-async-task-manager/dist/client/")}if(!e){var r=window.__nocobase_modern_client_prefix__||"v",o="/"+(r=String(r).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var a=window.location.pathname||"/",i=a.indexOf(o);e=i>=0?a.slice(0,i+1):"/"}e&&(e=e.replace(RegExp("/"+r+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-async-task-manager/dist/client/"}l.p=e}(),!function(){"use strict";l.r(d),l.d(d,{PluginAsyncTaskManagerClient:function(){return A},default:function(){return I}});var e,t=l(768),n=l(342),r=l(155),o=l.n(r),a=l(59),i=l(953),c=l(185),s=l.n(c);l(912);var u=l(264),f=l.n(u),p=JSON.parse('{"UU":"@nocobase/plugin-async-task-manager"}');function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m="@nocobase/plugin-async-task-manager",b=(y(e={},null,{value:null,label:"{{t('Waiting', { ns: '".concat(m,"' })}}"),color:"default",icon:"ClockCircleOutlined"}),y(e,0,{value:0,label:"{{t('Processing', { ns: '".concat(m,"' })}}"),color:"processing",icon:"LoadingOutlined"}),y(e,1,{value:1,label:"{{t('Completed', { ns: '".concat(m,"' })}}"),color:"success",icon:"CheckCircleOutlined"}),y(e,-1,{value:-1,label:"{{t('Failed', { ns: '".concat(m,"' })}}"),color:"error",icon:"CloseCircleOutlined"}),y(e,-2,{value:-2,label:"{{t('Cancelled', { ns: '".concat(m,"' })}}"),color:"warning",icon:"StopOutlined"}),e);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){n(e);return}c.done?t(l):Promise.resolve(l).then(r,o)}function g(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){h(a,r,o,i,c,"next",e)}function c(e){h(a,r,o,i,c,"throw",e)}i(void 0)})}}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,c=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){c=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(c)throw r}}return a}}(e,t)||k(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}}function _(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:l(0)}),c(i,"throw",{value:l(1)}),c(i,"return",{value:l(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function l(c){return function(l){var s=[c,l];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}}var O=(0,n.createStyles)(function(e){return{button:{color:e.token.colorTextHeaderMenu+" !important"}}});s().extend(f());var E=function(e){var t,r=e.popoverVisible,c=e.setPopoverVisible,l=e.tasks,u=e.refresh,f=e.loading;e.hasProcessingTasks;var d=(0,n.useAPIClient)(),y=(t=(0,n.useApp)(),function(e,n){return t.i18n.t(e,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({ns:[p.UU,"client"]},n))}),m=(0,i.useTranslation)().t,v=O().styles,h=(0,n.usePlugin)("async-task-manager"),w=(0,n.useCompile)(),k=function(e){c(!1)},E=[{title:y("Created at"),dataIndex:"createdAt",key:"createdAt",width:180,render:function(e){return o().createElement(a.Tooltip,{title:s()(e).format("YYYY-MM-DD HH:mm:ss")},s()(e).fromNow())}},{title:y("Task"),dataIndex:"title",key:"title"},{title:y("Status"),dataIndex:"status",key:"status",width:160,render:function(e,t){var r=b[e]||{},i=r.color,c=r.label;return o().createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},o().createElement("div",{style:{flex:1}},function(){var n,r,i={width:100,margin:0};switch(e){case null:case -2:return o().createElement(a.Alert,{showIcon:!1,message:w(c),banner:!0});case 0:return o().createElement(a.Progress,{type:"line",size:"small",strokeWidth:4,percent:Number(((null!=(n=t.progressCurrent)?n:0)/(null!=(r=t.progressTotal)?r:1)*100).toFixed(2)),status:"active",style:i,format:function(e){return"".concat(e.toFixed(1),"%")}});case 1:return o().createElement(a.Progress,{type:"line",size:"small",strokeWidth:4,percent:100,status:"success",style:i,format:function(){return""}});case -1:return o().createElement(a.Progress,{type:"line",size:"small",strokeWidth:4,percent:100,status:"exception",style:i,format:function(){return""}});default:return null}}()),o().createElement(a.Tag,{color:i,icon:(null==r?void 0:r.icon)?o().createElement(n.Icon,{type:r.icon}):null,style:{margin:0,padding:"0 4px",height:22,width:22}}))}},{title:y("Actions"),dataIndex:"result",key:"actions",width:180,render:function(e,t){var r,i=[],l=null!=(r=h.taskOrigins.get(t.origin))?r:{},s=l.Result,f=l.ResultButton,p=s||function(){return null};return t.cancelable&&(0===t.status||null===t.status)&&i.push(o().createElement(a.Popconfirm,{key:"cancel",title:y("Confirm cancel"),description:y("Confirm to cancel this task?"),onConfirm:function(){return g(function(){return _(this,function(e){switch(e.label){case 0:return[4,d.resource("asyncTasks").stop({filterByTk:t.id})];case 1:return e.sent(),u(),[2]}})})()},okText:y("Confirm"),cancelText:y("Cancel"),disabled:!1},o().createElement(a.Button,{type:"link",size:"small",icon:o().createElement(n.Icon,{type:"StopOutlined"}),disabled:!1},y("Stop")))),1===t.status&&e&&(f?i.push(o().createElement(f,{key:"result-button",task:t})):i.push(o().createElement(a.Button,{key:"view",type:"link",size:"small",icon:o().createElement(n.Icon,{type:"EyeOutlined"}),onClick:function(){k(t),a.Modal.info({title:y("Task result"),content:s?o().createElement(p,{payload:e,task:t}):o().createElement("div",null,y("No renderer available for this task type, payload: ".concat(t.result)))})}},y("View result")))),-1===t.status&&e&&i.push(o().createElement(a.Button,{key:"error",type:"link",size:"small",icon:o().createElement(n.Icon,{type:"ExclamationCircleOutlined"}),onClick:function(){c(!1);var n,r,i,l=(null!=(i=h.taskOrigins.get(t.origin))?i:{}).namespace;a.Modal.info({title:y("Error Details"),content:o().createElement(a.Typography.Text,null,m(e.message,(n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},e.params),r=r={ns:void 0===l?"client":l},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n))),closable:!0,width:400})}},y("Error details"))),o().createElement(a.Space,{size:"middle"},i)}}];l.filter(function(e){return[1,-1].includes(e.status)}).length;var x=o().createElement("div",{style:{maxHeight:"70vh",overflow:"auto",width:l.length>0?800:200}},l.length>0?o().createElement(a.Table,{loading:f,columns:E,dataSource:l,size:"small",pagination:!1,rowKey:"taskId"}):o().createElement("div",{style:{padding:"24px 0",display:"flex",justifyContent:"center"}},o().createElement(a.Empty,{description:y("No tasks"),image:a.Empty.PRESENTED_IMAGE_SIMPLE})));return o().createElement(o().Fragment,null,o().createElement(a.Popover,{content:x,trigger:"click",placement:"bottom",open:r,onOpenChange:c},o().createElement(a.Button,{className:["sync-task-button",v.button].join(" "),onClick:function(){c(!r),r||u()},icon:o().createElement(n.Icon,{type:"SyncOutlined",spin:l.some(function(e){return 0===e.status})})})))},x=function(){var e=(0,n.useApp)(),t=(0,n.useRequest)({resource:"asyncTasks",action:"list",params:{sort:"-createdAt"}}),a=t.data,i=t.refresh;t.loading;var c=w((0,r.useState)((null==a?void 0:a.data)||[]),2),l=c[0],s=c[1],u=w((0,r.useState)(!1),2),f=u[0],p=u[1];(0,r.useEffect)(function(){s((null==a?void 0:a.data)||[])},[a]);var d=(0,r.useCallback)(function(){return g(function(){return _(this,function(e){return p(!0),i(),[2]})})()},[i]),y=(0,r.useCallback)(function(e){var t=e.detail;s(function(e){var n=e.findIndex(function(e){return e.id===t.id});return -1===n?e.unshift(t):e.splice(n,1,t),function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||k(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()})},[]),m=(0,r.useCallback)(function(){i()},[i]),b=(0,r.useCallback)(function(){i()},[i]);return(0,r.useEffect)(function(){return e.eventBus.addEventListener("ws:message:async-tasks:created",d),e.eventBus.addEventListener("ws:message:async-tasks:progress",y),e.eventBus.addEventListener("ws:message:async-tasks:status",m),e.eventBus.addEventListener("ws:message:async-tasks:deleted",b),function(){e.eventBus.removeEventListener("ws:message:async-tasks:created",d),e.eventBus.removeEventListener("ws:message:async-tasks:progress",y),e.eventBus.removeEventListener("ws:message:async-tasks:status",m),e.eventBus.removeEventListener("ws:message:async-tasks:deleted",b)}},[e,b,d,y,m]),(null==l?void 0:l.length)>0&&o().createElement(E,{tasks:l,refresh:i,popoverVisible:f,setPopoverVisible:p})},j=function(e){return o().createElement(n.PinnedPluginListProvider,{items:{asyncTasks:{order:300,component:"AsyncTasks",pin:!0,snippet:"*"}}},o().createElement(n.SchemaComponentOptions,{components:{AsyncTasks:x}},e.children))};function S(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){n(e);return}c.done?t(l):Promise.resolve(l).then(r,o)}function P(e,t,n){return(P=C()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&Y(o,n.prototype),o}).apply(null,arguments)}function T(e){return(T=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function Y(e,t){return(Y=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function M(e){var t="function"==typeof Map?new Map:void 0;return(M=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return P(e,arguments,T(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),Y(n,e)})(e)}function C(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(C=function(){return!!e})()}var A=function(e){var n;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,n,o,a,i,c;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return n=r,o=arguments,n=T(n),a=e=function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,C()?Reflect.construct(n,o||[],T(this).constructor):n.apply(this,o)),i="taskOrigins",c=new t.Registry,i in a?Object.defineProperty(a,i,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[i]=c,e}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&Y(r,e),n=[{key:"load",value:function(){var e;return(e=function(){return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:l(0)}),c(i,"throw",{value:l(1)}),c(i,"return",{value:l(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function l(c){return function(l){var s=[c,l];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}}(this,function(e){return this.app.use(j),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){S(a,r,o,i,c,"next",e)}function c(e){S(a,r,o,i,c,"throw",e)}i(void 0)})}).call(this)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(r.prototype,n),r}(M(n.Plugin)),I=A}(),d}()});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("react-i18next"),require("dayjs"),require("react"),require("antd"),require("@nocobase/client"),require("@nocobase/utils/client")):"function"==typeof define&&define.amd?define("@nocobase/plugin-async-task-manager",["react-i18next","dayjs","react","antd","@nocobase/client","@nocobase/utils/client"],t):"object"==typeof exports?exports["@nocobase/plugin-async-task-manager"]=t(require("react-i18next"),require("dayjs"),require("react"),require("antd"),require("@nocobase/client"),require("@nocobase/utils/client")):e["@nocobase/plugin-async-task-manager"]=t(e["react-i18next"],e.dayjs,e.react,e.antd,e["@nocobase/client"],e["@nocobase/utils/client"])}(self,function(e,t,n,r,o,a){return function(){var i={912:function(e,t,n){e.exports=function(e){"use strict";var t={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(e,t){return"W"===t?e+"周":e+"日"},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(e,t){var n=100*e+t;return n<600?"凌晨":n<900?"早上":n<1100?"上午":n<1300?"中午":n<1800?"下午":"晚上"}};return(e&&"object"==typeof e&&"default"in e?e:{default:e}).default.locale(t,null,!0),t}(n(185))},264:function(e){e.exports=function(e,t,n){e=e||{};var r=t.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function a(e,t,n,o){return r.fromToBase(e,t,n,o)}n.en.relativeTime=o,r.fromToBase=function(t,r,a,i,c){for(var l,s,u,f=a.$locale().relativeTime||o,p=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],d=p.length,y=0;y<d;y+=1){var m=p[y];m.d&&(l=i?n(t).diff(a,m.d,!0):a.diff(t,m.d,!0));var b=(e.rounding||Math.round)(Math.abs(l));if(u=l>0,b<=m.r||!m.r){b<=1&&y>0&&(m=p[y-1]);var v=f[m.l];c&&(b=c(""+b)),s="string"==typeof v?v.replace("%d",b):v(b,r,m.l,u);break}}if(r)return s;var h=u?f.future:f.past;return"function"==typeof h?h(s):h.replace("%s",s)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var i=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(i(this),e)},r.fromNow=function(e){return this.from(i(this),e)}}},342:function(e){"use strict";e.exports=o},768:function(e){"use strict";e.exports=a},59:function(e){"use strict";e.exports=r},185:function(e){"use strict";e.exports=t},155:function(e){"use strict";e.exports=n},953:function(t){"use strict";t.exports=e}},c={};function l(e){var t=c[e];if(void 0!==t)return t.exports;var n=c[e]={exports:{}};return i[e].call(n.exports,n,n.exports,l),n.exports}l.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return l.d(t,{a:t}),t},l.d=function(e,t){for(var n in t)l.o(t,n)&&!l.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},l.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},l.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.g.importScripts&&(s=l.g.location+"");var s,u=l.g.document;if(!s&&u&&(u.currentScript&&"SCRIPT"===u.currentScript.tagName.toUpperCase()&&(s=u.currentScript.src),!s)){var f=u.getElementsByTagName("script");if(f.length)for(var p=f.length-1;p>-1&&(!s||!/^http(s?):/.test(s));)s=f[p--].src}if(!s)throw Error("Automatic publicPath is not supported in this browser");l.p=s.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/");var d={};return!function(){"use strict";var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src&&(e=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@nocobase/plugin-async-task-manager/dist/client/")}if(!e){var r=window.__nocobase_modern_client_prefix__||"v",o="/"+(r=String(r).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var a=window.location.pathname||"/",i=a.indexOf(o);e=i>=0?a.slice(0,i+1):"/"}e&&(e=e.replace(RegExp("/"+r+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-async-task-manager/dist/client/"}l.p=e}(),!function(){"use strict";l.r(d),l.d(d,{PluginAsyncTaskManagerClient:function(){return I},default:function(){return L}});var e,t=l(768),n=l(342),r=l(155),o=l.n(r),a=l(59),i=l(953),c=l(185),s=l.n(c);l(912);var u=l(264),f=l.n(u),p=JSON.parse('{"UU":"@nocobase/plugin-async-task-manager"}');function y(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var m="@nocobase/plugin-async-task-manager",b=(y(e={},null,{value:null,label:"{{t('Waiting', { ns: '".concat(m,"' })}}"),color:"default",icon:"ClockCircleOutlined"}),y(e,0,{value:0,label:"{{t('Processing', { ns: '".concat(m,"' })}}"),color:"processing",icon:"LoadingOutlined"}),y(e,1,{value:1,label:"{{t('Completed', { ns: '".concat(m,"' })}}"),color:"success",icon:"CheckCircleOutlined"}),y(e,-1,{value:-1,label:"{{t('Failed', { ns: '".concat(m,"' })}}"),color:"error",icon:"CloseCircleOutlined"}),y(e,-2,{value:-2,label:"{{t('Cancelled', { ns: '".concat(m,"' })}}"),color:"warning",icon:"StopOutlined"}),e);function v(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function h(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){n(e);return}c.done?t(l):Promise.resolve(l).then(r,o)}function g(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){h(a,r,o,i,c,"next",e)}function c(e){h(a,r,o,i,c,"throw",e)}i(void 0)})}}function w(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],i=!0,c=!1;try{for(o=o.call(e);!(i=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);i=!0);}catch(e){c=!0,r=e}finally{try{i||null==o.return||o.return()}finally{if(c)throw r}}return a}}(e,t)||k(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function k(e,t){if(e){if("string"==typeof e)return v(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(e,t)}}function _(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:l(0)}),c(i,"throw",{value:l(1)}),c(i,"return",{value:l(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function l(c){return function(l){var s=[c,l];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}}var O=(0,n.createStyles)(function(e){return{button:{color:e.token.colorTextHeaderMenu+" !important"}}});s().extend(f());var E=function(e){var t=e.message;return o().createElement("div",{style:{maxHeight:"60vh",overflow:"auto",padding:"8px 12px",borderRadius:6,background:"#f5f5f5",whiteSpace:"pre-wrap",wordBreak:"break-word"}},o().createElement(a.Typography.Text,null,t))},x=function(e){var t,r=e.popoverVisible,c=e.setPopoverVisible,l=e.tasks,u=e.refresh,f=e.loading;e.hasProcessingTasks;var d=(0,n.useAPIClient)(),y=(t=(0,n.useApp)(),function(e,n){return t.i18n.t(e,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({ns:[p.UU,"client"]},n))}),m=(0,i.useTranslation)().t,v=O().styles,h=(0,n.usePlugin)("async-task-manager"),w=(0,n.useCompile)(),k=function(e){c(!1)},x=[{title:y("Created at"),dataIndex:"createdAt",key:"createdAt",width:180,render:function(e){return o().createElement(a.Tooltip,{title:s()(e).format("YYYY-MM-DD HH:mm:ss")},s()(e).fromNow())}},{title:y("Task"),dataIndex:"title",key:"title"},{title:y("Status"),dataIndex:"status",key:"status",width:160,render:function(e,t){var r=b[e]||{},i=r.color,c=r.label;return o().createElement("div",{style:{display:"flex",alignItems:"center",gap:8}},o().createElement("div",{style:{flex:1}},function(){var n,r,i={width:100,margin:0};switch(e){case null:case -2:return o().createElement(a.Alert,{showIcon:!1,message:w(c),banner:!0});case 0:return o().createElement(a.Progress,{type:"line",size:"small",strokeWidth:4,percent:Number(((null!=(n=t.progressCurrent)?n:0)/(null!=(r=t.progressTotal)?r:1)*100).toFixed(2)),status:"active",style:i,format:function(e){return"".concat(e.toFixed(1),"%")}});case 1:return o().createElement(a.Progress,{type:"line",size:"small",strokeWidth:4,percent:100,status:"success",style:i,format:function(){return""}});case -1:return o().createElement(a.Progress,{type:"line",size:"small",strokeWidth:4,percent:100,status:"exception",style:i,format:function(){return""}});default:return null}}()),o().createElement(a.Tag,{color:i,icon:(null==r?void 0:r.icon)?o().createElement(n.Icon,{type:r.icon}):null,style:{margin:0,padding:"0 4px",height:22,width:22}}))}},{title:y("Actions"),dataIndex:"result",key:"actions",width:180,render:function(e,t){var r,i=[],l=null!=(r=h.taskOrigins.get(t.origin))?r:{},s=l.Result,f=l.ResultButton,p=s||function(){return null};return t.cancelable&&(0===t.status||null===t.status)&&i.push(o().createElement(a.Popconfirm,{key:"cancel",title:y("Confirm cancel"),description:y("Confirm to cancel this task?"),onConfirm:function(){return g(function(){return _(this,function(e){switch(e.label){case 0:return[4,d.resource("asyncTasks").stop({filterByTk:t.id})];case 1:return e.sent(),u(),[2]}})})()},okText:y("Confirm"),cancelText:y("Cancel"),disabled:!1},o().createElement(a.Button,{type:"link",size:"small",icon:o().createElement(n.Icon,{type:"StopOutlined"}),disabled:!1},y("Stop")))),1===t.status&&e&&(f?i.push(o().createElement(f,{key:"result-button",task:t})):i.push(o().createElement(a.Button,{key:"view",type:"link",size:"small",icon:o().createElement(n.Icon,{type:"EyeOutlined"}),onClick:function(){k(t),a.Modal.info({title:y("Task result"),content:s?o().createElement(p,{payload:e,task:t}):o().createElement("div",null,y("No renderer available for this task type, payload: ".concat(t.result)))})}},y("View result")))),-1===t.status&&e&&i.push(o().createElement(a.Button,{key:"error",type:"link",size:"small",icon:o().createElement(n.Icon,{type:"ExclamationCircleOutlined"}),onClick:function(){c(!1);var n,r,i,l=(null!=(i=h.taskOrigins.get(t.origin))?i:{}).namespace;a.Modal.info({title:y("Error Details"),content:o().createElement(E,{message:m(e.message,(n=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({},e.params),r=r={ns:void 0===l?"client":l},Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(r)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(r)).forEach(function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(r,e))}),n))}),closable:!0,width:640})}},y("Error details"))),o().createElement(a.Space,{size:"middle"},i)}}];l.filter(function(e){return[1,-1].includes(e.status)}).length;var j=o().createElement("div",{style:{maxHeight:"70vh",overflow:"auto",width:l.length>0?800:200}},l.length>0?o().createElement(a.Table,{loading:f,columns:x,dataSource:l,size:"small",pagination:!1,rowKey:"taskId"}):o().createElement("div",{style:{padding:"24px 0",display:"flex",justifyContent:"center"}},o().createElement(a.Empty,{description:y("No tasks"),image:a.Empty.PRESENTED_IMAGE_SIMPLE})));return o().createElement(o().Fragment,null,o().createElement(a.Popover,{content:j,trigger:"click",placement:"bottom",open:r,onOpenChange:c},o().createElement(a.Button,{className:["sync-task-button",v.button].join(" "),onClick:function(){c(!r),r||u()},icon:o().createElement(n.Icon,{type:"SyncOutlined",spin:l.some(function(e){return 0===e.status})})})))},j=function(){var e=(0,n.useApp)(),t=(0,n.useRequest)({resource:"asyncTasks",action:"list",params:{sort:"-createdAt"}}),a=t.data,i=t.refresh;t.loading;var c=w((0,r.useState)((null==a?void 0:a.data)||[]),2),l=c[0],s=c[1],u=w((0,r.useState)(!1),2),f=u[0],p=u[1];(0,r.useEffect)(function(){s((null==a?void 0:a.data)||[])},[a]);var d=(0,r.useCallback)(function(){return g(function(){return _(this,function(e){return p(!0),i(),[2]})})()},[i]),y=(0,r.useCallback)(function(e){var t=e.detail;s(function(e){var n=e.findIndex(function(e){return e.id===t.id});return -1===n?e.unshift(t):e.splice(n,1,t),function(e){if(Array.isArray(e))return v(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||k(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()})},[]),m=(0,r.useCallback)(function(){i()},[i]),b=(0,r.useCallback)(function(){i()},[i]);return(0,r.useEffect)(function(){return e.eventBus.addEventListener("ws:message:async-tasks:created",d),e.eventBus.addEventListener("ws:message:async-tasks:progress",y),e.eventBus.addEventListener("ws:message:async-tasks:status",m),e.eventBus.addEventListener("ws:message:async-tasks:deleted",b),function(){e.eventBus.removeEventListener("ws:message:async-tasks:created",d),e.eventBus.removeEventListener("ws:message:async-tasks:progress",y),e.eventBus.removeEventListener("ws:message:async-tasks:status",m),e.eventBus.removeEventListener("ws:message:async-tasks:deleted",b)}},[e,b,d,y,m]),(null==l?void 0:l.length)>0&&o().createElement(x,{tasks:l,refresh:i,popoverVisible:f,setPopoverVisible:p})},S=function(e){return o().createElement(n.PinnedPluginListProvider,{items:{asyncTasks:{order:300,component:"AsyncTasks",pin:!0,snippet:"*"}}},o().createElement(n.SchemaComponentOptions,{components:{AsyncTasks:j}},e.children))};function P(e,t,n,r,o,a,i){try{var c=e[a](i),l=c.value}catch(e){n(e);return}c.done?t(l):Promise.resolve(l).then(r,o)}function T(e,t,n){return(T=A()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&M(o,n.prototype),o}).apply(null,arguments)}function Y(e){return(Y=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function M(e,t){return(M=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function C(e){var t="function"==typeof Map?new Map:void 0;return(C=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return T(e,arguments,Y(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),M(n,e)})(e)}function A(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(A=function(){return!!e})()}var I=function(e){var n;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function r(){var e,n,o,a,i,c;if(!(this instanceof r))throw TypeError("Cannot call a class as a function");return n=r,o=arguments,n=Y(n),a=e=function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,A()?Reflect.construct(n,o||[],Y(this).constructor):n.apply(this,o)),i="taskOrigins",c=new t.Registry,i in a?Object.defineProperty(a,i,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[i]=c,e}return r.prototype=Object.create(e&&e.prototype,{constructor:{value:r,writable:!0,configurable:!0}}),e&&M(r,e),n=[{key:"load",value:function(){var e;return(e=function(){return function(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},i=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(i,"next",{value:l(0)}),c(i,"throw",{value:l(1)}),c(i,"return",{value:l(2)}),"function"==typeof Symbol&&c(i,Symbol.iterator,{value:function(){return this}}),i;function l(c){return function(l){var s=[c,l];if(n)throw TypeError("Generator is already executing.");for(;i&&(i=0,s[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&s[0]?r.return:s[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,s[1])).done)return o;switch(r=0,o&&(s=[2&s[0],o.value]),s[0]){case 0:case 1:o=s;break;case 4:return a.label++,{value:s[1],done:!1};case 5:a.label++,r=s[1],s=[0];continue;case 7:s=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===s[0]||2===s[0])){a=0;continue}if(3===s[0]&&(!o||s[1]>o[0]&&s[1]<o[3])){a.label=s[1];break}if(6===s[0]&&a.label<o[1]){a.label=o[1],o=s;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(s);break}o[2]&&a.ops.pop(),a.trys.pop();continue}s=t.call(e,a)}catch(e){s=[6,e],r=0}finally{n=o=0}if(5&s[0])throw s[1];return{value:s[0]?s[1]:void 0,done:!0}}}}(this,function(e){return this.app.use(S),[2]})},function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function i(e){P(a,r,o,i,c,"next",e)}function c(e){P(a,r,o,i,c,"throw",e)}i(void 0)})}).call(this)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(r.prototype,n),r}(C(n.Plugin)),L=I}(),d}()});
@@ -0,0 +1,10 @@
1
+ /**
2
+ * This file is part of the NocoBase (R) project.
3
+ * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
+ * Authors: NocoBase Team.
5
+ *
6
+ * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
+ * For more information, please refer to: https://www.nocobase.com/agreement.
8
+ */
9
+
10
+ (self.webpackChunk_nocobase_plugin_async_task_manager_client_v2=self.webpackChunk_nocobase_plugin_async_task_manager_client_v2||[]).push([["338"],{264:function(e){e.exports=function(e,t,n){e=e||{};var r=t.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function a(e,t,n,o){return r.fromToBase(e,t,n,o)}n.en.relativeTime=o,r.fromToBase=function(t,r,a,l,i){for(var s,c,u,f=a.$locale().relativeTime||o,d=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],p=d.length,y=0;y<p;y+=1){var m=d[y];m.d&&(s=l?n(t).diff(a,m.d,!0):a.diff(t,m.d,!0));var b=(e.rounding||Math.round)(Math.abs(s));if(u=s>0,b<=m.r||!m.r){b<=1&&y>0&&(m=d[y-1]);var h=f[m.l];i&&(b=i(""+b)),c="string"==typeof h?h.replace("%d",b):h(b,r,m.l,u);break}}if(r)return c;var v=u?f.future:f.past;return"function"==typeof v?v(c):v.replace("%s",c)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var l=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(l(this),e)},r.fromNow=function(e){return this.from(l(this),e)}}},33:function(e,t,n){"use strict";n.r(t),n.d(t,{AsyncTasksTopbarActionModel:function(){return _},default:function(){return I}});var r,o=n(375),a=n(485),l=n(694),i=n(625),s=n(59),c=n(185),u=n.n(c),f=n(264),d=n.n(f),p=n(155),y=n.n(p);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b="@nocobase/plugin-async-task-manager",h=(m(r={},null,{value:null,label:"{{t('Waiting', { ns: '".concat(b,"' })}}"),color:"default",icon:"ClockCircleOutlined"}),m(r,0,{value:0,label:"{{t('Processing', { ns: '".concat(b,"' })}}"),color:"processing",icon:"LoadingOutlined"}),m(r,1,{value:1,label:"{{t('Completed', { ns: '".concat(b,"' })}}"),color:"success",icon:"CheckCircleOutlined"}),m(r,-1,{value:-1,label:"{{t('Failed', { ns: '".concat(b,"' })}}"),color:"error",icon:"CloseCircleOutlined"}),m(r,-2,{value:-2,label:"{{t('Cancelled', { ns: '".concat(b,"' })}}"),color:"warning",icon:"StopOutlined"}),r),v="@nocobase/plugin-async-task-manager";function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function k(e,t,n,r,o,a,l){try{var i=e[a](l),s=i.value}catch(e){n(e);return}i.done?t(s):Promise.resolve(s).then(r,o)}function w(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function l(e){k(a,r,o,l,i,"next",e)}function i(e){k(a,r,o,l,i,"throw",e)}l(void 0)})}}function E(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function S(e,t){return(S=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function j(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw r}}return a}}(e,t)||C(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function C(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return g(e,t)}}function T(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(T=function(){return!!e})()}function x(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:s(0)}),i(l,"throw",{value:s(1)}),i(l,"return",{value:s(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function s(i){return function(s){var c=[i,s];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}function M(e){var t=s.theme.useToken().token;return y().createElement("div",{style:{maxHeight:"60vh",overflow:"auto",padding:"".concat(t.paddingXS,"px ").concat(t.paddingSM,"px"),borderRadius:t.borderRadius,background:t.colorFillAlter,whiteSpace:"pre-wrap",wordBreak:"break-word"}},y().createElement(s.Typography.Text,null,e.message))}u().extend(d());var A=y().memo(function(e){var t,n,r=e.popoverVisible,i=e.setPopoverVisible,c=e.tasks,f=e.refresh,d=e.loading,m=(0,a.useApp)(),b=(t=(0,l.useFlowEngine)(),function(e,n){return t.context.t(e,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({ns:[v,"client"],nsMode:"fallback"},n))}),g=s.theme.useToken().token,k=null!=(n=m.pm.get("async-task-manager"))?n:m.pm.get("@nocobase/plugin-async-task-manager"),O=(0,p.useMemo)(function(){return m.apiClient.resource("asyncTasks")},[m.apiClient]),S=(0,p.useMemo)(function(){return[{title:b("Created at"),dataIndex:"createdAt",key:"createdAt",width:5*g.controlHeight,render:function(e){return e?y().createElement(s.Tooltip,{title:u()(e).format("YYYY-MM-DD HH:mm:ss")},u()(e).fromNow()):"-"}},{title:b("Task"),dataIndex:"title",key:"title",ellipsis:!0},{title:b("Status"),dataIndex:"status",key:"status",width:5*g.controlHeight,render:function(e,t){var n,r=null!=(n=h[String(null!=e?e:null)])?n:h[String(null)];return y().createElement(s.Space,{align:"center",size:g.marginXS},y().createElement("span",null,function(){var n,o,a={width:3*g.controlHeight,margin:0};switch(e){case null:case -2:return y().createElement(s.Alert,{showIcon:!1,message:b(r.label),banner:!0});case 0:return y().createElement(s.Progress,{type:"line",size:"small",strokeWidth:g.lineWidthBold,percent:Number(((null!=(n=t.progressCurrent)?n:0)/(null!=(o=t.progressTotal)?o:1)*100).toFixed(2)),status:"active",style:a,format:function(e){return"".concat((null!=e?e:0).toFixed(1),"%")}});case 1:return y().createElement(s.Progress,{type:"line",size:"small",strokeWidth:g.lineWidthBold,percent:100,status:"success",style:a,format:function(){return""}});case -1:return y().createElement(s.Progress,{type:"line",size:"small",strokeWidth:g.lineWidthBold,percent:100,status:"exception",style:a,format:function(){return""}});default:return null}}()),y().createElement(s.Tag,{color:r.color,icon:r.icon?y().createElement(a.Icon,{type:r.icon}):null,style:{margin:0,paddingInline:g.paddingXXS,height:g.controlHeightSM,width:g.controlHeightSM}}))}},{title:b("Actions"),dataIndex:"result",key:"actions",width:6*g.controlHeight,render:function(e,t){var n,r=[],a=function(e,t){if(t)return null==e?void 0:e.taskOrigins.get(t)}(k,t.origin),l=null==a?void 0:a.Result,c=null==a?void 0:a.ResultButton;return t.cancelable&&(0===t.status||null===t.status)&&r.push(y().createElement(s.Popconfirm,{key:"cancel",title:b("Confirm cancel"),description:b("Confirm to cancel this task?"),onConfirm:function(){return w(function(){return x(this,function(e){switch(e.label){case 0:return[4,O.stop({filterByTk:t.id})];case 1:return e.sent(),f(),[2]}})})()},okText:b("Confirm"),cancelText:b("Cancel")},y().createElement(s.Button,{type:"link",size:"small",icon:y().createElement(o.StopOutlined,null)},b("Stop")))),1===t.status&&e&&(c?r.push(y().createElement(c,{key:"result-button",task:t})):r.push(y().createElement(s.Button,{key:"view",type:"link",size:"small",icon:y().createElement(o.EyeOutlined,null),onClick:function(){i(!1),s.Modal.info({title:b("Task result"),content:l?y().createElement(l,{payload:e,task:t}):y().createElement("div",null,b("No renderer available for this task type, payload: {{payload}}",{payload:String(e)}))})}},b("View result")))),-1===t.status&&(n=e)&&(void 0===n?"undefined":P(n))==="object"&&r.push(y().createElement(s.Button,{key:"error",type:"link",size:"small",icon:y().createElement(o.ExclamationCircleOutlined,null),onClick:function(){i(!1);var t,n,r,o,l=null!=(r=null==a?void 0:a.namespace)?r:"client";s.Modal.info({title:b("Error Details"),content:y().createElement(M,{message:b(null!=(o=e.message)?o:"",(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){E(e,t,n[t])})}return e}({},e.params),n=n={ns:l},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))}),closable:!0,width:g.screenMD})}},b("Error details"))),y().createElement(s.Space,{size:g.marginSM},r)}}]},[k,f,i,b,O,g]),j=y().createElement("div",{style:{maxHeight:"70vh",overflow:"auto",width:c.length>0?g.screenLG:6*g.controlHeight}},c.length>0?y().createElement(s.Table,{loading:d,columns:S,dataSource:c,size:"small",pagination:!1,rowKey:"id"}):y().createElement("div",{style:{paddingBlock:g.paddingLG,display:"flex",justifyContent:"center"}},y().createElement(s.Empty,{description:b("No tasks"),image:s.Empty.PRESENTED_IMAGE_SIMPLE})));return y().createElement(s.Popover,{content:j,trigger:"click",placement:"bottom",open:r,onOpenChange:i},y().createElement(s.Button,{type:"text",onClick:function(){i(!r),r||f()},icon:y().createElement(o.SyncOutlined,{spin:c.some(function(e){return 0===e.status})}),"data-testid":"async-tasks-button"}))});A.displayName="AsyncTasksButton";var B=(0,l.observer)(function(){var e=(0,a.useApp)(),t=(0,a.useMobileLayout)().isMobileLayout,n=(0,i.useRequest)(function(){return w(function(){var t,n;return x(this,function(r){switch(r.label){case 0:return[4,e.apiClient.resource("asyncTasks").list({sort:"-createdAt"})];case 1:return[2,null!=(t=null==(n=r.sent())?void 0:n.data)?t:{data:[]}]}})})()}),r=n.data,o=n.refresh,l=n.loading,s=j((0,p.useState)([]),2),c=s[0],u=s[1],f=j((0,p.useState)(!1),2),d=f[0],m=f[1];(0,p.useEffect)(function(){u(Array.isArray(null==r?void 0:r.data)?r.data:[])},[r]);var b=(0,p.useCallback)(function(){m(!0),o()},[o]),h=(0,p.useCallback)(function(e){var t=e.detail;(null==t?void 0:t.id)&&u(function(e){var n=function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||C(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),r=n.findIndex(function(e){return e.id===t.id});return -1===r?n.unshift(t):n.splice(r,1,t),n})},[]),v=(0,p.useCallback)(function(){o()},[o]),k=(0,p.useCallback)(function(){o()},[o]);return((0,p.useEffect)(function(){return e.eventBus.addEventListener("ws:message:async-tasks:created",b),e.eventBus.addEventListener("ws:message:async-tasks:progress",h),e.eventBus.addEventListener("ws:message:async-tasks:status",v),e.eventBus.addEventListener("ws:message:async-tasks:deleted",k),function(){e.eventBus.removeEventListener("ws:message:async-tasks:created",b),e.eventBus.removeEventListener("ws:message:async-tasks:progress",h),e.eventBus.removeEventListener("ws:message:async-tasks:status",v),e.eventBus.removeEventListener("ws:message:async-tasks:deleted",k)}},[e.eventBus,b,k,h,v]),t||0===c.length)?null:y().createElement(A,{tasks:c,refresh:o,loading:l,popoverVisible:d,setPopoverVisible:m})},{displayName:"AsyncTasksTopbarAction"}),_=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t,r;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return t=n,r=arguments,t=O(t),E(e=function(e,t){if(t&&("object"===P(t)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,T()?Reflect.construct(t,r||[],O(this).constructor):t.apply(this,r)),"sort",300),E(e,"actionId","async-tasks"),E(e,"testId","async-tasks-button"),E(e,"tooltip",(0,l.tExpr)("Async tasks",{ns:[v,"client"],nsMode:"fallback"})),e}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&S(n,e),t=[{key:"render",value:function(){return y().createElement(B,null)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(n.prototype,t),n}(a.TopbarActionModel),I=_}}]);
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ahooks"),require("@nocobase/client-v2"),require("dayjs"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine"),require("@nocobase/utils/client")):"function"==typeof define&&define.amd?define("@nocobase/plugin-async-task-manager/client-v2",["ahooks","@nocobase/client-v2","dayjs","react","antd","@ant-design/icons","@nocobase/flow-engine","@nocobase/utils/client"],t):"object"==typeof exports?exports["@nocobase/plugin-async-task-manager/client-v2"]=t(require("ahooks"),require("@nocobase/client-v2"),require("dayjs"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine"),require("@nocobase/utils/client")):e["@nocobase/plugin-async-task-manager/client-v2"]=t(e.ahooks,e["@nocobase/client-v2"],e.dayjs,e.react,e.antd,e["@ant-design/icons"],e["@nocobase/flow-engine"],e["@nocobase/utils/client"])}(self,function(e,t,n,r,o,i,a,c){return function(){"use strict";var u,l,s,f={375:function(e){e.exports=i},485:function(e){e.exports=t},694:function(e){e.exports=a},768:function(e){e.exports=c},625:function(t){t.exports=e},59:function(e){e.exports=o},185:function(e){e.exports=n},155:function(e){e.exports=r}},p={};function b(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}};return f[e].call(n.exports,n,n.exports,b),n.exports}b.m=f,b.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return b.d(t,{a:t}),t},b.d=function(e,t){for(var n in t)b.o(t,n)&&!b.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},b.f={},b.e=function(e){return Promise.all(Object.keys(b.f).reduce(function(t,n){return b.f[n](e,t),t},[]))},b.u=function(e){return""+e+".272bcdd5bb509394.js"},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},d={},b.l=function(e,t,n,r){if(d[e])return void d[e].push(t);if(void 0!==n)for(var o,i,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var u=a[c];if(u.getAttribute("src")==e||u.getAttribute("data-rspack")=="@nocobase/plugin-async-task-manager/client-v2:"+n){o=u;break}}o||(i=!0,(o=document.createElement("script")).timeout=120,b.nc&&o.setAttribute("nonce",b.nc),o.setAttribute("data-rspack","@nocobase/plugin-async-task-manager/client-v2:"+n),o.src=e),d[e]=[t];var l=function(t,n){o.onerror=o.onload=null,clearTimeout(s);var r=d[e];if(delete d[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(n)}),t)return t(n)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),i&&document.head.appendChild(o)},b.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.g.importScripts&&(y=b.g.location+"");var d,y,v=b.g.document;if(!y&&v&&(v.currentScript&&"SCRIPT"===v.currentScript.tagName.toUpperCase()&&(y=v.currentScript.src),!y)){var g=v.getElementsByTagName("script");if(g.length)for(var h=g.length-1;h>-1&&(!y||!/^http(s?):/.test(y));)y=g[h--].src}if(!y)throw Error("Automatic publicPath is not supported in this browser");b.p=y.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u={889:0},b.f.j=function(e,t){var n=b.o(u,e)?u[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=u[e]=[t,r]});t.push(n[2]=r);var o=b.p+b.u(e),i=Error();b.l(o,function(t){if(b.o(u,e)&&(0!==(n=u[e])&&(u[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+e,e)}},l=function(e,t){var n,r,o=t[0],i=t[1],a=t[2],c=0;if(o.some(function(e){return 0!==u[e]})){for(n in i)b.o(i,n)&&(b.m[n]=i[n]);a&&a(b)}for(e&&e(t);c<o.length;c++)r=o[c],b.o(u,r)&&u[r]&&u[r][0](),u[r]=0},(s=self.webpackChunk_nocobase_plugin_async_task_manager_client_v2=self.webpackChunk_nocobase_plugin_async_task_manager_client_v2||[]).forEach(l.bind(null,0)),s.push=l.bind(null,s.push.bind(s));var m={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src&&(e=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@nocobase/plugin-async-task-manager/dist/client-v2/")}if(!e){var r=window.__nocobase_modern_client_prefix__||"v",o="/"+(r=String(r).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",a=i.indexOf(o);e=a>=0?i.slice(0,a+1):"/"}e&&(e=e.replace(RegExp("/"+r+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-async-task-manager/dist/client-v2/"}b.p=e}(),!function(){b.r(m),b.d(m,{PluginAsyncTaskManagerClientV2:function(){return u},default:function(){return l}});var e=b(485),t=b(768);function n(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function r(e,t,n){return(r=c()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&i(o,n.prototype),o}).apply(null,arguments)}b(155);function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(e){var t="function"==typeof Map?new Map:void 0;return(a=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return r(e,arguments,o(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),i(n,e)})(e)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(c=function(){return!!e})()}var u=function(e){var r;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function a(){var e,n,r,i,u,l;if(!(this instanceof a))throw TypeError("Cannot call a class as a function");return n=a,r=arguments,n=o(n),i=e=function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,c()?Reflect.construct(n,r||[],o(this).constructor):n.apply(this,r)),u="taskOrigins",l=new t.Registry,u in i?Object.defineProperty(i,u,{value:l,enumerable:!0,configurable:!0,writable:!0}):i[u]=l,e}return a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),e&&i(a,e),r=[{key:"load",value:function(){var e;return(e=function(){return function(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(a,"next",{value:u(0)}),c(a,"throw",{value:u(1)}),c(a,"return",{value:u(2)}),"function"==typeof Symbol&&c(a,Symbol.iterator,{value:function(){return this}}),a;function u(c){return function(u){var l=[c,u];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(e){return this.flowEngine.registerModelLoaders({AsyncTasksTopbarActionModel:{extends:"TopbarActionModel",loader:function(){return b.e("338").then(b.bind(b,33))}}}),this.app.eventBus.dispatchEvent(new CustomEvent("plugin:async-task-manager:loaded",{detail:this})),[2]})},function(){var t=this,r=arguments;return new Promise(function(o,i){var a=e.apply(t,r);function c(e){n(a,o,i,c,u,"next",e)}function u(e){n(a,o,i,c,u,"throw",e)}c(void 0)})}).call(this)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(a.prototype,r),a}(a(e.Plugin)),l=u}(),m}()});
10
+ !function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t(require("ahooks"),require("@nocobase/client-v2"),require("dayjs"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine"),require("@nocobase/utils/client")):"function"==typeof define&&define.amd?define("@nocobase/plugin-async-task-manager/client-v2",["ahooks","@nocobase/client-v2","dayjs","react","antd","@ant-design/icons","@nocobase/flow-engine","@nocobase/utils/client"],t):"object"==typeof exports?exports["@nocobase/plugin-async-task-manager/client-v2"]=t(require("ahooks"),require("@nocobase/client-v2"),require("dayjs"),require("react"),require("antd"),require("@ant-design/icons"),require("@nocobase/flow-engine"),require("@nocobase/utils/client")):e["@nocobase/plugin-async-task-manager/client-v2"]=t(e.ahooks,e["@nocobase/client-v2"],e.dayjs,e.react,e.antd,e["@ant-design/icons"],e["@nocobase/flow-engine"],e["@nocobase/utils/client"])}(self,function(e,t,n,r,o,i,a,c){return function(){"use strict";var u,l,s,f={375:function(e){e.exports=i},485:function(e){e.exports=t},694:function(e){e.exports=a},768:function(e){e.exports=c},625:function(t){t.exports=e},59:function(e){e.exports=o},185:function(e){e.exports=n},155:function(e){e.exports=r}},p={};function b(e){var t=p[e];if(void 0!==t)return t.exports;var n=p[e]={exports:{}};return f[e].call(n.exports,n,n.exports,b),n.exports}b.m=f,b.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return b.d(t,{a:t}),t},b.d=function(e,t){for(var n in t)b.o(t,n)&&!b.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},b.f={},b.e=function(e){return Promise.all(Object.keys(b.f).reduce(function(t,n){return b.f[n](e,t),t},[]))},b.u=function(e){return""+e+".ab2aa854f987284c.js"},b.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),b.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},d={},b.l=function(e,t,n,r){if(d[e])return void d[e].push(t);if(void 0!==n)for(var o,i,a=document.getElementsByTagName("script"),c=0;c<a.length;c++){var u=a[c];if(u.getAttribute("src")==e||u.getAttribute("data-rspack")=="@nocobase/plugin-async-task-manager/client-v2:"+n){o=u;break}}o||(i=!0,(o=document.createElement("script")).timeout=120,b.nc&&o.setAttribute("nonce",b.nc),o.setAttribute("data-rspack","@nocobase/plugin-async-task-manager/client-v2:"+n),o.src=e),d[e]=[t];var l=function(t,n){o.onerror=o.onload=null,clearTimeout(s);var r=d[e];if(delete d[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach(function(e){return e(n)}),t)return t(n)},s=setTimeout(l.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=l.bind(null,o.onerror),o.onload=l.bind(null,o.onload),i&&document.head.appendChild(o)},b.r=function(e){"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},b.g.importScripts&&(y=b.g.location+"");var d,y,v=b.g.document;if(!y&&v&&(v.currentScript&&"SCRIPT"===v.currentScript.tagName.toUpperCase()&&(y=v.currentScript.src),!y)){var g=v.getElementsByTagName("script");if(g.length)for(var h=g.length-1;h>-1&&(!y||!/^http(s?):/.test(y));)y=g[h--].src}if(!y)throw Error("Automatic publicPath is not supported in this browser");b.p=y.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),u={889:0},b.f.j=function(e,t){var n=b.o(u,e)?u[e]:void 0;if(0!==n)if(n)t.push(n[2]);else{var r=new Promise(function(t,r){n=u[e]=[t,r]});t.push(n[2]=r);var o=b.p+b.u(e),i=Error();b.l(o,function(t){if(b.o(u,e)&&(0!==(n=u[e])&&(u[e]=void 0),n)){var r=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+e+" failed.\n("+r+": "+o+")",i.name="ChunkLoadError",i.type=r,i.request=o,n[1](i)}},"chunk-"+e,e)}},l=function(e,t){var n,r,o=t[0],i=t[1],a=t[2],c=0;if(o.some(function(e){return 0!==u[e]})){for(n in i)b.o(i,n)&&(b.m[n]=i[n]);a&&a(b)}for(e&&e(t);c<o.length;c++)r=o[c],b.o(u,r)&&u[r]&&u[r][0](),u[r]=0},(s=self.webpackChunk_nocobase_plugin_async_task_manager_client_v2=self.webpackChunk_nocobase_plugin_async_task_manager_client_v2||[]).forEach(l.bind(null,0)),s.push=l.bind(null,s.push.bind(s));var m={};return!function(){var e="",t="u">typeof document?document.currentScript:null;if(t&&t.src&&(e=t.src.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/")),!e){var n=window.__webpack_public_path__||"";n&&("/"!==n.charAt(n.length-1)&&(n+="/"),e=n+"static/plugins/@nocobase/plugin-async-task-manager/dist/client-v2/")}if(!e){var r=window.__nocobase_modern_client_prefix__||"v",o="/"+(r=String(r).replace(/^\/+|\/+$/g,"")||"v")+"/";if(!(e=window.__nocobase_public_path__||"")&&window.location&&window.location.pathname){var i=window.location.pathname||"/",a=i.indexOf(o);e=a>=0?i.slice(0,a+1):"/"}e&&(e=e.replace(RegExp("/"+r+"/?$"),"/")),e||(e="/"),"/"!==e.charAt(e.length-1)&&(e+="/"),e+="static/plugins/@nocobase/plugin-async-task-manager/dist/client-v2/"}b.p=e}(),!function(){b.r(m),b.d(m,{PluginAsyncTaskManagerClientV2:function(){return u},default:function(){return l}});var e=b(485),t=b(768);function n(e,t,n,r,o,i,a){try{var c=e[i](a),u=c.value}catch(e){n(e);return}c.done?t(u):Promise.resolve(u).then(r,o)}function r(e,t,n){return(r=c()?Reflect.construct:function(e,t,n){var r=[null];r.push.apply(r,t);var o=new(Function.bind.apply(e,r));return n&&i(o,n.prototype),o}).apply(null,arguments)}b(155);function o(e){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function i(e,t){return(i=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function a(e){var t="function"==typeof Map?new Map:void 0;return(a=function(e){if(null===e||-1===Function.toString.call(e).indexOf("[native code]"))return e;if("function"!=typeof e)throw TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,n)}function n(){return r(e,arguments,o(this).constructor)}return n.prototype=Object.create(e.prototype,{constructor:{value:n,enumerable:!1,writable:!0,configurable:!0}}),i(n,e)})(e)}function c(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(c=function(){return!!e})()}var u=function(e){var r;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function a(){var e,n,r,i,u,l;if(!(this instanceof a))throw TypeError("Cannot call a class as a function");return n=a,r=arguments,n=o(n),i=e=function(e,t){var n;if(t&&("object"==((n=t)&&"u">typeof Symbol&&n.constructor===Symbol?"symbol":typeof n)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,c()?Reflect.construct(n,r||[],o(this).constructor):n.apply(this,r)),u="taskOrigins",l=new t.Registry,u in i?Object.defineProperty(i,u,{value:l,enumerable:!0,configurable:!0,writable:!0}):i[u]=l,e}return a.prototype=Object.create(e&&e.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),e&&i(a,e),r=[{key:"load",value:function(){var e;return(e=function(){return function(e,t){var n,r,o,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},a=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),c=Object.defineProperty;return c(a,"next",{value:u(0)}),c(a,"throw",{value:u(1)}),c(a,"return",{value:u(2)}),"function"==typeof Symbol&&c(a,Symbol.iterator,{value:function(){return this}}),a;function u(c){return function(u){var l=[c,u];if(n)throw TypeError("Generator is already executing.");for(;a&&(a=0,l[0]&&(i=0)),i;)try{if(n=1,r&&(o=2&l[0]?r.return:l[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,l[1])).done)return o;switch(r=0,o&&(l=[2&l[0],o.value]),l[0]){case 0:case 1:o=l;break;case 4:return i.label++,{value:l[1],done:!1};case 5:i.label++,r=l[1],l=[0];continue;case 7:l=i.ops.pop(),i.trys.pop();continue;default:if(!(o=(o=i.trys).length>0&&o[o.length-1])&&(6===l[0]||2===l[0])){i=0;continue}if(3===l[0]&&(!o||l[1]>o[0]&&l[1]<o[3])){i.label=l[1];break}if(6===l[0]&&i.label<o[1]){i.label=o[1],o=l;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(l);break}o[2]&&i.ops.pop(),i.trys.pop();continue}l=t.call(e,i)}catch(e){l=[6,e],r=0}finally{n=o=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}}(this,function(e){return this.flowEngine.registerModelLoaders({AsyncTasksTopbarActionModel:{extends:"TopbarActionModel",loader:function(){return b.e("338").then(b.bind(b,33))}}}),this.app.eventBus.dispatchEvent(new CustomEvent("plugin:async-task-manager:loaded",{detail:this})),[2]})},function(){var t=this,r=arguments;return new Promise(function(o,i){var a=e.apply(t,r);function c(e){n(a,o,i,c,u,"next",e)}function u(e){n(a,o,i,c,u,"throw",e)}c(void 0)})}).call(this)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(a.prototype,r),a}(a(e.Plugin)),l=u}(),m}()});
@@ -8,19 +8,19 @@
8
8
  */
9
9
 
10
10
  module.exports = {
11
- "@nocobase/client": "2.2.0-beta.1",
11
+ "@nocobase/client": "2.2.0-beta.2",
12
12
  "react": "18.2.0",
13
- "@nocobase/utils": "2.2.0-beta.1",
14
- "@nocobase/flow-engine": "2.2.0-beta.1",
15
- "@nocobase/client-v2": "2.2.0-beta.1",
13
+ "@nocobase/utils": "2.2.0-beta.2",
14
+ "@nocobase/flow-engine": "2.2.0-beta.2",
15
+ "@nocobase/client-v2": "2.2.0-beta.2",
16
16
  "lodash": "4.18.1",
17
- "@nocobase/server": "2.2.0-beta.1",
18
- "@nocobase/logger": "2.2.0-beta.1",
19
- "@nocobase/database": "2.2.0-beta.1",
17
+ "@nocobase/server": "2.2.0-beta.2",
18
+ "@nocobase/logger": "2.2.0-beta.2",
19
+ "@nocobase/database": "2.2.0-beta.2",
20
20
  "antd": "5.24.2",
21
21
  "react-i18next": "11.18.6",
22
22
  "dayjs": "1.11.13",
23
23
  "@ant-design/icons": "5.6.1",
24
24
  "ahooks": "3.7.8",
25
- "@nocobase/actions": "2.2.0-beta.1"
25
+ "@nocobase/actions": "2.2.0-beta.2"
26
26
  };
@@ -15,6 +15,7 @@ import { ConcurrencyMode, ConcurrencyMonitor } from './interfaces/concurrency-mo
15
15
  export declare class BaseTaskManager implements AsyncTasksManager {
16
16
  private taskTypes;
17
17
  private tasks;
18
+ private taskReqIds;
18
19
  private readonly cleanupDelay;
19
20
  private cleanupTimer;
20
21
  private logger;
@@ -35,13 +36,14 @@ export declare class BaseTaskManager implements AsyncTasksManager {
35
36
  setLogger(logger: Logger): void;
36
37
  setApp(app: Application): void;
37
38
  private enqueueTask;
39
+ private getTaskLogger;
38
40
  cancelTask(taskId: TaskId, externally?: boolean): Promise<void>;
39
41
  createTask(data: TaskModel, { useQueue, ...options }?: CreateTaskOptions): Promise<ITask>;
40
42
  getTask(taskId: TaskId): ITask | undefined;
41
43
  getTaskStatus(taskId: TaskId): Promise<TaskStatus>;
42
44
  registerTaskType(taskType: TaskConstructor): void;
43
45
  private prepareTask;
44
- runTask(task: ITask): Promise<void>;
46
+ runTask(task: ITask, reqId?: string): Promise<void>;
45
47
  }
46
48
  export declare class ConcurrencyMonitorDelegate implements ConcurrencyMonitor {
47
49
  private mode;
@@ -52,6 +52,7 @@ const PROCESS_CONCURRENCY_MONITOR = new import_base_concurrency_monitor.BaseConc
52
52
  class BaseTaskManager {
53
53
  taskTypes = /* @__PURE__ */ new Map();
54
54
  tasks = /* @__PURE__ */ new Map();
55
+ taskReqIds = /* @__PURE__ */ new Map();
55
56
  // Clean up completed tasks after 30 minutes by default
56
57
  cleanupDelay = 30 * 60 * 1e3;
57
58
  cleanupTimer;
@@ -66,21 +67,21 @@ class BaseTaskManager {
66
67
  this.concurrencyMonitor.concurrency = concurrency;
67
68
  }
68
69
  idle = () => this.app.serving(WORKER_JOB_ASYNC_TASK_PROCESS) && this.concurrencyMonitor.idle();
69
- onQueueTask = async ({ id }, { queueOptions }) => {
70
+ onQueueTask = async ({ id, reqId }, { queueOptions }) => {
70
71
  const task = await this.prepareTask(id);
71
72
  if (!this.concurrencyMonitor.increase(task.record.id)) {
72
- this.enqueueTask(task, queueOptions);
73
+ this.enqueueTask(task, queueOptions, reqId);
73
74
  return;
74
75
  }
75
76
  try {
76
- await this.runTask(task);
77
+ await this.runTask(task, reqId);
77
78
  } finally {
78
79
  this.concurrencyMonitor.decrease(task.record.id);
79
80
  }
80
81
  };
81
- onTaskProgress = (item) => {
82
+ onTaskProgress = (item, logger) => {
82
83
  const userId = item.createdById;
83
- this.logger.trace(`Task ${item.id} of user(${userId}) progress: ${item.progressCurrent} / ${item.progressTotal}`);
84
+ logger.trace(`Task ${item.id} of user(${userId}) progress: ${item.progressCurrent} / ${item.progressTotal}`);
84
85
  if (userId) {
85
86
  const throttledEmit = this.getThrottledProgressEmitter(item.id, userId);
86
87
  throttledEmit(item);
@@ -100,6 +101,12 @@ class BaseTaskManager {
100
101
  };
101
102
  onTaskStatusChanged = (task) => {
102
103
  if (!task.changed("status")) return;
104
+ if (task.doneAt) {
105
+ this.progressThrottles.delete(task.id);
106
+ this.tasks.delete(task.id);
107
+ this.taskReqIds.delete(task.id);
108
+ this.concurrencyMonitor.decrease(task.id);
109
+ }
103
110
  const userId = task.createdById;
104
111
  if (!userId) return;
105
112
  this.app.emit("ws:sendToUser", {
@@ -119,17 +126,13 @@ class BaseTaskManager {
119
126
  this.progressThrottles.delete(task.id);
120
127
  }
121
128
  }
122
- if (task.doneAt) {
123
- this.progressThrottles.delete(task.id);
124
- this.tasks.delete(task.id);
125
- this.concurrencyMonitor.decrease(task.id);
126
- }
127
129
  if (task.status === import_constants.TASK_STATUS.SUCCEEDED) {
128
130
  this.app.emit("workflow:dispatch");
129
131
  }
130
132
  };
131
133
  onTaskAfterDelete = (task) => {
132
134
  this.tasks.delete(task.id);
135
+ this.taskReqIds.delete(task.id);
133
136
  this.progressThrottles.delete(task.id);
134
137
  this.concurrencyMonitor.decrease(task.id);
135
138
  const userId = task.createdById;
@@ -170,6 +173,7 @@ class BaseTaskManager {
170
173
  if (tasksToCleanup.length) {
171
174
  for (const task of tasksToCleanup) {
172
175
  this.tasks.delete(task.id);
176
+ this.taskReqIds.delete(task.id);
173
177
  this.progressThrottles.delete(task.id);
174
178
  this.concurrencyMonitor.decrease(task.id);
175
179
  }
@@ -238,9 +242,12 @@ class BaseTaskManager {
238
242
  this.app.db.on("asyncTasks.afterUpdate", this.onTaskStatusChanged);
239
243
  this.app.db.on("asyncTasks.afterDestroy", this.onTaskAfterDelete);
240
244
  }
241
- enqueueTask(task, queueOptions) {
245
+ enqueueTask(task, queueOptions, reqId = this.taskReqIds.get(task.record.id)) {
242
246
  const plugin = this.app.pm.get(import_plugin.default);
243
- this.app.eventQueue.publish(`${plugin.name}.task`, { id: task.record.id }, queueOptions);
247
+ this.app.eventQueue.publish(`${plugin.name}.task`, { id: task.record.id, reqId }, queueOptions);
248
+ }
249
+ getTaskLogger(reqId) {
250
+ return reqId ? this.logger.child({ reqId }) : this.logger;
244
251
  }
245
252
  async cancelTask(taskId, externally = false) {
246
253
  const task = this.tasks.get(taskId);
@@ -271,9 +278,12 @@ class BaseTaskManager {
271
278
  }
272
279
  }
273
280
  async createTask(data, { useQueue, ...options } = {}) {
281
+ var _a;
282
+ const reqId = (_a = options.context) == null ? void 0 : _a.reqId;
283
+ const logger = this.getTaskLogger(reqId);
274
284
  const taskType = this.taskTypes.get(data.type);
275
285
  if (!taskType) {
276
- this.logger.error(`Task type not found: ${data.type}, params: ${JSON.stringify(data.params)}`);
286
+ logger.error(`Task type not found: ${data.type}, params: ${JSON.stringify(data.params)}`);
277
287
  throw new Error(`Task type ${data.type} not found`);
278
288
  }
279
289
  const values = taskType.defaults({
@@ -283,14 +293,17 @@ class BaseTaskManager {
283
293
  });
284
294
  const DBTaskModel = this.app.db.getModel("asyncTasks");
285
295
  const record = await DBTaskModel.create(values, options);
286
- this.logger.debug(`Creating task of type: ${data.type}`);
287
- this.logger.debug(`Task data: ${JSON.stringify(data)}`);
296
+ logger.debug(`Creating task of type: ${data.type}`);
297
+ logger.debug(`Task data: ${JSON.stringify(data)}`);
288
298
  const task = new taskType(record);
289
- this.logger.info(`New task of type: ${data.type} created as ${record.id}`);
299
+ if (reqId && !useQueue) {
300
+ this.taskReqIds.set(record.id, reqId);
301
+ }
302
+ logger.info(`New task of type: ${data.type} created as ${record.id}`);
290
303
  if (useQueue) {
291
- this.logger.debug(`New task ${record.id} will be sent to queue for processing`);
304
+ logger.debug(`New task ${record.id} will be sent to queue for processing`);
292
305
  const queueOptions = typeof useQueue === "object" ? useQueue : {};
293
- this.enqueueTask(task, queueOptions);
306
+ this.enqueueTask(task, queueOptions, reqId);
294
307
  }
295
308
  return task;
296
309
  }
@@ -329,19 +342,21 @@ class BaseTaskManager {
329
342
  const task = new taskType(record);
330
343
  return task;
331
344
  }
332
- async runTask(task) {
345
+ async runTask(task, reqId = this.taskReqIds.get(task.record.id)) {
333
346
  if (task.record.status === import_constants.TASK_STATUS.PENDING) {
334
- task.setLogger(this.logger);
347
+ const logger = this.getTaskLogger(reqId);
348
+ task.setLogger(logger);
335
349
  task.setApp(this.app);
336
- task.onProgress = this.onTaskProgress;
350
+ task.onProgress = (record) => this.onTaskProgress(record, logger);
337
351
  this.tasks.set(task.record.id, task);
338
352
  try {
339
- this.logger.debug(`Starting execution of task ${task.record.id} from queue`);
353
+ logger.debug(`Starting execution of task ${task.record.id} from queue`);
340
354
  await task.run();
341
355
  } catch (error) {
342
- this.logger.error(`Error executing task ${task.record.id} from queue: ${error.message}`);
356
+ logger.error(`Error executing task ${task.record.id} from queue: ${error.message}`);
343
357
  } finally {
344
358
  this.tasks.delete(task.record.id);
359
+ this.taskReqIds.delete(task.record.id);
345
360
  }
346
361
  }
347
362
  }
@@ -13,7 +13,9 @@ import { TaskId, TaskStatus } from '../../common/types';
13
13
  import { Transactionable } from '@nocobase/database';
14
14
  export interface CreateTaskOptions extends Transactionable {
15
15
  useQueue?: boolean | QueueMessageOptions;
16
- context?: any;
16
+ context?: object & {
17
+ reqId?: string;
18
+ };
17
19
  }
18
20
  export interface AsyncTasksManager {
19
21
  concurrency: number;
@@ -24,7 +26,7 @@ export interface AsyncTasksManager {
24
26
  cancelTask(taskId: TaskId): Promise<void>;
25
27
  getTaskStatus(taskId: TaskId): Promise<TaskStatus>;
26
28
  getTask(taskId: TaskId): ITask | undefined;
27
- runTask(task: ITask): Promise<void>;
29
+ runTask(task: ITask, reqId?: string): Promise<void>;
28
30
  }
29
31
  export declare class CancelError extends Error {
30
32
  constructor(message?: string);
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "description": "Manage and monitor asynchronous tasks such as data import/export. Support task progress tracking and notification.",
7
7
  "description.ru-RU": "Управление асинхронными задачами и мониторинг (например, импорт/экспорт данных). Поддержка отслеживания прогресса и уведомлений о задачах.",
8
8
  "description.zh-CN": "管理和监控数据导入导出等异步任务。支持任务进度跟踪和通知。",
9
- "version": "2.2.0-beta.1",
9
+ "version": "2.2.0-beta.2",
10
10
  "main": "dist/server/index.js",
11
11
  "peerDependencies": {
12
12
  "@nocobase/client": "2.x",
@@ -19,5 +19,5 @@
19
19
  "p-queue": "^6.6.2"
20
20
  },
21
21
  "license": "Apache-2.0",
22
- "gitHead": "f82fa9d0c3aa8e00e53dd94e404a312483b4866b"
22
+ "gitHead": "2fe3e6a86fc1d0cd039349a68b2e4d1d6945ce45"
23
23
  }
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- (self.webpackChunk_nocobase_plugin_async_task_manager_client_v2=self.webpackChunk_nocobase_plugin_async_task_manager_client_v2||[]).push([["338"],{264:function(e){e.exports=function(e,t,n){e=e||{};var r=t.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function a(e,t,n,o){return r.fromToBase(e,t,n,o)}n.en.relativeTime=o,r.fromToBase=function(t,r,a,l,i){for(var s,c,u,f=a.$locale().relativeTime||o,d=e.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],p=d.length,y=0;y<p;y+=1){var m=d[y];m.d&&(s=l?n(t).diff(a,m.d,!0):a.diff(t,m.d,!0));var b=(e.rounding||Math.round)(Math.abs(s));if(u=s>0,b<=m.r||!m.r){b<=1&&y>0&&(m=d[y-1]);var h=f[m.l];i&&(b=i(""+b)),c="string"==typeof h?h.replace("%d",b):h(b,r,m.l,u);break}}if(r)return c;var v=u?f.future:f.past;return"function"==typeof v?v(c):v.replace("%s",c)},r.to=function(e,t){return a(e,t,this,!0)},r.from=function(e,t){return a(e,t,this)};var l=function(e){return e.$u?n.utc():n()};r.toNow=function(e){return this.to(l(this),e)},r.fromNow=function(e){return this.from(l(this),e)}}},33:function(e,t,n){"use strict";n.r(t),n.d(t,{AsyncTasksTopbarActionModel:function(){return _},default:function(){return B}});var r,o=n(375),a=n(485),l=n(694),i=n(625),s=n(59),c=n(185),u=n.n(c),f=n(264),d=n.n(f),p=n(155),y=n.n(p);function m(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var b="@nocobase/plugin-async-task-manager",h=(m(r={},null,{value:null,label:"{{t('Waiting', { ns: '".concat(b,"' })}}"),color:"default",icon:"ClockCircleOutlined"}),m(r,0,{value:0,label:"{{t('Processing', { ns: '".concat(b,"' })}}"),color:"processing",icon:"LoadingOutlined"}),m(r,1,{value:1,label:"{{t('Completed', { ns: '".concat(b,"' })}}"),color:"success",icon:"CheckCircleOutlined"}),m(r,-1,{value:-1,label:"{{t('Failed', { ns: '".concat(b,"' })}}"),color:"error",icon:"CloseCircleOutlined"}),m(r,-2,{value:-2,label:"{{t('Cancelled', { ns: '".concat(b,"' })}}"),color:"warning",icon:"StopOutlined"}),r),v="@nocobase/plugin-async-task-manager";function g(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}function k(e,t,n,r,o,a,l){try{var i=e[a](l),s=i.value}catch(e){n(e);return}i.done?t(s):Promise.resolve(s).then(r,o)}function E(e){return function(){var t=this,n=arguments;return new Promise(function(r,o){var a=e.apply(t,n);function l(e){k(a,r,o,l,i,"next",e)}function i(e){k(a,r,o,l,i,"throw",e)}l(void 0)})}}function w(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function O(e){return(O=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function S(e,t){return(S=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function j(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){var n,r,o=null==e?null:"u">typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=o){var a=[],l=!0,i=!1;try{for(o=o.call(e);!(l=(n=o.next()).done)&&(a.push(n.value),!t||a.length!==t);l=!0);}catch(e){i=!0,r=e}finally{try{l||null==o.return||o.return()}finally{if(i)throw r}}return a}}(e,t)||C(e,t)||function(){throw TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function P(e){return e&&"u">typeof Symbol&&e.constructor===Symbol?"symbol":typeof e}function C(e,t){if(e){if("string"==typeof e)return g(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(n);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return g(e,t)}}function T(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(e){}return(T=function(){return!!e})()}function M(e,t){var n,r,o,a={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]},l=Object.create(("function"==typeof Iterator?Iterator:Object).prototype),i=Object.defineProperty;return i(l,"next",{value:s(0)}),i(l,"throw",{value:s(1)}),i(l,"return",{value:s(2)}),"function"==typeof Symbol&&i(l,Symbol.iterator,{value:function(){return this}}),l;function s(i){return function(s){var c=[i,s];if(n)throw TypeError("Generator is already executing.");for(;l&&(l=0,c[0]&&(a=0)),a;)try{if(n=1,r&&(o=2&c[0]?r.return:c[0]?r.throw||((o=r.return)&&o.call(r),0):r.next)&&!(o=o.call(r,c[1])).done)return o;switch(r=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return a.label++,{value:c[1],done:!1};case 5:a.label++,r=c[1],c=[0];continue;case 7:c=a.ops.pop(),a.trys.pop();continue;default:if(!(o=(o=a.trys).length>0&&o[o.length-1])&&(6===c[0]||2===c[0])){a=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){a.label=c[1];break}if(6===c[0]&&a.label<o[1]){a.label=o[1],o=c;break}if(o&&a.label<o[2]){a.label=o[2],a.ops.push(c);break}o[2]&&a.ops.pop(),a.trys.pop();continue}c=t.call(e,a)}catch(e){c=[6,e],r=0}finally{n=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}}u().extend(d());var A=y().memo(function(e){var t,n,r=e.popoverVisible,i=e.setPopoverVisible,c=e.tasks,f=e.refresh,d=e.loading,m=(0,a.useApp)(),b=(t=(0,l.useFlowEngine)(),function(e,n){return t.context.t(e,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){var r;r=n[t],t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r})}return e}({ns:[v,"client"],nsMode:"fallback"},n))}),g=s.theme.useToken().token,k=null!=(n=m.pm.get("async-task-manager"))?n:m.pm.get("@nocobase/plugin-async-task-manager"),O=(0,p.useMemo)(function(){return m.apiClient.resource("asyncTasks")},[m.apiClient]),S=(0,p.useMemo)(function(){return[{title:b("Created at"),dataIndex:"createdAt",key:"createdAt",width:5*g.controlHeight,render:function(e){return e?y().createElement(s.Tooltip,{title:u()(e).format("YYYY-MM-DD HH:mm:ss")},u()(e).fromNow()):"-"}},{title:b("Task"),dataIndex:"title",key:"title",ellipsis:!0},{title:b("Status"),dataIndex:"status",key:"status",width:5*g.controlHeight,render:function(e,t){var n,r=null!=(n=h[String(null!=e?e:null)])?n:h[String(null)];return y().createElement(s.Space,{align:"center",size:g.marginXS},y().createElement("span",null,function(){var n,o,a={width:3*g.controlHeight,margin:0};switch(e){case null:case -2:return y().createElement(s.Alert,{showIcon:!1,message:b(r.label),banner:!0});case 0:return y().createElement(s.Progress,{type:"line",size:"small",strokeWidth:g.lineWidthBold,percent:Number(((null!=(n=t.progressCurrent)?n:0)/(null!=(o=t.progressTotal)?o:1)*100).toFixed(2)),status:"active",style:a,format:function(e){return"".concat((null!=e?e:0).toFixed(1),"%")}});case 1:return y().createElement(s.Progress,{type:"line",size:"small",strokeWidth:g.lineWidthBold,percent:100,status:"success",style:a,format:function(){return""}});case -1:return y().createElement(s.Progress,{type:"line",size:"small",strokeWidth:g.lineWidthBold,percent:100,status:"exception",style:a,format:function(){return""}});default:return null}}()),y().createElement(s.Tag,{color:r.color,icon:r.icon?y().createElement(a.Icon,{type:r.icon}):null,style:{margin:0,paddingInline:g.paddingXXS,height:g.controlHeightSM,width:g.controlHeightSM}}))}},{title:b("Actions"),dataIndex:"result",key:"actions",width:6*g.controlHeight,render:function(e,t){var n,r=[],a=function(e,t){if(t)return null==e?void 0:e.taskOrigins.get(t)}(k,t.origin),l=null==a?void 0:a.Result,c=null==a?void 0:a.ResultButton;return t.cancelable&&(0===t.status||null===t.status)&&r.push(y().createElement(s.Popconfirm,{key:"cancel",title:b("Confirm cancel"),description:b("Confirm to cancel this task?"),onConfirm:function(){return E(function(){return M(this,function(e){switch(e.label){case 0:return[4,O.stop({filterByTk:t.id})];case 1:return e.sent(),f(),[2]}})})()},okText:b("Confirm"),cancelText:b("Cancel")},y().createElement(s.Button,{type:"link",size:"small",icon:y().createElement(o.StopOutlined,null)},b("Stop")))),1===t.status&&e&&(c?r.push(y().createElement(c,{key:"result-button",task:t})):r.push(y().createElement(s.Button,{key:"view",type:"link",size:"small",icon:y().createElement(o.EyeOutlined,null),onClick:function(){i(!1),s.Modal.info({title:b("Task result"),content:l?y().createElement(l,{payload:e,task:t}):y().createElement("div",null,b("No renderer available for this task type, payload: {{payload}}",{payload:String(e)}))})}},b("View result")))),-1===t.status&&(n=e)&&(void 0===n?"undefined":P(n))==="object"&&r.push(y().createElement(s.Button,{key:"error",type:"link",size:"small",icon:y().createElement(o.ExclamationCircleOutlined,null),onClick:function(){i(!1);var t,n,r,o,l=null!=(r=null==a?void 0:a.namespace)?r:"client";s.Modal.info({title:b("Error Details"),content:y().createElement(s.Typography.Text,null,b(null!=(o=e.message)?o:"",(t=function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{},r=Object.keys(n);"function"==typeof Object.getOwnPropertySymbols&&(r=r.concat(Object.getOwnPropertySymbols(n).filter(function(e){return Object.getOwnPropertyDescriptor(n,e).enumerable}))),r.forEach(function(t){w(e,t,n[t])})}return e}({},e.params),n=n={ns:l},Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):(function(e){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t.push.apply(t,n)}return t})(Object(n)).forEach(function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}),t))),closable:!0,width:g.screenSM})}},b("Error details"))),y().createElement(s.Space,{size:g.marginSM},r)}}]},[k,f,i,b,O,g]),j=y().createElement("div",{style:{maxHeight:"70vh",overflow:"auto",width:c.length>0?g.screenLG:6*g.controlHeight}},c.length>0?y().createElement(s.Table,{loading:d,columns:S,dataSource:c,size:"small",pagination:!1,rowKey:"id"}):y().createElement("div",{style:{paddingBlock:g.paddingLG,display:"flex",justifyContent:"center"}},y().createElement(s.Empty,{description:b("No tasks"),image:s.Empty.PRESENTED_IMAGE_SIMPLE})));return y().createElement(s.Popover,{content:j,trigger:"click",placement:"bottom",open:r,onOpenChange:i},y().createElement(s.Button,{type:"text",onClick:function(){i(!r),r||f()},icon:y().createElement(o.SyncOutlined,{spin:c.some(function(e){return 0===e.status})}),"data-testid":"async-tasks-button"}))});A.displayName="AsyncTasksButton";var x=(0,l.observer)(function(){var e=(0,a.useApp)(),t=(0,a.useMobileLayout)().isMobileLayout,n=(0,i.useRequest)(function(){return E(function(){var t,n;return M(this,function(r){switch(r.label){case 0:return[4,e.apiClient.resource("asyncTasks").list({sort:"-createdAt"})];case 1:return[2,null!=(t=null==(n=r.sent())?void 0:n.data)?t:{data:[]}]}})})()}),r=n.data,o=n.refresh,l=n.loading,s=j((0,p.useState)([]),2),c=s[0],u=s[1],f=j((0,p.useState)(!1),2),d=f[0],m=f[1];(0,p.useEffect)(function(){u(Array.isArray(null==r?void 0:r.data)?r.data:[])},[r]);var b=(0,p.useCallback)(function(){m(!0),o()},[o]),h=(0,p.useCallback)(function(e){var t=e.detail;(null==t?void 0:t.id)&&u(function(e){var n=function(e){if(Array.isArray(e))return g(e)}(e)||function(e){if("u">typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||C(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}(),r=n.findIndex(function(e){return e.id===t.id});return -1===r?n.unshift(t):n.splice(r,1,t),n})},[]),v=(0,p.useCallback)(function(){o()},[o]),k=(0,p.useCallback)(function(){o()},[o]);return((0,p.useEffect)(function(){return e.eventBus.addEventListener("ws:message:async-tasks:created",b),e.eventBus.addEventListener("ws:message:async-tasks:progress",h),e.eventBus.addEventListener("ws:message:async-tasks:status",v),e.eventBus.addEventListener("ws:message:async-tasks:deleted",k),function(){e.eventBus.removeEventListener("ws:message:async-tasks:created",b),e.eventBus.removeEventListener("ws:message:async-tasks:progress",h),e.eventBus.removeEventListener("ws:message:async-tasks:status",v),e.eventBus.removeEventListener("ws:message:async-tasks:deleted",k)}},[e.eventBus,b,k,h,v]),t||0===c.length)?null:y().createElement(A,{tasks:c,refresh:o,loading:l,popoverVisible:d,setPopoverVisible:m})},{displayName:"AsyncTasksTopbarAction"}),_=function(e){var t;if("function"!=typeof e&&null!==e)throw TypeError("Super expression must either be null or a function");function n(){var e,t,r;if(!(this instanceof n))throw TypeError("Cannot call a class as a function");return t=n,r=arguments,t=O(t),w(e=function(e,t){if(t&&("object"===P(t)||"function"==typeof t))return t;if(void 0===e)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(this,T()?Reflect.construct(t,r||[],O(this).constructor):t.apply(this,r)),"sort",300),w(e,"actionId","async-tasks"),w(e,"testId","async-tasks-button"),w(e,"tooltip",(0,l.tExpr)("Async tasks",{ns:[v,"client"],nsMode:"fallback"})),e}return n.prototype=Object.create(e&&e.prototype,{constructor:{value:n,writable:!0,configurable:!0}}),e&&S(n,e),t=[{key:"render",value:function(){return y().createElement(x,null)}}],function(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}(n.prototype,t),n}(a.TopbarActionModel),B=_}}]);