@absolutejs/absolute 0.19.0-beta.703 → 0.19.0-beta.705

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 (48) hide show
  1. package/dist/angular/components/constants.js +21 -0
  2. package/dist/angular/index.js +53 -73
  3. package/dist/angular/index.js.map +9 -9
  4. package/dist/angular/server.js +52 -72
  5. package/dist/angular/server.js.map +9 -9
  6. package/dist/build.js +8 -7
  7. package/dist/build.js.map +7 -7
  8. package/dist/cli/index.js +320 -284
  9. package/dist/client/index.js +4 -3
  10. package/dist/client/index.js.map +3 -3
  11. package/dist/index.js +96 -63
  12. package/dist/index.js.map +15 -15
  13. package/dist/islands/index.js +5 -4
  14. package/dist/islands/index.js.map +5 -5
  15. package/dist/react/index.js +49 -69
  16. package/dist/react/index.js.map +9 -9
  17. package/dist/react/jsxDevRuntimeCompat.js +1 -6
  18. package/dist/react/jsxDevRuntimeCompat.js.map +3 -3
  19. package/dist/react/server.js +43 -64
  20. package/dist/react/server.js.map +7 -7
  21. package/dist/src/angular/components/constants.d.ts +21 -0
  22. package/dist/src/angular/pageHandler.d.ts +6 -1
  23. package/dist/src/angular/ssrRender.d.ts +1 -1
  24. package/dist/src/constants.d.ts +21 -0
  25. package/dist/src/core/ssrCache.d.ts +1 -1
  26. package/dist/src/core/wrapPageHandlerWithStreamingSlots.d.ts +1 -1
  27. package/dist/src/react/jsxDevRuntimeCompat.d.ts +3 -6
  28. package/dist/src/react/pageHandler.d.ts +2 -1
  29. package/dist/src/svelte/pageHandler.d.ts +2 -2
  30. package/dist/src/utils/defineConfig.d.ts +2 -2
  31. package/dist/src/utils/loadConfig.d.ts +38 -2
  32. package/dist/src/vue/components/Image.d.ts +2 -2
  33. package/dist/src/vue/components/index.d.ts +1 -1
  34. package/dist/src/vue/index.d.ts +1 -1
  35. package/dist/src/vue/pageHandler.d.ts +2 -1
  36. package/dist/svelte/index.js +34 -49
  37. package/dist/svelte/index.js.map +9 -9
  38. package/dist/svelte/server.js +31 -47
  39. package/dist/svelte/server.js.map +8 -8
  40. package/dist/vue/components/Image.js +18 -18
  41. package/dist/vue/components/Image.js.map +3 -3
  42. package/dist/vue/components/index.js +77 -62
  43. package/dist/vue/components/index.js.map +5 -5
  44. package/dist/vue/index.js +119 -133
  45. package/dist/vue/index.js.map +12 -12
  46. package/dist/vue/server.js +40 -70
  47. package/dist/vue/server.js.map +7 -7
  48. package/package.json +48 -48
@@ -79,7 +79,7 @@ var __esm = (fn, res) => () => (fn && (res = fn(fn = 0)), res);
79
79
  var __require = import.meta.require;
80
80
 
81
81
  // src/constants.ts
82
- var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", 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, 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, 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, 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;
82
+ var ANGULAR_INIT_TIMEOUT_MS = 500, ANSI_ESCAPE_LENGTH = 3, ASCII_SPACE = 32, BASE_36_RADIX = 36, BUN_BUILD_WARNING_SUPPRESSION = "wildcard sideEffects are not supported yet", 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, 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, 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, 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;
83
83
  var init_constants = __esm(() => {
84
84
  MILLISECONDS_IN_A_MINUTE = MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE;
85
85
  MILLISECONDS_IN_A_DAY = MILLISECONDS_IN_A_SECOND * SECONDS_IN_A_MINUTE * MINUTES_IN_AN_HOUR * HOURS_IN_DAY;
@@ -359,7 +359,7 @@ var routePropsCache, cacheRouteData = (pagePath, data) => {
359
359
  Sanitizer: core.Sanitizer,
360
360
  SecurityContext: core.SecurityContext
361
361
  };
362
- }, buildProviders = (deps, sanitizer, maybeProps, tokenMap) => {
362
+ }, buildProviders = (deps, sanitizer, maybeProps, tokenMap, userProviders = []) => {
363
363
  const providers = [
364
364
  deps.provideServerRendering(),
365
365
  deps.provideClientHydration(),
@@ -369,7 +369,8 @@ var routePropsCache, cacheRouteData = (pagePath, data) => {
369
369
  provide: deps.DomSanitizer,
370
370
  useValue: sanitizer
371
371
  },
372
- { provide: deps.Sanitizer, useValue: sanitizer }
372
+ { provide: deps.Sanitizer, useValue: sanitizer },
373
+ ...userProviders
373
374
  ];
374
375
  if (!maybeProps) {
375
376
  return providers;
@@ -1652,7 +1653,7 @@ __export(exports_devRouteRegistrationCallsite, {
1652
1653
  });
1653
1654
  import { AsyncLocalStorage } from "async_hooks";
1654
1655
  import { Elysia } from "elysia";
1655
- var ROUTE_CALLSITE_STORAGE_KEY, ROUTE_CALLSITE_PATCHED_KEY, ROUTE_METHOD_NAMES, isObjectRecord3 = (value) => Boolean(value) && typeof value === "object", isAsyncLocalStorage2 = (value) => isObjectRecord3(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function", getRouteCallsiteStorage = () => {
1656
+ var ROUTE_CALLSITE_STORAGE_KEY, ROUTE_CALLSITE_PATCHED_KEY, ROUTE_METHOD_NAMES, isObjectRecord3 = (value) => Boolean(value) && typeof value === "object", isAsyncLocalStorage2 = (value) => isObjectRecord3(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function", isRouteMethod = (value) => typeof value === "function", getRouteCallsiteStorage = () => {
1656
1657
  const value = Reflect.get(globalThis, ROUTE_CALLSITE_STORAGE_KEY);
1657
1658
  if (value === null || typeof value === "undefined") {
1658
1659
  return;
@@ -1666,19 +1667,10 @@ var ROUTE_CALLSITE_STORAGE_KEY, ROUTE_CALLSITE_PATCHED_KEY, ROUTE_METHOD_NAMES,
1666
1667
  const storage = new AsyncLocalStorage;
1667
1668
  Reflect.set(globalThis, ROUTE_CALLSITE_STORAGE_KEY, storage);
1668
1669
  return storage;
1669
- }, normalizeCallsitePath = (value) => value.replace(`${process.cwd()}/`, "").replace(process.cwd(), "").replace(/^\.\/+/, ""), extractRouteRegistrationCallsite = (stack) => {
1670
- const frames = stack.split(`
1671
- `).slice(1).map((line) => line.trim());
1672
- for (const frame of frames) {
1673
- if (frame.includes("/node_modules/") || frame.includes("/dist/") || frame.includes("/src/core/devRouteRegistrationCallsite.")) {
1674
- continue;
1675
- }
1676
- const locationMatch = frame.match(/\((\/[^)]+:\d+:\d+)\)$/) ?? frame.match(/at (\/[^ ]+:\d+:\d+)$/);
1677
- if (locationMatch?.[1]) {
1678
- return normalizeCallsitePath(locationMatch[1]);
1679
- }
1680
- }
1681
- return;
1670
+ }, normalizeCallsitePath = (value) => value.replace(`${process.cwd()}/`, "").replace(process.cwd(), "").replace(/^\.\/+/, ""), shouldIgnoreRouteCallsiteFrame = (frame) => frame.includes("/node_modules/") || frame.includes("/dist/") || frame.includes("/src/core/devRouteRegistrationCallsite."), getRouteCallsiteLocation = (frame) => frame.match(/\((\/[^)]+:\d+:\d+)\)$/)?.[1] ?? frame.match(/at (\/[^ ]+:\d+:\d+)$/)?.[1], extractRouteRegistrationCallsite = (stack) => {
1671
+ const location = stack.split(`
1672
+ `).slice(1).map((line) => line.trim()).filter((frame) => !shouldIgnoreRouteCallsiteFrame(frame)).map((frame) => getRouteCallsiteLocation(frame)).find((frameLocation) => frameLocation !== undefined);
1673
+ return location ? normalizeCallsitePath(location) : undefined;
1682
1674
  }, captureRouteRegistrationCallsite = () => {
1683
1675
  const { stack } = new Error;
1684
1676
  if (!stack) {
@@ -1690,29 +1682,29 @@ var ROUTE_CALLSITE_STORAGE_KEY, ROUTE_CALLSITE_PATCHED_KEY, ROUTE_METHOD_NAMES,
1690
1682
  return handler;
1691
1683
  }
1692
1684
  const storage = ensureRouteCallsiteStorage();
1685
+ const routeHandler = handler;
1693
1686
  return function wrappedRouteHandler(...args) {
1694
- return storage.run({ callsite }, () => Reflect.apply(handler, this, args));
1687
+ return storage.run({ callsite }, () => Reflect.apply(routeHandler, this, args));
1695
1688
  };
1689
+ }, createPatchedRouteMethod = (originalMethod) => function patchedRouteMethod(path, handler, ...rest) {
1690
+ const callsite = captureRouteRegistrationCallsite();
1691
+ return Reflect.apply(originalMethod, this, [
1692
+ path,
1693
+ wrapRouteHandlerWithCallsite(handler, callsite),
1694
+ ...rest
1695
+ ]);
1696
1696
  }, getCurrentRouteRegistrationCallsite = () => getRouteCallsiteStorage()?.getStore()?.callsite, patchElysiaRouteRegistrationCallsites = () => {
1697
1697
  if (false) {}
1698
1698
  if (Reflect.get(globalThis, ROUTE_CALLSITE_PATCHED_KEY) === true) {
1699
1699
  return;
1700
1700
  }
1701
- const prototype = Elysia.prototype;
1702
- for (const methodName of ROUTE_METHOD_NAMES) {
1703
- const originalMethod = prototype[methodName];
1704
- if (typeof originalMethod !== "function") {
1705
- continue;
1706
- }
1707
- prototype[methodName] = function patchedRouteMethod(path, handler, ...rest) {
1708
- const callsite = captureRouteRegistrationCallsite();
1709
- return Reflect.apply(originalMethod, this, [
1710
- path,
1711
- wrapRouteHandlerWithCallsite(handler, callsite),
1712
- ...rest
1713
- ]);
1714
- };
1715
- }
1701
+ const { prototype } = Elysia;
1702
+ ROUTE_METHOD_NAMES.forEach((methodName) => {
1703
+ const originalMethod = Reflect.get(prototype, methodName);
1704
+ if (!isRouteMethod(originalMethod))
1705
+ return;
1706
+ Reflect.set(prototype, methodName, createPatchedRouteMethod(originalMethod));
1707
+ });
1716
1708
  Reflect.set(globalThis, ROUTE_CALLSITE_PATCHED_KEY, true);
1717
1709
  };
1718
1710
  var init_devRouteRegistrationCallsite = __esm(() => {
@@ -2549,9 +2541,9 @@ var init_logger = __esm(() => {
2549
2541
  });
2550
2542
 
2551
2543
  // src/core/ssrCache.ts
2552
- var dirtyFrameworks, markSsrCacheDirty = (framework) => {
2544
+ var dirtyFrameworks, isSsrCacheDirty = (framework) => dirtyFrameworks.has(framework), markSsrCacheDirty = (framework) => {
2553
2545
  dirtyFrameworks.add(framework);
2554
- }, isSsrCacheDirty = (framework) => dirtyFrameworks.has(framework);
2546
+ };
2555
2547
  var init_ssrCache = __esm(() => {
2556
2548
  dirtyFrameworks = new Set;
2557
2549
  });
@@ -4810,19 +4802,12 @@ var formatWarningCallsite = (callsite) => {
4810
4802
  }
4811
4803
  return `\x1B[36m${match[1]}\x1B[33m${match[2]}\x1B[0m`;
4812
4804
  };
4805
+ var shouldIgnoreWarningFrame = (frame) => frame.includes("/node_modules/") || frame.includes("/dist/") || frame.includes("/src/react/pageHandler.") || frame.includes("/src/vue/pageHandler.") || frame.includes("/src/svelte/pageHandler.") || frame.includes("/src/angular/pageHandler.") || frame.includes("/src/core/streamingSlotWarningScope.");
4806
+ var getWarningLocation = (frame) => frame.match(/\((\/[^)]+:\d+:\d+)\)$/)?.[1] ?? frame.match(/at (\/[^ ]+:\d+:\d+)$/)?.[1];
4813
4807
  var extractCallsiteFromStack = (stack) => {
4814
- const frames = stack.split(`
4815
- `).slice(1).map((line) => line.trim());
4816
- for (const frame of frames) {
4817
- if (frame.includes("/node_modules/") || frame.includes("/dist/") || frame.includes("/src/react/pageHandler.") || frame.includes("/src/vue/pageHandler.") || frame.includes("/src/svelte/pageHandler.") || frame.includes("/src/angular/pageHandler.") || frame.includes("/src/core/streamingSlotWarningScope.")) {
4818
- continue;
4819
- }
4820
- const locationMatch = frame.match(/\((\/[^)]+:\d+:\d+)\)$/) ?? frame.match(/at (\/[^ ]+:\d+:\d+)$/);
4821
- if (locationMatch?.[1]) {
4822
- return normalizeCallsitePath2(locationMatch[1]);
4823
- }
4824
- }
4825
- return;
4808
+ const location = stack.split(`
4809
+ `).slice(1).map((line) => line.trim()).filter((frame) => !shouldIgnoreWarningFrame(frame)).map((frame) => getWarningLocation(frame)).find((frameLocation) => frameLocation !== undefined);
4810
+ return location ? normalizeCallsitePath2(location) : undefined;
4826
4811
  };
4827
4812
  var buildMissingCollectorWarning = (primitiveName, handlerCallsite) => `${primitiveName} rendered during SSR without streaming slot collection enabled. Add { collectStreamingSlots: true } to this page handler to enable out-of-order streaming for this route.${handlerCallsite ? ` Update ${formatWarningCallsite(handlerCallsite)}.` : ""}`;
4828
4813
  setStreamingSlotWarningController({
@@ -4851,6 +4836,13 @@ init_ssrRender();
4851
4836
  var lastSelector = "angular-page";
4852
4837
  var isRecord5 = (value) => typeof value === "object" && value !== null;
4853
4838
  var isAngularComponent = (value) => typeof value === "function";
4839
+ var resolvePageComponent = (pageModule) => {
4840
+ if (isAngularComponent(pageModule.default)) {
4841
+ return pageModule.default;
4842
+ }
4843
+ return Object.values(pageModule).find((value) => isAngularComponent(value));
4844
+ };
4845
+ var isAngularPageRequestInput = (value) => typeof value === "object" && value !== null && ("pagePath" in value) && ("indexPath" in value);
4854
4846
  var compilerImportPromise = null;
4855
4847
  var ensureAngularCompiler = () => {
4856
4848
  if (!compilerImportPromise) {
@@ -4894,29 +4886,17 @@ var resolveRuntimeAngularModulePath = async (pagePath) => {
4894
4886
  };
4895
4887
  var angularSsrContext = new AsyncLocalStorage3;
4896
4888
  setSsrContextGetter(() => angularSsrContext.getStore());
4897
- var handleAngularPageRequest = async (PageOrInput, pagePath, indexPath, headTag = "<head></head>", ...args) => {
4889
+ async function handleAngularPageRequest(PageOrInput, pagePath, indexPath, headTag = "<head></head>", ...args) {
4898
4890
  const requestId = `angular_${Date.now()}_${Math.random().toString(BASE_36_RADIX).substring(2, RANDOM_ID_END_INDEX)}`;
4899
4891
  return angularSsrContext.run(requestId, async () => {
4900
4892
  await ensureAngularCompiler();
4901
- const {
4902
- headTag: resolvedHeadTag,
4903
- indexPath: resolvedIndexPath,
4904
- options,
4905
- pagePath: resolvedPagePath,
4906
- props: maybeProps
4907
- } = typeof PageOrInput === "object" && PageOrInput !== null && "pagePath" in PageOrInput && "indexPath" in PageOrInput ? {
4908
- headTag: PageOrInput.headTag ?? "<head></head>",
4909
- indexPath: PageOrInput.indexPath,
4910
- options: PageOrInput,
4911
- pagePath: PageOrInput.pagePath,
4912
- props: PageOrInput.props
4913
- } : {
4914
- headTag,
4915
- indexPath: indexPath ?? "",
4916
- options: args[1],
4917
- pagePath: pagePath ?? "",
4918
- props: args[0]
4919
- };
4893
+ const isInput = isAngularPageRequestInput(PageOrInput);
4894
+ const resolvedHeadTag = isInput ? PageOrInput.headTag ?? "<head></head>" : headTag;
4895
+ const resolvedIndexPath = isInput ? PageOrInput.indexPath : indexPath ?? "";
4896
+ const options = isInput ? PageOrInput : args[1];
4897
+ const resolvedPagePath = isInput ? PageOrInput.pagePath : pagePath ?? "";
4898
+ const maybeProps = isInput ? PageOrInput.props : args[0];
4899
+ const userProviders = isInput ? PageOrInput.providers : undefined;
4920
4900
  cacheRouteData(resolvedPagePath, {
4921
4901
  headTag: resolvedHeadTag,
4922
4902
  props: maybeProps
@@ -4939,9 +4919,9 @@ var handleAngularPageRequest = async (PageOrInput, pagePath, indexPath, headTag
4939
4919
  if (!pageModule) {
4940
4920
  throw new Error(`Invalid Angular page module: ${resolvedPagePath}`);
4941
4921
  }
4942
- const PageComponent = pageModule.default;
4922
+ const PageComponent = resolvePageComponent(pageModule);
4943
4923
  if (!isAngularComponent(PageComponent)) {
4944
- throw new Error(`Angular page module must export a component by default: ${resolvedPagePath}`);
4924
+ throw new Error(`Angular page module must export an Angular component: ${resolvedPagePath}`);
4945
4925
  }
4946
4926
  const hasIslands = typeof pageModule.__ABSOLUTE_PAGE_HAS_ISLANDS__ === "boolean" ? pageModule.__ABSOLUTE_PAGE_HAS_ISLANDS__ : false;
4947
4927
  const ssrResult = await loadSsrDeps(runtimePagePath);
@@ -4953,7 +4933,7 @@ var handleAngularPageRequest = async (PageOrInput, pagePath, indexPath, headTag
4953
4933
  if (ssrResult?.core)
4954
4934
  resetSsrSanitizer();
4955
4935
  const sanitizer = getSsrSanitizer(deps);
4956
- const providers = buildProviders(deps, sanitizer, maybeProps, tokenMap);
4936
+ const providers = buildProviders(deps, sanitizer, maybeProps, tokenMap, userProviders);
4957
4937
  const rawHtml = await renderAngularApp(deps, PageComponent, providers, htmlString);
4958
4938
  const shouldProcessIslands = hasIslands || rawHtml.includes("<absolute-island");
4959
4939
  const htmlWithLoweredIslands = shouldProcessIslands ? await lowerAngularServerIslands(rawHtml) : rawHtml;
@@ -4975,10 +4955,10 @@ var handleAngularPageRequest = async (PageOrInput, pagePath, indexPath, headTag
4975
4955
  });
4976
4956
  }
4977
4957
  });
4978
- };
4958
+ }
4979
4959
  export {
4980
4960
  handleAngularPageRequest
4981
4961
  };
4982
4962
 
4983
- //# debugId=1538E35073996FC164756E2164756E21
4963
+ //# debugId=2307BCABE12ED91864756E2164756E21
4984
4964
  //# sourceMappingURL=server.js.map