@absolutejs/absolute 0.19.0-beta.1073 → 0.19.0-beta.1074

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/dist/build.js CHANGED
@@ -24307,6 +24307,41 @@ var init_hmrCompiler = __esm(() => {
24307
24307
  init_fastHmrCompiler();
24308
24308
  });
24309
24309
 
24310
+ // src/core/pageResponseCache.ts
24311
+ import { createHash as createHash4 } from "crypto";
24312
+ var STREAMING_PAGE_HEADER = "x-absolute-stream", HTML_CONTENT_TYPE = "text/html", streamingPageHeaders = (extra) => {
24313
+ const headers = new Headers(extra);
24314
+ headers.set("content-type", HTML_CONTENT_TYPE);
24315
+ headers.set(STREAMING_PAGE_HEADER, "1");
24316
+ return headers;
24317
+ }, computeEtag = (html) => `W/"${createHash4("sha1").update(html).digest("base64url")}"`, withPageCacheHeaders = async (response, request) => {
24318
+ const contentType = response.headers.get("content-type") ?? "";
24319
+ if (!contentType.includes(HTML_CONTENT_TYPE))
24320
+ return response;
24321
+ if (response.headers.get(STREAMING_PAGE_HEADER) === "1" || !response.body) {
24322
+ response.headers.delete(STREAMING_PAGE_HEADER);
24323
+ response.headers.set("cache-control", "no-cache");
24324
+ return response;
24325
+ }
24326
+ const html = await response.text();
24327
+ const etag = computeEtag(html);
24328
+ if (request?.headers.get("if-none-match") === etag) {
24329
+ return new Response(null, {
24330
+ headers: { "cache-control": "no-cache", etag },
24331
+ status: 304
24332
+ });
24333
+ }
24334
+ const headers = new Headers(response.headers);
24335
+ headers.set("cache-control", "no-cache");
24336
+ headers.set("etag", etag);
24337
+ return new Response(html, {
24338
+ headers,
24339
+ status: response.status,
24340
+ statusText: response.statusText
24341
+ });
24342
+ };
24343
+ var init_pageResponseCache = () => {};
24344
+
24310
24345
  // src/utils/ssrErrorPage.ts
24311
24346
  var exports_ssrErrorPage = {};
24312
24347
  __export(exports_ssrErrorPage, {
@@ -24410,18 +24445,20 @@ var resolveRequestPathname = (request) => {
24410
24445
  }
24411
24446
  const innerHtml = bundle.renderToHTML(props ?? {});
24412
24447
  const html = buildHtmlShell(resolvedHeadTag, innerHtml.replace(/^<div>|<\/div>$/g, ""), indexPath, props);
24413
- return new Response(html, {
24448
+ return withPageCacheHeaders(new Response(html, {
24414
24449
  headers: { "Content-Type": "text/html" }
24415
- });
24450
+ }), input.request);
24416
24451
  } catch (error) {
24417
24452
  console.error("[SSR] Ember render error:", error);
24418
- return new Response(ssrErrorPage("ember", error), {
24453
+ return withPageCacheHeaders(new Response(ssrErrorPage("ember", error), {
24419
24454
  headers: { "Content-Type": "text/html" },
24420
24455
  status: 500
24421
- });
24456
+ }), input.request);
24422
24457
  }
24423
24458
  };
24424
- var init_pageHandler = () => {};
24459
+ var init_pageHandler = __esm(() => {
24460
+ init_pageResponseCache();
24461
+ });
24425
24462
 
24426
24463
  // src/ember/index.ts
24427
24464
  var exports_ember = {};
@@ -27683,5 +27720,5 @@ export {
27683
27720
  build
27684
27721
  };
27685
27722
 
27686
- //# debugId=7282922B7BAA35C364756E2164756E21
27723
+ //# debugId=4FE6957C88C1F03C64756E2164756E21
27687
27724
  //# sourceMappingURL=build.js.map