From 1cf3a25160e0cc8fd8550af9ae8de1f4440c9f42 Mon Sep 17 00:00:00 2001 From: Giorgio Boa <35845425+gioboa@users.noreply.github.com> Date: Wed, 29 Nov 2023 21:46:46 +0100 Subject: [PATCH 1/2] Revert "fix: remove cf pages stream polyfill (#5352)" This reverts commit a2c2bc9789550c9cf2611a39222d6e51d5aa1cfc. --- .../middleware/cloudflare-pages/index.ts | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/packages/qwik-city/middleware/cloudflare-pages/index.ts b/packages/qwik-city/middleware/cloudflare-pages/index.ts index a602af48c52..e7fa7cbfb82 100644 --- a/packages/qwik-city/middleware/cloudflare-pages/index.ts +++ b/packages/qwik-city/middleware/cloudflare-pages/index.ts @@ -15,6 +15,7 @@ import { setServerPlatform } from '@builder.io/qwik/server'; /** @public */ export function createQwikCity(opts: QwikCityCloudflarePagesOptions) { + (globalThis as any).TextEncoderStream = TextEncoderStream; const qwikSerializer = { _deserializeData, _serializeData, @@ -131,3 +132,39 @@ export interface PlatformCloudflarePages { env?: Record; ctx: { waitUntil: (promise: Promise) => void }; } + +const resolved = Promise.resolve(); + +class TextEncoderStream { + // minimal polyfill implementation of TextEncoderStream + // since Cloudflare Pages doesn't support readable.pipeTo() + _writer: any; + readable: any; + writable: any; + + constructor() { + this._writer = null; + this.readable = { + pipeTo: (writableStream: any) => { + this._writer = writableStream.getWriter(); + }, + }; + this.writable = { + getWriter: () => { + if (!this._writer) { + throw new Error('No writable stream'); + } + const encoder = new TextEncoder(); + return { + write: async (chunk: any) => { + if (chunk != null) { + await this._writer.write(encoder.encode(chunk)); + } + }, + close: () => this._writer.close(), + ready: resolved, + }; + }, + }; + } +} From 68babe1d9f070a80dddbffdd257c8a6dd04d3a96 Mon Sep 17 00:00:00 2001 From: gioboa Date: Wed, 29 Nov 2023 22:19:49 +0100 Subject: [PATCH 2/2] trigger GH checks