@trieb.work/payload-plugin-backup-mongodb 0.1.5 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +260 -90
- package/dist/backup-dashboard.css +18 -1
- package/dist/collections/BackupTasks.js +8 -1
- package/dist/collections/BackupTasks.js.map +1 -1
- package/dist/components/BackupDashboard/BackupListCollapsible.client.js.map +1 -1
- package/dist/components/BackupDashboard/BackupSettingsModal.client.js +203 -115
- package/dist/components/BackupDashboard/BackupSettingsModal.client.js.map +1 -1
- package/dist/components/BackupDashboard/CollectionBackupPreviewBody.client.js.map +1 -1
- package/dist/components/BackupDashboard/RestoreBackupDialog.client.js +1 -1
- package/dist/components/BackupDashboard/RestoreBackupDialog.client.js.map +1 -1
- package/dist/components/BackupDashboard/TaskActionButton.client.d.ts +1 -1
- package/dist/components/BackupDashboard/TaskActionButton.client.js +59 -26
- package/dist/components/BackupDashboard/TaskActionButton.client.js.map +1 -1
- package/dist/components/BackupDashboard/backupDashboardInlineCss.js +1 -1
- package/dist/components/BackupDashboard/backupDashboardInlineCss.js.map +1 -1
- package/dist/components/BackupDashboard/index.js +27 -3
- package/dist/components/BackupDashboard/index.js.map +1 -1
- package/dist/core/archive.js.map +1 -1
- package/dist/core/backup.d.ts +4 -3
- package/dist/core/backup.js +50 -43
- package/dist/core/backup.js.map +1 -1
- package/dist/core/backupArchiveRead.d.ts +15 -0
- package/dist/core/backupArchiveRead.js +30 -0
- package/dist/core/backupArchiveRead.js.map +1 -0
- package/dist/core/backupBlobIO.js.map +1 -1
- package/dist/core/backupSettings.js +5 -0
- package/dist/core/backupSettings.js.map +1 -1
- package/dist/core/blobTokenValidate.js.map +1 -1
- package/dist/core/restore.d.ts +5 -2
- package/dist/core/restore.js +133 -89
- package/dist/core/restore.js.map +1 -1
- package/dist/core/restorePreview.d.ts +12 -3
- package/dist/core/restorePreview.js +17 -13
- package/dist/core/restorePreview.js.map +1 -1
- package/dist/core/restoreResult.d.ts +34 -0
- package/dist/core/restoreResult.js +45 -0
- package/dist/core/restoreResult.js.map +1 -0
- package/dist/core/storage/config.d.ts +31 -0
- package/dist/core/storage/config.js +60 -0
- package/dist/core/storage/config.js.map +1 -0
- package/dist/core/storage/index.d.ts +23 -0
- package/dist/core/storage/index.js +25 -0
- package/dist/core/storage/index.js.map +1 -0
- package/dist/core/storage/s3.d.ts +35 -0
- package/dist/core/storage/s3.js +200 -0
- package/dist/core/storage/s3.js.map +1 -0
- package/dist/core/storage/types.d.ts +60 -0
- package/dist/core/storage/types.js +6 -0
- package/dist/core/storage/types.js.map +1 -0
- package/dist/core/storage/vercelBlob.d.ts +25 -0
- package/dist/core/storage/vercelBlob.js +53 -0
- package/dist/core/storage/vercelBlob.js.map +1 -0
- package/dist/core/taskProgress.d.ts +10 -4
- package/dist/core/taskProgress.js +11 -2
- package/dist/core/taskProgress.js.map +1 -1
- package/dist/core/vercelBackupCron.js.map +1 -1
- package/dist/endpoints/index.js +0 -5
- package/dist/endpoints/index.js.map +1 -1
- package/dist/endpoints/paths/admin-backup-download.js +8 -7
- package/dist/endpoints/paths/admin-backup-download.js.map +1 -1
- package/dist/endpoints/paths/admin-delete.js +11 -5
- package/dist/endpoints/paths/admin-delete.js.map +1 -1
- package/dist/endpoints/paths/admin-manual.js +2 -1
- package/dist/endpoints/paths/admin-manual.js.map +1 -1
- package/dist/endpoints/paths/admin-preview.js +9 -2
- package/dist/endpoints/paths/admin-preview.js.map +1 -1
- package/dist/endpoints/paths/admin-restore.js +7 -4
- package/dist/endpoints/paths/admin-restore.js.map +1 -1
- package/dist/endpoints/paths/admin-settings.js +35 -2
- package/dist/endpoints/paths/admin-settings.js.map +1 -1
- package/dist/endpoints/paths/cron-list.js +2 -1
- package/dist/endpoints/paths/cron-list.js.map +1 -1
- package/dist/endpoints/paths/cron-restore.js +14 -4
- package/dist/endpoints/paths/cron-restore.js.map +1 -1
- package/dist/endpoints/paths/cron-run.js +2 -1
- package/dist/endpoints/paths/cron-run.js.map +1 -1
- package/dist/endpoints/shared.d.ts +0 -1
- package/dist/endpoints/shared.js +0 -6
- package/dist/endpoints/shared.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/plugin.js.map +1 -1
- package/dist/publicApiPaths.d.ts +0 -1
- package/dist/publicApiPaths.js +0 -1
- package/dist/publicApiPaths.js.map +1 -1
- package/dist/types.d.ts +0 -5
- package/dist/types.js.map +1 -1
- package/dist/utils/blobName.js.map +1 -1
- package/dist/utils/dashboardRoleAccess.js.map +1 -1
- package/dist/utils/dialogBackdrop.js.map +1 -1
- package/dist/utils/hostname.js.map +1 -1
- package/dist/utils/maskBlobToken.js.map +1 -1
- package/package.json +25 -4
- package/dist/endpoints/paths/admin-seed.d.ts +0 -3
- package/dist/endpoints/paths/admin-seed.js +0 -47
- package/dist/endpoints/paths/admin-seed.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@trieb.work/payload-plugin-backup-mongodb",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Payload CMS plugin for MongoDB backup and recovery via Vercel Blob
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "Payload CMS plugin for MongoDB backup and recovery via Vercel Blob or AWS S3 (S3-compatible: R2, MinIO)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"payload",
|
|
7
7
|
"payloadcms",
|
|
@@ -76,6 +76,9 @@
|
|
|
76
76
|
"tar-stream": "^3.1.7"
|
|
77
77
|
},
|
|
78
78
|
"devDependencies": {
|
|
79
|
+
"@aws-sdk/client-s3": "^3.700.0",
|
|
80
|
+
"@aws-sdk/lib-storage": "^3.700.0",
|
|
81
|
+
"@aws-sdk/s3-request-presigner": "^3.700.0",
|
|
79
82
|
"@changesets/cli": "^2.29.8",
|
|
80
83
|
"@eslint/eslintrc": "^3.2.0",
|
|
81
84
|
"@payloadcms/db-mongodb": "3.82.1",
|
|
@@ -84,7 +87,7 @@
|
|
|
84
87
|
"@payloadcms/richtext-lexical": "3.82.1",
|
|
85
88
|
"@payloadcms/translations": "3.82.1",
|
|
86
89
|
"@payloadcms/ui": "3.82.1",
|
|
87
|
-
"@playwright/test": "1.
|
|
90
|
+
"@playwright/test": "1.61.0",
|
|
88
91
|
"@swc-node/register": "1.10.9",
|
|
89
92
|
"@swc/cli": "0.6.0",
|
|
90
93
|
"@types/node": "22.19.9",
|
|
@@ -105,6 +108,7 @@
|
|
|
105
108
|
"open": "^10.1.0",
|
|
106
109
|
"payload": "3.82.1",
|
|
107
110
|
"prettier": "^3.4.2",
|
|
111
|
+
"prettier-plugin-packagejson": "3.0.2",
|
|
108
112
|
"qs-esm": "8.0.1",
|
|
109
113
|
"react": "19.2.4",
|
|
110
114
|
"react-dom": "19.2.4",
|
|
@@ -117,14 +121,28 @@
|
|
|
117
121
|
"vitest": "4.1.5"
|
|
118
122
|
},
|
|
119
123
|
"peerDependencies": {
|
|
124
|
+
"@aws-sdk/client-s3": "^3.0.0",
|
|
125
|
+
"@aws-sdk/lib-storage": "^3.0.0",
|
|
126
|
+
"@aws-sdk/s3-request-presigner": "^3.0.0",
|
|
120
127
|
"@payloadcms/db-mongodb": "^3.0.0",
|
|
121
128
|
"@payloadcms/ui": "^3.0.0",
|
|
122
129
|
"next": "^15.0.0",
|
|
123
130
|
"payload": "^3.0.0",
|
|
124
131
|
"react": "^19.0.0"
|
|
125
132
|
},
|
|
133
|
+
"peerDependenciesMeta": {
|
|
134
|
+
"@aws-sdk/client-s3": {
|
|
135
|
+
"optional": true
|
|
136
|
+
},
|
|
137
|
+
"@aws-sdk/lib-storage": {
|
|
138
|
+
"optional": true
|
|
139
|
+
},
|
|
140
|
+
"@aws-sdk/s3-request-presigner": {
|
|
141
|
+
"optional": true
|
|
142
|
+
}
|
|
143
|
+
},
|
|
126
144
|
"engines": {
|
|
127
|
-
"node": "
|
|
145
|
+
"node": ">=20.9.0",
|
|
128
146
|
"pnpm": "^9 || ^10"
|
|
129
147
|
},
|
|
130
148
|
"publishConfig": {
|
|
@@ -149,6 +167,8 @@
|
|
|
149
167
|
"dev:payload": "cross-env PAYLOAD_CONFIG_PATH=./dev/payload.config.ts payload",
|
|
150
168
|
"dev:turbo": "node ./scripts/dev.mjs --turbo",
|
|
151
169
|
"dev:watch-css": "node ./scripts/watch-backup-css.mjs",
|
|
170
|
+
"format": "prettier --write . --cache --log-level warn",
|
|
171
|
+
"format:check": "prettier --check . --cache --log-level warn",
|
|
152
172
|
"generate:importmap": "pnpm dev:generate-importmap",
|
|
153
173
|
"generate:types": "pnpm dev:generate-types",
|
|
154
174
|
"lint": "eslint \"src/**/*.{ts,tsx}\" \"dev/**/*.{ts,tsx}\" \"tests/**/*.{ts,tsx}\"",
|
|
@@ -160,6 +180,7 @@
|
|
|
160
180
|
"test:e2e": "cross-env NODE_OPTIONS=--no-deprecation playwright test",
|
|
161
181
|
"test:int": "vitest run",
|
|
162
182
|
"test:int:cov": "vitest run --coverage",
|
|
183
|
+
"test:int:minio": "vitest run tests/integration/s3MinioLive.test.ts",
|
|
163
184
|
"test:int:watch": "vitest",
|
|
164
185
|
"typecheck": "tsc --noEmit"
|
|
165
186
|
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
import { after } from 'next/server';
|
|
2
|
-
import { restoreBackup, restoreSeedMedia } from '../../core/restore';
|
|
3
|
-
import { completeBackupTask, createBackupTask, failBackupTask } from '../../core/taskProgress';
|
|
4
|
-
import { requireBackupAdmin, requireBlobEnv } from '../shared';
|
|
5
|
-
export function createAdminSeedEndpoint(options) {
|
|
6
|
-
const seedUrl = options.seedDemoDumpUrl;
|
|
7
|
-
if (!seedUrl) {
|
|
8
|
-
return null;
|
|
9
|
-
}
|
|
10
|
-
return {
|
|
11
|
-
handler: async (req)=>{
|
|
12
|
-
const blobErr = requireBlobEnv();
|
|
13
|
-
if (blobErr) {
|
|
14
|
-
return blobErr;
|
|
15
|
-
}
|
|
16
|
-
const auth = await requireBackupAdmin(req, options);
|
|
17
|
-
if (auth instanceof Response) {
|
|
18
|
-
return auth;
|
|
19
|
-
}
|
|
20
|
-
const { payload } = req;
|
|
21
|
-
const { pollSecret, taskId } = await createBackupTask(payload, 'seed', 'Seed queued');
|
|
22
|
-
payload.logger.info({
|
|
23
|
-
taskId
|
|
24
|
-
}, '[backup-endpoint] Seed queued');
|
|
25
|
-
after(restoreSeedMedia(payload, taskId).then(()=>restoreBackup(payload, seedUrl, [
|
|
26
|
-
'users',
|
|
27
|
-
'roles'
|
|
28
|
-
], false, taskId)).then(()=>completeBackupTask(payload, taskId, 'Seed completed')).catch(async (error)=>{
|
|
29
|
-
await failBackupTask(payload, taskId, error);
|
|
30
|
-
payload.logger.error({
|
|
31
|
-
err: error,
|
|
32
|
-
taskId
|
|
33
|
-
}, '[backup-endpoint] Seed failed');
|
|
34
|
-
}));
|
|
35
|
-
return Response.json({
|
|
36
|
-
pollSecret,
|
|
37
|
-
taskId
|
|
38
|
-
}, {
|
|
39
|
-
status: 202
|
|
40
|
-
});
|
|
41
|
-
},
|
|
42
|
-
method: 'post',
|
|
43
|
-
path: '/backup-mongodb/admin/seed'
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
//# sourceMappingURL=admin-seed.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/endpoints/paths/admin-seed.ts"],"sourcesContent":["import type { Endpoint } from 'payload'\n\nimport { after } from 'next/server'\n\nimport type { BackupPluginOptions } from '../../types'\n\nimport { restoreBackup, restoreSeedMedia } from '../../core/restore'\nimport { completeBackupTask, createBackupTask, failBackupTask } from '../../core/taskProgress'\nimport { requireBackupAdmin, requireBlobEnv } from '../shared'\n\nexport function createAdminSeedEndpoint(options: BackupPluginOptions): Endpoint | null {\n const seedUrl = options.seedDemoDumpUrl\n if (!seedUrl) {\n return null\n }\n\n return {\n handler: async (req) => {\n const blobErr = requireBlobEnv()\n if (blobErr) {\n return blobErr\n }\n\n const auth = await requireBackupAdmin(req, options)\n if (auth instanceof Response) {\n return auth\n }\n\n const { payload } = req\n const { pollSecret, taskId } = await createBackupTask(payload, 'seed', 'Seed queued')\n\n payload.logger.info({ taskId }, '[backup-endpoint] Seed queued')\n\n after(\n restoreSeedMedia(payload, taskId)\n .then(() => restoreBackup(payload, seedUrl, ['users', 'roles'], false, taskId))\n .then(() => completeBackupTask(payload, taskId, 'Seed completed'))\n .catch(async (error) => {\n await failBackupTask(payload, taskId, error)\n payload.logger.error({ err: error, taskId }, '[backup-endpoint] Seed failed')\n }),\n )\n\n return Response.json({ pollSecret, taskId }, { status: 202 })\n },\n method: 'post',\n path: '/backup-mongodb/admin/seed',\n }\n}\n"],"names":["after","restoreBackup","restoreSeedMedia","completeBackupTask","createBackupTask","failBackupTask","requireBackupAdmin","requireBlobEnv","createAdminSeedEndpoint","options","seedUrl","seedDemoDumpUrl","handler","req","blobErr","auth","Response","payload","pollSecret","taskId","logger","info","then","catch","error","err","json","status","method","path"],"mappings":"AAEA,SAASA,KAAK,QAAQ,cAAa;AAInC,SAASC,aAAa,EAAEC,gBAAgB,QAAQ,qBAAoB;AACpE,SAASC,kBAAkB,EAAEC,gBAAgB,EAAEC,cAAc,QAAQ,0BAAyB;AAC9F,SAASC,kBAAkB,EAAEC,cAAc,QAAQ,YAAW;AAE9D,OAAO,SAASC,wBAAwBC,OAA4B;IAClE,MAAMC,UAAUD,QAAQE,eAAe;IACvC,IAAI,CAACD,SAAS;QACZ,OAAO;IACT;IAEA,OAAO;QACLE,SAAS,OAAOC;YACd,MAAMC,UAAUP;YAChB,IAAIO,SAAS;gBACX,OAAOA;YACT;YAEA,MAAMC,OAAO,MAAMT,mBAAmBO,KAAKJ;YAC3C,IAAIM,gBAAgBC,UAAU;gBAC5B,OAAOD;YACT;YAEA,MAAM,EAAEE,OAAO,EAAE,GAAGJ;YACpB,MAAM,EAAEK,UAAU,EAAEC,MAAM,EAAE,GAAG,MAAMf,iBAAiBa,SAAS,QAAQ;YAEvEA,QAAQG,MAAM,CAACC,IAAI,CAAC;gBAAEF;YAAO,GAAG;YAEhCnB,MACEE,iBAAiBe,SAASE,QACvBG,IAAI,CAAC,IAAMrB,cAAcgB,SAASP,SAAS;oBAAC;oBAAS;iBAAQ,EAAE,OAAOS,SACtEG,IAAI,CAAC,IAAMnB,mBAAmBc,SAASE,QAAQ,mBAC/CI,KAAK,CAAC,OAAOC;gBACZ,MAAMnB,eAAeY,SAASE,QAAQK;gBACtCP,QAAQG,MAAM,CAACI,KAAK,CAAC;oBAAEC,KAAKD;oBAAOL;gBAAO,GAAG;YAC/C;YAGJ,OAAOH,SAASU,IAAI,CAAC;gBAAER;gBAAYC;YAAO,GAAG;gBAAEQ,QAAQ;YAAI;QAC7D;QACAC,QAAQ;QACRC,MAAM;IACR;AACF"}
|