@tachybase/module-backup 1.3.21 → 1.3.22

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.
@@ -1,3 +1,3 @@
1
- import { CollectionOptions } from '@tachybase/database';
1
+ import { CollectionOptions } from '@tego/server';
2
2
  declare const _default: CollectionOptions;
3
3
  export default _default;
@@ -1,4 +1,4 @@
1
- (function(A,g){typeof exports=="object"&&typeof module!="undefined"?g(exports,require("@tachybase/client"),require("react/jsx-runtime"),require("react"),require("@tachybase/components"),require("@ant-design/icons"),require("antd"),require("react-i18next")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","react/jsx-runtime","react","@tachybase/components","@ant-design/icons","antd","react-i18next"],g):(A=typeof globalThis!="undefined"?globalThis:A||self,g(A["@tachybase/module-backup"]={},A["@tachybase/client"],A.jsxRuntime,A.react,A["@tachybase/components"],A["@ant-design/icons"],A.antd,A["react-i18next"]))})(this,function(A,g,n,y,me,X,k,ie){"use strict";var Zo=Object.defineProperty,_o=Object.defineProperties;var Go=Object.getOwnPropertyDescriptors;var po=Object.getOwnPropertySymbols;var $o=Object.prototype.hasOwnProperty,Yo=Object.prototype.propertyIsEnumerable;var mo=(A,g,n)=>g in A?Zo(A,g,{enumerable:!0,configurable:!0,writable:!0,value:n}):A[g]=n,ae=(A,g)=>{for(var n in g||(g={}))$o.call(g,n)&&mo(A,n,g[n]);if(po)for(var n of po(g))Yo.call(g,n)&&mo(A,n,g[n]);return A},De=(A,g)=>_o(A,Go(g));var $=(A,g,n)=>new Promise((y,me)=>{var X=z=>{try{ie(n.next(z))}catch(Q){me(Q)}},k=z=>{try{ie(n.throw(z))}catch(Q){me(Q)}},ie=z=>z.done?y(z.value):Promise.resolve(z.value).then(X,k);ie((n=n.apply(A,g)).next())});var z=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},Q={exports:{}},fo=Q.exports,Fe;function yo(){return Fe||(Fe=1,function(e,t){(function(a,o){o()})(fo,function(){function a(i,s){return typeof s=="undefined"?s={autoBom:!1}:typeof s!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),s={autoBom:!s}),s.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(i.type)?new Blob(["\uFEFF",i],{type:i.type}):i}function o(i,s,v){var u=new XMLHttpRequest;u.open("GET",i),u.responseType="blob",u.onload=function(){p(u.response,s,v)},u.onerror=function(){console.error("could not download file")},u.send()}function r(i){var s=new XMLHttpRequest;s.open("HEAD",i,!1);try{s.send()}catch(v){}return 200<=s.status&&299>=s.status}function c(i){try{i.dispatchEvent(new MouseEvent("click"))}catch(v){var s=document.createEvent("MouseEvents");s.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),i.dispatchEvent(s)}}var l=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof z=="object"&&z.global===z?z:void 0,m=l.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),p=l.saveAs||(typeof window!="object"||window!==l?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(i,s,v){var u=l.URL||l.webkitURL,f=document.createElement("a");s=s||i.name||"download",f.download=s,f.rel="noopener",typeof i=="string"?(f.href=i,f.origin===location.origin?c(f):r(f.href)?o(i,s,v):c(f,f.target="_blank")):(f.href=u.createObjectURL(i),setTimeout(function(){u.revokeObjectURL(f.href)},4e4),setTimeout(function(){c(f)},0))}:"msSaveOrOpenBlob"in navigator?function(i,s,v){if(s=s||i.name||"download",typeof i!="string")navigator.msSaveOrOpenBlob(a(i,v),s);else if(r(i))o(i,s,v);else{var u=document.createElement("a");u.href=i,u.target="_blank",setTimeout(function(){c(u)})}}:function(i,s,v,u){if(u=u||open("","_blank"),u&&(u.document.title=u.document.body.innerText="downloading..."),typeof i=="string")return o(i,s,v);var f=i.type==="application/octet-stream",h=/constructor/i.test(l.HTMLElement)||l.safari,d=/CriOS\/[\d]+/.test(navigator.userAgent);if((d||f&&h||m)&&typeof FileReader!="undefined"){var b=new FileReader;b.onloadend=function(){var B=b.result;B=d?B:B.replace(/^data:[^;]*;/,"data:attachment/file;"),u?u.location.href=B:location=B,u=null},b.readAsDataURL(i)}else{var S=l.URL||l.webkitURL,w=S.createObjectURL(i);u?u.location=w:location.href=w,u=null,setTimeout(function(){S.revokeObjectURL(w)},4e4)}});l.saveAs=p.saveAs=p,e.exports=p})}(Q)),Q.exports}var ho=yo();const le="backup";function R(){return ie.useTranslation([le,"core"],{nsMode:"fallback"})}const vo=e=>g.tval(e,{ns:le}),{Dragger:bo}=k.Upload;function xo(e){const t=o=>{var r;(r=e.onChange)==null||r.call(e,o)},a=g.useAPIClient();return De(ae({},e),{customRequest({action:o,data:r,file:c,filename:l,headers:m,onError:p,onProgress:i,onSuccess:s,withCredentials:v}){const u=new FormData;return r&&Object.keys(r).forEach(f=>{u.append(f,r[f])}),u.append(l,c),a.axios.post(o,u,{withCredentials:v,headers:m,onUploadProgress:({total:f,loaded:h})=>{i({percent:Math.round(h/f*100).toFixed(2)},c)}}).then(({data:f})=>{s(f,c)}).catch(p).finally(()=>{}),{abort(){console.log("upload progress is aborted.")}}},onChange:t})}const Pe=e=>{const{collectionsData:t}=e,{t:a}=R(),[o,r]=y.useState(!1),[c,l]=y.useState(t);y.useEffect(()=>{l(t)},[t]);const m=g.useAPIClient(),p=g.useCompile(),i=y.useMemo(()=>m.resource("backupFiles"),[m]),s=()=>$(null,null,function*(){if(e.isBackup){const d=yield i.dumpableCollections();l(d==null?void 0:d.data),r(!0)}r(!0)}),v=()=>{r(!1)},u=()=>{r(!1)},f=[{title:a("Collection"),dataIndex:"collection",key:"collection",render:(d,b)=>{const S=p(b.title);return b.name===S?S:n.jsxs("div",{children:[b.name," ",n.jsxs("span",{style:{color:"rgba(0, 0, 0, 0.3)",fontSize:"0.9em"},children:["(",p(b.title),")"]})]})}},{title:a("Origin"),dataIndex:"origin",key:"origin",width:"50%"}],h=Object.keys(c||{}).map(d=>({key:d,label:a(`${d}.title`),children:n.jsxs(n.Fragment,{children:[n.jsx(k.Alert,{style:{marginBottom:16},message:a(`${d}.description`)}),n.jsx(k.Table,{pagination:{pageSize:100},bordered:!0,size:"small",dataSource:c[d],columns:f,scroll:{y:400}})]})}));return n.jsxs(n.Fragment,{children:[n.jsx("a",{onClick:s,children:a("Learn more")}),n.jsx(k.Modal,{title:a("Backup instructions"),width:"80vw",open:o,footer:null,onOk:v,onCancel:u,children:n.jsx(k.Tabs,{defaultActiveKey:"required",items:h})})]})},Te=({ButtonComponent:e=k.Button,title:t,upload:a=!1,fileData:o})=>{const{t:r}=R(),[c,l]=y.useState(["required"]),[m,p]=y.useState(!1),[i,s]=y.useState(null),[v,u]=y.useState(!1),f=g.useAPIClient(),h=y.useMemo(()=>f.resource("backupFiles"),[f]),[d,b]=y.useState([]),S=c.length>0&&c.length<d.length,w=d.length===c.length;y.useEffect(()=>{b(Object.keys((i==null?void 0:i.dumpableCollectionsGroupByGroup)||[]).map(M=>({value:M,label:r(`${M}.title`),disabled:["required","skipped"].includes(M)})))},[i]);const B=()=>$(null,null,function*(){var M,H,P;if(p(!0),!a){u(!0);const{data:E}=yield h.get({filterByTk:o.name});b(Object.keys(((H=(M=E==null?void 0:E.data)==null?void 0:M.meta)==null?void 0:H.dumpableCollectionsGroupByGroup)||[]).map(N=>({value:N,label:r(`${N}.title`),disabled:["required","skipped"].includes(N)}))),s((P=E==null?void 0:E.data)==null?void 0:P.meta),u(!1)}}),Y=()=>{h.restore({values:{dataTypes:c,filterByTk:o==null?void 0:o.name,key:i==null?void 0:i.key}}),p(!1)},ee=()=>{p(!1),s(null),l(["required"])},U=M=>{l(M.target.checked?d.map(H=>H.value):["required"])};return n.jsxs(n.Fragment,{children:[n.jsx(e,{onClick:B,children:t}),n.jsx(k.Modal,{title:r("Restore"),width:800,footer:a&&!i?null:void 0,open:m,onOk:Y,onCancel:ee,children:n.jsxs(k.Spin,{spinning:v,children:[a&&!i&&n.jsx(ko,{setRestoreData:s}),(!a||i)&&[n.jsxs("strong",{style:{fontWeight:600,display:"block",margin:"16px 0 8px"},children:[r("Select the data to be restored")," (",n.jsx(Pe,{collectionsData:i==null?void 0:i.dumpableCollectionsGroupByGroup}),"):"]},"info"),n.jsx("div",{style:{lineHeight:2,marginBottom:8},children:n.jsxs(me.FormItem,{children:[n.jsx(g.Checkbox.Group,{options:d,style:{flexDirection:"column"},value:c,onChange:M=>l(M)}),n.jsx(k.Divider,{}),n.jsx(g.Checkbox,{indeterminate:S,onChange:U,checked:w,children:r("Check all")})]})},"dataType")]]})})]})},go=({ButtonComponent:e=k.Button,refresh:t})=>{const{t:a}=R(),[o,r]=y.useState(!1),[c,l]=y.useState(["required"]),m=g.useAPIClient(),{notification:p}=k.App.useApp(),[i,s]=y.useState([]),v=c.length>0&&c.length<i.filter(S=>S.value!=="skipped").length,u=i.filter(S=>S.value!=="skipped").length===c.length,f=S=>{l(S.target.checked?i.filter(w=>w.value!=="skipped").map(w=>w.value):["required"])},h=()=>$(null,null,function*(){const{data:S}=yield m.resource("backupFiles").dumpableCollections();s(Object.keys(S||[]).map(w=>({value:w,label:a(`${w}.title`),disabled:["required","skipped"].includes(w)}))),r(!0)}),d=S=>{m.request({url:"backupFiles:create",method:"post",data:{dataTypes:c,method:S}}),p.info({key:"backup",message:n.jsxs("span",{children:[a("Processing..."),"    ",n.jsx(k.Spin,{indicator:n.jsx(X.LoadingOutlined,{style:{fontSize:24},spin:!0})})]}),duration:0}),r(!1),l(["required"]),setTimeout(()=>{t()},500)},b=()=>{r(!1),l(["required"])};return n.jsxs(n.Fragment,{children:[n.jsx(e,{icon:n.jsx(X.PlusOutlined,{}),type:"primary",onClick:h,children:a("New backup")}),n.jsxs(k.Modal,{title:a("New backup"),width:800,open:o,onCancel:b,footer:[n.jsxs(k.Row,{gutter:16,justify:"end",align:"middle",children:[n.jsx(k.Col,{children:n.jsx(k.Button,{onClick:b,children:a("Cancel")},"cancel")}),n.jsx(k.Col,{children:n.jsx(k.Dropdown.Button,{type:"primary",onClick:()=>d("priority"),overlay:n.jsxs(k.Menu,{children:[n.jsx(k.Menu.Item,{onClick:()=>d("main"),children:a("Self backup")},"main"),n.jsx(k.Menu.Item,{onClick:()=>d("worker"),children:a("Worker backup")},"worker")]}),children:a("Backup")},"submit")})]})],children:[n.jsxs("strong",{style:{fontWeight:600,display:"block",margin:"16px 0 8px"},children:[a("Select the data to be backed up")," (",n.jsx(Pe,{isBackup:!0}),"):"]}),n.jsxs("div",{style:{lineHeight:2,marginBottom:8},children:[n.jsx(g.Checkbox.Group,{options:i,style:{flexDirection:"column"},onChange:S=>l(S),value:c}),n.jsx(k.Divider,{}),n.jsx(g.Checkbox,{indeterminate:v,onChange:f,checked:u,children:a("Check all")})]})]})]})},ko=e=>{const{t}=R(),a={multiple:!1,action:"/backupFiles:upload",onChange(o){var c,l,m;o.fileList.length>1&&o.fileList.splice(0,o.fileList.length-1);const{status:r}=o.file;r==="done"?(k.message.success(`${o.file.name} `+t("file uploaded successfully")),e.setRestoreData(De(ae({},(l=(c=o.file.response)==null?void 0:c.data)==null?void 0:l.meta),{key:(m=o.file.response)==null?void 0:m.data.key}))):r==="error"&&k.message.error(`${o.file.name} `+t("file upload failed"))},onDrop(o){console.log("Dropped files",o.dataTransfer.files)}};return n.jsxs(bo,De(ae({},xo(a)),{children:[n.jsx("p",{className:"ant-upload-drag-icon",children:n.jsx(X.InboxOutlined,{})}),n.jsxs("p",{className:"ant-upload-text",children:[" ",t("Click or drag file to this area to upload")]})]}))},wo=()=>{const{t:e}=R(),t=g.useAPIClient(),[a,o]=y.useState([]),[r,c]=y.useState(!1),[l,m]=y.useState(!1),{modal:p,notification:i}=k.App.useApp(),s=y.useMemo(()=>t.resource("backupFiles"),[t]),v=y.useCallback(()=>$(null,null,function*(){yield u()}),[]);g.useNoticeSub("backup",d=>{(i[d.level]||i.info)({key:"backup",message:d.msg}),v()}),y.useEffect(()=>{u()},[]);const u=()=>$(null,null,function*(){c(!0);const{data:d}=yield s.list();o(d.data),c(!1)}),f=d=>$(null,null,function*(){m(d.name);const b=yield t.request({url:"backupFiles:download",method:"get",params:{filterByTk:d.name},responseType:"blob",onDownloadProgress:w=>{const B=Math.round(w.loaded*100/w.total);B>=100?i.success({key:"downloadBackup",message:n.jsx("span",{children:e("Downloaded success!")}),duration:1}):i.info({key:"downloadBackup",message:n.jsxs("span",{children:[e("Downloading ")+B+"%","    ",n.jsx(k.Spin,{indicator:n.jsx(X.LoadingOutlined,{style:{fontSize:24},spin:!0})})]}),duration:0})}});m(!1);const S=new Blob([b.data]);ho.saveAs(S,d.name)}),h=d=>{p.confirm({title:e("Delete record",{ns:"core"}),content:e("Are you sure you want to delete it?",{ns:"core"}),onOk:()=>$(null,null,function*(){yield s.destroy({filterByTk:d.name}),yield u(),k.message.success(e("Deleted successfully"))})})};return n.jsx("div",{children:n.jsxs(k.Card,{bordered:!1,children:[n.jsxs(k.Space,{style:{float:"right",marginBottom:16},children:[n.jsx(k.Button,{onClick:v,icon:n.jsx(X.ReloadOutlined,{}),children:e("Refresh")}),n.jsx(Te,{upload:!0,title:n.jsxs(n.Fragment,{children:[n.jsx(X.UploadOutlined,{})," ",e("Restore backup from local")]})}),n.jsx(go,{refresh:v})]}),n.jsx(k.Table,{dataSource:a,loading:r,columns:[{title:e("Backup file"),dataIndex:"name",width:400,onCell:d=>d.inProgress?{colSpan:4}:{},render:(d,b)=>b.inProgress?n.jsxs("div",{style:{color:"rgba(0, 0, 0, 0.88)"},children:[d,"(",e("Backing up"),"...)"]}):b.status==="error"?n.jsxs("div",{style:{color:"red"},children:[d,"(",e("Error"),")"]}):n.jsx("div",{children:d})},{title:e("File size"),dataIndex:"fileSize",onCell:d=>d.inProgress?{colSpan:0}:{}},{title:e("Created at",{ns:"core"}),dataIndex:"createdAt",onCell:d=>d.inProgress?{colSpan:0}:{},render:d=>n.jsx(g.DatePicker.ReadPretty,{value:d,showTime:!0})},{title:e("Actions",{ns:"core"}),dataIndex:"actions",onCell:d=>d.inProgress?{colSpan:0}:{},render:(d,b)=>n.jsxs(k.Space,{split:n.jsx(k.Divider,{type:"vertical"}),children:[b.status!=="error"&&n.jsx(Te,{ButtonComponent:"a",title:e("Restore"),fileData:b}),b.status!=="error"&&n.jsx("a",{type:"link",onClick:()=>f(b),children:e("Download")}),n.jsx("a",{onClick:()=>h(b),children:e("Delete")})]})}]})]})})},Co={dumpRules:"required",name:"autoBackup",shared:!0,createdAt:!0,updatedAt:!0,createdBy:!0,updatedBy:!0,fields:[{type:"string",name:"title",required:!0,uiSchema:{title:'{{ t("Title") }}',type:"string","x-component":"Input",required:!0}},{type:"boolean",name:"enabled",defaultValue:!1,uiSchema:{title:'{{ t("Enabled") }}',type:"boolean","x-component":"Checkbox",required:!0}},{type:"array",name:"dumpRules",uiSchema:{title:'{{ t("Dump rules") }}',type:"string","x-component":"Input",required:!0}},{type:"string",name:"repeat",required:!0,uiSchema:{title:'{{t("Repeat mode")}}',type:"string","x-component":"RepeatField"}},{type:"integer",name:"maxNumber",uiSchema:{title:'{{ t("Max number") }}',type:"integer","x-component":"Input",required:!0}}]};var q=function(){return q=Object.assign||function(e){for(var t,a=1,o=arguments.length;a<o;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},q.apply(this,arguments)};function je(e,t){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function"){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(a[o[r]]=e[o[r]])}return a}function fe(e,t,a){if(a||arguments.length===2)for(var o,r=0,c=t.length;r<c;r++)!o&&r in t||(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}var Oo=[{name:"@yearly",value:"0 0 1 1 *"},{name:"@annually",value:"0 0 1 1 *"},{name:"@monthly",value:"0 0 1 * *"},{name:"@weekly",value:"0 0 * * 0"},{name:"@daily",value:"0 0 * * *"},{name:"@midnight",value:"0 0 * * *"},{name:"@hourly",value:"0 * * * *"}],oe=[{type:"minutes",min:0,max:59,total:60},{type:"hours",min:0,max:23,total:24},{type:"month-days",min:1,max:31,total:31},{type:"months",min:1,max:12,total:12,alt:["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"]},{type:"week-days",min:0,max:6,total:7,alt:["SUN","MON","TUE","WED","THU","FRI","SAT"]}],C={everyText:"every",emptyMonths:"every month",emptyMonthDays:"every day of the month",emptyMonthDaysShort:"day of the month",emptyWeekDays:"every day of the week",emptyWeekDaysShort:"day of the week",emptyHours:"every hour",emptyMinutes:"every minute",emptyMinutesForHourPeriod:"every",yearOption:"year",monthOption:"month",weekOption:"week",dayOption:"day",hourOption:"hour",minuteOption:"minute",rebootOption:"reboot",prefixPeriod:"Every",prefixMonths:"in",prefixMonthDays:"on",prefixWeekDays:"on",prefixWeekDaysForMonthAndYearPeriod:"and",prefixHours:"at",prefixMinutes:":",prefixMinutesForHourPeriod:"at",suffixMinutesForHourPeriod:"minute(s)",errorInvalidCron:"Invalid cron expression",clearButtonText:"Clear",weekDays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],altWeekDays:["SUN","MON","TUE","WED","THU","FRI","SAT"],altMonths:["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"]};function Ee(e,t){for(var a=[],o=e;o<=t;o++)a.push(o);return a}function ye(e){return e.sort(function(t,a){return t-a}),e}function Le(e){var t=[];return e.forEach(function(a){t.indexOf(a)<0&&t.push(a)}),t}function J(e){return Object.entries(e).filter(function(t){var a=t[0],o=t[1];return a&&o}).map(function(t){return t[0]}).join(" ")}function Ie(e,t){e&&e({type:"invalid_cron",description:t.errorInvalidCron||C.errorInvalidCron})}function he(e){var t=parseInt(e,10),a=Number(e);return t===a?a:NaN}function Ve(e,t,a,o,r,c,l,m,p,i,s,v,u,f){a&&a(void 0),t(!1);var h=!1;if(!e){if(o==="always"||c&&o==="for-default-value")return;h=!0}if(!h){if(m&&(m===!0||m.includes(e))){if(e==="@reboot")return void f("reboot");var d=Oo.find(function(w){return w.name===e});d&&(e=d.value)}try{var b=function(w){if(typeof w!="string")throw new Error("Invalid cron string");var B=w.replace(/\s+/g," ").trim().split(" ");if(B.length===5)return B.map(function(Y,ee){return function(U,M){if(U==="*"||U==="*/1")return[];var H=ye(Le(We(function(E,N,Z){if(Z){E=E.toUpperCase();for(var x=0;x<Z.length;x++)E=E.replace(Z[x],"".concat(x+N))}return E}(U,M.min,M.alt).split(",").map(function(E){var N,Z=E.split("/");if(Z.length>2)throw new Error('Invalid value "'.concat(U,' for "').concat(M.type,'"'));var x=Z[0],O=Z[1];N=x==="*"?Ee(M.min,M.max):function(F,T,L){var I=F.split("-");if(I.length===1){var ce=he(I[0]);if(isNaN(ce))throw new Error('Invalid value "'.concat(T,'" for ').concat(L.type));return[ce]}if(I.length===2){var _=he(I[0]),ne=he(I[1]);if(isNaN(_)||isNaN(ne))throw new Error('Invalid value "'.concat(T,'" for ').concat(L.type));if(ne<_)throw new Error('Max range is less than min range in "'.concat(F,'" for ').concat(L.type));return Ee(_,ne)}throw new Error('Invalid value "'.concat(F,'" for ').concat(L.type))}(x,U,M);var D=function(F,T){if(F!==void 0){var L=he(F);if(isNaN(L)||L<1)throw new Error('Invalid interval step value "'.concat(F,'" for ').concat(T.type));return L}}(O,M),W=function(F,T){if(T){var L=F[0];F=F.filter(function(I){return I%T==L%T||I===L})}return F}(N,D);return W}).flat(),M))),P=ze(H,M);if(P!==void 0)throw new Error('Value "'.concat(P,'" out of range for ').concat(M.type));return H.length===M.total?[]:H}(Y,oe[ee])});throw new Error("Invalid cron string format")}(e),S=function(w){return w[3].length>0?"year":w[2].length>0?"month":w[4].length>0?"week":w[1].length>0?"day":w[0].length>0?"hour":"minute"}(b);f(S),p(b[0]),i(b[1]),s(b[2]),v(b[3]),u(b[4])}catch(w){h=!0}}h&&(r.current=e,t(!0),Ie(a,l))}function qe(e,t,a,o,r,c,l){if(e==="reboot")return"@reboot";var m=function(p,i){return p.map(function(s,v){var u=oe[v];return He(Ue(s,u),u,i)})}([e!=="minute"&&c?c:[],e!=="minute"&&e!=="hour"&&r?r:[],e!=="year"&&e!=="month"||!a?[]:a,e==="year"&&t?t:[],e!=="year"&&e!=="month"&&e!=="week"||!o?[]:o],l);return m.join(" ")}function He(e,t,a,o,r){var c="";if(function(m,p){return m.length===p.max-p.min+1}(e,t)||e.length===0)c="*";else{var l=function(m){if(m.length>2){var p=m[1]-m[0];if(p>1)return p}}(e);c=l&&function(m,p){for(var i=1;i<m.length;i++){var s=m[i-1];if(m[i]-s!==p)return!1}return!0}(e,l)?function(m,p,i){var s=Je(m),v=Ze(m),u=m.length===(v-s)/i+1;return!!(s===p.min&&v+i>p.max&&u)}(e,t,l)?"*/".concat(l):"".concat(te(Je(e),t,a,o,r),"-").concat(te(Ze(e),t,a,o,r),"/").concat(l):function(m){var p=[],i=null;return m.forEach(function(s,v,u){s!==u[v+1]-1?i!==null?(p.push([i,s]),i=null):p.push(s):i===null&&(i=s)}),p}(e).map(function(m){return Array.isArray(m)?"".concat(te(m[0],t,a,o,r),"-").concat(te(m[1],t,a,o,r)):te(m,t,a,o,r)}).join(",")}return c}function te(e,t,a,o,r){var c=e.toString(),l=t.type,m=t.alt,p=t.min,i=o&&(o===!0||o.includes(l)),s=r==="24-hour-clock"&&(l==="hours"||l==="minutes");if(a&&l==="week-days"||a&&l==="months"?c=m[e-p]:e<10&&(i||s)&&(c=c.padStart(2,"0")),l==="hours"&&r==="12-hour-clock"){var v=e>=12?"PM":"AM",u=e%12||12;u<10&&i&&(u=u.toString().padStart(2,"0")),c="".concat(u).concat(v)}return c}function Ue(e,t){var a=ye(Le(We(e,t)));if(a.length===0)return a;var o=ze(a,t);if(o!==void 0)throw new Error('Value "'.concat(o,'" out of range for ').concat(t.type));return a}function We(e,t){return t.type==="week-days"&&(e=e.map(function(a){return a===7?0:a})),e}function ze(e,t){var a=e[0],o=e[e.length-1];return a<t.min?a:o>t.max?o:void 0}function Je(e){return e[0]}function Ze(e){return e[e.length-1]}function se(e){var t=e.value,a=e.grid,o=a===void 0||a,r=e.optionsList,c=e.setValue,l=e.locale,m=e.className,p=e.humanizeLabels,i=e.disabled,s=e.readOnly,v=e.leadingZero,u=e.clockFormat,f=e.period,h=e.unit,d=e.periodicityOnDoubleClick,b=e.mode,S=je(e,["value","grid","optionsList","setValue","locale","className","humanizeLabels","disabled","readOnly","leadingZero","clockFormat","period","unit","periodicityOnDoubleClick","mode"]),w=y.useMemo(function(){if(t&&Array.isArray(t))return t.map(function(x){return x.toString()})},[t]),B=y.useMemo(function(){return r?r.map(function(x,O){return{value:(h.min===0?O:O+1).toString(),label:x}}):fe([],Array(h.total),!0).map(function(x,O){var D=h.min===0?O:O+1;return{value:D.toString(),label:te(D,h,p,v,u)}})},[r,v,p,u]),Y=JSON.stringify(l),ee=y.useCallback(function(x){var O=x.value;if(!t||t[0]!==Number(O))return n.jsx(n.Fragment,{});var D=He(Ue(t,h),h,p,v,u),W=D.match(/^\*\/([0-9]+),?/)||[];return n.jsx("div",{children:W[1]?"".concat(l.everyText||C.everyText," ").concat(W[1]):D})},[t,Y,p,v,u]),U=y.useCallback(function(x){var O=Array.isArray(x)?ye(x):[x],D=O;t&&(D=b==="single"?[]:fe([],t,!0),O.forEach(function(W){var F=Number(W);D=t.some(function(T){return T===F})?D.filter(function(T){return T!==F}):ye(fe(fe([],D,!0),[F],!1))})),D.length===h.total?c([]):c(D)},[c,t]),M=y.useCallback(function(x){if(x!==0&&x!==1){for(var O=h.total+h.min,D=[],W=h.min;W<O;W++)W%x==0&&D.push(W);var F=t&&D&&t.length===D.length&&t.every(function(L,I){return L===D[I]}),T=D.length===B.length;c(T||F?[]:D)}else c([])},[t,B,c]),H=y.useRef([]),P=y.useCallback(function(x){if(!s){var O=H.current;O.push({time:new Date().getTime(),value:Number(x)});var D=window.setTimeout(function(){d&&O.length>1&&O[O.length-1].time-O[O.length-2].time<300?O[O.length-1].value===O[O.length-2].value?M(Number(x)):U([O[O.length-2].value,O[O.length-1].value]):U(Number(x)),H.current=[]},300);return function(){window.clearTimeout(D)}}},[H,U,M,s,d]),E=y.useCallback(function(){s||c([])},[c,s]),N=y.useMemo(function(){var x;return J(((x={"react-js-cron-select":!0,"react-js-cron-custom-select":!0})["".concat(m,"-select")]=!!m,x))},[m]),Z=y.useMemo(function(){var x;return J(((x={"react-js-cron-select-dropdown":!0})["react-js-cron-select-dropdown-".concat(h.type)]=!0,x["react-js-cron-custom-select-dropdown"]=!0,x["react-js-cron-custom-select-dropdown-".concat(h.type)]=!0,x["react-js-cron-custom-select-dropdown-minutes-large"]=h.type==="minutes"&&f!=="hour"&&f!=="day",x["react-js-cron-custom-select-dropdown-minutes-medium"]=h.type==="minutes"&&(f==="day"||f==="hour"),x["react-js-cron-custom-select-dropdown-hours-twelve-hour-clock"]=h.type==="hours"&&u==="12-hour-clock",x["react-js-cron-custom-select-dropdown-grid"]=!!o,x["".concat(m,"-select-dropdown")]=!!m,x["".concat(m,"-select-dropdown-").concat(h.type)]=!!m,x))},[m,o,u,f]);return n.jsx(k.Select,q({mode:b!=="single"||d?"multiple":void 0,allowClear:!s,virtual:!1,open:!s&&void 0,value:w,onClear:E,tagRender:ee,className:N,popupClassName:Z,options:B,showSearch:!1,showArrow:!s,menuItemSelectedIcon:null,dropdownMatchSelectWidth:!1,onSelect:P,onDeselect:P,disabled:i,dropdownAlign:h.type!=="minutes"&&h.type!=="hours"||f==="day"||f==="hour"?void 0:{points:["tr","br"]},"data-testid":"custom-select-".concat(h.type)},S))}function So(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.disabled,l=e.readOnly,m=e.leadingZero,p=e.clockFormat,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=y.useMemo(function(){var f;return J(((f={"react-js-cron-field":!0,"react-js-cron-hours":!0})["".concat(r,"-field")]=!!r,f["".concat(r,"-hours")]=!!r,f))},[r]);return n.jsxs("div",q({className:u},{children:[o.prefixHours!==""&&n.jsx("span",{children:o.prefixHours||C.prefixHours}),n.jsx(se,{placeholder:o.emptyHours||C.emptyHours,value:t,unit:oe[1],setValue:a,locale:o,className:r,disabled:c,readOnly:l,leadingZero:m,clockFormat:p,period:i,periodicityOnDoubleClick:s,mode:v})]}))}function Mo(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.disabled,l=e.readOnly,m=e.leadingZero,p=e.clockFormat,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=y.useMemo(function(){var f;return J(((f={"react-js-cron-field":!0,"react-js-cron-minutes":!0})["".concat(r,"-field")]=!!r,f["".concat(r,"-minutes")]=!!r,f))},[r]);return n.jsxs("div",q({className:u},{children:[i==="hour"?o.prefixMinutesForHourPeriod!==""&&n.jsx("span",{children:o.prefixMinutesForHourPeriod||C.prefixMinutesForHourPeriod}):o.prefixMinutes!==""&&n.jsx("span",{children:o.prefixMinutes||C.prefixMinutes}),n.jsx(se,{placeholder:i==="hour"?o.emptyMinutesForHourPeriod||C.emptyMinutesForHourPeriod:o.emptyMinutes||C.emptyMinutes,value:t,unit:oe[0],setValue:a,locale:o,className:r,disabled:c,readOnly:l,leadingZero:m,clockFormat:p,period:i,periodicityOnDoubleClick:s,mode:v}),i==="hour"&&o.suffixMinutesForHourPeriod!==""&&n.jsx("span",{children:o.suffixMinutesForHourPeriod||C.suffixMinutesForHourPeriod})]}))}function Do(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.weekDays,l=e.disabled,m=e.readOnly,p=e.leadingZero,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=!c||c.length===0,f=y.useMemo(function(){var b;return J(((b={"react-js-cron-field":!0,"react-js-cron-month-days":!0,"react-js-cron-month-days-placeholder":!u})["".concat(r,"-field")]=!!r,b["".concat(r,"-month-days")]=!!r,b))},[r,u]),h=JSON.stringify(o),d=y.useMemo(function(){return u?o.emptyMonthDays||C.emptyMonthDays:o.emptyMonthDaysShort||C.emptyMonthDaysShort},[u,h]);return!m||t&&t.length>0||(!t||t.length===0)&&(!c||c.length===0)?n.jsxs("div",q({className:f},{children:[o.prefixMonthDays!==""&&n.jsx("span",{children:o.prefixMonthDays||C.prefixMonthDays}),n.jsx(se,{placeholder:d,value:t,setValue:a,unit:oe[2],locale:o,className:r,disabled:l,readOnly:m,leadingZero:p,period:i,periodicityOnDoubleClick:s,mode:v})]})):null}function Ao(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.humanizeLabels,l=e.disabled,m=e.readOnly,p=e.period,i=e.periodicityOnDoubleClick,s=e.mode,v=o.months||C.months,u=y.useMemo(function(){var f;return J(((f={"react-js-cron-field":!0,"react-js-cron-months":!0})["".concat(r,"-field")]=!!r,f["".concat(r,"-months")]=!!r,f))},[r]);return n.jsxs("div",q({className:u},{children:[o.prefixMonths!==""&&n.jsx("span",{children:o.prefixMonths||C.prefixMonths}),n.jsx(se,{placeholder:o.emptyMonths||C.emptyMonths,optionsList:v,grid:!1,value:t,unit:q(q({},oe[3]),{alt:o.altMonths||C.altMonths}),setValue:a,locale:o,className:r,humanizeLabels:c,disabled:l,readOnly:m,period:p,periodicityOnDoubleClick:i,mode:s})]}))}function Bo(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.disabled,l=e.readOnly,m=e.shortcuts,p=e.allowedPeriods,i=[];p.includes("year")&&i.push({value:"year",label:o.yearOption||C.yearOption}),p.includes("month")&&i.push({value:"month",label:o.monthOption||C.monthOption}),p.includes("week")&&i.push({value:"week",label:o.weekOption||C.weekOption}),p.includes("day")&&i.push({value:"day",label:o.dayOption||C.dayOption}),p.includes("hour")&&i.push({value:"hour",label:o.hourOption||C.hourOption}),p.includes("minute")&&i.push({value:"minute",label:o.minuteOption||C.minuteOption}),p.includes("reboot")&&m&&(m===!0||m.includes("@reboot"))&&i.push({value:"reboot",label:o.rebootOption||C.rebootOption});var s=y.useCallback(function(h){l||a(h)},[a,l]),v=y.useMemo(function(){var h;return J(((h={"react-js-cron-field":!0,"react-js-cron-period":!0})["".concat(r,"-field")]=!!r,h["".concat(r,"-period")]=!!r,h))},[r]),u=y.useMemo(function(){var h;return J(((h={"react-js-cron-select":!0,"react-js-cron-select-no-prefix":o.prefixPeriod===""})["".concat(r,"-select")]=!!r,h))},[r,o.prefixPeriod]),f=y.useMemo(function(){var h;return J(((h={"react-js-cron-select-dropdown":!0,"react-js-cron-select-dropdown-period":!0})["".concat(r,"-select-dropdown")]=!!r,h["".concat(r,"-select-dropdown-period")]=!!r,h))},[r]);return n.jsxs("div",q({className:v},{children:[o.prefixPeriod!==""&&n.jsx("span",{children:o.prefixPeriod||C.prefixPeriod}),n.jsx(k.Select,{defaultValue:t,value:t,onChange:s,options:i,className:u,popupClassName:f,disabled:c,showArrow:!l,open:!l&&void 0,"data-testid":"select-period"},JSON.stringify(o))]}))}function No(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.humanizeLabels,l=e.monthDays,m=e.disabled,p=e.readOnly,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=o.weekDays||C.weekDays,f=i==="week"||!l||l.length===0,h=y.useMemo(function(){var B;return J(((B={"react-js-cron-field":!0,"react-js-cron-week-days":!0,"react-js-cron-week-days-placeholder":!f})["".concat(r,"-field")]=!!r,B["".concat(r,"-week-days")]=!!r,B))},[r,f]),d=JSON.stringify(o),b=y.useMemo(function(){return f?o.emptyWeekDays||C.emptyWeekDays:o.emptyWeekDaysShort||C.emptyWeekDaysShort},[f,d]),S=i==="week"||!p||t&&t.length>0||(!t||t.length===0)&&(!l||l.length===0),w=!p||l&&l.length>0||(!l||l.length===0)&&(!t||t.length===0);return S?n.jsxs("div",q({className:h},{children:[o.prefixWeekDays!==""&&(i==="week"||!w)&&n.jsx("span",{children:o.prefixWeekDays||C.prefixWeekDays}),o.prefixWeekDaysForMonthAndYearPeriod!==""&&i!=="week"&&w&&n.jsx("span",{children:o.prefixWeekDaysForMonthAndYearPeriod||C.prefixWeekDaysForMonthAndYearPeriod}),n.jsx(se,{placeholder:b,optionsList:u,grid:!1,value:t,unit:q(q({},oe[4]),{alt:o.altWeekDays||C.altWeekDays}),setValue:a,locale:o,className:r,humanizeLabels:c,disabled:m,readOnly:p,period:i,periodicityOnDoubleClick:s,mode:v})]})):null}function Fo(e){var t=e.clearButton,a=t===void 0||t,o=e.clearButtonProps,r=o===void 0?{}:o,c=e.clearButtonAction,l=c===void 0?"fill-with-every":c,m=e.locale,p=m===void 0?C:m,i=e.value,s=i===void 0?"":i,v=e.setValue,u=e.displayError,f=u===void 0||u,h=e.onError,d=e.className,b=e.defaultPeriod,S=b===void 0?"day":b,w=e.allowEmpty,B=w===void 0?"for-default-value":w,Y=e.humanizeLabels,ee=Y===void 0||Y,U=e.humanizeValue,M=U!==void 0&&U,H=e.disabled,P=H!==void 0&&H,E=e.readOnly,N=E!==void 0&&E,Z=e.leadingZero,x=Z!==void 0&&Z,O=e.shortcuts,D=O===void 0?["@yearly","@annually","@monthly","@weekly","@daily","@midnight","@hourly"]:O,W=e.clockFormat,F=e.periodicityOnDoubleClick,T=F===void 0||F,L=e.mode,I=L===void 0?"multiple":L,ce=e.allowedDropdowns,_=ce===void 0?["period","months","month-days","week-days","hours","minutes"]:ce,ne=e.allowedPeriods,Uo=ne===void 0?["year","month","week","day","hour","minute","reboot"]:ne,re=y.useRef(s),Ae=y.useRef(S),Xe=y.useState(),K=Xe[0],ve=Xe[1],Qe=y.useState(),ue=Qe[0],be=Qe[1],Re=y.useState(),xe=Re[0],ge=Re[1],eo=y.useState(),de=eo[0],ke=eo[1],oo=y.useState(),we=oo[0],Ce=oo[1],to=y.useState(),Oe=to[0],Se=to[1],no=y.useState(!1),Be=no[0],pe=no[1],ro=y.useState(!1),Me=ro[0],ao=ro[1],Wo=function(j){var G=y.useRef(j);return y.useEffect(function(){G.current=j},[j]),G.current}(Me),io=JSON.stringify(p);y.useEffect(function(){Ve(s,pe,h,B,re,!0,p,D,Se,Ce,be,ge,ke,ve)},[]),y.useEffect(function(){s!==re.current&&Ve(s,pe,h,B,re,!1,p,D,Se,Ce,be,ge,ke,ve)},[s,re,io,B,D]),y.useEffect(function(){if(!(K||Oe||xe||ue||de||we)||Me||Wo)Me&&ao(!1);else{var j=K||Ae.current,G=qe(j,xe,ue,de,we,Oe,M);v(G,{selectedPeriod:j}),re.current=G,h&&h(void 0),pe(!1)}},[K,ue,xe,de,we,Oe,M,Me]);var lo=y.useCallback(function(){be(void 0),ge(void 0),ke(void 0),Ce(void 0),Se(void 0);var j="",G=K!=="reboot"&&K?K:Ae.current;G!==K&&ve(G),l==="fill-with-every"&&(j=qe(G,void 0,void 0,void 0,void 0,void 0)),v(j,{selectedPeriod:G}),re.current=j,ao(!0),B==="never"&&l==="empty"?(pe(!0),Ie(h,p)):(h&&h(void 0),pe(!1))},[K,v,h,l]),zo=y.useMemo(function(){var j;return J(((j={"react-js-cron":!0,"react-js-cron-error":Be&&f,"react-js-cron-disabled":P,"react-js-cron-read-only":N})["".concat(d)]=!!d,j["".concat(d,"-error")]=Be&&f&&!!d,j["".concat(d,"-disabled")]=P&&!!d,j["".concat(d,"-read-only")]=N&&!!d,j))},[d,Be,f,P,N]),Ne=r.className,so=je(r,["className"]),co=y.useMemo(function(){var j;return J(((j={"react-js-cron-clear-button":!0})["".concat(d,"-clear-button")]=!!d,j["".concat(Ne)]=!!Ne,j))},[d,Ne]),Jo=JSON.stringify(so),uo=y.useMemo(function(){return a&&!N?n.jsx(k.Button,q({className:co,danger:!0,type:"primary",disabled:P},so,{onClick:lo},{children:p.clearButtonText||C.clearButtonText})):null},[a,N,io,co,P,Jo,lo]),V=K||Ae.current;return n.jsxs("div",q({className:zo},{children:[_.includes("period")&&n.jsx(Bo,{value:V,setValue:ve,locale:p,className:d,disabled:P,readOnly:N,shortcuts:D,allowedPeriods:Uo}),V==="reboot"?uo:n.jsxs(n.Fragment,{children:[V==="year"&&_.includes("months")&&n.jsx(Ao,{value:xe,setValue:ge,locale:p,className:d,humanizeLabels:ee,disabled:P,readOnly:N,period:V,periodicityOnDoubleClick:T,mode:I}),(V==="year"||V==="month")&&_.includes("month-days")&&n.jsx(Do,{value:ue,setValue:be,locale:p,className:d,weekDays:de,disabled:P,readOnly:N,leadingZero:x,period:V,periodicityOnDoubleClick:T,mode:I}),(V==="year"||V==="month"||V==="week")&&_.includes("week-days")&&n.jsx(No,{value:de,setValue:ke,locale:p,className:d,humanizeLabels:ee,monthDays:ue,disabled:P,readOnly:N,period:V,periodicityOnDoubleClick:T,mode:I}),n.jsxs("div",{children:[V!=="minute"&&V!=="hour"&&_.includes("hours")&&n.jsx(So,{value:we,setValue:Ce,locale:p,className:d,disabled:P,readOnly:N,leadingZero:x,clockFormat:W,period:V,periodicityOnDoubleClick:T,mode:I}),V!=="minute"&&_.includes("minutes")&&n.jsx(Mo,{value:Oe,setValue:Se,locale:p,period:V,className:d,disabled:P,readOnly:N,leadingZero:x,clockFormat:W,periodicityOnDoubleClick:T,mode:I}),uo]})]})]}))}const Po={"zh-CN":{everyText:"每",emptyMonths:"每月",emptyMonthDays:"每日(月)",emptyMonthDaysShort:"每日",emptyWeekDays:"每天(周)",emptyWeekDaysShort:"每天(周)",emptyHours:"每小时",emptyMinutes:"每分钟",emptyMinutesForHourPeriod:"每",yearOption:"年",monthOption:"月",weekOption:"周",dayOption:"天",hourOption:"小时",minuteOption:"分钟",rebootOption:"重启",prefixPeriod:"每",prefixMonths:"的",prefixMonthDays:"的",prefixWeekDays:"的",prefixWeekDaysForMonthAndYearPeriod:"或者",prefixHours:"的",prefixMinutes:":",prefixMinutesForHourPeriod:"的",suffixMinutesForHourPeriod:"分钟",errorInvalidCron:"不符合 cron 规则的表达式",clearButtonText:"清空",weekDays:["周日","周一","周二","周三","周四","周五","周六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],altWeekDays:["周日","周一","周二","周三","周四","周五","周六"],altMonths:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]}},_e=[{value:"none",text:"No repeat"},{value:6e4,text:"By minute",unitText:"Minutes"},{value:36e5,text:"By hour",unitText:"Hours"},{value:864e5,text:"By day",unitText:"Days"},{value:6048e5,text:"By week",unitText:"Weeks"},{value:"cron",text:"Advanced"}];function Ge(e){return _e.filter(a=>!isNaN(+a.value)).reverse().find(a=>!(e%a.value))}function To(e){if(!e)return"none";if(e&&!isNaN(+e)){const t=Ge(e);return t?t.value:"none"}if(typeof e=="string")return"cron"}function jo({value:e,onChange:t}){const{t:a}=R(),o=Ge(e);return n.jsx(k.InputNumber,{value:e/o.value,onChange:r=>t(r*o.value),min:1,addonBefore:a("Every"),addonAfter:a(o.unitText),className:"auto-width"})}function Eo({value:e=null,onChange:t}){const{t:a}=R(),o=To(e),r=y.useCallback(l=>{if(l==="none"){t(null);return}if(l==="cron"){t("0 * * * * *");return}t(l)},[t]),c=Po[localStorage.getItem("TACHYBASE_LOCALE")||"en-US"];return n.jsxs("fieldset",{className:g.css`
1
+ (function(A,g){typeof exports=="object"&&typeof module!="undefined"?g(exports,require("@tachybase/client"),require("react/jsx-runtime"),require("react"),require("@ant-design/icons"),require("@tego/client"),require("antd"),require("react-i18next")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","react/jsx-runtime","react","@ant-design/icons","@tego/client","antd","react-i18next"],g):(A=typeof globalThis!="undefined"?globalThis:A||self,g(A["@tachybase/module-backup"]={},A["@tachybase/client"],A.jsxRuntime,A.react,A["@ant-design/icons"],A["@tego/client"],A.antd,A["react-i18next"]))})(this,function(A,g,n,y,Y,De,k,ie){"use strict";var Zo=Object.defineProperty,_o=Object.defineProperties;var Go=Object.getOwnPropertyDescriptors;var po=Object.getOwnPropertySymbols;var $o=Object.prototype.hasOwnProperty,Yo=Object.prototype.propertyIsEnumerable;var mo=(A,g,n)=>g in A?Zo(A,g,{enumerable:!0,configurable:!0,writable:!0,value:n}):A[g]=n,ae=(A,g)=>{for(var n in g||(g={}))$o.call(g,n)&&mo(A,n,g[n]);if(po)for(var n of po(g))Yo.call(g,n)&&mo(A,n,g[n]);return A},Me=(A,g)=>_o(A,Go(g));var $=(A,g,n)=>new Promise((y,Y)=>{var De=z=>{try{ie(n.next(z))}catch(Q){Y(Q)}},k=z=>{try{ie(n.throw(z))}catch(Q){Y(Q)}},ie=z=>z.done?y(z.value):Promise.resolve(z.value).then(De,k);ie((n=n.apply(A,g)).next())});var z=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},Q={exports:{}},fo=Q.exports,Fe;function yo(){return Fe||(Fe=1,function(e,t){(function(a,o){o()})(fo,function(){function a(i,s){return typeof s=="undefined"?s={autoBom:!1}:typeof s!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),s={autoBom:!s}),s.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(i.type)?new Blob(["\uFEFF",i],{type:i.type}):i}function o(i,s,v){var u=new XMLHttpRequest;u.open("GET",i),u.responseType="blob",u.onload=function(){p(u.response,s,v)},u.onerror=function(){console.error("could not download file")},u.send()}function r(i){var s=new XMLHttpRequest;s.open("HEAD",i,!1);try{s.send()}catch(v){}return 200<=s.status&&299>=s.status}function c(i){try{i.dispatchEvent(new MouseEvent("click"))}catch(v){var s=document.createEvent("MouseEvents");s.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),i.dispatchEvent(s)}}var l=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof z=="object"&&z.global===z?z:void 0,m=l.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),p=l.saveAs||(typeof window!="object"||window!==l?function(){}:"download"in HTMLAnchorElement.prototype&&!m?function(i,s,v){var u=l.URL||l.webkitURL,f=document.createElement("a");s=s||i.name||"download",f.download=s,f.rel="noopener",typeof i=="string"?(f.href=i,f.origin===location.origin?c(f):r(f.href)?o(i,s,v):c(f,f.target="_blank")):(f.href=u.createObjectURL(i),setTimeout(function(){u.revokeObjectURL(f.href)},4e4),setTimeout(function(){c(f)},0))}:"msSaveOrOpenBlob"in navigator?function(i,s,v){if(s=s||i.name||"download",typeof i!="string")navigator.msSaveOrOpenBlob(a(i,v),s);else if(r(i))o(i,s,v);else{var u=document.createElement("a");u.href=i,u.target="_blank",setTimeout(function(){c(u)})}}:function(i,s,v,u){if(u=u||open("","_blank"),u&&(u.document.title=u.document.body.innerText="downloading..."),typeof i=="string")return o(i,s,v);var f=i.type==="application/octet-stream",h=/constructor/i.test(l.HTMLElement)||l.safari,d=/CriOS\/[\d]+/.test(navigator.userAgent);if((d||f&&h||m)&&typeof FileReader!="undefined"){var x=new FileReader;x.onloadend=function(){var B=x.result;B=d?B:B.replace(/^data:[^;]*;/,"data:attachment/file;"),u?u.location.href=B:location=B,u=null},x.readAsDataURL(i)}else{var S=l.URL||l.webkitURL,w=S.createObjectURL(i);u?u.location=w:location.href=w,u=null,setTimeout(function(){S.revokeObjectURL(w)},4e4)}});l.saveAs=p.saveAs=p,e.exports=p})}(Q)),Q.exports}var ho=yo();const le="backup";function R(){return ie.useTranslation([le,"core"],{nsMode:"fallback"})}const vo=e=>g.tval(e,{ns:le}),{Dragger:xo}=k.Upload;function bo(e){const t=o=>{var r;(r=e.onChange)==null||r.call(e,o)},a=g.useAPIClient();return Me(ae({},e),{customRequest({action:o,data:r,file:c,filename:l,headers:m,onError:p,onProgress:i,onSuccess:s,withCredentials:v}){const u=new FormData;return r&&Object.keys(r).forEach(f=>{u.append(f,r[f])}),u.append(l,c),a.axios.post(o,u,{withCredentials:v,headers:m,onUploadProgress:({total:f,loaded:h})=>{i({percent:Math.round(h/f*100).toFixed(2)},c)}}).then(({data:f})=>{s(f,c)}).catch(p).finally(()=>{}),{abort(){console.log("upload progress is aborted.")}}},onChange:t})}const Pe=e=>{const{collectionsData:t}=e,{t:a}=R(),[o,r]=y.useState(!1),[c,l]=y.useState(t);y.useEffect(()=>{l(t)},[t]);const m=g.useAPIClient(),p=g.useCompile(),i=y.useMemo(()=>m.resource("backupFiles"),[m]),s=()=>$(null,null,function*(){if(e.isBackup){const d=yield i.dumpableCollections();l(d==null?void 0:d.data),r(!0)}r(!0)}),v=()=>{r(!1)},u=()=>{r(!1)},f=[{title:a("Collection"),dataIndex:"collection",key:"collection",render:(d,x)=>{const S=p(x.title);return x.name===S?S:n.jsxs("div",{children:[x.name," ",n.jsxs("span",{style:{color:"rgba(0, 0, 0, 0.3)",fontSize:"0.9em"},children:["(",p(x.title),")"]})]})}},{title:a("Origin"),dataIndex:"origin",key:"origin",width:"50%"}],h=Object.keys(c||{}).map(d=>({key:d,label:a(`${d}.title`),children:n.jsxs(n.Fragment,{children:[n.jsx(k.Alert,{style:{marginBottom:16},message:a(`${d}.description`)}),n.jsx(k.Table,{pagination:{pageSize:100},bordered:!0,size:"small",dataSource:c[d],columns:f,scroll:{y:400}})]})}));return n.jsxs(n.Fragment,{children:[n.jsx("a",{onClick:s,children:a("Learn more")}),n.jsx(k.Modal,{title:a("Backup instructions"),width:"80vw",open:o,footer:null,onOk:v,onCancel:u,children:n.jsx(k.Tabs,{defaultActiveKey:"required",items:h})})]})},Te=({ButtonComponent:e=k.Button,title:t,upload:a=!1,fileData:o})=>{const{t:r}=R(),[c,l]=y.useState(["required"]),[m,p]=y.useState(!1),[i,s]=y.useState(null),[v,u]=y.useState(!1),f=g.useAPIClient(),h=y.useMemo(()=>f.resource("backupFiles"),[f]),[d,x]=y.useState([]),S=c.length>0&&c.length<d.length,w=d.length===c.length;y.useEffect(()=>{x(Object.keys((i==null?void 0:i.dumpableCollectionsGroupByGroup)||[]).map(M=>({value:M,label:r(`${M}.title`),disabled:["required","skipped"].includes(M)})))},[i]);const B=()=>$(null,null,function*(){var M,H,P;if(p(!0),!a){u(!0);const{data:E}=yield h.get({filterByTk:o.name});x(Object.keys(((H=(M=E==null?void 0:E.data)==null?void 0:M.meta)==null?void 0:H.dumpableCollectionsGroupByGroup)||[]).map(N=>({value:N,label:r(`${N}.title`),disabled:["required","skipped"].includes(N)}))),s((P=E==null?void 0:E.data)==null?void 0:P.meta),u(!1)}}),K=()=>{h.restore({values:{dataTypes:c,filterByTk:o==null?void 0:o.name,key:i==null?void 0:i.key}}),p(!1)},ee=()=>{p(!1),s(null),l(["required"])},U=M=>{l(M.target.checked?d.map(H=>H.value):["required"])};return n.jsxs(n.Fragment,{children:[n.jsx(e,{onClick:B,children:t}),n.jsx(k.Modal,{title:r("Restore"),width:800,footer:a&&!i?null:void 0,open:m,onOk:K,onCancel:ee,children:n.jsxs(k.Spin,{spinning:v,children:[a&&!i&&n.jsx(ko,{setRestoreData:s}),(!a||i)&&[n.jsxs("strong",{style:{fontWeight:600,display:"block",margin:"16px 0 8px"},children:[r("Select the data to be restored")," (",n.jsx(Pe,{collectionsData:i==null?void 0:i.dumpableCollectionsGroupByGroup}),"):"]},"info"),n.jsx("div",{style:{lineHeight:2,marginBottom:8},children:n.jsxs(De.FormItem,{children:[n.jsx(g.Checkbox.Group,{options:d,style:{flexDirection:"column"},value:c,onChange:M=>l(M)}),n.jsx(k.Divider,{}),n.jsx(g.Checkbox,{indeterminate:S,onChange:U,checked:w,children:r("Check all")})]})},"dataType")]]})})]})},go=({ButtonComponent:e=k.Button,refresh:t})=>{const{t:a}=R(),[o,r]=y.useState(!1),[c,l]=y.useState(["required"]),m=g.useAPIClient(),{notification:p}=k.App.useApp(),[i,s]=y.useState([]),v=c.length>0&&c.length<i.filter(S=>S.value!=="skipped").length,u=i.filter(S=>S.value!=="skipped").length===c.length,f=S=>{l(S.target.checked?i.filter(w=>w.value!=="skipped").map(w=>w.value):["required"])},h=()=>$(null,null,function*(){const{data:S}=yield m.resource("backupFiles").dumpableCollections();s(Object.keys(S||[]).map(w=>({value:w,label:a(`${w}.title`),disabled:["required","skipped"].includes(w)}))),r(!0)}),d=S=>{m.request({url:"backupFiles:create",method:"post",data:{dataTypes:c,method:S}}),p.info({key:"backup",message:n.jsxs("span",{children:[a("Processing..."),"    ",n.jsx(k.Spin,{indicator:n.jsx(Y.LoadingOutlined,{style:{fontSize:24},spin:!0})})]}),duration:0}),r(!1),l(["required"]),setTimeout(()=>{t()},500)},x=()=>{r(!1),l(["required"])};return n.jsxs(n.Fragment,{children:[n.jsx(e,{icon:n.jsx(Y.PlusOutlined,{}),type:"primary",onClick:h,children:a("New backup")}),n.jsxs(k.Modal,{title:a("New backup"),width:800,open:o,onCancel:x,footer:[n.jsxs(k.Row,{gutter:16,justify:"end",align:"middle",children:[n.jsx(k.Col,{children:n.jsx(k.Button,{onClick:x,children:a("Cancel")},"cancel")}),n.jsx(k.Col,{children:n.jsx(k.Dropdown.Button,{type:"primary",onClick:()=>d("priority"),overlay:n.jsxs(k.Menu,{children:[n.jsx(k.Menu.Item,{onClick:()=>d("main"),children:a("Self backup")},"main"),n.jsx(k.Menu.Item,{onClick:()=>d("worker"),children:a("Worker backup")},"worker")]}),children:a("Backup")},"submit")})]})],children:[n.jsxs("strong",{style:{fontWeight:600,display:"block",margin:"16px 0 8px"},children:[a("Select the data to be backed up")," (",n.jsx(Pe,{isBackup:!0}),"):"]}),n.jsxs("div",{style:{lineHeight:2,marginBottom:8},children:[n.jsx(g.Checkbox.Group,{options:i,style:{flexDirection:"column"},onChange:S=>l(S),value:c}),n.jsx(k.Divider,{}),n.jsx(g.Checkbox,{indeterminate:v,onChange:f,checked:u,children:a("Check all")})]})]})]})},ko=e=>{const{t}=R(),a={multiple:!1,action:"/backupFiles:upload",onChange(o){var c,l,m;o.fileList.length>1&&o.fileList.splice(0,o.fileList.length-1);const{status:r}=o.file;r==="done"?(k.message.success(`${o.file.name} `+t("file uploaded successfully")),e.setRestoreData(Me(ae({},(l=(c=o.file.response)==null?void 0:c.data)==null?void 0:l.meta),{key:(m=o.file.response)==null?void 0:m.data.key}))):r==="error"&&k.message.error(`${o.file.name} `+t("file upload failed"))},onDrop(o){console.log("Dropped files",o.dataTransfer.files)}};return n.jsxs(xo,Me(ae({},bo(a)),{children:[n.jsx("p",{className:"ant-upload-drag-icon",children:n.jsx(Y.InboxOutlined,{})}),n.jsxs("p",{className:"ant-upload-text",children:[" ",t("Click or drag file to this area to upload")]})]}))},wo=()=>{const{t:e}=R(),t=g.useAPIClient(),[a,o]=y.useState([]),[r,c]=y.useState(!1),[l,m]=y.useState(!1),{modal:p,notification:i}=k.App.useApp(),s=y.useMemo(()=>t.resource("backupFiles"),[t]),v=y.useCallback(()=>$(null,null,function*(){yield u()}),[]);g.useNoticeSub("backup",d=>{(i[d.level]||i.info)({key:"backup",message:d.msg}),v()}),y.useEffect(()=>{u()},[]);const u=()=>$(null,null,function*(){c(!0);const{data:d}=yield s.list();o(d.data),c(!1)}),f=d=>$(null,null,function*(){m(d.name);const x=yield t.request({url:"backupFiles:download",method:"get",params:{filterByTk:d.name},responseType:"blob",onDownloadProgress:w=>{const B=Math.round(w.loaded*100/w.total);B>=100?i.success({key:"downloadBackup",message:n.jsx("span",{children:e("Downloaded success!")}),duration:1}):i.info({key:"downloadBackup",message:n.jsxs("span",{children:[e("Downloading ")+B+"%","    ",n.jsx(k.Spin,{indicator:n.jsx(Y.LoadingOutlined,{style:{fontSize:24},spin:!0})})]}),duration:0})}});m(!1);const S=new Blob([x.data]);ho.saveAs(S,d.name)}),h=d=>{p.confirm({title:e("Delete record",{ns:"core"}),content:e("Are you sure you want to delete it?",{ns:"core"}),onOk:()=>$(null,null,function*(){yield s.destroy({filterByTk:d.name}),yield u(),k.message.success(e("Deleted successfully"))})})};return n.jsx("div",{children:n.jsxs(k.Card,{bordered:!1,children:[n.jsxs(k.Space,{style:{float:"right",marginBottom:16},children:[n.jsx(k.Button,{onClick:v,icon:n.jsx(Y.ReloadOutlined,{}),children:e("Refresh")}),n.jsx(Te,{upload:!0,title:n.jsxs(n.Fragment,{children:[n.jsx(Y.UploadOutlined,{})," ",e("Restore backup from local")]})}),n.jsx(go,{refresh:v})]}),n.jsx(k.Table,{dataSource:a,loading:r,columns:[{title:e("Backup file"),dataIndex:"name",width:400,onCell:d=>d.inProgress?{colSpan:4}:{},render:(d,x)=>x.inProgress?n.jsxs("div",{style:{color:"rgba(0, 0, 0, 0.88)"},children:[d,"(",e("Backing up"),"...)"]}):x.status==="error"?n.jsxs("div",{style:{color:"red"},children:[d,"(",e("Error"),")"]}):n.jsx("div",{children:d})},{title:e("File size"),dataIndex:"fileSize",onCell:d=>d.inProgress?{colSpan:0}:{}},{title:e("Created at",{ns:"core"}),dataIndex:"createdAt",onCell:d=>d.inProgress?{colSpan:0}:{},render:d=>n.jsx(g.DatePicker.ReadPretty,{value:d,showTime:!0})},{title:e("Actions",{ns:"core"}),dataIndex:"actions",onCell:d=>d.inProgress?{colSpan:0}:{},render:(d,x)=>n.jsxs(k.Space,{split:n.jsx(k.Divider,{type:"vertical"}),children:[x.status!=="error"&&n.jsx(Te,{ButtonComponent:"a",title:e("Restore"),fileData:x}),x.status!=="error"&&n.jsx("a",{type:"link",onClick:()=>f(x),children:e("Download")}),n.jsx("a",{onClick:()=>h(x),children:e("Delete")})]})}]})]})})},Co={dumpRules:"required",name:"autoBackup",shared:!0,createdAt:!0,updatedAt:!0,createdBy:!0,updatedBy:!0,fields:[{type:"string",name:"title",required:!0,uiSchema:{title:'{{ t("Title") }}',type:"string","x-component":"Input",required:!0}},{type:"boolean",name:"enabled",defaultValue:!1,uiSchema:{title:'{{ t("Enabled") }}',type:"boolean","x-component":"Checkbox",required:!0}},{type:"array",name:"dumpRules",uiSchema:{title:'{{ t("Dump rules") }}',type:"string","x-component":"Input",required:!0}},{type:"string",name:"repeat",required:!0,uiSchema:{title:'{{t("Repeat mode")}}',type:"string","x-component":"RepeatField"}},{type:"integer",name:"maxNumber",uiSchema:{title:'{{ t("Max number") }}',type:"integer","x-component":"Input",required:!0}}]};var q=function(){return q=Object.assign||function(e){for(var t,a=1,o=arguments.length;a<o;a++)for(var r in t=arguments[a])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},q.apply(this,arguments)};function je(e,t){var a={};for(var o in e)Object.prototype.hasOwnProperty.call(e,o)&&t.indexOf(o)<0&&(a[o]=e[o]);if(e!=null&&typeof Object.getOwnPropertySymbols=="function"){var r=0;for(o=Object.getOwnPropertySymbols(e);r<o.length;r++)t.indexOf(o[r])<0&&Object.prototype.propertyIsEnumerable.call(e,o[r])&&(a[o[r]]=e[o[r]])}return a}function me(e,t,a){if(a||arguments.length===2)for(var o,r=0,c=t.length;r<c;r++)!o&&r in t||(o||(o=Array.prototype.slice.call(t,0,r)),o[r]=t[r]);return e.concat(o||Array.prototype.slice.call(t))}var Oo=[{name:"@yearly",value:"0 0 1 1 *"},{name:"@annually",value:"0 0 1 1 *"},{name:"@monthly",value:"0 0 1 * *"},{name:"@weekly",value:"0 0 * * 0"},{name:"@daily",value:"0 0 * * *"},{name:"@midnight",value:"0 0 * * *"},{name:"@hourly",value:"0 * * * *"}],oe=[{type:"minutes",min:0,max:59,total:60},{type:"hours",min:0,max:23,total:24},{type:"month-days",min:1,max:31,total:31},{type:"months",min:1,max:12,total:12,alt:["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"]},{type:"week-days",min:0,max:6,total:7,alt:["SUN","MON","TUE","WED","THU","FRI","SAT"]}],C={everyText:"every",emptyMonths:"every month",emptyMonthDays:"every day of the month",emptyMonthDaysShort:"day of the month",emptyWeekDays:"every day of the week",emptyWeekDaysShort:"day of the week",emptyHours:"every hour",emptyMinutes:"every minute",emptyMinutesForHourPeriod:"every",yearOption:"year",monthOption:"month",weekOption:"week",dayOption:"day",hourOption:"hour",minuteOption:"minute",rebootOption:"reboot",prefixPeriod:"Every",prefixMonths:"in",prefixMonthDays:"on",prefixWeekDays:"on",prefixWeekDaysForMonthAndYearPeriod:"and",prefixHours:"at",prefixMinutes:":",prefixMinutesForHourPeriod:"at",suffixMinutesForHourPeriod:"minute(s)",errorInvalidCron:"Invalid cron expression",clearButtonText:"Clear",weekDays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],altWeekDays:["SUN","MON","TUE","WED","THU","FRI","SAT"],altMonths:["JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC"]};function Ee(e,t){for(var a=[],o=e;o<=t;o++)a.push(o);return a}function fe(e){return e.sort(function(t,a){return t-a}),e}function Le(e){var t=[];return e.forEach(function(a){t.indexOf(a)<0&&t.push(a)}),t}function J(e){return Object.entries(e).filter(function(t){var a=t[0],o=t[1];return a&&o}).map(function(t){return t[0]}).join(" ")}function Ie(e,t){e&&e({type:"invalid_cron",description:t.errorInvalidCron||C.errorInvalidCron})}function ye(e){var t=parseInt(e,10),a=Number(e);return t===a?a:NaN}function Ve(e,t,a,o,r,c,l,m,p,i,s,v,u,f){a&&a(void 0),t(!1);var h=!1;if(!e){if(o==="always"||c&&o==="for-default-value")return;h=!0}if(!h){if(m&&(m===!0||m.includes(e))){if(e==="@reboot")return void f("reboot");var d=Oo.find(function(w){return w.name===e});d&&(e=d.value)}try{var x=function(w){if(typeof w!="string")throw new Error("Invalid cron string");var B=w.replace(/\s+/g," ").trim().split(" ");if(B.length===5)return B.map(function(K,ee){return function(U,M){if(U==="*"||U==="*/1")return[];var H=fe(Le(We(function(E,N,Z){if(Z){E=E.toUpperCase();for(var b=0;b<Z.length;b++)E=E.replace(Z[b],"".concat(b+N))}return E}(U,M.min,M.alt).split(",").map(function(E){var N,Z=E.split("/");if(Z.length>2)throw new Error('Invalid value "'.concat(U,' for "').concat(M.type,'"'));var b=Z[0],O=Z[1];N=b==="*"?Ee(M.min,M.max):function(F,T,L){var I=F.split("-");if(I.length===1){var ce=ye(I[0]);if(isNaN(ce))throw new Error('Invalid value "'.concat(T,'" for ').concat(L.type));return[ce]}if(I.length===2){var _=ye(I[0]),ne=ye(I[1]);if(isNaN(_)||isNaN(ne))throw new Error('Invalid value "'.concat(T,'" for ').concat(L.type));if(ne<_)throw new Error('Max range is less than min range in "'.concat(F,'" for ').concat(L.type));return Ee(_,ne)}throw new Error('Invalid value "'.concat(F,'" for ').concat(L.type))}(b,U,M);var D=function(F,T){if(F!==void 0){var L=ye(F);if(isNaN(L)||L<1)throw new Error('Invalid interval step value "'.concat(F,'" for ').concat(T.type));return L}}(O,M),W=function(F,T){if(T){var L=F[0];F=F.filter(function(I){return I%T==L%T||I===L})}return F}(N,D);return W}).flat(),M))),P=ze(H,M);if(P!==void 0)throw new Error('Value "'.concat(P,'" out of range for ').concat(M.type));return H.length===M.total?[]:H}(K,oe[ee])});throw new Error("Invalid cron string format")}(e),S=function(w){return w[3].length>0?"year":w[2].length>0?"month":w[4].length>0?"week":w[1].length>0?"day":w[0].length>0?"hour":"minute"}(x);f(S),p(x[0]),i(x[1]),s(x[2]),v(x[3]),u(x[4])}catch(w){h=!0}}h&&(r.current=e,t(!0),Ie(a,l))}function qe(e,t,a,o,r,c,l){if(e==="reboot")return"@reboot";var m=function(p,i){return p.map(function(s,v){var u=oe[v];return He(Ue(s,u),u,i)})}([e!=="minute"&&c?c:[],e!=="minute"&&e!=="hour"&&r?r:[],e!=="year"&&e!=="month"||!a?[]:a,e==="year"&&t?t:[],e!=="year"&&e!=="month"&&e!=="week"||!o?[]:o],l);return m.join(" ")}function He(e,t,a,o,r){var c="";if(function(m,p){return m.length===p.max-p.min+1}(e,t)||e.length===0)c="*";else{var l=function(m){if(m.length>2){var p=m[1]-m[0];if(p>1)return p}}(e);c=l&&function(m,p){for(var i=1;i<m.length;i++){var s=m[i-1];if(m[i]-s!==p)return!1}return!0}(e,l)?function(m,p,i){var s=Je(m),v=Ze(m),u=m.length===(v-s)/i+1;return!!(s===p.min&&v+i>p.max&&u)}(e,t,l)?"*/".concat(l):"".concat(te(Je(e),t,a,o,r),"-").concat(te(Ze(e),t,a,o,r),"/").concat(l):function(m){var p=[],i=null;return m.forEach(function(s,v,u){s!==u[v+1]-1?i!==null?(p.push([i,s]),i=null):p.push(s):i===null&&(i=s)}),p}(e).map(function(m){return Array.isArray(m)?"".concat(te(m[0],t,a,o,r),"-").concat(te(m[1],t,a,o,r)):te(m,t,a,o,r)}).join(",")}return c}function te(e,t,a,o,r){var c=e.toString(),l=t.type,m=t.alt,p=t.min,i=o&&(o===!0||o.includes(l)),s=r==="24-hour-clock"&&(l==="hours"||l==="minutes");if(a&&l==="week-days"||a&&l==="months"?c=m[e-p]:e<10&&(i||s)&&(c=c.padStart(2,"0")),l==="hours"&&r==="12-hour-clock"){var v=e>=12?"PM":"AM",u=e%12||12;u<10&&i&&(u=u.toString().padStart(2,"0")),c="".concat(u).concat(v)}return c}function Ue(e,t){var a=fe(Le(We(e,t)));if(a.length===0)return a;var o=ze(a,t);if(o!==void 0)throw new Error('Value "'.concat(o,'" out of range for ').concat(t.type));return a}function We(e,t){return t.type==="week-days"&&(e=e.map(function(a){return a===7?0:a})),e}function ze(e,t){var a=e[0],o=e[e.length-1];return a<t.min?a:o>t.max?o:void 0}function Je(e){return e[0]}function Ze(e){return e[e.length-1]}function se(e){var t=e.value,a=e.grid,o=a===void 0||a,r=e.optionsList,c=e.setValue,l=e.locale,m=e.className,p=e.humanizeLabels,i=e.disabled,s=e.readOnly,v=e.leadingZero,u=e.clockFormat,f=e.period,h=e.unit,d=e.periodicityOnDoubleClick,x=e.mode,S=je(e,["value","grid","optionsList","setValue","locale","className","humanizeLabels","disabled","readOnly","leadingZero","clockFormat","period","unit","periodicityOnDoubleClick","mode"]),w=y.useMemo(function(){if(t&&Array.isArray(t))return t.map(function(b){return b.toString()})},[t]),B=y.useMemo(function(){return r?r.map(function(b,O){return{value:(h.min===0?O:O+1).toString(),label:b}}):me([],Array(h.total),!0).map(function(b,O){var D=h.min===0?O:O+1;return{value:D.toString(),label:te(D,h,p,v,u)}})},[r,v,p,u]),K=JSON.stringify(l),ee=y.useCallback(function(b){var O=b.value;if(!t||t[0]!==Number(O))return n.jsx(n.Fragment,{});var D=He(Ue(t,h),h,p,v,u),W=D.match(/^\*\/([0-9]+),?/)||[];return n.jsx("div",{children:W[1]?"".concat(l.everyText||C.everyText," ").concat(W[1]):D})},[t,K,p,v,u]),U=y.useCallback(function(b){var O=Array.isArray(b)?fe(b):[b],D=O;t&&(D=x==="single"?[]:me([],t,!0),O.forEach(function(W){var F=Number(W);D=t.some(function(T){return T===F})?D.filter(function(T){return T!==F}):fe(me(me([],D,!0),[F],!1))})),D.length===h.total?c([]):c(D)},[c,t]),M=y.useCallback(function(b){if(b!==0&&b!==1){for(var O=h.total+h.min,D=[],W=h.min;W<O;W++)W%b==0&&D.push(W);var F=t&&D&&t.length===D.length&&t.every(function(L,I){return L===D[I]}),T=D.length===B.length;c(T||F?[]:D)}else c([])},[t,B,c]),H=y.useRef([]),P=y.useCallback(function(b){if(!s){var O=H.current;O.push({time:new Date().getTime(),value:Number(b)});var D=window.setTimeout(function(){d&&O.length>1&&O[O.length-1].time-O[O.length-2].time<300?O[O.length-1].value===O[O.length-2].value?M(Number(b)):U([O[O.length-2].value,O[O.length-1].value]):U(Number(b)),H.current=[]},300);return function(){window.clearTimeout(D)}}},[H,U,M,s,d]),E=y.useCallback(function(){s||c([])},[c,s]),N=y.useMemo(function(){var b;return J(((b={"react-js-cron-select":!0,"react-js-cron-custom-select":!0})["".concat(m,"-select")]=!!m,b))},[m]),Z=y.useMemo(function(){var b;return J(((b={"react-js-cron-select-dropdown":!0})["react-js-cron-select-dropdown-".concat(h.type)]=!0,b["react-js-cron-custom-select-dropdown"]=!0,b["react-js-cron-custom-select-dropdown-".concat(h.type)]=!0,b["react-js-cron-custom-select-dropdown-minutes-large"]=h.type==="minutes"&&f!=="hour"&&f!=="day",b["react-js-cron-custom-select-dropdown-minutes-medium"]=h.type==="minutes"&&(f==="day"||f==="hour"),b["react-js-cron-custom-select-dropdown-hours-twelve-hour-clock"]=h.type==="hours"&&u==="12-hour-clock",b["react-js-cron-custom-select-dropdown-grid"]=!!o,b["".concat(m,"-select-dropdown")]=!!m,b["".concat(m,"-select-dropdown-").concat(h.type)]=!!m,b))},[m,o,u,f]);return n.jsx(k.Select,q({mode:x!=="single"||d?"multiple":void 0,allowClear:!s,virtual:!1,open:!s&&void 0,value:w,onClear:E,tagRender:ee,className:N,popupClassName:Z,options:B,showSearch:!1,showArrow:!s,menuItemSelectedIcon:null,dropdownMatchSelectWidth:!1,onSelect:P,onDeselect:P,disabled:i,dropdownAlign:h.type!=="minutes"&&h.type!=="hours"||f==="day"||f==="hour"?void 0:{points:["tr","br"]},"data-testid":"custom-select-".concat(h.type)},S))}function So(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.disabled,l=e.readOnly,m=e.leadingZero,p=e.clockFormat,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=y.useMemo(function(){var f;return J(((f={"react-js-cron-field":!0,"react-js-cron-hours":!0})["".concat(r,"-field")]=!!r,f["".concat(r,"-hours")]=!!r,f))},[r]);return n.jsxs("div",q({className:u},{children:[o.prefixHours!==""&&n.jsx("span",{children:o.prefixHours||C.prefixHours}),n.jsx(se,{placeholder:o.emptyHours||C.emptyHours,value:t,unit:oe[1],setValue:a,locale:o,className:r,disabled:c,readOnly:l,leadingZero:m,clockFormat:p,period:i,periodicityOnDoubleClick:s,mode:v})]}))}function Mo(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.disabled,l=e.readOnly,m=e.leadingZero,p=e.clockFormat,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=y.useMemo(function(){var f;return J(((f={"react-js-cron-field":!0,"react-js-cron-minutes":!0})["".concat(r,"-field")]=!!r,f["".concat(r,"-minutes")]=!!r,f))},[r]);return n.jsxs("div",q({className:u},{children:[i==="hour"?o.prefixMinutesForHourPeriod!==""&&n.jsx("span",{children:o.prefixMinutesForHourPeriod||C.prefixMinutesForHourPeriod}):o.prefixMinutes!==""&&n.jsx("span",{children:o.prefixMinutes||C.prefixMinutes}),n.jsx(se,{placeholder:i==="hour"?o.emptyMinutesForHourPeriod||C.emptyMinutesForHourPeriod:o.emptyMinutes||C.emptyMinutes,value:t,unit:oe[0],setValue:a,locale:o,className:r,disabled:c,readOnly:l,leadingZero:m,clockFormat:p,period:i,periodicityOnDoubleClick:s,mode:v}),i==="hour"&&o.suffixMinutesForHourPeriod!==""&&n.jsx("span",{children:o.suffixMinutesForHourPeriod||C.suffixMinutesForHourPeriod})]}))}function Do(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.weekDays,l=e.disabled,m=e.readOnly,p=e.leadingZero,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=!c||c.length===0,f=y.useMemo(function(){var x;return J(((x={"react-js-cron-field":!0,"react-js-cron-month-days":!0,"react-js-cron-month-days-placeholder":!u})["".concat(r,"-field")]=!!r,x["".concat(r,"-month-days")]=!!r,x))},[r,u]),h=JSON.stringify(o),d=y.useMemo(function(){return u?o.emptyMonthDays||C.emptyMonthDays:o.emptyMonthDaysShort||C.emptyMonthDaysShort},[u,h]);return!m||t&&t.length>0||(!t||t.length===0)&&(!c||c.length===0)?n.jsxs("div",q({className:f},{children:[o.prefixMonthDays!==""&&n.jsx("span",{children:o.prefixMonthDays||C.prefixMonthDays}),n.jsx(se,{placeholder:d,value:t,setValue:a,unit:oe[2],locale:o,className:r,disabled:l,readOnly:m,leadingZero:p,period:i,periodicityOnDoubleClick:s,mode:v})]})):null}function Ao(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.humanizeLabels,l=e.disabled,m=e.readOnly,p=e.period,i=e.periodicityOnDoubleClick,s=e.mode,v=o.months||C.months,u=y.useMemo(function(){var f;return J(((f={"react-js-cron-field":!0,"react-js-cron-months":!0})["".concat(r,"-field")]=!!r,f["".concat(r,"-months")]=!!r,f))},[r]);return n.jsxs("div",q({className:u},{children:[o.prefixMonths!==""&&n.jsx("span",{children:o.prefixMonths||C.prefixMonths}),n.jsx(se,{placeholder:o.emptyMonths||C.emptyMonths,optionsList:v,grid:!1,value:t,unit:q(q({},oe[3]),{alt:o.altMonths||C.altMonths}),setValue:a,locale:o,className:r,humanizeLabels:c,disabled:l,readOnly:m,period:p,periodicityOnDoubleClick:i,mode:s})]}))}function Bo(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.disabled,l=e.readOnly,m=e.shortcuts,p=e.allowedPeriods,i=[];p.includes("year")&&i.push({value:"year",label:o.yearOption||C.yearOption}),p.includes("month")&&i.push({value:"month",label:o.monthOption||C.monthOption}),p.includes("week")&&i.push({value:"week",label:o.weekOption||C.weekOption}),p.includes("day")&&i.push({value:"day",label:o.dayOption||C.dayOption}),p.includes("hour")&&i.push({value:"hour",label:o.hourOption||C.hourOption}),p.includes("minute")&&i.push({value:"minute",label:o.minuteOption||C.minuteOption}),p.includes("reboot")&&m&&(m===!0||m.includes("@reboot"))&&i.push({value:"reboot",label:o.rebootOption||C.rebootOption});var s=y.useCallback(function(h){l||a(h)},[a,l]),v=y.useMemo(function(){var h;return J(((h={"react-js-cron-field":!0,"react-js-cron-period":!0})["".concat(r,"-field")]=!!r,h["".concat(r,"-period")]=!!r,h))},[r]),u=y.useMemo(function(){var h;return J(((h={"react-js-cron-select":!0,"react-js-cron-select-no-prefix":o.prefixPeriod===""})["".concat(r,"-select")]=!!r,h))},[r,o.prefixPeriod]),f=y.useMemo(function(){var h;return J(((h={"react-js-cron-select-dropdown":!0,"react-js-cron-select-dropdown-period":!0})["".concat(r,"-select-dropdown")]=!!r,h["".concat(r,"-select-dropdown-period")]=!!r,h))},[r]);return n.jsxs("div",q({className:v},{children:[o.prefixPeriod!==""&&n.jsx("span",{children:o.prefixPeriod||C.prefixPeriod}),n.jsx(k.Select,{defaultValue:t,value:t,onChange:s,options:i,className:u,popupClassName:f,disabled:c,showArrow:!l,open:!l&&void 0,"data-testid":"select-period"},JSON.stringify(o))]}))}function No(e){var t=e.value,a=e.setValue,o=e.locale,r=e.className,c=e.humanizeLabels,l=e.monthDays,m=e.disabled,p=e.readOnly,i=e.period,s=e.periodicityOnDoubleClick,v=e.mode,u=o.weekDays||C.weekDays,f=i==="week"||!l||l.length===0,h=y.useMemo(function(){var B;return J(((B={"react-js-cron-field":!0,"react-js-cron-week-days":!0,"react-js-cron-week-days-placeholder":!f})["".concat(r,"-field")]=!!r,B["".concat(r,"-week-days")]=!!r,B))},[r,f]),d=JSON.stringify(o),x=y.useMemo(function(){return f?o.emptyWeekDays||C.emptyWeekDays:o.emptyWeekDaysShort||C.emptyWeekDaysShort},[f,d]),S=i==="week"||!p||t&&t.length>0||(!t||t.length===0)&&(!l||l.length===0),w=!p||l&&l.length>0||(!l||l.length===0)&&(!t||t.length===0);return S?n.jsxs("div",q({className:h},{children:[o.prefixWeekDays!==""&&(i==="week"||!w)&&n.jsx("span",{children:o.prefixWeekDays||C.prefixWeekDays}),o.prefixWeekDaysForMonthAndYearPeriod!==""&&i!=="week"&&w&&n.jsx("span",{children:o.prefixWeekDaysForMonthAndYearPeriod||C.prefixWeekDaysForMonthAndYearPeriod}),n.jsx(se,{placeholder:x,optionsList:u,grid:!1,value:t,unit:q(q({},oe[4]),{alt:o.altWeekDays||C.altWeekDays}),setValue:a,locale:o,className:r,humanizeLabels:c,disabled:m,readOnly:p,period:i,periodicityOnDoubleClick:s,mode:v})]})):null}function Fo(e){var t=e.clearButton,a=t===void 0||t,o=e.clearButtonProps,r=o===void 0?{}:o,c=e.clearButtonAction,l=c===void 0?"fill-with-every":c,m=e.locale,p=m===void 0?C:m,i=e.value,s=i===void 0?"":i,v=e.setValue,u=e.displayError,f=u===void 0||u,h=e.onError,d=e.className,x=e.defaultPeriod,S=x===void 0?"day":x,w=e.allowEmpty,B=w===void 0?"for-default-value":w,K=e.humanizeLabels,ee=K===void 0||K,U=e.humanizeValue,M=U!==void 0&&U,H=e.disabled,P=H!==void 0&&H,E=e.readOnly,N=E!==void 0&&E,Z=e.leadingZero,b=Z!==void 0&&Z,O=e.shortcuts,D=O===void 0?["@yearly","@annually","@monthly","@weekly","@daily","@midnight","@hourly"]:O,W=e.clockFormat,F=e.periodicityOnDoubleClick,T=F===void 0||F,L=e.mode,I=L===void 0?"multiple":L,ce=e.allowedDropdowns,_=ce===void 0?["period","months","month-days","week-days","hours","minutes"]:ce,ne=e.allowedPeriods,Uo=ne===void 0?["year","month","week","day","hour","minute","reboot"]:ne,re=y.useRef(s),Ae=y.useRef(S),Xe=y.useState(),X=Xe[0],he=Xe[1],Qe=y.useState(),ue=Qe[0],ve=Qe[1],Re=y.useState(),xe=Re[0],be=Re[1],eo=y.useState(),de=eo[0],ge=eo[1],oo=y.useState(),ke=oo[0],we=oo[1],to=y.useState(),Ce=to[0],Oe=to[1],no=y.useState(!1),Be=no[0],pe=no[1],ro=y.useState(!1),Se=ro[0],ao=ro[1],Wo=function(j){var G=y.useRef(j);return y.useEffect(function(){G.current=j},[j]),G.current}(Se),io=JSON.stringify(p);y.useEffect(function(){Ve(s,pe,h,B,re,!0,p,D,Oe,we,ve,be,ge,he)},[]),y.useEffect(function(){s!==re.current&&Ve(s,pe,h,B,re,!1,p,D,Oe,we,ve,be,ge,he)},[s,re,io,B,D]),y.useEffect(function(){if(!(X||Ce||xe||ue||de||ke)||Se||Wo)Se&&ao(!1);else{var j=X||Ae.current,G=qe(j,xe,ue,de,ke,Ce,M);v(G,{selectedPeriod:j}),re.current=G,h&&h(void 0),pe(!1)}},[X,ue,xe,de,ke,Ce,M,Se]);var lo=y.useCallback(function(){ve(void 0),be(void 0),ge(void 0),we(void 0),Oe(void 0);var j="",G=X!=="reboot"&&X?X:Ae.current;G!==X&&he(G),l==="fill-with-every"&&(j=qe(G,void 0,void 0,void 0,void 0,void 0)),v(j,{selectedPeriod:G}),re.current=j,ao(!0),B==="never"&&l==="empty"?(pe(!0),Ie(h,p)):(h&&h(void 0),pe(!1))},[X,v,h,l]),zo=y.useMemo(function(){var j;return J(((j={"react-js-cron":!0,"react-js-cron-error":Be&&f,"react-js-cron-disabled":P,"react-js-cron-read-only":N})["".concat(d)]=!!d,j["".concat(d,"-error")]=Be&&f&&!!d,j["".concat(d,"-disabled")]=P&&!!d,j["".concat(d,"-read-only")]=N&&!!d,j))},[d,Be,f,P,N]),Ne=r.className,so=je(r,["className"]),co=y.useMemo(function(){var j;return J(((j={"react-js-cron-clear-button":!0})["".concat(d,"-clear-button")]=!!d,j["".concat(Ne)]=!!Ne,j))},[d,Ne]),Jo=JSON.stringify(so),uo=y.useMemo(function(){return a&&!N?n.jsx(k.Button,q({className:co,danger:!0,type:"primary",disabled:P},so,{onClick:lo},{children:p.clearButtonText||C.clearButtonText})):null},[a,N,io,co,P,Jo,lo]),V=X||Ae.current;return n.jsxs("div",q({className:zo},{children:[_.includes("period")&&n.jsx(Bo,{value:V,setValue:he,locale:p,className:d,disabled:P,readOnly:N,shortcuts:D,allowedPeriods:Uo}),V==="reboot"?uo:n.jsxs(n.Fragment,{children:[V==="year"&&_.includes("months")&&n.jsx(Ao,{value:xe,setValue:be,locale:p,className:d,humanizeLabels:ee,disabled:P,readOnly:N,period:V,periodicityOnDoubleClick:T,mode:I}),(V==="year"||V==="month")&&_.includes("month-days")&&n.jsx(Do,{value:ue,setValue:ve,locale:p,className:d,weekDays:de,disabled:P,readOnly:N,leadingZero:b,period:V,periodicityOnDoubleClick:T,mode:I}),(V==="year"||V==="month"||V==="week")&&_.includes("week-days")&&n.jsx(No,{value:de,setValue:ge,locale:p,className:d,humanizeLabels:ee,monthDays:ue,disabled:P,readOnly:N,period:V,periodicityOnDoubleClick:T,mode:I}),n.jsxs("div",{children:[V!=="minute"&&V!=="hour"&&_.includes("hours")&&n.jsx(So,{value:ke,setValue:we,locale:p,className:d,disabled:P,readOnly:N,leadingZero:b,clockFormat:W,period:V,periodicityOnDoubleClick:T,mode:I}),V!=="minute"&&_.includes("minutes")&&n.jsx(Mo,{value:Ce,setValue:Oe,locale:p,period:V,className:d,disabled:P,readOnly:N,leadingZero:b,clockFormat:W,periodicityOnDoubleClick:T,mode:I}),uo]})]})]}))}const Po={"zh-CN":{everyText:"每",emptyMonths:"每月",emptyMonthDays:"每日(月)",emptyMonthDaysShort:"每日",emptyWeekDays:"每天(周)",emptyWeekDaysShort:"每天(周)",emptyHours:"每小时",emptyMinutes:"每分钟",emptyMinutesForHourPeriod:"每",yearOption:"年",monthOption:"月",weekOption:"周",dayOption:"天",hourOption:"小时",minuteOption:"分钟",rebootOption:"重启",prefixPeriod:"每",prefixMonths:"的",prefixMonthDays:"的",prefixWeekDays:"的",prefixWeekDaysForMonthAndYearPeriod:"或者",prefixHours:"的",prefixMinutes:":",prefixMinutesForHourPeriod:"的",suffixMinutesForHourPeriod:"分钟",errorInvalidCron:"不符合 cron 规则的表达式",clearButtonText:"清空",weekDays:["周日","周一","周二","周三","周四","周五","周六"],months:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],altWeekDays:["周日","周一","周二","周三","周四","周五","周六"],altMonths:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]}},_e=[{value:"none",text:"No repeat"},{value:6e4,text:"By minute",unitText:"Minutes"},{value:36e5,text:"By hour",unitText:"Hours"},{value:864e5,text:"By day",unitText:"Days"},{value:6048e5,text:"By week",unitText:"Weeks"},{value:"cron",text:"Advanced"}];function Ge(e){return _e.filter(a=>!isNaN(+a.value)).reverse().find(a=>!(e%a.value))}function To(e){if(!e)return"none";if(e&&!isNaN(+e)){const t=Ge(e);return t?t.value:"none"}if(typeof e=="string")return"cron"}function jo({value:e,onChange:t}){const{t:a}=R(),o=Ge(e);return n.jsx(k.InputNumber,{value:e/o.value,onChange:r=>t(r*o.value),min:1,addonBefore:a("Every"),addonAfter:a(o.unitText),className:"auto-width"})}function Eo({value:e=null,onChange:t}){const{t:a}=R(),o=To(e),r=y.useCallback(l=>{if(l==="none"){t(null);return}if(l==="cron"){t("0 * * * * *");return}t(l)},[t]),c=Po[localStorage.getItem("TACHYBASE_LOCALE")||"en-US"];return n.jsxs("fieldset",{className:g.css`
2
2
  display: flex;
3
3
  flex-direction: ${o==="cron"?"column":"row"};
4
4
  align-items: flex-start;
@@ -1,15 +1,12 @@
1
1
  module.exports = {
2
2
  "react": "18.3.1",
3
- "@tachybase/client": "1.3.21",
4
- "@tachybase/components": "1.3.21",
5
- "@ant-design/icons": "5.5.2",
3
+ "@tachybase/client": "1.3.22",
4
+ "@ant-design/icons": "5.6.1",
5
+ "@tego/client": "1.3.39",
6
6
  "antd": "5.22.5",
7
- "@tachybase/server": "1.3.21",
8
- "@tachybase/utils": "1.3.21",
9
- "@tachybase/database": "1.3.21",
7
+ "@tego/server": "1.3.39",
10
8
  "dayjs": "1.11.13",
11
9
  "lodash": "4.17.21",
12
- "@tachybase/schema": "1.3.21",
13
- "react-i18next": "15.2.0",
14
- "@tachybase/actions": "1.3.21"
10
+ "@tachybase/schema": "1.3.39",
11
+ "react-i18next": "15.2.0"
15
12
  };
@@ -1 +1 @@
1
- {"name":"@hapi/topo","description":"Topological sorting with grouping support","version":"6.0.2","repository":"git://github.com/hapijs/topo","main":"lib/index.js","types":"lib/index.d.ts","files":["lib"],"keywords":["topological","sort","toposort","topsort"],"eslintConfig":{"extends":["plugin:@hapi/module"]},"dependencies":{"@hapi/hoek":"^11.0.2"},"devDependencies":{"@hapi/code":"^9.0.3","@hapi/eslint-plugin":"*","@hapi/lab":"^25.1.2","@types/node":"^17.0.31","typescript":"~4.6.4"},"scripts":{"test":"lab -a @hapi/code -t 100 -L -Y","test-cov-html":"lab -a @hapi/code -t 100 -L -r html -o coverage.html"},"license":"BSD-3-Clause","_lastModified":"2025-07-25T05:49:10.725Z"}
1
+ {"name":"@hapi/topo","description":"Topological sorting with grouping support","version":"6.0.2","repository":"git://github.com/hapijs/topo","main":"lib/index.js","types":"lib/index.d.ts","files":["lib"],"keywords":["topological","sort","toposort","topsort"],"eslintConfig":{"extends":["plugin:@hapi/module"]},"dependencies":{"@hapi/hoek":"^11.0.2"},"devDependencies":{"@hapi/code":"^9.0.3","@hapi/eslint-plugin":"*","@hapi/lab":"^25.1.2","@types/node":"^17.0.31","typescript":"~4.6.4"},"scripts":{"test":"lab -a @hapi/code -t 100 -L -Y","test-cov-html":"lab -a @hapi/code -t 100 -L -r html -o coverage.html"},"license":"BSD-3-Clause","_lastModified":"2025-07-29T06:15:47.374Z"}
@@ -1 +1 @@
1
- {"name":"archiver","version":"5.3.2","description":"a streaming interface for archive generation","homepage":"https://github.com/archiverjs/node-archiver","author":{"name":"Chris Talkington","url":"http://christalkington.com/"},"repository":{"type":"git","url":"https://github.com/archiverjs/node-archiver.git"},"bugs":{"url":"https://github.com/archiverjs/node-archiver/issues"},"license":"MIT","main":"index.js","files":["index.js","lib"],"engines":{"node":">= 10"},"scripts":{"test":"mocha --reporter dot","bench":"node benchmark/simple/pack-zip.js"},"dependencies":{"archiver-utils":"^2.1.0","async":"^3.2.4","buffer-crc32":"^0.2.1","readable-stream":"^3.6.0","readdir-glob":"^1.1.2","tar-stream":"^2.2.0","zip-stream":"^4.1.0"},"devDependencies":{"archiver-jsdoc-theme":"^1.1.3","chai":"^4.3.7","jsdoc":"^3.6.4","mkdirp":"^2.1.5","mocha":"^9.0.2","rimraf":"^4.3.1","stream-bench":"^0.1.2","tar":"^6.1.13","yauzl":"^2.9.0"},"keywords":["archive","archiver","stream","zip","tar"],"publishConfig":{"registry":"https://registry.npmjs.org/"},"_lastModified":"2025-07-25T05:49:10.523Z"}
1
+ {"name":"archiver","version":"5.3.2","description":"a streaming interface for archive generation","homepage":"https://github.com/archiverjs/node-archiver","author":{"name":"Chris Talkington","url":"http://christalkington.com/"},"repository":{"type":"git","url":"https://github.com/archiverjs/node-archiver.git"},"bugs":{"url":"https://github.com/archiverjs/node-archiver/issues"},"license":"MIT","main":"index.js","files":["index.js","lib"],"engines":{"node":">= 10"},"scripts":{"test":"mocha --reporter dot","bench":"node benchmark/simple/pack-zip.js"},"dependencies":{"archiver-utils":"^2.1.0","async":"^3.2.4","buffer-crc32":"^0.2.1","readable-stream":"^3.6.0","readdir-glob":"^1.1.2","tar-stream":"^2.2.0","zip-stream":"^4.1.0"},"devDependencies":{"archiver-jsdoc-theme":"^1.1.3","chai":"^4.3.7","jsdoc":"^3.6.4","mkdirp":"^2.1.5","mocha":"^9.0.2","rimraf":"^4.3.1","stream-bench":"^0.1.2","tar":"^6.1.13","yauzl":"^2.9.0"},"keywords":["archive","archiver","stream","zip","tar"],"publishConfig":{"registry":"https://registry.npmjs.org/"},"_lastModified":"2025-07-29T06:15:47.198Z"}
@@ -1 +1 @@
1
- {"name":"cron-parser","version":"4.9.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"types/index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^3.2.1"},"devDependencies":{"eslint":"^8.27.0","sinon":"^15.0.1","tap":"^16.3.3","tsd":"^0.26.0"},"engines":{"node":">=12.0.0"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"files":["lib","types","LICENSE","README.md"],"_lastModified":"2025-07-25T05:49:11.565Z"}
1
+ {"name":"cron-parser","version":"4.9.0","description":"Node.js library for parsing crontab instructions","main":"lib/parser.js","types":"types/index.d.ts","typesVersions":{"<4.1":{"*":["types/ts3/*"]}},"directories":{"test":"test"},"scripts":{"test:tsd":"tsd","test:unit":"TZ=UTC tap ./test/*.js","test:cover":"TZ=UTC tap --coverage-report=html ./test/*.js","lint":"eslint .","lint:fix":"eslint --fix .","test":"npm run lint && npm run test:unit && npm run test:tsd"},"repository":{"type":"git","url":"https://github.com/harrisiirak/cron-parser.git"},"keywords":["cron","crontab","parser"],"author":"Harri Siirak","contributors":["Nicholas Clawson","Daniel Prentis <daniel@salsitasoft.com>","Renault John Lecoultre","Richard Astbury <richard.astbury@gmail.com>","Meaglin Wasabi <Meaglin.wasabi@gmail.com>","Mike Kusold <hello@mikekusold.com>","Alex Kit <alex.kit@atmajs.com>","Santiago Gimeno <santiago.gimeno@gmail.com>","Daniel <darc.tec@gmail.com>","Christian Steininger <christian.steininger.cs@gmail.com>","Mykola Piskovyi <m.piskovyi@gmail.com>","Brian Vaughn <brian.david.vaughn@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Yasuhiroki <yasuhiroki.duck@gmail.com>","Nicholas Clawson <nickclaw@gmail.com>","Brendan Warkentin <faazshift@gmail.com>","Charlie Fish <fishcharlie.code@gmail.com>","Ian Graves <ian+diskimage@iangrav.es>","Andy Thompson <me@andytson.com>","Regev Brody <regevbr@gmail.com>"],"license":"MIT","dependencies":{"luxon":"^3.2.1"},"devDependencies":{"eslint":"^8.27.0","sinon":"^15.0.1","tap":"^16.3.3","tsd":"^0.26.0"},"engines":{"node":">=12.0.0"},"browser":{"fs":false},"tap":{"check-coverage":false},"tsd":{"directory":"test","compilerOptions":{"lib":["es2017","dom"]}},"files":["lib","types","LICENSE","README.md"],"_lastModified":"2025-07-29T06:15:48.330Z"}
@@ -1 +1 @@
1
- {"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"1.0.4","main":"index.js","keywords":["mkdir","directory","make dir","make","dir","recursive","native"],"repository":{"type":"git","url":"https://github.com/isaacs/node-mkdirp.git"},"scripts":{"test":"tap","snap":"tap","preversion":"npm test","postversion":"npm publish","postpublish":"git push origin --follow-tags"},"tap":{"check-coverage":true,"coverage-map":"map.js"},"devDependencies":{"require-inject":"^1.4.4","tap":"^14.10.7"},"bin":"bin/cmd.js","license":"MIT","engines":{"node":">=10"},"files":["bin","lib","index.js"],"_lastModified":"2025-07-25T05:49:10.618Z"}
1
+ {"name":"mkdirp","description":"Recursively mkdir, like `mkdir -p`","version":"1.0.4","main":"index.js","keywords":["mkdir","directory","make dir","make","dir","recursive","native"],"repository":{"type":"git","url":"https://github.com/isaacs/node-mkdirp.git"},"scripts":{"test":"tap","snap":"tap","preversion":"npm test","postversion":"npm publish","postpublish":"git push origin --follow-tags"},"tap":{"check-coverage":true,"coverage-map":"map.js"},"devDependencies":{"require-inject":"^1.4.4","tap":"^14.10.7"},"bin":"bin/cmd.js","license":"MIT","engines":{"node":">=10"},"files":["bin","lib","index.js"],"_lastModified":"2025-07-29T06:15:47.260Z"}
@@ -1 +1 @@
1
- {"name":"semver","version":"7.7.2","description":"The semantic version parser used by npm.","main":"index.js","scripts":{"test":"tap","snap":"tap","lint":"npm run eslint","postlint":"template-oss-check","lintfix":"npm run eslint -- --fix","posttest":"npm run lint","template-oss-apply":"template-oss-apply --force","eslint":"eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""},"devDependencies":{"@npmcli/eslint-config":"^5.0.0","@npmcli/template-oss":"4.24.3","benchmark":"^2.1.4","tap":"^16.0.0"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/npm/node-semver.git"},"bin":{"semver":"bin/semver.js"},"files":["bin/","lib/","classes/","functions/","internal/","ranges/","index.js","preload.js","range.bnf"],"tap":{"timeout":30,"coverage-map":"map.js","nyc-arg":["--exclude","tap-snapshots/**"]},"engines":{"node":">=10"},"author":"GitHub Inc.","templateOSS":{"//@npmcli/template-oss":"This file is partially managed by @npmcli/template-oss. Edits may be overwritten.","version":"4.24.3","engines":">=10","distPaths":["classes/","functions/","internal/","ranges/","index.js","preload.js","range.bnf"],"allowPaths":["/classes/","/functions/","/internal/","/ranges/","/index.js","/preload.js","/range.bnf","/benchmarks"],"publish":"true"},"_lastModified":"2025-07-25T05:49:10.975Z"}
1
+ {"name":"semver","version":"7.7.2","description":"The semantic version parser used by npm.","main":"index.js","scripts":{"test":"tap","snap":"tap","lint":"npm run eslint","postlint":"template-oss-check","lintfix":"npm run eslint -- --fix","posttest":"npm run lint","template-oss-apply":"template-oss-apply --force","eslint":"eslint \"**/*.{js,cjs,ts,mjs,jsx,tsx}\""},"devDependencies":{"@npmcli/eslint-config":"^5.0.0","@npmcli/template-oss":"4.24.3","benchmark":"^2.1.4","tap":"^16.0.0"},"license":"ISC","repository":{"type":"git","url":"git+https://github.com/npm/node-semver.git"},"bin":{"semver":"bin/semver.js"},"files":["bin/","lib/","classes/","functions/","internal/","ranges/","index.js","preload.js","range.bnf"],"tap":{"timeout":30,"coverage-map":"map.js","nyc-arg":["--exclude","tap-snapshots/**"]},"engines":{"node":">=10"},"author":"GitHub Inc.","templateOSS":{"//@npmcli/template-oss":"This file is partially managed by @npmcli/template-oss. Edits may be overwritten.","version":"4.24.3","engines":">=10","distPaths":["classes/","functions/","internal/","ranges/","index.js","preload.js","range.bnf"],"allowPaths":["/classes/","/functions/","/internal/","/ranges/","/index.js","/preload.js","/range.bnf","/benchmarks"],"publish":"true"},"_lastModified":"2025-07-29T06:15:47.643Z"}
@@ -1 +1 @@
1
- {"name":"yauzl","version":"3.2.0","description":"yet another unzip library for node","engines":{"node":">=12"},"main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yauzl.git"},"keywords":["unzip","zip","stream","archive","file"],"author":"Josh Wolfe <thejoshwolfe@gmail.com>","license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yauzl/issues"},"homepage":"https://github.com/thejoshwolfe/yauzl","dependencies":{"buffer-crc32":"~0.2.3","pend":"~1.2.0"},"devDependencies":{"bl":"^6.0.11"},"files":["fd-slicer.js","index.js"],"_lastModified":"2025-07-25T05:49:11.141Z"}
1
+ {"name":"yauzl","version":"3.2.0","description":"yet another unzip library for node","engines":{"node":">=12"},"main":"index.js","scripts":{"test":"node test/test.js"},"repository":{"type":"git","url":"git+https://github.com/thejoshwolfe/yauzl.git"},"keywords":["unzip","zip","stream","archive","file"],"author":"Josh Wolfe <thejoshwolfe@gmail.com>","license":"MIT","bugs":{"url":"https://github.com/thejoshwolfe/yauzl/issues"},"homepage":"https://github.com/thejoshwolfe/yauzl","dependencies":{"buffer-crc32":"~0.2.3","pend":"~1.2.0"},"devDependencies":{"bl":"^6.0.11"},"files":["fd-slicer.js","index.js"],"_lastModified":"2025-07-29T06:15:47.827Z"}
@@ -1,5 +1,5 @@
1
- import EventEmitter from 'events';
2
- import { Application } from '@tachybase/server';
1
+ import EventEmitter from 'node:events';
2
+ import { Application } from '@tego/server';
3
3
  export type AppMigratorOptions = {
4
4
  workDir?: string;
5
5
  };
@@ -30,20 +30,20 @@ __export(app_migrator_exports, {
30
30
  AppMigrator: () => AppMigrator
31
31
  });
32
32
  module.exports = __toCommonJS(app_migrator_exports);
33
- var import_crypto = __toESM(require("crypto"));
34
- var import_events = __toESM(require("events"));
35
- var import_promises = __toESM(require("fs/promises"));
36
- var os = __toESM(require("os"));
37
- var import_path = __toESM(require("path"));
38
- var import_utils = require("@tachybase/utils");
39
- class AppMigrator extends import_events.default {
33
+ var import_node_crypto = __toESM(require("node:crypto"));
34
+ var import_node_events = __toESM(require("node:events"));
35
+ var import_promises = __toESM(require("node:fs/promises"));
36
+ var os = __toESM(require("node:os"));
37
+ var import_node_path = __toESM(require("node:path"));
38
+ var import_server = require("@tego/server");
39
+ class AppMigrator extends import_node_events.default {
40
40
  constructor(app, options) {
41
41
  super();
42
42
  this.app = app;
43
43
  this.workDir = (options == null ? void 0 : options.workDir) || this.tmpDir();
44
44
  }
45
45
  tmpDir() {
46
- return import_path.default.resolve(os.tmpdir(), `tachybase-${import_crypto.default.randomUUID()}`);
46
+ return import_node_path.default.resolve(os.tmpdir(), `tachybase-${import_node_crypto.default.randomUUID()}`);
47
47
  }
48
48
  async rmDir(dir) {
49
49
  await import_promises.default.rm(dir, { recursive: true, force: true });
@@ -52,7 +52,7 @@ class AppMigrator extends import_events.default {
52
52
  await this.rmDir(this.workDir);
53
53
  }
54
54
  }
55
- (0, import_utils.applyMixins)(AppMigrator, [import_utils.AsyncEmitter]);
55
+ (0, import_server.applyMixins)(AppMigrator, [import_server.AsyncEmitter]);
56
56
  // Annotate the CommonJS export names for ESM import in node:
57
57
  0 && (module.exports = {
58
58
  AppMigrator
@@ -1,4 +1,4 @@
1
- import { CollectionGroup } from '@tachybase/database';
1
+ import { CollectionGroup } from '@tego/server';
2
2
  export declare class CollectionGroupManager {
3
3
  static collectionGroups: CollectionGroup[];
4
4
  }
@@ -1,2 +1,2 @@
1
- import { CollectionOptions } from '@tachybase/database';
1
+ import { CollectionOptions } from '@tego/server';
2
2
  export default function (): CollectionOptions;
@@ -1,2 +1,2 @@
1
- import { Application } from '@tachybase/server';
1
+ import { Application } from '@tego/server';
2
2
  export default function addBackupCommand(app: Application): void;
@@ -30,8 +30,8 @@ __export(backup_command_exports, {
30
30
  default: () => addBackupCommand
31
31
  });
32
32
  module.exports = __toCommonJS(backup_command_exports);
33
- var import_promises = __toESM(require("fs/promises"));
34
- var import_server = require("@tachybase/server");
33
+ var import_promises = __toESM(require("node:fs/promises"));
34
+ var import_server = require("@tego/server");
35
35
  var import_dumper = require("../dumper");
36
36
  function addBackupCommand(app) {
37
37
  app.command("backup").ipc().option("-a, --app <appName>", "sub app name if you want to backup").option(
@@ -1,2 +1,2 @@
1
- import { Application } from '@tachybase/server';
1
+ import { Application } from '@tego/server';
2
2
  export default function addRestoreCommand(app: Application): void;
@@ -20,7 +20,7 @@ __export(restore_command_exports, {
20
20
  default: () => addRestoreCommand
21
21
  });
22
22
  module.exports = __toCommonJS(restore_command_exports);
23
- var import_server = require("@tachybase/server");
23
+ var import_server = require("@tego/server");
24
24
  var import_restorer = require("../restorer");
25
25
  function addRestoreCommand(app) {
26
26
  app.command("restore").ipc().argument("<string>", "restore file path").option("-a, --app <appName>", "sub app name if you want to restore into a sub app").option("-f, --force", "force restore").option(
@@ -1,4 +1,4 @@
1
- import { DumpRulesGroupType } from '@tachybase/database';
1
+ import { DumpRulesGroupType } from '@tego/server';
2
2
  import { AppMigrator } from './app-migrator';
3
3
  type DumpOptions = {
4
4
  groups: Set<DumpRulesGroupType>;
@@ -30,13 +30,13 @@ __export(dumper_exports, {
30
30
  Dumper: () => Dumper
31
31
  });
32
32
  module.exports = __toCommonJS(dumper_exports);
33
- var import_fs = __toESM(require("fs"));
34
- var import_promises = __toESM(require("fs/promises"));
35
- var import_path = __toESM(require("path"));
36
- var process = __toESM(require("process"));
37
- var import_stream = __toESM(require("stream"));
38
- var import_util = __toESM(require("util"));
39
- var import_database = require("@tachybase/database");
33
+ var import_node_fs = __toESM(require("node:fs"));
34
+ var import_promises = __toESM(require("node:fs/promises"));
35
+ var import_node_path = __toESM(require("node:path"));
36
+ var process = __toESM(require("node:process"));
37
+ var import_node_stream = __toESM(require("node:stream"));
38
+ var import_node_util = __toESM(require("node:util"));
39
+ var import_server = require("@tego/server");
40
40
  var import_archiver = __toESM(require("archiver"));
41
41
  var import_dayjs = __toESM(require("dayjs"));
42
42
  var import_lodash = __toESM(require("lodash"));
@@ -44,7 +44,7 @@ var import_mkdirp = __toESM(require("mkdirp"));
44
44
  var import_app_migrator = require("./app-migrator");
45
45
  var import_field_value_writer = require("./field-value-writer");
46
46
  var import_utils = require("./utils");
47
- const finished = import_util.default.promisify(import_stream.default.finished);
47
+ const finished = import_node_util.default.promisify(import_node_stream.default.finished);
48
48
  const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
49
49
  constructor() {
50
50
  super(...arguments);
@@ -56,8 +56,8 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
56
56
  }
57
57
  static async getFileStatus(filePath) {
58
58
  const lockFile = filePath + ".lock";
59
- const fileName = import_path.default.basename(filePath);
60
- return import_fs.default.promises.stat(lockFile).then((lockFileStat) => {
59
+ const fileName = import_node_path.default.basename(filePath);
60
+ return import_node_fs.default.promises.stat(lockFile).then((lockFileStat) => {
61
61
  if (lockFileStat.isFile()) {
62
62
  if (lockFileStat.ctime.getTime() < Date.now() - 2 * 60 * 60 * 1e3) {
63
63
  return {
@@ -77,7 +77,7 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
77
77
  }
78
78
  }).catch((error) => {
79
79
  if (error.code === "ENOENT") {
80
- return import_fs.default.promises.stat(filePath).then((backupFileStat) => {
80
+ return import_node_fs.default.promises.stat(filePath).then((backupFileStat) => {
81
81
  if (backupFileStat.isFile()) {
82
82
  return {
83
83
  name: fileName,
@@ -112,7 +112,7 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
112
112
  return (await Promise.all(
113
113
  [...this.app.db.collections.values()].map(async (c) => {
114
114
  try {
115
- const dumpRules = import_database.CollectionGroupManager.unifyDumpRules(c.options.dumpRules);
115
+ const dumpRules = import_server.CollectionGroupManager.unifyDumpRules(c.options.dumpRules);
116
116
  const options = {
117
117
  name: c.name,
118
118
  title: c.options.title || c.name,
@@ -143,9 +143,9 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
143
143
  }
144
144
  backUpStorageDir(appName) {
145
145
  if (appName && appName !== "main") {
146
- return import_path.default.resolve(process.cwd(), "storage", "backups", appName);
146
+ return import_node_path.default.resolve(process.cwd(), "storage", "backups", appName);
147
147
  }
148
- return import_path.default.resolve(process.cwd(), "storage", "backups");
148
+ return import_node_path.default.resolve(process.cwd(), "storage", "backups");
149
149
  }
150
150
  async allBackUpFilePaths(options) {
151
151
  const dirname = (options == null ? void 0 : options.dir) || this.backUpStorageDir(options == null ? void 0 : options.appName);
@@ -153,15 +153,15 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
153
153
  try {
154
154
  const files = await import_promises.default.readdir(dirname);
155
155
  const lockFilesSet = new Set(
156
- files.filter((file) => import_path.default.extname(file) === ".lock").map((file) => import_path.default.basename(file, ".lock"))
156
+ files.filter((file) => import_node_path.default.extname(file) === ".lock").map((file) => import_node_path.default.basename(file, ".lock"))
157
157
  );
158
158
  const filteredFiles = files.filter((file) => {
159
- const baseName = import_path.default.basename(file);
160
- const isLockFile = import_path.default.extname(file) === ".lock";
161
- const isDumpFile = import_path.default.extname(file) === `.${import_utils.DUMPED_EXTENSION}`;
159
+ const baseName = import_node_path.default.basename(file);
160
+ const isLockFile = import_node_path.default.extname(file) === ".lock";
161
+ const isDumpFile = import_node_path.default.extname(file) === `.${import_utils.DUMPED_EXTENSION}`;
162
162
  return includeInProgress && isLockFile || isDumpFile && !lockFilesSet.has(baseName);
163
163
  }).map(async (file) => {
164
- const filePath = import_path.default.resolve(dirname, file);
164
+ const filePath = import_node_path.default.resolve(dirname, file);
165
165
  const stats = await import_promises.default.stat(filePath);
166
166
  return { filePath, birthtime: stats.birthtime.getTime() };
167
167
  });
@@ -177,12 +177,12 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
177
177
  }
178
178
  backUpFilePath(fileName, appName) {
179
179
  const dirname = this.backUpStorageDir(appName);
180
- return import_path.default.resolve(dirname, fileName);
180
+ return import_node_path.default.resolve(dirname, fileName);
181
181
  }
182
182
  lockFilePath(fileName, appName) {
183
183
  const lockFile = fileName + ".lock";
184
184
  const dirname = this.backUpStorageDir(appName);
185
- return import_path.default.resolve(dirname, lockFile);
185
+ return import_node_path.default.resolve(dirname, lockFile);
186
186
  }
187
187
  async writeLockFile(fileName, appName) {
188
188
  const dirname = this.backUpStorageDir(appName);
@@ -246,7 +246,7 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
246
246
  }
247
247
  }
248
248
  if (this.hasSqlContent()) {
249
- const dbDumpPath = import_path.default.resolve(this.workDir, "sql-content.json");
249
+ const dbDumpPath = import_node_path.default.resolve(this.workDir, "sql-content.json");
250
250
  await import_promises.default.writeFile(
251
251
  dbDumpPath,
252
252
  JSON.stringify(
@@ -263,7 +263,7 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
263
263
  return Object.keys(this.sqlContent).length > 0;
264
264
  }
265
265
  async dumpMeta(additionalMeta = {}) {
266
- const metaPath = import_path.default.resolve(this.workDir, "meta");
266
+ const metaPath = import_node_path.default.resolve(this.workDir, "meta");
267
267
  const metaObj = {
268
268
  version: await this.app.version.get(),
269
269
  dialect: this.app.db.sequelize.getDialect(),
@@ -302,11 +302,11 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
302
302
  }
303
303
  const attributes = collection.model.tableAttributes;
304
304
  const columns = [...new Set(import_lodash.default.map(attributes, "field"))];
305
- const collectionDataDir = import_path.default.resolve(dir, "collections", collectionName);
305
+ const collectionDataDir = import_node_path.default.resolve(dir, "collections", collectionName);
306
306
  await import_promises.default.mkdir(collectionDataDir, { recursive: true });
307
307
  let count = 0;
308
- const dataFilePath = import_path.default.resolve(collectionDataDir, "data");
309
- const dataStream = import_fs.default.createWriteStream(dataFilePath);
308
+ const dataFilePath = import_node_path.default.resolve(collectionDataDir, "data");
309
+ const dataStream = import_node_fs.default.createWriteStream(dataFilePath);
310
310
  const rows = await app.db.sequelize.query(
311
311
  (0, import_utils.sqlAdapter)(app.db, `SELECT * FROM ${collection.isParent() ? "ONLY" : ""} ${collection.quotedTableName()}`),
312
312
  { type: "SELECT" }
@@ -374,13 +374,13 @@ const _Dumper = class _Dumper extends import_app_migrator.AppMigrator {
374
374
  fieldName: autoIncrAttr
375
375
  };
376
376
  }
377
- await import_promises.default.writeFile(import_path.default.resolve(collectionDataDir, "meta"), JSON.stringify(meta), "utf8");
377
+ await import_promises.default.writeFile(import_node_path.default.resolve(collectionDataDir, "meta"), JSON.stringify(meta), "utf8");
378
378
  }
379
379
  async packDumpedDir(fileName, appName) {
380
380
  const dirname = this.backUpStorageDir(appName);
381
381
  await (0, import_mkdirp.default)(dirname);
382
- const filePath = import_path.default.resolve(dirname, fileName);
383
- const output = import_fs.default.createWriteStream(filePath);
382
+ const filePath = import_node_path.default.resolve(dirname, fileName);
383
+ const output = import_node_fs.default.createWriteStream(filePath);
384
384
  const archive = (0, import_archiver.default)("zip", {
385
385
  zlib: { level: 9 }
386
386
  });
@@ -1,4 +1,4 @@
1
- import { Field } from '@tachybase/database';
1
+ import { Field } from '@tego/server';
2
2
  type WriterFunc = (val: any) => any;
3
3
  export declare class FieldValueWriter {
4
4
  static writers: Map<string, WriterFunc>;
@@ -30,7 +30,7 @@ __export(field_value_writer_exports, {
30
30
  FieldValueWriter: () => FieldValueWriter
31
31
  });
32
32
  module.exports = __toCommonJS(field_value_writer_exports);
33
- var import_database = require("@tachybase/database");
33
+ var import_server = require("@tego/server");
34
34
  var import_lodash = __toESM(require("lodash"));
35
35
  const getMapFieldWriter = (field) => {
36
36
  return (val) => {
@@ -46,7 +46,7 @@ const getMapFieldWriter = (field) => {
46
46
  const _FieldValueWriter = class _FieldValueWriter {
47
47
  static write(field, val) {
48
48
  if (val === null) return val;
49
- if (field.type == "point" || field.type == "lineString" || field.type == "circle" || field.type === "polygon") {
49
+ if (field.type === "point" || field.type === "lineString" || field.type === "circle" || field.type === "polygon") {
50
50
  return getMapFieldWriter(field)(import_lodash.default.isString(val) ? JSON.parse(val) : val);
51
51
  }
52
52
  const fieldType = field.typeToString();
@@ -58,7 +58,7 @@ const _FieldValueWriter = class _FieldValueWriter {
58
58
  }
59
59
  static toDumpedValue(field, val) {
60
60
  if (val === null) return val;
61
- if (field.type == "point" || field.type == "lineString" || field.type == "circle" || field.type === "polygon") {
61
+ if (field.type === "point" || field.type === "lineString" || field.type === "circle" || field.type === "polygon") {
62
62
  const mockObj = {
63
63
  getDataValue: () => val
64
64
  };
@@ -83,7 +83,7 @@ function isJSONObjectOrArrayString(str) {
83
83
  return false;
84
84
  }
85
85
  }
86
- FieldValueWriter.registerWriter([import_database.DataTypes.JSON.toString(), import_database.DataTypes.JSONB.toString()], (val) => {
86
+ FieldValueWriter.registerWriter([import_server.DataTypes.JSON.toString(), import_server.DataTypes.JSONB.toString()], (val) => {
87
87
  try {
88
88
  return isJSONObjectOrArrayString(val) ? JSON.parse(val) : val;
89
89
  } catch (err) {
@@ -93,7 +93,7 @@ FieldValueWriter.registerWriter([import_database.DataTypes.JSON.toString(), impo
93
93
  throw err;
94
94
  }
95
95
  });
96
- FieldValueWriter.registerWriter(import_database.DataTypes.BOOLEAN.toString(), (val) => Boolean(val));
96
+ FieldValueWriter.registerWriter(import_server.DataTypes.BOOLEAN.toString(), (val) => Boolean(val));
97
97
  // Annotate the CommonJS export names for ESM import in node:
98
98
  0 && (module.exports = {
99
99
  FieldValueWriter
@@ -1,4 +1,4 @@
1
- import { Model } from '@tachybase/database';
1
+ import { Model } from '@tego/server';
2
2
  export declare class AutoBackupModel extends Model {
3
3
  id: number;
4
4
  title: string;
@@ -20,8 +20,8 @@ __export(AutoBackupModel_exports, {
20
20
  AutoBackupModel: () => AutoBackupModel
21
21
  });
22
22
  module.exports = __toCommonJS(AutoBackupModel_exports);
23
- var import_database = require("@tachybase/database");
24
- class AutoBackupModel extends import_database.Model {
23
+ var import_server = require("@tego/server");
24
+ class AutoBackupModel extends import_server.Model {
25
25
  }
26
26
  // Annotate the CommonJS export names for ESM import in node:
27
27
  0 && (module.exports = {
@@ -34,8 +34,7 @@ var import_node_fs = __toESM(require("node:fs"));
34
34
  var import_promises = __toESM(require("node:fs/promises"));
35
35
  var import_node_os = __toESM(require("node:os"));
36
36
  var import_node_path = __toESM(require("node:path"));
37
- var import_actions = require("@tachybase/actions");
38
- var import_utils = require("@tachybase/utils");
37
+ var import_server = require("@tego/server");
39
38
  var import_dumper = require("../dumper");
40
39
  var import_restorer = require("../restorer");
41
40
  var import_server2 = __toESM(require("../server"));
@@ -45,19 +44,19 @@ var backup_files_default = {
45
44
  if (ctx.action.actionName !== "upload") {
46
45
  return next();
47
46
  }
48
- const storage = import_utils.koaMulter.diskStorage({
47
+ const storage = import_server.koaMulter.diskStorage({
49
48
  destination: import_node_os.default.tmpdir(),
50
49
  filename: function(req, file, cb) {
51
50
  const randomName = Date.now().toString() + Math.random().toString().slice(2);
52
51
  cb(null, randomName);
53
52
  }
54
53
  });
55
- const upload = (0, import_utils.koaMulter)({ storage }).single("file");
54
+ const upload = (0, import_server.koaMulter)({ storage }).single("file");
56
55
  return upload(ctx, next);
57
56
  },
58
57
  actions: {
59
58
  async list(ctx, next) {
60
- const { page = import_actions.DEFAULT_PAGE, pageSize = import_actions.DEFAULT_PER_PAGE } = ctx.action.params;
59
+ const { page = import_server.DEFAULT_PAGE, pageSize = import_server.DEFAULT_PER_PAGE } = ctx.action.params;
61
60
  const dumper = new import_dumper.Dumper(ctx.app);
62
61
  const backupFiles = await dumper.allBackUpFilePaths({
63
62
  includeInProgress: true,
@@ -1,5 +1,4 @@
1
- import { DumpRulesGroupType } from '@tachybase/database';
2
- import { Application } from '@tachybase/server';
1
+ import { Application, DumpRulesGroupType } from '@tego/server';
3
2
  import { AppMigrator, AppMigratorOptions } from './app-migrator';
4
3
  type RestoreOptions = {
5
4
  groups: Set<DumpRulesGroupType>;
@@ -30,11 +30,11 @@ __export(restorer_exports, {
30
30
  Restorer: () => Restorer
31
31
  });
32
32
  module.exports = __toCommonJS(restorer_exports);
33
- var import_fs = __toESM(require("fs"));
34
- var import_promises = __toESM(require("fs/promises"));
35
- var import_path = __toESM(require("path"));
36
- var import_database = require("@tachybase/database");
33
+ var import_node_fs = __toESM(require("node:fs"));
34
+ var import_promises = __toESM(require("node:fs/promises"));
35
+ var import_node_path = __toESM(require("node:path"));
37
36
  var Topo = __toESM(require("@hapi/topo"));
37
+ var import_server = require("@tego/server");
38
38
  var import_lodash = __toESM(require("lodash"));
39
39
  var import_semver = __toESM(require("semver"));
40
40
  var import_yauzl = __toESM(require("yauzl"));
@@ -68,13 +68,13 @@ class Restorer extends import_app_migrator.AppMigrator {
68
68
  return sorter.sort();
69
69
  }
70
70
  setBackUpFilePath(backUpFilePath) {
71
- if (import_path.default.isAbsolute(backUpFilePath)) {
71
+ if (import_node_path.default.isAbsolute(backUpFilePath)) {
72
72
  this.backUpFilePath = backUpFilePath;
73
- } else if (import_path.default.basename(backUpFilePath) === backUpFilePath) {
74
- const dirname = import_path.default.resolve(process.cwd(), "storage", "duplicator");
75
- this.backUpFilePath = import_path.default.resolve(dirname, backUpFilePath);
73
+ } else if (import_node_path.default.basename(backUpFilePath) === backUpFilePath) {
74
+ const dirname = import_node_path.default.resolve(process.cwd(), "storage", "duplicator");
75
+ this.backUpFilePath = import_node_path.default.resolve(dirname, backUpFilePath);
76
76
  } else {
77
- this.backUpFilePath = import_path.default.resolve(process.cwd(), backUpFilePath);
77
+ this.backUpFilePath = import_node_path.default.resolve(process.cwd(), backUpFilePath);
78
78
  }
79
79
  }
80
80
  async parseBackupFile() {
@@ -89,7 +89,7 @@ class Restorer extends import_app_migrator.AppMigrator {
89
89
  await this.clearWorkDir();
90
90
  }
91
91
  async getImportMeta() {
92
- const metaFile = import_path.default.resolve(this.workDir, "meta");
92
+ const metaFile = import_node_path.default.resolve(this.workDir, "meta");
93
93
  return JSON.parse(await import_promises.default.readFile(metaFile, "utf8"));
94
94
  }
95
95
  async checkMeta() {
@@ -159,16 +159,16 @@ class Restorer extends import_app_migrator.AppMigrator {
159
159
  if (err) return reject(err);
160
160
  zipfile.readEntry();
161
161
  zipfile.on("entry", (entry) => {
162
- const filePath = import_path.default.join(this.workDir, entry.fileName);
163
- if (/\/$/.test(entry.fileName)) {
164
- import_fs.default.mkdir(filePath, { recursive: true }, (err2) => {
162
+ const filePath = import_node_path.default.join(this.workDir, entry.fileName);
163
+ if (entry.fileName.endsWith("/")) {
164
+ import_node_fs.default.mkdir(filePath, { recursive: true }, (err2) => {
165
165
  if (err2) return reject(err2);
166
166
  zipfile.readEntry();
167
167
  });
168
168
  } else {
169
169
  zipfile.openReadStream(entry, (err2, readStream) => {
170
170
  if (err2) return reject(err2);
171
- const writeStream = import_fs.default.createWriteStream(filePath);
171
+ const writeStream = import_node_fs.default.createWriteStream(filePath);
172
172
  readStream.pipe(writeStream);
173
173
  writeStream.on("close", () => {
174
174
  zipfile.readEntry();
@@ -188,7 +188,7 @@ class Restorer extends import_app_migrator.AppMigrator {
188
188
  }
189
189
  async readCollectionMeta(collectionName) {
190
190
  const dir = this.workDir;
191
- const collectionMetaPath = import_path.default.resolve(dir, "collections", collectionName, "meta");
191
+ const collectionMetaPath = import_node_path.default.resolve(dir, "collections", collectionName, "meta");
192
192
  const metaContent = await import_promises.default.readFile(collectionMetaPath, "utf8");
193
193
  return JSON.parse(metaContent);
194
194
  }
@@ -200,8 +200,8 @@ class Restorer extends import_app_migrator.AppMigrator {
200
200
  throw new Error("collection name is required");
201
201
  }
202
202
  const dir = this.workDir;
203
- const collectionDataPath = import_path.default.resolve(dir, "collections", collectionName, "data");
204
- const collectionMetaPath = import_path.default.resolve(dir, "collections", collectionName, "meta");
203
+ const collectionDataPath = import_node_path.default.resolve(dir, "collections", collectionName, "data");
204
+ const collectionMetaPath = import_node_path.default.resolve(dir, "collections", collectionName, "meta");
205
205
  try {
206
206
  await import_promises.default.stat(collectionMetaPath);
207
207
  } catch (e) {
@@ -237,7 +237,7 @@ class Restorer extends import_app_migrator.AppMigrator {
237
237
  field: attr.field
238
238
  };
239
239
  }
240
- const DataTypeClass = import_database.DataTypes[db.options.dialect][attr.type] || import_database.DataTypes[attr.type];
240
+ const DataTypeClass = import_server.DataTypes[db.options.dialect][attr.type] || import_server.DataTypes[attr.type];
241
241
  const obj = {
242
242
  ...attr,
243
243
  type: new DataTypeClass()
@@ -309,8 +309,8 @@ class Restorer extends import_app_migrator.AppMigrator {
309
309
  this.importedCollections.push(collectionName);
310
310
  }
311
311
  async importDb(options) {
312
- const sqlContentPath = import_path.default.resolve(this.workDir, "sql-content.json");
313
- if (!import_fs.default.existsSync(sqlContentPath)) {
312
+ const sqlContentPath = import_node_path.default.resolve(this.workDir, "sql-content.json");
313
+ if (!import_node_fs.default.existsSync(sqlContentPath)) {
314
314
  return;
315
315
  }
316
316
  const sqlData = JSON.parse(await import_promises.default.readFile(sqlContentPath, "utf8"));
@@ -1,4 +1,4 @@
1
- import { Plugin } from '@tachybase/server';
1
+ import { Plugin } from '@tego/server';
2
2
  import { AutoBackupModel } from './model/AutoBackupModel';
3
3
  export default class PluginBackupRestoreServer extends Plugin {
4
4
  private static readonly inspectFields;
@@ -30,7 +30,7 @@ __export(server_exports, {
30
30
  default: () => PluginBackupRestoreServer
31
31
  });
32
32
  module.exports = __toCommonJS(server_exports);
33
- var import_server = require("@tachybase/server");
33
+ var import_server = require("@tego/server");
34
34
  var import_cron_parser = __toESM(require("cron-parser"));
35
35
  var import_constants = require("../constants");
36
36
  var import_dumper = require("./dumper");
@@ -1,4 +1,4 @@
1
- import { Database } from '@tachybase/database';
1
+ import { Database } from '@tego/server';
2
2
  export declare const DUMPED_EXTENSION = "tbdump";
3
3
  export declare function sqlAdapter(database: Database, sql: string): string;
4
4
  export declare function readLines(filePath: string): Promise<any[]>;
@@ -34,8 +34,8 @@ __export(utils_exports, {
34
34
  sqlAdapter: () => sqlAdapter
35
35
  });
36
36
  module.exports = __toCommonJS(utils_exports);
37
- var import_fs = __toESM(require("fs"));
38
- var import_readline = __toESM(require("readline"));
37
+ var import_node_fs = __toESM(require("node:fs"));
38
+ var import_node_readline = __toESM(require("node:readline"));
39
39
  var import_lodash = __toESM(require("lodash"));
40
40
  const DUMPED_EXTENSION = "tbdump";
41
41
  function sqlAdapter(database, sql) {
@@ -46,8 +46,8 @@ function sqlAdapter(database, sql) {
46
46
  }
47
47
  async function readLines(filePath) {
48
48
  const results = [];
49
- const fileStream = import_fs.default.createReadStream(filePath);
50
- const rl = import_readline.default.createInterface({
49
+ const fileStream = import_node_fs.default.createReadStream(filePath);
50
+ const rl = import_node_readline.default.createInterface({
51
51
  input: fileStream,
52
52
  crlfDelay: Infinity
53
53
  });
@@ -57,8 +57,8 @@ async function readLines(filePath) {
57
57
  return results;
58
58
  }
59
59
  async function readEveryLines(filePath, processLine) {
60
- const fileStream = import_fs.default.createReadStream(filePath);
61
- const rl = import_readline.default.createInterface({
60
+ const fileStream = import_node_fs.default.createReadStream(filePath);
61
+ const rl = import_node_readline.default.createInterface({
62
62
  input: fileStream,
63
63
  crlfDelay: Infinity
64
64
  });
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@tachybase/module-backup",
3
3
  "displayName": "App backup & restore",
4
- "version": "1.3.21",
4
+ "version": "1.3.22",
5
5
  "description": "Backup and restore applications for scenarios such as application replication, migration, and upgrades.",
6
6
  "keywords": [
7
7
  "System management"
@@ -9,11 +9,15 @@
9
9
  "license": "Apache-2.0",
10
10
  "main": "./dist/server/index.js",
11
11
  "devDependencies": {
12
- "@ant-design/icons": "^5.5.2",
12
+ "@ant-design/icons": "^5.6.1",
13
13
  "@hapi/topo": "^6.0.2",
14
+ "@tachybase/schema": "^1.3.39",
15
+ "@tachybase/test": "^1.3.39",
16
+ "@tego/client": "^1.3.39",
17
+ "@tego/server": "^1.3.39",
14
18
  "@types/archiver": "^5.3.4",
15
19
  "@types/file-saver": "^2.0.7",
16
- "@types/lodash": "4.17.20",
20
+ "@types/lodash": "^4.17.20",
17
21
  "antd": "5.22.5",
18
22
  "archiver": "^5.3.2",
19
23
  "content-disposition": "^0.5.4",
@@ -25,27 +29,16 @@
25
29
  "lodash": "4.17.21",
26
30
  "mkdirp": "^1.0.4",
27
31
  "object-path": "^0.11.8",
28
- "react": "^18.3.1",
29
- "react-i18next": "^15.2.0",
32
+ "react": "18.3.1",
33
+ "react-i18next": "15.2.0",
30
34
  "react-js-cron": "^3.2.0",
31
35
  "semver": "7.7.2",
32
36
  "tar": "^6.2.1",
33
37
  "yauzl": "^3.2.0",
34
- "@tachybase/components": "1.3.21",
35
- "@tachybase/module-worker-thread": "1.3.21"
36
- },
37
- "peerDependencies": {
38
- "@tachybase/actions": "1.3.21",
39
- "@tachybase/client": "1.3.21",
40
- "@tachybase/database": "1.3.21",
41
- "@tachybase/server": "1.3.21",
42
- "@tachybase/utils": "1.3.21",
43
- "@tachybase/test": "1.3.21",
44
- "@tachybase/schema": "1.3.21"
38
+ "@tachybase/client": "1.3.22",
39
+ "@tachybase/module-worker-thread": "1.3.22"
45
40
  },
46
41
  "description.zh-CN": "备份和还原应用,可用于应用的复制、迁移、升级等场景。",
47
42
  "displayName.zh-CN": "应用的备份与还原",
48
- "scripts": {
49
- "build": "tachybase-build --no-dts @tachybase/module-backup"
50
- }
43
+ "scripts": {}
51
44
  }