@absolutejs/absolute 0.19.0-beta.1072 → 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.
Files changed (39) hide show
  1. package/dist/angular/browser.js +2 -2
  2. package/dist/angular/browser.js.map +3 -3
  3. package/dist/angular/components/constants.js +10 -0
  4. package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
  5. package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
  6. package/dist/angular/index.js +51 -8
  7. package/dist/angular/index.js.map +7 -6
  8. package/dist/angular/server.js +51 -8
  9. package/dist/angular/server.js.map +7 -6
  10. package/dist/build.js +44 -7
  11. package/dist/build.js.map +6 -5
  12. package/dist/cli/config/server.js +49 -7
  13. package/dist/cli/index.js +15 -2
  14. package/dist/index.js +62 -12
  15. package/dist/index.js.map +9 -8
  16. package/dist/islands/index.js +2 -2
  17. package/dist/islands/index.js.map +3 -3
  18. package/dist/react/components/index.js +2 -2
  19. package/dist/react/components/index.js.map +3 -3
  20. package/dist/react/index.js +52 -11
  21. package/dist/react/index.js.map +7 -6
  22. package/dist/react/server.js +50 -9
  23. package/dist/react/server.js.map +7 -6
  24. package/dist/src/angular/components/constants.d.ts +1 -0
  25. package/dist/src/constants.d.ts +1 -0
  26. package/dist/src/core/pageResponseCache.d.ts +9 -0
  27. package/dist/svelte/index.js +50 -9
  28. package/dist/svelte/index.js.map +7 -6
  29. package/dist/svelte/server.js +50 -9
  30. package/dist/svelte/server.js.map +7 -6
  31. package/dist/vue/components/Image.js +2 -2
  32. package/dist/vue/components/Image.js.map +3 -3
  33. package/dist/vue/components/index.js +2 -2
  34. package/dist/vue/components/index.js.map +3 -3
  35. package/dist/vue/index.js +52 -11
  36. package/dist/vue/index.js.map +7 -6
  37. package/dist/vue/server.js +50 -9
  38. package/dist/vue/server.js.map +7 -6
  39. package/package.json +5 -1
@@ -184,6 +184,41 @@ var init_devRouteRegistrationCallsite = __esm(() => {
184
184
  pageHandlerWrappers = new WeakMap;
185
185
  });
186
186
 
187
+ // src/core/pageResponseCache.ts
188
+ import { createHash } from "crypto";
189
+ var STREAMING_PAGE_HEADER = "x-absolute-stream", HTML_CONTENT_TYPE = "text/html", streamingPageHeaders = (extra) => {
190
+ const headers = new Headers(extra);
191
+ headers.set("content-type", HTML_CONTENT_TYPE);
192
+ headers.set(STREAMING_PAGE_HEADER, "1");
193
+ return headers;
194
+ }, computeEtag = (html) => `W/"${createHash("sha1").update(html).digest("base64url")}"`, withPageCacheHeaders = async (response, request) => {
195
+ const contentType = response.headers.get("content-type") ?? "";
196
+ if (!contentType.includes(HTML_CONTENT_TYPE))
197
+ return response;
198
+ if (response.headers.get(STREAMING_PAGE_HEADER) === "1" || !response.body) {
199
+ response.headers.delete(STREAMING_PAGE_HEADER);
200
+ response.headers.set("cache-control", "no-cache");
201
+ return response;
202
+ }
203
+ const html = await response.text();
204
+ const etag = computeEtag(html);
205
+ if (request?.headers.get("if-none-match") === etag) {
206
+ return new Response(null, {
207
+ headers: { "cache-control": "no-cache", etag },
208
+ status: 304
209
+ });
210
+ }
211
+ const headers = new Headers(response.headers);
212
+ headers.set("cache-control", "no-cache");
213
+ headers.set("etag", etag);
214
+ return new Response(html, {
215
+ headers,
216
+ status: response.status,
217
+ statusText: response.statusText
218
+ });
219
+ };
220
+ var init_pageResponseCache = () => {};
221
+
187
222
  // src/client/streamSwap.ts
188
223
  var streamSwapRuntime = () => {
189
224
  const absoluteWindow = window;
@@ -294,7 +329,7 @@ var streamSwapRuntime = () => {
294
329
  }, getStreamSwapRuntimeScript = () => `(function(){${stripFunctionWrapper(streamSwapRuntime.toString())}})();`;
295
330
 
296
331
  // src/constants.ts
297
- var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", TAILWIND_BUN_CSS_WARNING_PATTERN, BODY_SLICE_LENGTH = 2000, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, CSS_ERROR_RESOLVE_DELAY_MS = 50, CSS_MAX_CHECK_ATTEMPTS = 10, CSS_MAX_PARSE_TIMEOUT_MS = 500, CSS_SHEET_READY_TIMEOUT_MS = 100, DEFAULT_CHUNK_SIZE = 16384, DEFAULT_DEBOUNCE_MS = 15, DEFAULT_PORT = 3000, DEV_SERVER_RESTART_DEBOUNCE_MS = 100, DOM_UPDATE_DELAY_MS = 50, FILE_PROTOCOL_PREFIX_LENGTH = 7, FOCUS_ID_PREFIX_LENGTH = 3, FOCUS_IDX_PREFIX_LENGTH = 4, FOCUS_NAME_PREFIX_LENGTH = 5, ESLINT_STUDIO_DEFAULT_HOST = "eslint.absolute.localhost", ESLINT_STUDIO_DEFAULT_PORT = 4099, CONFIG_DEFAULT_HOST = "config.absolute.localhost", CONFIG_DEFAULT_PORT = 4099, HMR_UPDATE_TIMEOUT_MS = 2000, HOOK_SIGNATURE_LENGTH = 12, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_NOT_FOUND = 404, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, IMAGE_DEFAULT_DEVICE_SIZES, IMAGE_DEFAULT_IMAGE_SIZES, IMAGE_DEFAULT_QUALITY = 75, IMAGE_GLOB_SUFFIX_LENGTH = 2, INSTANCE_PROBE_TIMEOUT_MS = 250, MAX_ERROR_LENGTH = 200, MAX_RECONNECT_ATTEMPTS = 60, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, OVERLAY_FADE_DURATION_MS = 150, PING_INTERVAL_MS = 30000, LIST_LOG_TAIL_MAX_BYTES = 65536, LIST_TUI_COLUMN_GAP = 2, LIST_TUI_DEFAULT_HEIGHT = 28, LIST_TUI_DEFAULT_WIDTH = 100, LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, LIST_TUI_FOOTER_LINE_COUNT = 2, LIST_TUI_MARKER_WIDTH = 2, LIST_TUI_MIN_LOG_HEIGHT = 3, LIST_TUI_MIN_URL_WIDTH = 16, LIST_TUI_RENDER_DEBOUNCE_MS = 16, LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000, LIST_WATCH_REFRESH_MS = 1000, RAF_BATCH_COUNT = 3, RANDOM_ID_END_INDEX = 11, REBUILD_BATCH_DELAY_MS = 10, REBUILD_RELOAD_DELAY_MS = 200, RECONNECT_INITIAL_DELAY_MS = 500, RECONNECT_POLL_INTERVAL_MS = 300, REACT_STREAM_SLOT_FAST_DELAY_MS = 5, REACT_STREAM_SLOT_SLOW_DELAY_MS = 20, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, SVELTE_CSS_LOAD_TIMEOUT_MS = 500, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, WEBSOCKET_NORMAL_CLOSURE = 1000, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
332
+ var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_CODE = 27, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", TAILWIND_BUN_CSS_WARNING_PATTERN, BODY_SLICE_LENGTH = 2000, BYTES_PER_KILOBYTE = 1024, CLI_ARGS_OFFSET = 3, CSS_ERROR_RESOLVE_DELAY_MS = 50, CSS_MAX_CHECK_ATTEMPTS = 10, CSS_MAX_PARSE_TIMEOUT_MS = 500, CSS_SHEET_READY_TIMEOUT_MS = 100, DEFAULT_CHUNK_SIZE = 16384, DEFAULT_DEBOUNCE_MS = 15, DEFAULT_PORT = 3000, DEV_SERVER_RESTART_DEBOUNCE_MS = 100, DOM_UPDATE_DELAY_MS = 50, FILE_PROTOCOL_PREFIX_LENGTH = 7, FOCUS_ID_PREFIX_LENGTH = 3, FOCUS_IDX_PREFIX_LENGTH = 4, FOCUS_NAME_PREFIX_LENGTH = 5, ESLINT_STUDIO_DEFAULT_HOST = "eslint.absolute.localhost", ESLINT_STUDIO_DEFAULT_PORT = 4099, CONFIG_DEFAULT_HOST = "config.absolute.localhost", CONFIG_DEFAULT_PORT = 4099, HMR_UPDATE_TIMEOUT_MS = 2000, HOOK_SIGNATURE_LENGTH = 12, EXCLUDE_LAST_OFFSET = -1, HTTP_STATUS_OK = 200, HTTP_STATUS_BAD_REQUEST = 400, HTTP_STATUS_NOT_FOUND = 404, HOURS_IN_DAY = 24, HOURS_IN_HALF_DAY = 12, IMAGE_DEFAULT_DEVICE_SIZES, IMAGE_DEFAULT_IMAGE_SIZES, IMAGE_DEFAULT_QUALITY = 75, IMAGE_GLOB_SUFFIX_LENGTH = 2, INSTANCE_PROBE_TIMEOUT_MS = 250, MAX_ERROR_LENGTH = 200, MAX_RECONNECT_ATTEMPTS = 60, MILLISECONDS_IN_A_SECOND = 1000, MINUTES_IN_AN_HOUR = 60, SECONDS_IN_A_MINUTE = 60, MILLISECONDS_IN_A_MINUTE, MILLISECONDS_IN_A_DAY, OVERLAY_FADE_DURATION_MS = 150, PING_INTERVAL_MS = 30000, LIST_LOG_TAIL_MAX_BYTES = 65536, LIST_TUI_COLUMN_GAP = 2, LIST_TUI_DEFAULT_HEIGHT = 28, LIST_TUI_DEFAULT_WIDTH = 100, LIST_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, LIST_TUI_FOOTER_LINE_COUNT = 2, LIST_TUI_MARKER_WIDTH = 2, LIST_TUI_MIN_LOG_HEIGHT = 3, LIST_TUI_MIN_URL_WIDTH = 16, LIST_TUI_RENDER_DEBOUNCE_MS = 16, LIST_TUI_STATUS_MESSAGE_TIMEOUT_MS = 4000, LIST_WATCH_REFRESH_MS = 1000, RAF_BATCH_COUNT = 3, RANDOM_ID_END_INDEX = 11, REBUILD_BATCH_DELAY_MS = 10, REBUILD_RELOAD_DELAY_MS = 200, RECONNECT_INITIAL_DELAY_MS = 500, RECONNECT_POLL_INTERVAL_MS = 300, REACT_STREAM_SLOT_FAST_DELAY_MS = 5, REACT_STREAM_SLOT_SLOW_DELAY_MS = 20, SIGINT_EXIT_CODE = 130, SIGTERM_EXIT_CODE = 143, SVELTE_CSS_LOAD_TIMEOUT_MS = 500, TIME_PRECISION = 2, TWO_THIRDS, UNFOUND_INDEX = -1, WEBSOCKET_NORMAL_CLOSURE = 1000, DEFAULT_WEBSOCKET_IDLE_TIMEOUT_SECONDS = 240, WORKSPACE_COMMAND_ARGS_OFFSET = 3, WORKSPACE_FAILURE_LOG_PRINT_LIMIT = 30, WORKSPACE_FAILURE_RECENT_LOG_LIMIT = 60, WORKSPACE_READY_ATTEMPT_TIMEOUT_MS = 5000, WORKSPACE_READY_PROBE_INTERVAL_MS = 250, WORKSPACE_READY_TIMEOUT_MS = 30000, WORKSPACE_SHUTDOWN_TIMEOUT_MS = 1e4, WORKSPACE_TUI_DEFAULT_HEIGHT = 28, WORKSPACE_TUI_DEFAULT_WIDTH = 100, WORKSPACE_TUI_ESCAPE_SEQUENCE_TIMEOUT_MS = 30, WORKSPACE_TUI_FOOTER_LINE_COUNT = 3, WORKSPACE_TUI_MIN_LOG_HEIGHT = 3, WORKSPACE_TUI_MIN_SERVICE_NAME_WIDTH = 7, WORKSPACE_TUI_MIN_TARGET_WIDTH = 8, WORKSPACE_TUI_MIN_WRAP_WIDTH = 12, WORKSPACE_TUI_PROMPT_CURSOR_OFFSET = 3, WORKSPACE_TUI_RECENT_LOG_LIMIT = 40, WORKSPACE_TUI_RENDER_DEBOUNCE_MS = 16, WORKSPACE_TUI_STATUS_WIDTH = 10, WORKSPACE_TUI_TARGET_PADDING_WIDTH = 6, WORKSPACE_TUI_VISIBILITY_WIDTH = 8;
298
333
  var init_constants = __esm(() => {
299
334
  TAILWIND_BUN_CSS_WARNING_PATTERN = /invalid @ rule encountered: '@(theme|tailwind|source|utility|variant|custom-variant|apply|reference|plugin|config)'/;
300
335
  IMAGE_DEFAULT_DEVICE_SIZES = [
@@ -1421,9 +1456,11 @@ var setCurrentIslandManifest = (manifest) => {
1421
1456
 
1422
1457
  // src/react/pageHandler.ts
1423
1458
  init_devRouteRegistrationCallsite();
1459
+ init_pageResponseCache();
1424
1460
 
1425
1461
  // src/core/responseEnhancers.ts
1426
1462
  init_streamingSlots();
1463
+ init_pageResponseCache();
1427
1464
  var toResponse = async (responseLike) => responseLike;
1428
1465
  var cloneHeaders = (response) => {
1429
1466
  const headers = new Headers(response.headers);
@@ -1447,8 +1484,10 @@ var enhanceHtmlResponseWithStreamingSlots = (response, {
1447
1484
  runtimePlacement,
1448
1485
  runtimePreludeScript
1449
1486
  });
1487
+ const headers = cloneHeaders(response);
1488
+ headers.set(STREAMING_PAGE_HEADER, "1");
1450
1489
  return new Response(body, {
1451
- headers: cloneHeaders(response),
1490
+ headers,
1452
1491
  status: response.status,
1453
1492
  statusText: response.statusText
1454
1493
  });
@@ -1873,24 +1912,26 @@ var handleReactPageRequest = async (input) => {
1873
1912
  });
1874
1913
  }
1875
1914
  return new Response(htmlStream, {
1876
- headers: { "Content-Type": "text/html" }
1915
+ headers: streamingPageHeaders()
1877
1916
  });
1878
1917
  };
1879
- return await runWithStreamingSlotWarningScope(() => options?.collectStreamingSlots === true ? withRegisteredStreamingSlots(renderPageResponse, options) : renderPageResponse(), { handlerCallsite });
1918
+ const pageResponse = await runWithStreamingSlotWarningScope(() => options?.collectStreamingSlots === true ? withRegisteredStreamingSlots(renderPageResponse, options) : renderPageResponse(), { handlerCallsite });
1919
+ return withPageCacheHeaders(pageResponse, input.request);
1880
1920
  } catch (error) {
1881
1921
  console.error("[SSR] React render error:", error);
1882
1922
  const conventionResponse = await renderConventionError("react", pageName, error);
1883
- if (conventionResponse)
1884
- return conventionResponse;
1885
- return new Response(ssrErrorPage("react", error), {
1923
+ if (conventionResponse) {
1924
+ return withPageCacheHeaders(conventionResponse, input.request);
1925
+ }
1926
+ return withPageCacheHeaders(new Response(ssrErrorPage("react", error), {
1886
1927
  headers: { "Content-Type": "text/html" },
1887
1928
  status: 500
1888
- });
1929
+ }), input.request);
1889
1930
  }
1890
1931
  };
1891
1932
  export {
1892
1933
  handleReactPageRequest
1893
1934
  };
1894
1935
 
1895
- //# debugId=B54113AA30D1A88664756E2164756E21
1936
+ //# debugId=45B8EFBDB8F01BB164756E2164756E21
1896
1937
  //# sourceMappingURL=server.js.map