Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions .changeset/dependabot-update-13162.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
---
"miniflare": patch
"wrangler": patch
---

Update dependencies of "miniflare", "wrangler"

The following dependency versions have been updated:

| Dependency | From | To |
| ---------- | ------------ | ------------ |
| workerd | 1.20260331.1 | 1.20260401.1 |
2 changes: 1 addition & 1 deletion packages/miniflare/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
"@cspotcode/source-map-support": "0.8.1",
"sharp": "^0.34.5",
"undici": "catalog:default",
"workerd": "1.20260331.1",
"workerd": "1.20260401.1",
"ws": "catalog:default",
"youch": "4.1.0-beta.10"
},
Expand Down
22 changes: 9 additions & 13 deletions packages/miniflare/src/workers/stream/binding.worker.ts
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,11 @@ class StreamScopedCaptionsImpl
this.#videoId = videoId;
}

async upload(_language: string, _file: File): Promise<StreamCaption> {
throw new BadRequestError(
"caption upload via File is not supported in local mode"
);
async upload(
_language: string,
_input: ReadableStream
): Promise<StreamCaption> {
throw new BadRequestError("caption upload is not supported in local mode");
}

async generate(language: string): Promise<StreamCaption> {
Expand Down Expand Up @@ -206,14 +207,9 @@ class StreamWatermarksImpl extends RpcTarget implements StreamWatermarks {
}

async generate(
fileOrUrl: File | string | ReadableStream<Uint8Array>,
streamOrUrl: ReadableStream | string,
params: StreamWatermarkCreateParams
): Promise<StreamWatermark> {
if (fileOrUrl instanceof File) {
throw new BadRequestError(
"watermark generation via File is not supported in local mode"
);
}
if (
params.opacity !== undefined &&
(params.opacity < 0 || params.opacity > 1)
Expand All @@ -230,12 +226,12 @@ class StreamWatermarksImpl extends RpcTarget implements StreamWatermarks {
throw new BadRequestError("scale must be between 0.0 and 1.0");
}
const stub = getStub(this.#env);
if (typeof fileOrUrl === "string") {
const row = await stub.createWatermarkFromUrl(fileOrUrl, params);
if (typeof streamOrUrl === "string") {
const row = await stub.createWatermarkFromUrl(streamOrUrl, params);
return rowToStreamWatermark(row);
}
// ReadableStream — pre-fetched data passed directly
const buffer = await new Response(fileOrUrl).arrayBuffer();
const buffer = await new Response(streamOrUrl).arrayBuffer();
const row = await stub.createWatermarkFromBody(buffer, null, params);
return rowToStreamWatermark(row);
}
Expand Down
51 changes: 29 additions & 22 deletions packages/miniflare/test/plugins/stream/index.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,15 @@ async function handleCommand(stream, op, args) {
case "captions.delete":
await stream.video(args.id).captions.delete(args.language);
return null;
case "captions.upload": {
const file = new File(["test"], "captions.vtt");
return stream.video(args.id).captions.upload(args.language, file);
}
case "captions.upload": {
const stream_input = new ReadableStream({
start(controller) {
controller.enqueue(new TextEncoder().encode("test"));
controller.close();
}
});
return stream.video(args.id).captions.upload(args.language, stream_input);
}
case "downloads.generate":
return stream.video(args.id).downloads.generate(args.type);
case "downloads.get":
Expand All @@ -107,10 +112,15 @@ async function handleCommand(stream, op, args) {
}
case "watermarks.generate.fromUrl":
return stream.watermarks.generate(args.url, args.params || {});
case "watermarks.generate.fromFile": {
const file = new File(["test"], "watermark.png");
return stream.watermarks.generate(file, args.params || {});
}
case "watermarks.generate.fromStream": {
const stream_input = new ReadableStream({
start(controller) {
controller.enqueue(new TextEncoder().encode("test"));
controller.close();
}
});
return stream.watermarks.generate(stream_input, args.params || {});
}
case "watermarks.list":
return stream.watermarks.list();
case "watermarks.get":
Expand Down Expand Up @@ -855,7 +865,7 @@ describe("Stream captions", () => {
).rejects.toThrow("Video not found");
});

test("caption upload via File fails serialization across the binding", async ({
test("caption upload via ReadableStream is not supported in local mode", async ({
expect,
}) => {
const mf = createMiniflare();
Expand All @@ -866,9 +876,7 @@ describe("Stream captions", () => {
id: "00000000-0000-0000-0000-000000000000",
language: "en",
})
).rejects.toThrow(
'Could not serialize object of type "File". This type does not support serialization.'
);
).rejects.toThrow("caption upload is not supported in local mode");
});

test("generate caption is idempotent (upsert)", async ({ expect }) => {
Expand Down Expand Up @@ -986,19 +994,18 @@ describe("Stream watermarks", () => {
).rejects.toThrow("Failed to fetch watermark from URL: 404 Missing");
});

test("create watermark via File fails serialization across the binding", async ({
expect,
}) => {
test("create watermark from ReadableStream", async ({ expect }) => {
const mf = createMiniflare();
useDispose(mf);

await expect(
sendCmdToWorker(mf, "watermarks.generate.fromFile", {
params: { name: "unsupported" },
})
).rejects.toThrow(
'Could not serialize object of type "File". This type does not support serialization.'
);
const watermark = (await sendCmdToWorker(
mf,
"watermarks.generate.fromStream",
{
params: { name: "from-stream" },
}
)) as Watermark;
expect(watermark.name).toBe("from-stream");
});

test("list watermarks", async ({ expect }) => {
Expand Down
2 changes: 1 addition & 1 deletion packages/wrangler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@
"miniflare": "workspace:*",
"path-to-regexp": "6.3.0",
"unenv": "2.0.0-rc.24",
"workerd": "1.20260331.1"
"workerd": "1.20260401.1"
},
"devDependencies": {
"@aws-sdk/client-s3": "^3.721.0",
Expand Down
Loading
Loading