diff --git a/lerna.json b/lerna.json
index 38dff33c7e..6c3b971a3a 100644
--- a/lerna.json
+++ b/lerna.json
@@ -1,5 +1,5 @@
{
- "version": "2.16.2",
+ "version": "2.16.3",
"npmClient": "yarn",
"packages": [
"packages/*",
diff --git a/packages/backend-core/src/objectStore/objectStore.ts b/packages/backend-core/src/objectStore/objectStore.ts
index 57ead0e809..3a3b9cdaab 100644
--- a/packages/backend-core/src/objectStore/objectStore.ts
+++ b/packages/backend-core/src/objectStore/objectStore.ts
@@ -7,7 +7,7 @@ import tar from "tar-fs"
import zlib from "zlib"
import { promisify } from "util"
import { join } from "path"
-import fs from "fs"
+import fs, { ReadStream } from "fs"
import env from "../environment"
import { budibaseTempDir } from "./utils"
import { v4 } from "uuid"
@@ -184,7 +184,7 @@ export async function upload({
export async function streamUpload(
bucketName: string,
filename: string,
- stream: any,
+ stream: ReadStream | ReadableStream,
extra = {}
) {
const objectStore = ObjectStore(bucketName)
diff --git a/packages/builder/src/pages/builder/app/[application]/settings/backups/_components/ActionsRenderer.svelte b/packages/builder/src/pages/builder/app/[application]/settings/backups/_components/ActionsRenderer.svelte
index 93f0f518ad..ffdf14fdce 100644
--- a/packages/builder/src/pages/builder/app/[application]/settings/backups/_components/ActionsRenderer.svelte
+++ b/packages/builder/src/pages/builder/app/[application]/settings/backups/_components/ActionsRenderer.svelte
@@ -13,6 +13,7 @@
import CreateRestoreModal from "./CreateRestoreModal.svelte"
import { createEventDispatcher } from "svelte"
import { isOnlyUser } from "builderStore"
+ import { BackupType } from "constants/backend/backups"
export let row
@@ -42,12 +43,11 @@
-
-
-
-
-
- {#if row.type !== "restore"}
+ {#if row.type !== BackupType.RESTORE}
+
+
+
+
- {/if}
-
+
+ {/if}
diff --git a/packages/pro b/packages/pro
index eb9565f568..4f9616f163 160000
--- a/packages/pro
+++ b/packages/pro
@@ -1 +1 @@
-Subproject commit eb9565f568cfef14b336b14eee753119acfdd43b
+Subproject commit 4f9616f163039a0eea81319d8e2288340a2ebc79
diff --git a/packages/server/__mocks__/aws-sdk.ts b/packages/server/__mocks__/aws-sdk.ts
index fa6d099f56..e6a624c83e 100644
--- a/packages/server/__mocks__/aws-sdk.ts
+++ b/packages/server/__mocks__/aws-sdk.ts
@@ -1,7 +1,13 @@
+import fs from "fs"
+import { join } from "path"
+
module AwsMock {
const aws: any = {}
- const response = (body: any) => () => ({ promise: () => body })
+ const response = (body: any, extra?: any) => () => ({
+ promise: () => body,
+ ...extra,
+ })
function DocumentClient() {
// @ts-ignore
@@ -73,9 +79,18 @@ module AwsMock {
// @ts-ignore
this.getObject = jest.fn(
- response({
- Body: "",
- })
+ response(
+ {
+ Body: "",
+ },
+ {
+ createReadStream: jest
+ .fn()
+ .mockReturnValue(
+ fs.createReadStream(join(__dirname, "aws-sdk.ts"))
+ ),
+ }
+ )
)
}
diff --git a/packages/server/src/sdk/app/backups/imports.ts b/packages/server/src/sdk/app/backups/imports.ts
index 7f76945107..4c5c1e659d 100644
--- a/packages/server/src/sdk/app/backups/imports.ts
+++ b/packages/server/src/sdk/app/backups/imports.ts
@@ -165,8 +165,9 @@ export async function importApp(
const isTar = template.file && template?.file?.type?.endsWith("gzip")
const isDirectory =
template.file && fs.lstatSync(template.file.path).isDirectory()
+ let tmpPath: string | undefined = undefined
if (template.file && (isTar || isDirectory)) {
- const tmpPath = isTar ? await untarFile(template.file) : template.file.path
+ tmpPath = isTar ? await untarFile(template.file) : template.file.path
if (isTar && template.file.password) {
await decryptFiles(tmpPath, template.file.password)
}
@@ -208,5 +209,9 @@ export async function importApp(
}
await updateAttachmentColumns(prodAppId, db)
await updateAutomations(prodAppId, db)
+ // clear up afterward
+ if (tmpPath) {
+ fs.rmSync(tmpPath, { recursive: true, force: true })
+ }
return ok
}