@nocobase/plugin-backup-restore 1.2.12-alpha → 1.3.0-alpha.20240710084543

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.
Files changed (152) hide show
  1. package/package.json +2 -2
  2. package/dist/client/Configuration.d.ts +0 -10
  3. package/dist/client/DuplicatorProvider.d.ts +0 -10
  4. package/dist/client/index.d.ts +0 -13
  5. package/dist/client/index.js +0 -10
  6. package/dist/client/locale/index.d.ts +0 -12
  7. package/dist/externalVersion.js +0 -23
  8. package/dist/index.d.ts +0 -10
  9. package/dist/index.js +0 -48
  10. package/dist/locale/en-US.json +0 -44
  11. package/dist/locale/ja-JP.d.ts +0 -33
  12. package/dist/locale/ja-JP.js +0 -55
  13. package/dist/locale/ko_KR.json +0 -50
  14. package/dist/locale/pt-BR.d.ts +0 -34
  15. package/dist/locale/pt-BR.js +0 -57
  16. package/dist/locale/zh-CN.json +0 -50
  17. package/dist/node_modules/@hapi/topo/lib/index.d.ts +0 -60
  18. package/dist/node_modules/@hapi/topo/lib/index.js +0 -1
  19. package/dist/node_modules/@hapi/topo/package.json +0 -1
  20. package/dist/node_modules/archiver/LICENSE +0 -22
  21. package/dist/node_modules/archiver/index.js +0 -68
  22. package/dist/node_modules/archiver/lib/core.js +0 -974
  23. package/dist/node_modules/archiver/lib/error.js +0 -40
  24. package/dist/node_modules/archiver/lib/plugins/json.js +0 -110
  25. package/dist/node_modules/archiver/lib/plugins/tar.js +0 -167
  26. package/dist/node_modules/archiver/lib/plugins/zip.js +0 -120
  27. package/dist/node_modules/archiver/node_modules/readable-stream/errors-browser.js +0 -127
  28. package/dist/node_modules/archiver/node_modules/readable-stream/errors.js +0 -116
  29. package/dist/node_modules/archiver/node_modules/readable-stream/experimentalWarning.js +0 -17
  30. package/dist/node_modules/archiver/node_modules/readable-stream/lib/_stream_duplex.js +0 -126
  31. package/dist/node_modules/archiver/node_modules/readable-stream/lib/_stream_passthrough.js +0 -37
  32. package/dist/node_modules/archiver/node_modules/readable-stream/lib/_stream_readable.js +0 -1027
  33. package/dist/node_modules/archiver/node_modules/readable-stream/lib/_stream_transform.js +0 -190
  34. package/dist/node_modules/archiver/node_modules/readable-stream/lib/_stream_writable.js +0 -641
  35. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/async_iterator.js +0 -180
  36. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/buffer_list.js +0 -183
  37. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/destroy.js +0 -96
  38. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/end-of-stream.js +0 -86
  39. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/from-browser.js +0 -3
  40. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/from.js +0 -52
  41. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/pipeline.js +0 -86
  42. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/state.js +0 -22
  43. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/stream-browser.js +0 -1
  44. package/dist/node_modules/archiver/node_modules/readable-stream/lib/internal/streams/stream.js +0 -1
  45. package/dist/node_modules/archiver/node_modules/readable-stream/package.json +0 -68
  46. package/dist/node_modules/archiver/node_modules/readable-stream/readable-browser.js +0 -9
  47. package/dist/node_modules/archiver/node_modules/readable-stream/readable.js +0 -16
  48. package/dist/node_modules/archiver/node_modules/string_decoder/lib/string_decoder.js +0 -296
  49. package/dist/node_modules/archiver/node_modules/string_decoder/package.json +0 -34
  50. package/dist/node_modules/archiver/node_modules/tar-stream/extract.js +0 -257
  51. package/dist/node_modules/archiver/node_modules/tar-stream/headers.js +0 -295
  52. package/dist/node_modules/archiver/node_modules/tar-stream/index.js +0 -2
  53. package/dist/node_modules/archiver/node_modules/tar-stream/pack.js +0 -255
  54. package/dist/node_modules/archiver/node_modules/tar-stream/package.json +0 -58
  55. package/dist/node_modules/archiver/node_modules/tar-stream/sandbox.js +0 -11
  56. package/dist/node_modules/archiver/package.json +0 -1
  57. package/dist/node_modules/decompress/index.js +0 -16
  58. package/dist/node_modules/decompress/license +0 -9
  59. package/dist/node_modules/decompress/node_modules/make-dir/index.js +0 -85
  60. package/dist/node_modules/decompress/node_modules/make-dir/license +0 -9
  61. package/dist/node_modules/decompress/node_modules/make-dir/node_modules/pify/index.js +0 -84
  62. package/dist/node_modules/decompress/node_modules/make-dir/node_modules/pify/license +0 -9
  63. package/dist/node_modules/decompress/node_modules/make-dir/node_modules/pify/package.json +0 -51
  64. package/dist/node_modules/decompress/node_modules/make-dir/package.json +0 -54
  65. package/dist/node_modules/decompress/package.json +0 -1
  66. package/dist/node_modules/mkdirp/LICENSE +0 -21
  67. package/dist/node_modules/mkdirp/bin/cmd.js +0 -68
  68. package/dist/node_modules/mkdirp/index.js +0 -1
  69. package/dist/node_modules/mkdirp/lib/find-made.js +0 -29
  70. package/dist/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
  71. package/dist/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
  72. package/dist/node_modules/mkdirp/lib/opts-arg.js +0 -23
  73. package/dist/node_modules/mkdirp/lib/path-arg.js +0 -29
  74. package/dist/node_modules/mkdirp/lib/use-native.js +0 -10
  75. package/dist/node_modules/mkdirp/package.json +0 -1
  76. package/dist/node_modules/mkdirp/readme.markdown +0 -266
  77. package/dist/node_modules/semver/LICENSE +0 -15
  78. package/dist/node_modules/semver/bin/semver.js +0 -197
  79. package/dist/node_modules/semver/classes/comparator.js +0 -141
  80. package/dist/node_modules/semver/classes/index.js +0 -5
  81. package/dist/node_modules/semver/classes/range.js +0 -539
  82. package/dist/node_modules/semver/classes/semver.js +0 -302
  83. package/dist/node_modules/semver/functions/clean.js +0 -6
  84. package/dist/node_modules/semver/functions/cmp.js +0 -52
  85. package/dist/node_modules/semver/functions/coerce.js +0 -52
  86. package/dist/node_modules/semver/functions/compare-build.js +0 -7
  87. package/dist/node_modules/semver/functions/compare-loose.js +0 -3
  88. package/dist/node_modules/semver/functions/compare.js +0 -5
  89. package/dist/node_modules/semver/functions/diff.js +0 -65
  90. package/dist/node_modules/semver/functions/eq.js +0 -3
  91. package/dist/node_modules/semver/functions/gt.js +0 -3
  92. package/dist/node_modules/semver/functions/gte.js +0 -3
  93. package/dist/node_modules/semver/functions/inc.js +0 -19
  94. package/dist/node_modules/semver/functions/lt.js +0 -3
  95. package/dist/node_modules/semver/functions/lte.js +0 -3
  96. package/dist/node_modules/semver/functions/major.js +0 -3
  97. package/dist/node_modules/semver/functions/minor.js +0 -3
  98. package/dist/node_modules/semver/functions/neq.js +0 -3
  99. package/dist/node_modules/semver/functions/parse.js +0 -16
  100. package/dist/node_modules/semver/functions/patch.js +0 -3
  101. package/dist/node_modules/semver/functions/prerelease.js +0 -6
  102. package/dist/node_modules/semver/functions/rcompare.js +0 -3
  103. package/dist/node_modules/semver/functions/rsort.js +0 -3
  104. package/dist/node_modules/semver/functions/satisfies.js +0 -10
  105. package/dist/node_modules/semver/functions/sort.js +0 -3
  106. package/dist/node_modules/semver/functions/valid.js +0 -6
  107. package/dist/node_modules/semver/index.js +0 -1
  108. package/dist/node_modules/semver/internal/constants.js +0 -35
  109. package/dist/node_modules/semver/internal/debug.js +0 -9
  110. package/dist/node_modules/semver/internal/identifiers.js +0 -23
  111. package/dist/node_modules/semver/internal/parse-options.js +0 -15
  112. package/dist/node_modules/semver/internal/re.js +0 -212
  113. package/dist/node_modules/semver/package.json +0 -1
  114. package/dist/node_modules/semver/preload.js +0 -2
  115. package/dist/node_modules/semver/range.bnf +0 -16
  116. package/dist/node_modules/semver/ranges/gtr.js +0 -4
  117. package/dist/node_modules/semver/ranges/intersects.js +0 -7
  118. package/dist/node_modules/semver/ranges/ltr.js +0 -4
  119. package/dist/node_modules/semver/ranges/max-satisfying.js +0 -25
  120. package/dist/node_modules/semver/ranges/min-satisfying.js +0 -24
  121. package/dist/node_modules/semver/ranges/min-version.js +0 -61
  122. package/dist/node_modules/semver/ranges/outside.js +0 -80
  123. package/dist/node_modules/semver/ranges/simplify.js +0 -47
  124. package/dist/node_modules/semver/ranges/subset.js +0 -247
  125. package/dist/node_modules/semver/ranges/to-comparators.js +0 -8
  126. package/dist/node_modules/semver/ranges/valid.js +0 -11
  127. package/dist/server/app-migrator.d.ts +0 -25
  128. package/dist/server/app-migrator.js +0 -70
  129. package/dist/server/commands/restore-command.d.ts +0 -10
  130. package/dist/server/commands/restore-command.js +0 -77
  131. package/dist/server/dumper.d.ts +0 -79
  132. package/dist/server/dumper.js +0 -420
  133. package/dist/server/errors/restore-check-error.d.ts +0 -11
  134. package/dist/server/errors/restore-check-error.js +0 -41
  135. package/dist/server/field-value-writer.d.ts +0 -17
  136. package/dist/server/field-value-writer.js +0 -110
  137. package/dist/server/index.d.ts +0 -9
  138. package/dist/server/index.js +0 -42
  139. package/dist/server/locale/zh-CN.d.ts +0 -17
  140. package/dist/server/locale/zh-CN.js +0 -39
  141. package/dist/server/migrations/20240618103927-update-snippet-name.d.ts +0 -14
  142. package/dist/server/migrations/20240618103927-update-snippet-name.js +0 -60
  143. package/dist/server/resourcers/backup-files.d.ts +0 -33
  144. package/dist/server/resourcers/backup-files.js +0 -202
  145. package/dist/server/restorer.d.ts +0 -43
  146. package/dist/server/restorer.js +0 -363
  147. package/dist/server/server.d.ts +0 -13
  148. package/dist/server/server.js +0 -54
  149. package/dist/server/utils.d.ts +0 -13
  150. package/dist/server/utils.js +0 -87
  151. package/dist/swagger/index.d.ts +0 -400
  152. package/dist/swagger/index.js +0 -456
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "应用的备份与还原",
5
5
  "description": "Backup and restore applications for scenarios such as application replication, migration, and upgrades.",
6
6
  "description.zh-CN": "备份和还原应用,可用于应用的复制、迁移、升级等场景。",
7
- "version": "1.2.12-alpha",
7
+ "version": "1.3.0-alpha.20240710084543",
8
8
  "license": "AGPL-3.0",
9
9
  "main": "./dist/server/index.js",
10
10
  "homepage": "https://docs.nocobase.com/handbook/backup-restore",
@@ -41,5 +41,5 @@
41
41
  "keywords": [
42
42
  "System management"
43
43
  ],
44
- "gitHead": "553231d4882496cb7f1f17fa7541899ce82a27ab"
44
+ "gitHead": "07a8b596fc64a9779a194cb9b0dc2ca7570ed9d4"
45
45
  }
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import React from 'react';
10
- export declare const BackupAndRestoreList: () => React.JSX.Element;
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import { FC } from 'react';
10
- export declare const DuplicatorProvider: FC;
@@ -1,13 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- import { Plugin } from '@nocobase/client';
10
- export declare class PluginBackupRestoreClient extends Plugin {
11
- load(): Promise<void>;
12
- }
13
- export default PluginBackupRestoreClient;
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- (function(d,i){typeof exports=="object"&&typeof module!="undefined"?i(exports,require("@nocobase/client"),require("react/jsx-runtime"),require("@ant-design/icons"),require("@formily/antd-v5"),require("antd"),require("react"),require("react-i18next")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","react/jsx-runtime","@ant-design/icons","@formily/antd-v5","antd","react","react-i18next"],i):(d=typeof globalThis!="undefined"?globalThis:d||self,i(d["@nocobase/plugin-backup-restore"]={},d["@nocobase/client"],d.jsxRuntime,d["@ant-design/icons"],d["@formily/antd-v5"],d.antd,d.react,d["react-i18next"]))})(this,function(d,i,e,x,q,h,g,E){"use strict";var Z=Object.defineProperty,R=Object.defineProperties;var ee=Object.getOwnPropertyDescriptors;var z=Object.getOwnPropertySymbols;var te=Object.prototype.hasOwnProperty,oe=Object.prototype.propertyIsEnumerable;var W=(d,i,e)=>i in d?Z(d,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):d[i]=e,L=(d,i)=>{for(var e in i||(i={}))te.call(i,e)&&W(d,e,i[e]);if(z)for(var e of z(i))oe.call(i,e)&&W(d,e,i[e]);return d},D=(d,i)=>R(d,ee(i));var S=(d,i,e)=>new Promise((x,q)=>{var h=m=>{try{E(e.next(m))}catch(M){q(M)}},g=m=>{try{E(e.throw(m))}catch(M){q(M)}},E=m=>m.done?x(m.value):Promise.resolve(m.value).then(h,g);E((e=e.apply(d,i)).next())});var m=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{},M={exports:{}};(function(a,k){(function(p,l){l()})(m,function(){function p(t,o){return typeof o=="undefined"?o={autoBom:!1}:typeof o!="object"&&(console.warn("Deprecated: Expected third argument to be a object"),o={autoBom:!o}),o.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(t.type)?new Blob(["\uFEFF",t],{type:t.type}):t}function l(t,o,b){var n=new XMLHttpRequest;n.open("GET",t),n.responseType="blob",n.onload=function(){v(n.response,o,b)},n.onerror=function(){console.error("could not download file")},n.send()}function c(t){var o=new XMLHttpRequest;o.open("HEAD",t,!1);try{o.send()}catch(b){}return 200<=o.status&&299>=o.status}function f(t){try{t.dispatchEvent(new MouseEvent("click"))}catch(b){var o=document.createEvent("MouseEvents");o.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),t.dispatchEvent(o)}}var u=typeof window=="object"&&window.window===window?window:typeof self=="object"&&self.self===self?self:typeof m=="object"&&m.global===m?m:void 0,w=u.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),v=u.saveAs||(typeof window!="object"||window!==u?function(){}:"download"in HTMLAnchorElement.prototype&&!w?function(t,o,b){var n=u.URL||u.webkitURL,r=document.createElement("a");o=o||t.name||"download",r.download=o,r.rel="noopener",typeof t=="string"?(r.href=t,r.origin===location.origin?f(r):c(r.href)?l(t,o,b):f(r,r.target="_blank")):(r.href=n.createObjectURL(t),setTimeout(function(){n.revokeObjectURL(r.href)},4e4),setTimeout(function(){f(r)},0))}:"msSaveOrOpenBlob"in navigator?function(t,o,b){if(o=o||t.name||"download",typeof t!="string")navigator.msSaveOrOpenBlob(p(t,b),o);else if(c(t))l(t,o,b);else{var n=document.createElement("a");n.href=t,n.target="_blank",setTimeout(function(){f(n)})}}:function(t,o,b,n){if(n=n||open("","_blank"),n&&(n.document.title=n.document.body.innerText="downloading..."),typeof t=="string")return l(t,o,b);var r=t.type==="application/octet-stream",s=/constructor/i.test(u.HTMLElement)||u.safari,y=/CriOS\/[\d]+/.test(navigator.userAgent);if((y||r&&s||w)&&typeof FileReader!="undefined"){var C=new FileReader;C.onloadend=function(){var T=C.result;T=y?T:T.replace(/^data:[^;]*;/,"data:attachment/file;"),n?n.location.href=T:location=T,n=null},C.readAsDataURL(t)}else{var B=u.URL||u.webkitURL,A=B.createObjectURL(t);n?n.location=A:location.href=A,n=null,setTimeout(function(){B.revokeObjectURL(A)},4e4)}});u.saveAs=v.saveAs=v,a.exports=v})})(M);var K=M.exports;const I="backup-restore";function P(){return E.useTranslation(I,{nsMode:"fallback"})}const{Dragger:X}=h.Upload;function J(a){const k=l=>{var c;(c=a.onChange)==null||c.call(a,l)},p=i.useAPIClient();return D(L({},a),{customRequest({action:l,data:c,file:f,filename:u,headers:w,onError:v,onProgress:t,onSuccess:o,withCredentials:b}){const n=new FormData;return c&&Object.keys(c).forEach(r=>{n.append(r,c[r])}),n.append(u,f),p.axios.post(l,n,{withCredentials:b,headers:w,onUploadProgress:({total:r,loaded:s})=>{t({percent:Math.round(s/r*100).toFixed(2)},f)}}).then(({data:r})=>{o(r,f)}).catch(v).finally(()=>{}),{abort(){console.log("upload progress is aborted.")}}},onChange:k})}const U=a=>{const{collectionsData:k}=a,{t:p}=P(),[l,c]=g.useState(!1),[f,u]=g.useState(k);g.useEffect(()=>{u(k)},[k]);const w=i.useAPIClient(),v=i.useCompile(),t=g.useMemo(()=>w.resource("backupFiles"),[w]),o=()=>S(this,null,function*(){if(a.isBackup){const y=yield t.dumpableCollections();u(y==null?void 0:y.data),c(!0)}c(!0)}),b=()=>{c(!1)},n=()=>{c(!1)},r=[{title:p("Collection"),dataIndex:"collection",key:"collection",render:(y,C)=>{const B=v(C.title);return C.name===B?B:e.jsxs("div",{children:[C.name," ",e.jsxs("span",{style:{color:"rgba(0, 0, 0, 0.3)",fontSize:"0.9em"},children:["(",v(C.title),")"]})]})}},{title:p("Origin"),dataIndex:"origin",key:"origin",width:"50%"}],s=Object.keys(f||{}).map(y=>({key:y,label:p(`${y}.title`),children:e.jsxs(e.Fragment,{children:[e.jsx(h.Alert,{style:{marginBottom:16},message:p(`${y}.description`)}),e.jsx(h.Table,{pagination:{pageSize:100},bordered:!0,size:"small",dataSource:f[y],columns:r,scroll:{y:400}})]})}));return e.jsxs(e.Fragment,{children:[e.jsx("a",{onClick:o,children:p("Learn more")}),e.jsx(h.Modal,{title:p("Backup instructions"),width:"80vw",open:l,footer:null,onOk:b,onCancel:n,children:e.jsx(h.Tabs,{defaultActiveKey:"required",items:s})})]})},G=({ButtonComponent:a=h.Button,title:k,upload:p=!1,fileData:l})=>{const{t:c}=P(),[f,u]=g.useState(["required"]),[w,v]=g.useState(!1),[t,o]=g.useState(null),[b,n]=g.useState(!1),r=i.useAPIClient(),s=g.useMemo(()=>r.resource("backupFiles"),[r]),[y,C]=g.useState([]);g.useEffect(()=>{C(Object.keys((t==null?void 0:t.dumpableCollectionsGroupByGroup)||[]).map(O=>({value:O,label:c(`${O}.title`),disabled:["required","skipped"].includes(O)})))},[t]);const B=()=>S(this,null,function*(){var O,N,$;if(v(!0),!p){n(!0);const{data:F}=yield s.get({filterByTk:l.name});C(Object.keys(((N=(O=F==null?void 0:F.data)==null?void 0:O.meta)==null?void 0:N.dumpableCollectionsGroupByGroup)||[]).map(j=>({value:j,label:c(`${j}.title`),disabled:["required","skipped"].includes(j)}))),o(($=F==null?void 0:F.data)==null?void 0:$.meta),n(!1)}}),A=()=>{s.restore({values:{dataTypes:f,filterByTk:l==null?void 0:l.name,key:t==null?void 0:t.key}}),v(!1)},T=()=>{v(!1),o(null),u(["required"])};return e.jsxs(e.Fragment,{children:[e.jsx(a,{onClick:B,children:k}),e.jsx(h.Modal,{title:c("Restore"),width:800,footer:p&&!t?null:void 0,open:w,onOk:A,onCancel:T,children:e.jsxs(h.Spin,{spinning:b,children:[p&&!t&&e.jsx(V,{setRestoreData:o}),(!p||t)&&[e.jsxs("strong",{style:{fontWeight:600,display:"block",margin:"16px 0 8px"},children:[c("Select the data to be restored")," (",e.jsx(U,{collectionsData:t==null?void 0:t.dumpableCollectionsGroupByGroup}),"):"]},"info"),e.jsx("div",{style:{lineHeight:2,marginBottom:8},children:e.jsx(q.FormItem,{children:e.jsx(i.Checkbox.Group,{options:y,style:{flexDirection:"column"},value:f,onChange:O=>u(O)})})},"dataType")]]})})]})},Q=({ButtonComponent:a=h.Button,refresh:k})=>{const{t:p}=P(),[l,c]=g.useState(!1),[f,u]=g.useState(["required"]),w=i.useAPIClient(),[v,t]=g.useState([]),o=()=>S(this,null,function*(){const{data:r}=yield w.resource("backupFiles").dumpableCollections();t(Object.keys(r||[]).map(s=>({value:s,label:p(`${s}.title`),disabled:["required","skipped"].includes(s)}))),c(!0)}),b=()=>{w.request({url:"backupFiles:create",method:"post",data:{dataTypes:f}}),c(!1),u(["required"]),setTimeout(()=>{k()},500)},n=()=>{c(!1),u(["required"])};return e.jsxs(e.Fragment,{children:[e.jsx(a,{icon:e.jsx(x.PlusOutlined,{}),type:"primary",onClick:o,children:p("New backup")}),e.jsxs(h.Modal,{title:p("New backup"),width:800,open:l,onOk:b,onCancel:n,children:[e.jsxs("strong",{style:{fontWeight:600,display:"block",margin:"16px 0 8px"},children:[p("Select the data to be backed up")," (",e.jsx(U,{isBackup:!0}),"):"]}),e.jsx("div",{style:{lineHeight:2,marginBottom:8},children:e.jsx(i.Checkbox.Group,{options:v,style:{flexDirection:"column"},onChange:r=>u(r),value:f})})]})]})},V=a=>{const{t:k}=P(),p={multiple:!1,action:"/backupFiles:upload",onChange(l){var f,u,w;l.fileList.length>1&&l.fileList.splice(0,l.fileList.length-1);const{status:c}=l.file;c==="done"?(h.message.success(`${l.file.name} `+k("file uploaded successfully")),a.setRestoreData(D(L({},(u=(f=l.file.response)==null?void 0:f.data)==null?void 0:u.meta),{key:(w=l.file.response)==null?void 0:w.data.key}))):c==="error"&&h.message.error(`${l.file.name} `+k("file upload failed"))},onDrop(l){console.log("Dropped files",l.dataTransfer.files)}};return e.jsxs(X,D(L({},J(p)),{children:[e.jsx("p",{className:"ant-upload-drag-icon",children:e.jsx(x.InboxOutlined,{})}),e.jsxs("p",{className:"ant-upload-text",children:[" ",k("Click or drag file to this area to upload")]})]}))},Y=()=>{const{t:a}=P(),k=i.useAPIClient(),[p,l]=g.useState([]),[c,f]=g.useState(!1),[u,w]=g.useState(!1),{modal:v}=h.App.useApp(),t=g.useMemo(()=>k.resource("backupFiles"),[k]);g.useEffect(()=>{o()},[]);const o=()=>S(this,null,function*(){f(!0);const{data:s}=yield t.list();l(s.data),f(!1)}),b=s=>S(this,null,function*(){w(s.name);const y=yield k.request({url:"backupFiles:download",method:"get",params:{filterByTk:s.name},responseType:"blob"});w(!1);const C=new Blob([y.data]);K.saveAs(C,s.name)}),n=()=>S(this,null,function*(){yield o()}),r=s=>{v.confirm({title:a("Delete record",{ns:"client"}),content:a("Are you sure you want to delete it?",{ns:"client"}),onOk:()=>S(this,null,function*(){yield t.destroy({filterByTk:s.name}),yield o(),h.message.success(a("Deleted successfully"))})})};return e.jsx("div",{children:e.jsxs(h.Card,{bordered:!1,children:[e.jsxs(h.Space,{style:{float:"right",marginBottom:16},children:[e.jsx(h.Button,{onClick:n,icon:e.jsx(x.ReloadOutlined,{}),children:a("Refresh")}),e.jsx(G,{upload:!0,title:e.jsxs(e.Fragment,{children:[e.jsx(x.UploadOutlined,{})," ",a("Restore backup from local")]})}),e.jsx(Q,{refresh:n})]}),e.jsx(h.Table,{dataSource:p,loading:c,columns:[{title:a("Backup file"),dataIndex:"name",width:400,onCell:s=>s.inProgress?{colSpan:4}:{},render:(s,y)=>y.inProgress?e.jsxs("div",{style:{color:"rgba(0, 0, 0, 0.88)"},children:[s,"(",a("Backing up"),"...)"]}):e.jsx("div",{children:s})},{title:a("File size"),dataIndex:"fileSize",onCell:s=>s.inProgress?{colSpan:0}:{}},{title:a("Created at",{ns:"client"}),dataIndex:"createdAt",onCell:s=>s.inProgress?{colSpan:0}:{},render:s=>e.jsx(i.DatePicker.ReadPretty,{value:s,showTime:!0})},{title:a("Actions",{ns:"client"}),dataIndex:"actions",onCell:s=>s.inProgress?{colSpan:0}:{},render:(s,y)=>e.jsxs(h.Space,{split:e.jsx(h.Divider,{type:"vertical"}),children:[e.jsx(G,{ButtonComponent:"a",title:a("Restore"),fileData:y}),e.jsx("a",{type:"link",onClick:()=>b(y),children:a("Download")}),e.jsx("a",{onClick:()=>r(y),children:a("Delete")})]})}]})]})})},_=function(a){return e.jsx(i.SchemaComponentOptions,{children:a.children})};_.displayName="DuplicatorProvider";class H extends i.Plugin{load(){return S(this,null,function*(){this.app.use(_),this.app.pluginSettingsManager.add(I,{title:this.t("Backup & Restore"),icon:"CloudServerOutlined",Component:Y,aclSnippet:"pm.backup-restore"})})}}d.PluginBackupRestoreClient=H,d.default=H,Object.defineProperties(d,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -1,12 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- export declare const NAMESPACE = "backup-restore";
10
- export declare function lang(key: string): string;
11
- export declare function generateNTemplate(key: string): string;
12
- export declare function useDuplicatorTranslation(): import("react-i18next").UseTranslationResponse<"backup-restore", undefined>;
@@ -1,23 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- module.exports = {
11
- "@ant-design/icons": "5.2.6",
12
- "@formily/antd-v5": "1.1.9",
13
- "@nocobase/client": "1.2.12-alpha",
14
- "antd": "5.12.8",
15
- "react": "18.2.0",
16
- "@nocobase/server": "1.2.12-alpha",
17
- "@nocobase/utils": "1.2.12-alpha",
18
- "@nocobase/database": "1.2.12-alpha",
19
- "dayjs": "1.11.10",
20
- "lodash": "4.17.21",
21
- "react-i18next": "11.18.6",
22
- "@nocobase/actions": "1.2.12-alpha"
23
- };
package/dist/index.d.ts DELETED
@@ -1,10 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- export * from './server';
10
- export { default } from './server';
package/dist/index.js DELETED
@@ -1,48 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __create = Object.create;
11
- var __defProp = Object.defineProperty;
12
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
13
- var __getOwnPropNames = Object.getOwnPropertyNames;
14
- var __getProtoOf = Object.getPrototypeOf;
15
- var __hasOwnProp = Object.prototype.hasOwnProperty;
16
- var __export = (target, all) => {
17
- for (var name in all)
18
- __defProp(target, name, { get: all[name], enumerable: true });
19
- };
20
- var __copyProps = (to, from, except, desc) => {
21
- if (from && typeof from === "object" || typeof from === "function") {
22
- for (let key of __getOwnPropNames(from))
23
- if (!__hasOwnProp.call(to, key) && key !== except)
24
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
25
- }
26
- return to;
27
- };
28
- var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
29
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
30
- // If the importer is in node compatibility mode or this is not an ESM
31
- // file that has been converted to a CommonJS file using a Babel-
32
- // compatible transform (i.e. "__esModule" has not been set), then set
33
- // "default" to the CommonJS "module.exports" for node compatibility.
34
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
35
- mod
36
- ));
37
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
38
- var src_exports = {};
39
- __export(src_exports, {
40
- default: () => import_server.default
41
- });
42
- module.exports = __toCommonJS(src_exports);
43
- __reExport(src_exports, require("./server"), module.exports);
44
- var import_server = __toESM(require("./server"));
45
- // Annotate the CommonJS export names for ESM import in node:
46
- 0 && (module.exports = {
47
- ...require("./server")
48
- });
@@ -1,44 +0,0 @@
1
- {
2
- "Backup file": "Backup file",
3
- "System metadata": "System metadata",
4
- "System config": "System config",
5
- "Business data": "Business data",
6
- "Backup & Restore": "Backup & Restore",
7
- "Backup": "Backup",
8
- "Restore": "Restore",
9
- "Configuration": "Configuration",
10
- "Select the data to be backed up": "Select the data to be backed up",
11
- "Select the data to be restored": "Select the data to be restored",
12
- "Click or drag file to this area to upload": "Click or drag file to this area to upload",
13
- "Learn more": "Learn more",
14
- "Start backup": "Start backup",
15
- "Start restore": "Start restore",
16
- "Backed up successfully": "Backed up successfully",
17
- "Plugin": "Plugin",
18
- "file uploaded successfully": "file uploaded successfully",
19
- "file upload failed": "file upload failed",
20
- "Download": "Download",
21
- "Restore backup from local": "Restore backup from local",
22
- "Backup instructions": "Backup instructions",
23
- "File size": "File size",
24
- "New backup": "New backup",
25
- "Origin": "Origin",
26
- "Backing up": "Backing up",
27
- "Refresh": "Refresh",
28
- "Delete": "Delete",
29
- "Deleted successfully": "Deleted successfully",
30
- "required.title": "Required data",
31
- "user.title": "User data",
32
- "log.title": "Log data",
33
- "custom.title": "Custom collection data",
34
- "skipped.title": "Skipped data",
35
- "unknown.title": "Unknown",
36
- "third-party.title": "Third-party service information",
37
- "required.description": "Required data",
38
- "user.description": "User data",
39
- "log.description": "Log data",
40
- "custom.description": "Custom collection data",
41
- "skipped.description": "Skipped data",
42
- "unknown.description": "Data without configured dump rules",
43
- "third-party.description": "Third-party service information"
44
- }
@@ -1,33 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- declare const _default: {
10
- 'System metadata': string;
11
- 'System config': string;
12
- 'Business data': string;
13
- 'Backup & Restore': string;
14
- Backup: string;
15
- Restore: string;
16
- Configuration: string;
17
- 'Select the data to be backed up': string;
18
- 'Select the data to be restored': string;
19
- 'Learn more': string;
20
- 'Start backup': string;
21
- 'Start restore': string;
22
- 'Backed up successfully': string;
23
- Plugin: string;
24
- 'file uploaded successfully': string;
25
- Download: string;
26
- 'Restore backup from local': string;
27
- 'Backup instructions': string;
28
- 'File size': string;
29
- 'New backup': string;
30
- Origin: string;
31
- 'Backing up': string;
32
- };
33
- export default _default;
@@ -1,55 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __defProp = Object.defineProperty;
11
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
- var __getOwnPropNames = Object.getOwnPropertyNames;
13
- var __hasOwnProp = Object.prototype.hasOwnProperty;
14
- var __export = (target, all) => {
15
- for (var name in all)
16
- __defProp(target, name, { get: all[name], enumerable: true });
17
- };
18
- var __copyProps = (to, from, except, desc) => {
19
- if (from && typeof from === "object" || typeof from === "function") {
20
- for (let key of __getOwnPropNames(from))
21
- if (!__hasOwnProp.call(to, key) && key !== except)
22
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
- }
24
- return to;
25
- };
26
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
- var ja_JP_exports = {};
28
- __export(ja_JP_exports, {
29
- default: () => ja_JP_default
30
- });
31
- module.exports = __toCommonJS(ja_JP_exports);
32
- var ja_JP_default = {
33
- "System metadata": "\u30B7\u30B9\u30C6\u30E0\u30E1\u30BF\u30C7\u30FC\u30BF",
34
- "System config": "\u30B7\u30B9\u30C6\u30E0\u69CB\u6210",
35
- "Business data": "\u30D3\u30B8\u30CD\u30B9\u30C7\u30FC\u30BF",
36
- "Backup & Restore": "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3068\u30EA\u30B9\u30C8\u30A2",
37
- Backup: "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7",
38
- Restore: "\u30EA\u30B9\u30C8\u30A2",
39
- Configuration: "\u69CB\u6210",
40
- "Select the data to be backed up": "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u3055\u308C\u305F\u30C7\u30FC\u30BF\u306E\u9078\u629E",
41
- "Select the data to be restored": "\u30EA\u30B9\u30C8\u30A2\u3055\u308C\u305F\u30C7\u30FC\u30BF\u306E\u9078\u629E",
42
- "Learn more": "\u8A73\u7D30",
43
- "Start backup": "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u306E\u958B\u59CB",
44
- "Start restore": "\u30EA\u30B9\u30C8\u30A2\u3092\u958B\u59CB",
45
- "Backed up successfully": "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u6210\u529F",
46
- Plugin: "\u30D7\u30E9\u30B0\u30A4\u30F3",
47
- "file uploaded successfully": "\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u306B\u6210\u529F\u3057\u307E\u3057\u305F",
48
- Download: "\u30C0\u30A6\u30F3\u30ED\u30FC\u30C9",
49
- "Restore backup from local": "\u30ED\u30FC\u30AB\u30EB\u304B\u3089\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u306B\u8FD4\u4FE1",
50
- "Backup instructions": "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u306E\u8AAC\u660E",
51
- "File size": "\u30D5\u30A1\u30A4\u30EB\u30B5\u30A4\u30BA",
52
- "New backup": "\u65B0\u898F\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7",
53
- "Origin": "\u30BD\u30FC\u30B9",
54
- "Backing up": "\u30D0\u30C3\u30AF\u30A2\u30C3\u30D7\u4E2D"
55
- };
@@ -1,50 +0,0 @@
1
- {
2
- "Backup file": "백업 파일",
3
- "Select Import data": "가져올 데이터 선택",
4
- "Select Import Plugins": "가져올 플러그인 선택",
5
- "Select User Collections": "사용자 데이터 선택",
6
- "Basic Data": "기본 데이터",
7
- "Optional Data": "선택 데이터",
8
- "User Data": "사용자 데이터",
9
- "System metadata": "시스템 메타데이터",
10
- "System config": "시스템 설정",
11
- "Business data": "비즈니스 데이터",
12
- "Backup & Restore": "백업 및 복원",
13
- "Backup": "백업",
14
- "Restore": "복원",
15
- "Configuration": "구성",
16
- "Select the data to be backed up": "백업할 데이터 선택",
17
- "Select the data to be restored": "복원할 데이터 선택",
18
- "Click or drag file to this area to upload": "여기를 클릭하거나 파일을 끌어다 이곳에 업로드하세요",
19
- "Learn more": "더 알아보기",
20
- "Start backup": "백업 시작",
21
- "Start restore": "복원 시작",
22
- "Backed up successfully": "성공적으로 백업됨",
23
- "Deleted successfully": "성공적으로 삭제됨",
24
- "Plugin": "플러그인",
25
- "file uploaded successfully": "파일 업로드 성공",
26
- "file upload failed": "파일 업로드 실패",
27
- "Download": "다운로드",
28
- "Restore backup from local": "로컬에서 백업 복원",
29
- "Backup instructions": "백업 지침",
30
- "File size": "파일 크기",
31
- "New backup": "새로운 백업",
32
- "Origin": "원본",
33
- "Backing up": "백업 중",
34
- "Refresh": "새로 고침",
35
- "Delete": "삭제",
36
- "required.title": "필수 데이터",
37
- "user.title": "사용자 데이터",
38
- "log.title": "로그 데이터",
39
- "custom.title": "사용자 정의 데이터",
40
- "skipped.title": "건너뛴 데이터",
41
- "unknown.title": "알 수 없는 데이터",
42
- "third-party.title": "제3자 서비스 정보",
43
- "required.description": "필수 데이터",
44
- "user.description": "사용자 데이터",
45
- "log.description": "로그 데이터",
46
- "custom.description": "사용자 정의 데이터",
47
- "skipped.description": "건너뛴 데이터",
48
- "unknown.description": "백업 규칙이 설정되지 않은 데이터",
49
- "third-party.description": "제3자 서비스 정보"
50
- }
@@ -1,34 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
- declare const locale: {
10
- 'System metadata': string;
11
- 'System config': string;
12
- 'Business data': string;
13
- 'Backup & Restore': string;
14
- Backup: string;
15
- Restore: string;
16
- Configuration: string;
17
- 'Select the data to be backed up': string;
18
- 'Select the data to be restored': string;
19
- 'Learn more': string;
20
- 'Start restore': string;
21
- 'Start backup': string;
22
- 'Backed up successfully': string;
23
- Plugin: string;
24
- 'file uploaded successfully': string;
25
- 'file upload failed': string;
26
- Download: string;
27
- 'Restore backup from local': string;
28
- 'Backup instructions': string;
29
- 'File size': string;
30
- 'New backup': string;
31
- Origin: string;
32
- 'Backing up': string;
33
- };
34
- export default locale;
@@ -1,57 +0,0 @@
1
- /**
2
- * This file is part of the NocoBase (R) project.
3
- * Copyright (c) 2020-2024 NocoBase Co., Ltd.
4
- * Authors: NocoBase Team.
5
- *
6
- * This project is dual-licensed under AGPL-3.0 and NocoBase Commercial License.
7
- * For more information, please refer to: https://www.nocobase.com/agreement.
8
- */
9
-
10
- var __defProp = Object.defineProperty;
11
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
12
- var __getOwnPropNames = Object.getOwnPropertyNames;
13
- var __hasOwnProp = Object.prototype.hasOwnProperty;
14
- var __export = (target, all) => {
15
- for (var name in all)
16
- __defProp(target, name, { get: all[name], enumerable: true });
17
- };
18
- var __copyProps = (to, from, except, desc) => {
19
- if (from && typeof from === "object" || typeof from === "function") {
20
- for (let key of __getOwnPropNames(from))
21
- if (!__hasOwnProp.call(to, key) && key !== except)
22
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
23
- }
24
- return to;
25
- };
26
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
27
- var pt_BR_exports = {};
28
- __export(pt_BR_exports, {
29
- default: () => pt_BR_default
30
- });
31
- module.exports = __toCommonJS(pt_BR_exports);
32
- const locale = {
33
- "System metadata": "Metadados do Sistema",
34
- "System config": "configura\xE7\xE3o do sistema",
35
- "Business data": "Dados comerciais",
36
- "Backup & Restore": "C\xF3pia de Seguran\xE7a e Restaura\xE7\xE3o",
37
- Backup: "c\xF3pias de seguran\xE7a",
38
- Restore: "redu\xE7\xE3o",
39
- Configuration: "atribui\xE7\xE3o",
40
- "Select the data to be backed up": "Seleccionar os dados de c\xF3pia de seguran\xE7a",
41
- "Select the data to be restored": "Seleccionar os dados restaurados",
42
- "Learn more": "Saiba mais",
43
- "Start restore": "Iniciar a Restaura\xE7\xE3o",
44
- "Start backup": "Iniciar a c\xF3pia de seguran\xE7a",
45
- "Backed up successfully": "C\xF3pia de seguran\xE7a bem sucedida",
46
- "Plugin": "Plugins",
47
- "file uploaded successfully": "O ficheiro foi enviado com sucesso",
48
- "file upload failed": "O envio do ficheiro falhou",
49
- "Download": "download",
50
- "Restore backup from local": "Restaurar a c\xF3pia de seguran\xE7a localmente",
51
- "Backup instructions": "Instru\xE7\xF5es de c\xF3pia de seguran\xE7a",
52
- "File size": "tamanho do ficheiro",
53
- "New backup": "Nova C\xF3pia de Seguran\xE7a",
54
- "Origin": "fonte",
55
- "Backing up": "C\xF3pia de seguran\xE7a em curso"
56
- };
57
- var pt_BR_default = locale;
@@ -1,50 +0,0 @@
1
- {
2
- "Backup file": "备份文件",
3
- "Select Import data": "请选择导入数据",
4
- "Select Import Plugins": "请选择导入插件",
5
- "Select User Collections": "请选择用户数据",
6
- "Basic Data": "基础数据",
7
- "Optional Data": "可选数据",
8
- "User Data": "用户数据",
9
- "System metadata": "系统元数据",
10
- "System config": "系统配置",
11
- "Business data": "业务数据",
12
- "Backup & Restore": "备份和还原",
13
- "Backup": "备份",
14
- "Restore": "还原",
15
- "Configuration": "配置",
16
- "Select the data to be backed up": "选择备份的数据",
17
- "Select the data to be restored": "选择还原的数据",
18
- "Click or drag file to this area to upload": "点击或拖拽文件至此区域即可上传",
19
- "Learn more": "了解更多",
20
- "Start backup": "开始备份",
21
- "Start restore": "开始还原",
22
- "Backed up successfully": "备份成功",
23
- "Deleted successfully": "删除成功",
24
- "Plugin": "插件",
25
- "file uploaded successfully": "文件上传成功",
26
- "file upload failed": "文件上传失败",
27
- "Download": "下载",
28
- "Restore backup from local": "从本地恢复备份",
29
- "Backup instructions": "备份说明",
30
- "File size":"文件大小",
31
- "New backup":"新建备份",
32
- "Origin":"来源",
33
- "Backing up":"备份中",
34
- "Refresh": "刷新",
35
- "Delete": "删除",
36
- "required.title": "必备数据",
37
- "user.title": "用户数据",
38
- "log.title": "日志数据",
39
- "custom.title": "自建表数据",
40
- "skipped.title": "跳过的数据",
41
- "unknown.title": "未知数据",
42
- "third-party.title": "第三方服务信息",
43
- "required.description": "必备数据",
44
- "user.description": "用户数据",
45
- "log.description": "日志数据",
46
- "custom.description": "自建表数据",
47
- "skipped.description": "跳过的数据",
48
- "unknown.description": "没有配置备份规则的数据",
49
- "third-party.description": "第三方服务信息"
50
- }
@@ -1,60 +0,0 @@
1
- export class Sorter<T> {
2
-
3
- /**
4
- * An array of the topologically sorted nodes. This list is renewed upon each call to topo.add().
5
- */
6
- nodes: T[];
7
-
8
- /**
9
- * Adds a node or list of nodes to be added and topologically sorted
10
- *
11
- * @param nodes - A mixed value or array of mixed values to be added as nodes to the topologically sorted list.
12
- * @param options - Optional sorting information about the nodes.
13
- *
14
- * @returns Returns an array of the topologically sorted nodes.
15
- */
16
- add(nodes: T | T[], options?: Options): T[];
17
-
18
- /**
19
- * Merges another Sorter object into the current object.
20
- *
21
- * @param others - The other object or array of objects to be merged into the current one.
22
- *
23
- * @returns Returns an array of the topologically sorted nodes.
24
- */
25
- merge(others: Sorter<T> | Sorter<T>[]): T[];
26
-
27
- /**
28
- * Sorts the nodes array (only required if the manual option is used when adding items)
29
- */
30
- sort(): T[];
31
- }
32
-
33
-
34
- export interface Options {
35
-
36
- /**
37
- * The sorting group the added items belong to
38
- */
39
- readonly group?: string;
40
-
41
- /**
42
- * The group or groups the added items must come before
43
- */
44
- readonly before?: string | string[];
45
-
46
- /**
47
- * The group or groups the added items must come after
48
- */
49
- readonly after?: string | string[];
50
-
51
- /**
52
- * A number used to sort items with equal before/after requirements
53
- */
54
- readonly sort?: number;
55
-
56
- /**
57
- * If true, the array is not sorted automatically until sort() is called
58
- */
59
- readonly manual?: boolean;
60
- }
@@ -1 +0,0 @@
1
- (function(){"use strict";var e={545:function(e,t,r){const n=r(718);const o=r(578);const s=r(445);const i=r(891);const f={};e.exports=function(e,t,r={}){n(e&&typeof e==="object","Invalid defaults value: must be an object");n(!t||t===true||typeof t==="object","Invalid source value: must be true, falsy or an object");n(typeof r==="object","Invalid options: must be an object");if(!t){return null}if(r.shallow){return f.applyToDefaultsWithShallow(e,t,r)}const i=o(e);if(t===true){return i}const c=r.nullOverride!==undefined?r.nullOverride:false;return s(i,t,{nullOverride:c,mergeArrays:false})};f.applyToDefaultsWithShallow=function(e,t,r){const c=r.shallow;n(Array.isArray(c),"Invalid keys");const a=new Map;const u=t===true?null:new Set;for(let r of c){r=Array.isArray(r)?r:r.split(".");const n=i(e,r);if(n&&typeof n==="object"){a.set(n,u&&i(t,r)||n)}else if(u){u.add(r)}}const l=o(e,{},a);if(!u){return l}for(const e of u){f.reachCopy(l,t,e)}const p=r.nullOverride!==undefined?r.nullOverride:false;return s(l,t,{nullOverride:p,mergeArrays:false})};f.reachCopy=function(e,t,r){for(const e of r){if(!(e in t)){return}const r=t[e];if(typeof r!=="object"||r===null){return}t=r}const n=t;let o=e;for(let e=0;e<r.length-1;++e){const t=r[e];if(typeof o[t]!=="object"){o[t]={}}o=o[t]}o[r[r.length-1]]=n}},718:function(e,t,r){const n=r(542);const o=r(577);const s={};const i=e.exports=function(e,...t){if(e){return}if(t.length===1&&t[0]instanceof Error){throw t[0]}const r=t.filter((e=>e!=="")).map((e=>typeof e==="string"?e:e instanceof Error?e.message:o(e)));throw new n(r.join(" "),i)}},542:function(e){const t={};e.exports=class AssertError extends Error{name="AssertError";constructor(e,t){super(e||"Unknown error");if(typeof Error.captureStackTrace==="function"){Error.captureStackTrace(this,t)}}}},999:function(e){const t={};e.exports=t.Bench=class{constructor(){this.ts=0;this.reset()}reset(){this.ts=t.Bench.now()}elapsed(){return t.Bench.now()-this.ts}static now(){const e=process.hrtime();return e[0]*1e3+e[1]/1e6}}},820:function(e,t,r){const n=r(887);const o={};e.exports=function(){return new Promise(n)}},578:function(e,t,r){const n=r(891);const o=r(657);const s=r(417);const i={needsProtoHack:new Set([o.set,o.map,o.weakSet,o.weakMap])};e.exports=i.clone=function(e,t={},r=null){if(typeof e!=="object"||e===null){return e}let n=i.clone;let f=r;if(t.shallow){if(t.shallow!==true){return i.cloneWithShallow(e,t)}n=e=>e}else if(f){const t=f.get(e);if(t){return t}}else{f=new Map}const c=o.getInternalProto(e);switch(c){case o.buffer:return Buffer?.from(e);case o.date:return new Date(e.getTime());case o.regex:case o.url:return new c.constructor(e)}const a=i.base(e,c,t);if(a===e){return e}if(f){f.set(e,a)}if(c===o.set){for(const r of e){a.add(n(r,t,f))}}else if(c===o.map){for(const[r,o]of e){a.set(r,n(o,t,f))}}const u=s.keys(e,t);for(const r of u){if(r==="__proto__"){continue}if(c===o.array&&r==="length"){a.length=e.length;continue}const s=Object.getOwnPropertyDescriptor(e,r);if(s){if(s.get||s.set){Object.defineProperty(a,r,s)}else if(s.enumerable){a[r]=n(e[r],t,f)}else{Object.defineProperty(a,r,{enumerable:false,writable:true,configurable:true,value:n(e[r],t,f)})}}else{Object.defineProperty(a,r,{enumerable:true,writable:true,configurable:true,value:n(e[r],t,f)})}}return a};i.cloneWithShallow=function(e,t){const r=t.shallow;t=Object.assign({},t);t.shallow=false;const o=new Map;for(const t of r){const r=n(e,t);if(typeof r==="object"||typeof r==="function"){o.set(r,r)}}return i.clone(e,t,o)};i.base=function(e,t,r){if(r.prototype===false){if(i.needsProtoHack.has(t)){return new t.constructor}return t===o.array?[]:{}}const n=Object.getPrototypeOf(e);if(n&&n.isImmutable){return e}if(t===o.array){const e=[];if(n!==t){Object.setPrototypeOf(e,n)}return e}if(i.needsProtoHack.has(t)){const e=new n.constructor;if(n!==t){Object.setPrototypeOf(e,n)}return e}return Object.create(n)}},157:function(e,t,r){const n=r(718);const o=r(801);const s=r(965);const i=r(417);const f={};e.exports=function(e,t,r={}){if(typeof t!=="object"){t=[t]}n(!Array.isArray(t)||t.length,"Values array cannot be empty");if(typeof e==="string"){return f.string(e,t,r)}if(Array.isArray(e)){return f.array(e,t,r)}n(typeof e==="object","Reference must be string or an object");return f.object(e,t,r)};f.array=function(e,t,r){if(!Array.isArray(t)){t=[t]}if(!e.length){return false}if(r.only&&r.once&&e.length!==t.length){return false}let n;const o=new Map;for(const e of t){if(!r.deep||!e||typeof e!=="object"){const t=o.get(e);if(t){++t.allowed}else{o.set(e,{allowed:1,hits:0})}}else{n=n??f.compare(r);let t=false;for(const[r,s]of o.entries()){if(n(r,e)){++s.allowed;t=true;break}}if(!t){o.set(e,{allowed:1,hits:0})}}}let s=0;for(const t of e){let e;if(!r.deep||!t||typeof t!=="object"){e=o.get(t)}else{n=n??f.compare(r);for(const[r,s]of o.entries()){if(n(r,t)){e=s;break}}}if(e){++e.hits;++s;if(r.once&&e.hits>e.allowed){return false}}}if(r.only&&s!==e.length){return false}for(const e of o.values()){if(e.hits===e.allowed){continue}if(e.hits<e.allowed&&!r.part){return false}}return!!s};f.object=function(e,t,r){n(r.once===undefined,"Cannot use option once with object");const o=i.keys(e,r);if(!o.length){return false}if(Array.isArray(t)){return f.array(o,t,r)}const s=Object.getOwnPropertySymbols(t).filter((e=>t.propertyIsEnumerable(e)));const c=[...Object.keys(t),...s];const a=f.compare(r);const u=new Set(c);for(const n of o){if(!u.has(n)){if(r.only){return false}continue}if(!a(t[n],e[n])){return false}u.delete(n)}if(u.size){return r.part?u.size<c.length:false}return true};f.string=function(e,t,r){if(e===""){return t.length===1&&t[0]===""||!r.once&&!t.some((e=>e!==""))}const o=new Map;const i=[];for(const e of t){n(typeof e==="string","Cannot compare string reference to non-string value");if(e){const t=o.get(e);if(t){++t.allowed}else{o.set(e,{allowed:1,hits:0});i.push(s(e))}}else if(r.once||r.only){return false}}if(!i.length){return true}const f=new RegExp(`(${i.join("|")})`,"g");const c=e.replace(f,((e,t)=>{++o.get(t).hits;return""}));if(r.only&&c){return false}let a=false;for(const e of o.values()){if(e.hits){a=true}if(e.hits===e.allowed){continue}if(e.hits<e.allowed&&!r.part){return false}if(r.once){return false}}return!!a};f.compare=function(e){if(!e.deep){return f.shallow}const t=e.only!==undefined;const r=e.part!==undefined;const n={prototype:t?e.only:r?!e.part:false,part:t?!e.only:r?e.part:false};return(e,t)=>o(e,t,n)};f.shallow=function(e,t){return e===t}},801:function(e,t,r){const n=r(657);const o={mismatched:null};e.exports=function(e,t,r){r=Object.assign({prototype:true},r);return!!o.isDeepEqual(e,t,r,[])};o.isDeepEqual=function(e,t,r,s){if(e===t){return e!==0||1/e===1/t}const i=typeof e;if(i!==typeof t){return false}if(e===null||t===null){return false}if(i==="function"){if(!r.deepFunction||e.toString()!==t.toString()){return false}}else if(i!=="object"){return e!==e&&t!==t}const f=o.getSharedType(e,t,!!r.prototype);switch(f){case n.buffer:return Buffer&&Buffer.prototype.equals.call(e,t);case n.promise:return e===t;case n.regex:case n.url:return e.toString()===t.toString();case o.mismatched:return false}for(let r=s.length-1;r>=0;--r){if(s[r].isSame(e,t)){return true}}s.push(new o.SeenEntry(e,t));try{return!!o.isDeepEqualObj(f,e,t,r,s)}finally{s.pop()}};o.getSharedType=function(e,t,r){if(r){if(Object.getPrototypeOf(e)!==Object.getPrototypeOf(t)){return o.mismatched}return n.getInternalProto(e)}const s=n.getInternalProto(e);if(s!==n.getInternalProto(t)){return o.mismatched}return s};o.valueOf=function(e){const t=e.valueOf;if(t===undefined){return e}try{return t.call(e)}catch(e){return e}};o.hasOwnEnumerableProperty=function(e,t){return Object.prototype.propertyIsEnumerable.call(e,t)};o.isSetSimpleEqual=function(e,t){for(const r of Set.prototype.values.call(e)){if(!Set.prototype.has.call(t,r)){return false}}return true};o.isDeepEqualObj=function(e,t,r,s,i){const{isDeepEqual:f,valueOf:c,hasOwnEnumerableProperty:a}=o;const{keys:u,getOwnPropertySymbols:l}=Object;if(e===n.array){if(s.part){for(const e of t){for(const t of r){if(f(e,t,s,i)){return true}}}}else{if(t.length!==r.length){return false}for(let e=0;e<t.length;++e){if(!f(t[e],r[e],s,i)){return false}}return true}}else if(e===n.set){if(t.size!==r.size){return false}if(!o.isSetSimpleEqual(t,r)){const e=new Set(Set.prototype.values.call(r));for(const r of Set.prototype.values.call(t)){if(e.delete(r)){continue}let t=false;for(const n of e){if(f(r,n,s,i)){e.delete(n);t=true;break}}if(!t){return false}}}}else if(e===n.map){if(t.size!==r.size){return false}for(const[e,n]of Map.prototype.entries.call(t)){if(n===undefined&&!Map.prototype.has.call(r,e)){return false}if(!f(n,Map.prototype.get.call(r,e),s,i)){return false}}}else if(e===n.error){if(t.name!==r.name||t.message!==r.message){return false}}const p=c(t);const y=c(r);if((t!==p||r!==y)&&!f(p,y,s,i)){return false}const h=u(t);if(!s.part&&h.length!==u(r).length&&!s.skip){return false}let d=0;for(const e of h){if(s.skip&&s.skip.includes(e)){if(r[e]===undefined){++d}continue}if(!a(r,e)){return false}if(!f(t[e],r[e],s,i)){return false}}if(!s.part&&h.length-d!==u(r).length){return false}if(s.symbols!==false){const e=l(t);const n=new Set(l(r));for(const o of e){if(!s.skip?.includes(o)){if(a(t,o)){if(!a(r,o)){return false}if(!f(t[o],r[o],s,i)){return false}}else if(a(r,o)){return false}}n.delete(o)}for(const e of n){if(a(r,e)){return false}}}return true};o.SeenEntry=class{constructor(e,t){this.obj=e;this.ref=t}isSame(e,t){return this.obj===e&&this.ref===t}}},199:function(e,t,r){const n=r(718);const o={};e.exports=function(e){n(/^[ \w\!#\$%&'\(\)\*\+,\-\.\/\:;<\=>\?@\[\]\^`\{\|\}~\"\\]*$/.test(e),"Bad attribute value ("+e+")");return e.replace(/\\/g,"\\\\").replace(/\"/g,'\\"')}},752:function(e){const t={};e.exports=function(e){if(!e){return""}let r="";for(let n=0;n<e.length;++n){const o=e.charCodeAt(n);if(t.isSafe(o)){r+=e[n]}else{r+=t.escapeHtmlChar(o)}}return r};t.escapeHtmlChar=function(e){const r=t.namedHtml.get(e);if(r){return r}if(e>=256){return"&#"+e+";"}const n=e.toString(16).padStart(2,"0");return`&#x${n};`};t.isSafe=function(e){return t.safeCharCodes.has(e)};t.namedHtml=new Map([[38,"&amp;"],[60,"&lt;"],[62,"&gt;"],[34,"&quot;"],[160,"&nbsp;"],[162,"&cent;"],[163,"&pound;"],[164,"&curren;"],[169,"&copy;"],[174,"&reg;"]]);t.safeCharCodes=function(){const e=new Set;for(let t=32;t<123;++t){if(t>=97||t>=65&&t<=90||t>=48&&t<=57||t===32||t===46||t===44||t===45||t===58||t===95){e.add(t)}}return e}()},112:function(e){const t={};e.exports=function(e){if(!e){return""}return e.replace(/[<>&\u2028\u2029]/g,t.escape)};t.escape=function(e){return t.replacements.get(e)};t.replacements=new Map([["<","\\u003c"],[">","\\u003e"],["&","\\u0026"],["\u2028","\\u2028"],["\u2029","\\u2029"]])},965:function(e){const t={};e.exports=function(e){return e.replace(/[\^\$\.\*\+\-\?\=\!\:\|\\\/\(\)\[\]\{\}\,]/g,"\\$&")}},666:function(e){const t={};e.exports=t.flatten=function(e,r){const n=r||[];for(const r of e){if(Array.isArray(r)){t.flatten(r,n)}else{n.push(r)}}return n}},887:function(e){const t={};e.exports=function(){}},904:function(e,t,r){t.applyToDefaults=r(545);t.assert=r(718);t.AssertError=r(542);t.Bench=r(999);t.block=r(820);t.clone=r(578);t.contain=r(157);t.deepEqual=r(801);t.escapeHeaderAttribute=r(199);t.escapeHtml=r(752);t.escapeJson=r(112);t.escapeRegex=r(965);t.flatten=r(666);t.ignore=r(887);t.intersect=r(221);t.isPromise=r(193);t.merge=r(445);t.once=r(926);t.reach=r(891);t.reachTemplate=r(517);t.stringify=r(577);t.wait=r(497)},221:function(e){const t={};e.exports=function(e,r,n={}){if(!e||!r){return n.first?null:[]}const o=[];const s=Array.isArray(e)?new Set(e):e;const i=new Set;for(const e of r){if(t.has(s,e)&&!i.has(e)){if(n.first){return e}o.push(e);i.add(e)}}return n.first?null:o};t.has=function(e,t){if(typeof e.has==="function"){return e.has(t)}return e[t]!==undefined}},193:function(e){const t={};e.exports=function(e){return typeof e?.then==="function"}},445:function(e,t,r){const n=r(718);const o=r(578);const s=r(417);const i={};e.exports=i.merge=function(e,t,r){n(e&&typeof e==="object","Invalid target value: must be an object");n(t===null||t===undefined||typeof t==="object","Invalid source value: must be null, undefined, or an object");if(!t){return e}r=Object.assign({nullOverride:true,mergeArrays:true},r);if(Array.isArray(t)){n(Array.isArray(e),"Cannot merge array onto an object");if(!r.mergeArrays){e.length=0}for(let n=0;n<t.length;++n){e.push(o(t[n],{symbols:r.symbols}))}return e}const f=s.keys(t,r);for(let n=0;n<f.length;++n){const s=f[n];if(s==="__proto__"||!Object.prototype.propertyIsEnumerable.call(t,s)){continue}const c=t[s];if(c&&typeof c==="object"){if(e[s]===c){continue}if(!e[s]||typeof e[s]!=="object"||Array.isArray(e[s])!==Array.isArray(c)||c instanceof Date||Buffer&&Buffer.isBuffer(c)||c instanceof RegExp){e[s]=o(c,{symbols:r.symbols})}else{i.merge(e[s],c,r)}}else{if(c!==null&&c!==undefined){e[s]=c}else if(r.nullOverride){e[s]=c}}}return e}},926:function(e){const t={wrapped:Symbol("wrapped")};e.exports=function(e){if(e[t.wrapped]){return e}let r=false;const wrappedFn=function(...t){if(!r){r=true;e(...t)}};wrappedFn[t.wrapped]=true;return wrappedFn}},891:function(e,t,r){const n=r(718);const o={};e.exports=function(e,t,r){if(t===false||t===null||t===undefined){return e}r=r||{};if(typeof r==="string"){r={separator:r}}const s=Array.isArray(t);n(!s||!r.separator,"Separator option is not valid for array-based chain");const i=s?t:t.split(r.separator||".");let f=e;for(let e=0;e<i.length;++e){let s=i[e];const c=r.iterables&&o.iterables(f);if(Array.isArray(f)||c==="set"){const e=Number(s);if(Number.isInteger(e)){s=e<0?f.length+e:e}}if(!f||typeof f==="function"&&r.functions===false||!c&&f[s]===undefined){n(!r.strict||e+1===i.length,"Missing segment",s,"in reach path ",t);n(typeof f==="object"||r.functions===true||typeof f!=="function","Invalid segment",s,"in reach path ",t);f=r.default;break}if(!c){f=f[s]}else if(c==="set"){f=[...f][s]}else{f=f.get(s)}}return f};o.iterables=function(e){if(e instanceof Set){return"set"}if(e instanceof Map){return"map"}}},517:function(e,t,r){const n=r(891);const o={};e.exports=function(e,t,r){return t.replace(/{([^{}]+)}/g,((t,o)=>{const s=n(e,o,r);return s??""}))}},577:function(e){const t={};e.exports=function(...e){try{return JSON.stringify(...e)}catch(e){return"[Cannot display object: "+e.message+"]"}}},657:function(e,t){const r={};t=e.exports={array:Array.prototype,buffer:Buffer&&Buffer.prototype,date:Date.prototype,error:Error.prototype,generic:Object.prototype,map:Map.prototype,promise:Promise.prototype,regex:RegExp.prototype,set:Set.prototype,url:URL.prototype,weakMap:WeakMap.prototype,weakSet:WeakSet.prototype};r.typeMap=new Map([["[object Error]",t.error],["[object Map]",t.map],["[object Promise]",t.promise],["[object Set]",t.set],["[object URL]",t.url],["[object WeakMap]",t.weakMap],["[object WeakSet]",t.weakSet]]);t.getInternalProto=function(e){if(Array.isArray(e)){return t.array}if(Buffer&&e instanceof Buffer){return t.buffer}if(e instanceof Date){return t.date}if(e instanceof RegExp){return t.regex}if(e instanceof Error){return t.error}const n=Object.prototype.toString.call(e);return r.typeMap.get(n)||t.generic}},417:function(e,t){const r={};t.keys=function(e,t={}){return t.symbols!==false?Reflect.ownKeys(e):Object.getOwnPropertyNames(e)}},497:function(e){const t={maxTimer:2**31-1};e.exports=function(e,r,n){if(typeof e==="bigint"){e=Number(e)}if(e>=Number.MAX_SAFE_INTEGER){e=Infinity}if(typeof e!=="number"&&e!==undefined){throw new TypeError("Timeout must be a number or bigint")}return new Promise((o=>{const s=n?n.setTimeout:setTimeout;const activate=()=>{const n=Math.min(e,t.maxTimer);e-=n;s((()=>e>0?activate():o(r)),n)};if(e!==Infinity){activate()}}))}}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var o=t[r]={exports:{}};var s=true;try{e[r](o,o.exports,__nccwpck_require__);s=false}finally{if(s)delete t[r]}return o.exports}if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";var r={};!function(){var e=r;const{assert:t}=__nccwpck_require__(904);const n={};e.Sorter=class{constructor(){this._items=[];this.nodes=[]}add(e,r){r=r??{};const n=[].concat(r.before??[]);const o=[].concat(r.after??[]);const s=r.group??"?";const i=r.sort??0;t(!n.includes(s),`Item cannot come before itself: ${s}`);t(!n.includes("?"),"Item cannot come before unassociated items");t(!o.includes(s),`Item cannot come after itself: ${s}`);t(!o.includes("?"),"Item cannot come after unassociated items");if(!Array.isArray(e)){e=[e]}for(const t of e){const e={seq:this._items.length,sort:i,before:n,after:o,group:s,node:t};this._items.push(e)}if(!r.manual){const e=this._sort();t(e,"item",s!=="?"?`added into group ${s}`:"","created a dependencies error")}return this.nodes}merge(e){if(!Array.isArray(e)){e=[e]}for(const t of e){if(t){for(const e of t._items){this._items.push(Object.assign({},e))}}}this._items.sort(n.mergeSort);for(let e=0;e<this._items.length;++e){this._items[e].seq=e}const r=this._sort();t(r,"merge created a dependencies error");return this.nodes}sort(){const e=this._sort();t(e,"sort created a dependencies error");return this.nodes}_sort(){const e={};const t=Object.create(null);const r=Object.create(null);for(const n of this._items){const o=n.seq;const s=n.group;r[s]=r[s]??[];r[s].push(o);e[o]=n.before;for(const e of n.after){t[e]=t[e]??[];t[e].push(o)}}for(const t in e){const n=[];for(const o in e[t]){const s=e[t][o];r[s]=r[s]??[];n.push(...r[s])}e[t]=n}for(const n in t){if(r[n]){for(const o of r[n]){e[o].push(...t[n])}}}const n={};for(const t in e){const r=e[t];for(const e of r){n[e]=n[e]??[];n[e].push(t)}}const o={};const s=[];for(let e=0;e<this._items.length;++e){let t=e;if(n[e]){t=null;for(let e=0;e<this._items.length;++e){if(o[e]===true){continue}if(!n[e]){n[e]=[]}const r=n[e].length;let s=0;for(let t=0;t<r;++t){if(o[n[e][t]]){++s}}if(s===r){t=e;break}}}if(t!==null){o[t]=true;s.push(t)}}if(s.length!==this._items.length){return false}const i={};for(const e of this._items){i[e.seq]=e}this._items=[];this.nodes=[];for(const e of s){const t=i[e];this.nodes.push(t.node);this._items.push(t)}return true}};n.mergeSort=(e,t)=>e.sort===t.sort?0:e.sort<t.sort?-1:1}();module.exports=r})();
@@ -1 +0,0 @@
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":"2024-07-05T09:17:15.497Z"}