From ba7587aa3fb234962758085ed0d0189a2ffd721f Mon Sep 17 00:00:00 2001 From: dswbx Date: Sat, 19 Jul 2025 08:47:39 +0200 Subject: [PATCH 1/5] fix media api to respect options' init, improve types --- app/src/media/api/MediaApi.ts | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/media/api/MediaApi.ts b/app/src/media/api/MediaApi.ts index 956f2aa4..5cb79b63 100644 --- a/app/src/media/api/MediaApi.ts +++ b/app/src/media/api/MediaApi.ts @@ -10,6 +10,7 @@ import type { ApiFetcher } from "Api"; export type MediaApiOptions = BaseModuleApiOptions & { upload_fetcher: ApiFetcher; + init?: RequestInit; }; export class MediaApi extends ModuleApi { @@ -17,6 +18,7 @@ export class MediaApi extends ModuleApi { return { basepath: "/api/media", upload_fetcher: fetch, + init: {}, }; } @@ -67,7 +69,7 @@ export class MediaApi extends ModuleApi { } protected uploadFile( - body: File | ReadableStream, + body: File | Blob | ReadableStream, opts?: { filename?: string; path?: TInput; @@ -93,6 +95,7 @@ export class MediaApi extends ModuleApi { } const init = { + ...this.options.init, ...(opts?._init || {}), headers, }; @@ -108,7 +111,7 @@ export class MediaApi extends ModuleApi { } async upload( - item: Request | Response | string | File | ReadableStream, + item: Request | Response | string | File | Blob | ReadableStream, opts: { filename?: string; _init?: Omit; From ba7fea5571ddf83e891d1168da3c356e352a026f Mon Sep 17 00:00:00 2001 From: dswbx Date: Sat, 19 Jul 2025 09:00:22 +0200 Subject: [PATCH 2/5] checking media controller test --- app/__test__/media/MediaController.spec.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/app/__test__/media/MediaController.spec.ts b/app/__test__/media/MediaController.spec.ts index 9ec23557..293f9a4a 100644 --- a/app/__test__/media/MediaController.spec.ts +++ b/app/__test__/media/MediaController.spec.ts @@ -7,6 +7,7 @@ import { mergeObject, randomString } from "../../src/core/utils"; import type { TAppMediaConfig } from "../../src/media/media-schema"; import { StorageLocalAdapter } from "adapter/node/storage/StorageLocalAdapter"; import { assetsPath, assetsTmpPath, disableConsoleLog, enableConsoleLog } from "../helper"; +import { readdir } from "node:fs/promises"; beforeAll(() => { registries.media.register("local", StorageLocalAdapter); @@ -40,8 +41,8 @@ function makeName(ext: string) { return randomString(10) + "." + ext; } -beforeAll(disableConsoleLog); -afterAll(enableConsoleLog); +/*beforeAll(disableConsoleLog); +afterAll(enableConsoleLog);*/ describe("MediaController", () => { test("accepts direct", async () => { @@ -54,6 +55,7 @@ describe("MediaController", () => { body: file, }); const result = (await res.json()) as any; + console.log("files", await readdir(assetsTmpPath)); console.log(result); expect(result.name).toBe(name); From 491bd65da1fc180548cb7238a20ac46dba9cc254 Mon Sep 17 00:00:00 2001 From: dswbx Date: Sat, 19 Jul 2025 09:04:42 +0200 Subject: [PATCH 3/5] checking media controller test --- app/__test__/media/MediaController.spec.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/__test__/media/MediaController.spec.ts b/app/__test__/media/MediaController.spec.ts index 293f9a4a..21994d70 100644 --- a/app/__test__/media/MediaController.spec.ts +++ b/app/__test__/media/MediaController.spec.ts @@ -50,6 +50,8 @@ describe("MediaController", () => { const file = Bun.file(path); const name = makeName("png"); + console.log("test"); + console.log("files:assets", await readdir(assetsPath, { recursive: true })); const res = await app.server.request("/api/media/upload/" + name, { method: "POST", body: file, From cecb0e829aae50c0424adcad07939731c3a80897 Mon Sep 17 00:00:00 2001 From: dswbx Date: Sat, 19 Jul 2025 09:07:56 +0200 Subject: [PATCH 4/5] checking media controller test --- app/__test__/_assets/.gitignore | 3 ++- app/__test__/_assets/tmp/.gitkeep | 0 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 app/__test__/_assets/tmp/.gitkeep diff --git a/app/__test__/_assets/.gitignore b/app/__test__/_assets/.gitignore index e540f5b3..22bd3dc3 100644 --- a/app/__test__/_assets/.gitignore +++ b/app/__test__/_assets/.gitignore @@ -1 +1,2 @@ -tmp/* \ No newline at end of file +tmp/* +!tmp/.gitkeep \ No newline at end of file diff --git a/app/__test__/_assets/tmp/.gitkeep b/app/__test__/_assets/tmp/.gitkeep new file mode 100644 index 00000000..e69de29b From 8bc63ba2a73ea73f99425a49310ab225e42ab095 Mon Sep 17 00:00:00 2001 From: dswbx Date: Sat, 19 Jul 2025 09:10:08 +0200 Subject: [PATCH 5/5] clean up mediacontroller test --- app/__test__/media/MediaController.spec.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/app/__test__/media/MediaController.spec.ts b/app/__test__/media/MediaController.spec.ts index 21994d70..7c9ae9f3 100644 --- a/app/__test__/media/MediaController.spec.ts +++ b/app/__test__/media/MediaController.spec.ts @@ -7,7 +7,6 @@ import { mergeObject, randomString } from "../../src/core/utils"; import type { TAppMediaConfig } from "../../src/media/media-schema"; import { StorageLocalAdapter } from "adapter/node/storage/StorageLocalAdapter"; import { assetsPath, assetsTmpPath, disableConsoleLog, enableConsoleLog } from "../helper"; -import { readdir } from "node:fs/promises"; beforeAll(() => { registries.media.register("local", StorageLocalAdapter); @@ -41,8 +40,8 @@ function makeName(ext: string) { return randomString(10) + "." + ext; } -/*beforeAll(disableConsoleLog); -afterAll(enableConsoleLog);*/ +beforeAll(disableConsoleLog); +afterAll(enableConsoleLog); describe("MediaController", () => { test("accepts direct", async () => { @@ -50,15 +49,11 @@ describe("MediaController", () => { const file = Bun.file(path); const name = makeName("png"); - console.log("test"); - console.log("files:assets", await readdir(assetsPath, { recursive: true })); const res = await app.server.request("/api/media/upload/" + name, { method: "POST", body: file, }); const result = (await res.json()) as any; - console.log("files", await readdir(assetsTmpPath)); - console.log(result); expect(result.name).toBe(name); const destFile = Bun.file(assetsTmpPath + "/" + name);