{"version":3,"file":"_server-chunk.mjs","sources":[".../third_party/domino/bundled-domino.mjs'; // 3p-only\n\nexport function setDomTypes() {\n  // Make all Domino types available in the global env.\n  // NB: Any changes here should also be done in `packages/platform-server/init/src/shims.ts`.\n  Object.assign(globalThis, domino.impl);\n  (globalThis as any)['KeyboardEvent'] = domino.impl.Event;\n}\n\n/**\n * Parses a document string to a Document object.\n */\nexport function parseDocument(html: string, url = '/') {\n  let window = domino.createWindow(html, url);\n  let doc = window.document;\n  return doc;\n}\n\n/**\n * Serializes a document to string.\n */\nexport function serializeDocument(doc: Document): string {\n  return (doc as any).serialize();\n}\n\n/**\n * DOM Adapter for the server platform based on https://github.com/fgnass/domino.\n */\nexport class DominoAdapter extends BrowserDomAdapter {\n  static override makeCurrent() {\n    setDomTypes();\n    setRootDomAdapter(new DominoAdapter());\n  }\n\n  override readonly supportsDOMEvents = false;\n  private static defaultDoc: Document;\n\n  override createHtmlDocument(): Document {\n    return parseDocument('<html><head><title>fakeTitle</title></head><body></body></html>');\n  }\n\n  override getDefaultDocument(): Document {\n    if (!DominoAdapter.defaultDoc) {\n      DominoAdapter.defaultDoc = domino.createDocument();\n    }\n    return DominoAdapter.defaultDoc;\n  }\n\n  override isElementNode(node: any): boolean {\n    return node ? node.nodeType === DominoAdapter.defaultDoc.ELEMENT_NODE : false;\n  }\n  override isShadowRoot(node: any): boolean {\n    return node.shadowRoot == node;\n  }\n\n  /** @deprecated No longer being used in Ivy code. To be removed in version 14. */\n  override getGlobalEventTarget(doc: Document, target: string): EventTarget | null {\n    if (target === 'window') {\n      return doc.defaultView;\n    }\n    if (target === 'document') {\n      return doc;\n    }\n    if (target === 'body') {\n      return doc.body;\n    }\n    return null;\n  }\n\n  override getBaseHref(doc: Document): string {\n    const length = doc.head.children.length;\n\n    // The `<base>` can only be a direct child of `<head>` so we can save some\n    // execution time by looking through them directly instead of querying for it.\n    // See: https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/base\n    // Note that we can't cache the `href` value itself, because this method gets called with a\n    // different document every time which means that in theory the value can be different too.\n    for (let i = 0; i < length; i++) {\n      const child = doc.head.children[i];\n\n      // Tag names are always uppercase for HTML nodes.\n      if (child.tagName === 'BASE') {\n        // TODO(alxhub): Need relative path logic from BrowserDomAdapter here?\n        return child.getAttribute('href') || '';\n      }\n    }\n\n    return '';\n  }\n\n  override dispatchEvent(el: Node, evt: any) {\n    el.dispatchEvent(evt);\n\n    // Dispatch the event to the window also.\n    const doc = el.ownerDocument || el;\n    const win = (doc as any).defaultView;\n    if (win) {\n      win.dispatchEvent(evt);\n    }\n  }\n\n  override getUserAgent(): string {\n    return 'Fake user agent';\n  }\n\n  override getCookie(name: string): string {\n    throw new RuntimeError(\n      RuntimeErrorCode.GET_COOKIE_NOT_IMPLEMENTED,\n      (typeof ngDevMode === 'undefined' || ngDevMode) && 'getCookie has not been implemented',\n    );\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {InjectionToken} from '@angular/core';\n\n/**\n * Config object passed to initialize the platform.\n *\n * @publicApi\n */\nexport interface PlatformConfig {\n  /**\n   * The initial DOM to use to bootstrap the server application.\n   * @default create a new DOM using Domino\n   */\n  document?: string;\n  /**\n   * The URL for the current application state. This is used for initializing\n   * the platform's location. `protocol`, `hostname`, and `port`.\n   */\n  url?: string;\n}\n\n/**\n * The DI token for setting the initial config for the platform.\n *\n * @publicApi\n */\nexport const INITIAL_CONFIG = new InjectionToken<PlatformConfig>('Server.INITIAL_CONFIG');\n\n/**\n * A function that will be executed when calling `renderApplication` or\n * `renderModule` just before current platform state is rendered to string.\n *\n * @publicApi\n */\nexport const BEFORE_APP_SERIALIZED = new InjectionToken<ReadonlyArray<() => void | Promise<void>>>(\n  'Server.RENDER_MODULE_HOOK',\n);\n\nexport const ENABLE_DOM_EMULATION = new InjectionToken<boolean>('ENABLE_DOM_EMULATION');\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n  inject,\n  Inject,\n  Injectable,\n  Injector,\n  ɵstartMeasuring as startMeasuring,\n  ɵstopMeasuring as stopMeasuring,\n  ɵRuntimeError as RuntimeError,\n} from '@angular/core';\n\nimport {RuntimeErrorCode} from './errors';\nimport {serializeDocument} from './domino_adapter';\nimport {ENABLE_DOM_EMULATION} from './tokens';\n\n/**\n * Representation of the current platform state.\n *\n * @publicApi\n */\n@Injectable()\nexport class PlatformState {\n  /* @internal */\n  _enableDomEmulation = enableDomEmulation(inject(Injector));\n\n  constructor(@Inject(DOCUMENT) private _doc: any) {}\n\n  /**\n   * Renders the current state of the platform to string.\n   */\n  renderToString(): string {\n    if (ngDevMode && !this._enableDomEmulation && !window?.document) {\n      throw new RuntimeError(\n        RuntimeErrorCode.DISABLED_DOM_EMULATION_IN_NON_BROWSER,\n        (typeof ngDevMode === 'undefined' || ngDevMode) &&\n          'Disabled DOM emulation should only run in browser environments',\n      );\n    }\n\n    const measuringLabel = 'renderToString';\n    startMeasuring(measuringLabel);\n    const rendered = this._enableDomEmulation\n      ? serializeDocument(this._doc)\n      : // In the case we run/test the platform-server in a browser environment\n        this._doc.documentElement.outerHTML;\n    stopMeasuring(measuringLabel);\n    return rendered;\n  }\n\n  /**\n   * Returns the current DOM state.\n   */\n  getDocument(): any {\n    return this._doc;\n  }\n}\n\nexport function enableDomEmulation(injector: Injector): boolean {\n  return injector.get(ENABLE_DOM_EMULATION, true);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {ɵRuntimeError as RuntimeError} from '@angular/core';\n\nimport {RuntimeErrorCode} from './errors';\n\n/**\n * Matches http: or https:\n */\nconst HTTP_OR_HTTPS_PROTOCOL_REGEX = /^https?:/i;\n\n/**\n * Options for {@link resolveUrl}.\n */\nexport interface ResolveUrlOptions {\n  /**\n   * Allow protocol-relative URLs (e.g. `//example.com`).\n   * @default false\n   */\n  allowProtocolRelative?: boolean;\n  /**\n   * Allow origin changes.\n   * @default true\n   */\n  allowOriginChange?: boolean;\n}\n\n/**\n * Resolves a URL string.\n *\n * If an origin is provided, the URL is resolved against it. Otherwise, the URL is parsed as-is.\n * @param urlStr The URL to resolve.\n * @param origin The origin to resolve the URL against.\n * @param options Options for resolving the URL.\n * @returns A resolved URL object.\n */\nexport function resolveUrl(urlStr: string | undefined): URL | null;\nexport function resolveUrl(\n  urlStr: string | undefined,\n  origin: string | URL,\n  options?: ResolveUrlOptions,\n): URL;\nexport function resolveUrl(\n  urlStr: string | undefined,\n  origin?: string | URL,\n  options: ResolveUrlOptions = {},\n): URL | null {\n  const originUrl = typeof origin === 'string' ? new URL('/', origin) : origin;\n\n  if (!urlStr) {\n    return originUrl || null;\n  }\n\n  urlStr = urlStr.trim();\n\n  // Fast-path: if the URL is a valid, standard absolute URL, parse and return it immediately.\n  let resolved: URL | undefined;\n  try {\n    resolved = new URL(urlStr);\n  } catch {}\n  const {allowProtocolRelative = false, allowOriginChange = true} = options;\n\n  if (resolved) {\n    if (originUrl && !isSafeOriginChange(resolved, originUrl, urlStr, allowOriginChange)) {\n      throwSuspiciousUrlError(urlStr);\n    }\n\n    return resolved;\n  }\n\n  // We identify and throw on malformed absolute URLs (like double port).\n  // Per the WHATWG URL standard, parsing an input starting with a scheme (like 'http:') against\n  // a standard base (like 'http://fake') ignores the base argument and parses strictly as an\n  // absolute URL. Since it is malformed, the native URL constructor will throw a validation\n  // error. Standard relative/protocol-relative paths parse successfully, allowing the flow to continue.\n  if (!URL.canParse(urlStr, 'http://fake')) {\n    throw new RuntimeError(\n      RuntimeErrorCode.INVALID_URL,\n      typeof ngDevMode === 'undefined' || ngDevMode ? `Invalid URL: ${urlStr}` : urlStr,\n    );\n  }\n\n  if (!originUrl) {\n    return null;\n  }\n\n  // Check if we have a legitimate protocol-relative URL (starts with '//' and not a duplicate/backslash bypass)\n  // and we are configured to allow and preserve standard cross-origin protocol-relative requests.\n  if (urlStr.startsWith('//')) {\n    if (!allowProtocolRelative) {\n      throw new RuntimeError(\n        RuntimeErrorCode.PROTOCOL_RELATIVE_URL_NOT_ALLOWED,\n        typeof ngDevMode === 'undefined' || ngDevMode\n          ? `Protocol relative URLs are not allowed in this context. URL: ${urlStr}`\n          : urlStr,\n      );\n    }\n\n    return new URL(urlStr, origin);\n  }\n\n  resolved = new URL(urlStr, origin);\n\n  if (!isSafeOriginChange(resolved, originUrl, urlStr, allowOriginChange)) {\n    throwSuspiciousUrlError(urlStr);\n  }\n\n  return resolved;\n}\n\n/**\n * Throws a suspicious URL error indicating a security bypass attempt.\n */\nfunction throwSuspiciousUrlError(urlStr: string): never {\n  throw new RuntimeError(\n    RuntimeErrorCode.SUSPICIOUS_URL_CHANGE_ORIGIN,\n    typeof ngDevMode === 'undefined' || ngDevMode\n      ? `URL ${urlStr} changed origin unexpectedly. This is suspicious and may indicate a security bypass attempt.`\n      : urlStr,\n  );\n}\n\n/**\n * Checks if the origin has changed in a safe way.\n *\n * @param resolved The resolved URL.\n * @param origin The origin URL.\n * @param urlStr The URL string.\n * @param allowOriginChange Whether to allow origin changes.\n * @returns True if the origin has changed in a safe way, false otherwise.\n */\nfunction isSafeOriginChange(\n  resolved: URL,\n  origin: URL,\n  urlStr: string,\n  allowOriginChange: boolean,\n): boolean {\n  if (origin.origin === resolved.origin) {\n    return true;\n  }\n\n  if (!allowOriginChange) {\n    return false;\n  }\n\n  return HTTP_OR_HTTPS_PROTOCOL_REGEX.test(urlStr);\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {PlatformLocation, XhrFactory} from '@angular/common';\nimport {\n  ɵHTTP_ROOT_INTERCEPTOR_FNS as HTTP_ROOT_INTERCEPTOR_FNS,\n  HttpEvent,\n  HttpHandlerFn,\n  HttpRequest,\n} from '@angular/common/http';\nimport {inject, Injectable, Provider, ɵRuntimeError as RuntimeError} from '@angular/core';\nimport {Observable} from 'rxjs';\n\nimport {RuntimeErrorCode} from './errors';\nimport {resolveUrl} from './url';\n\n@Injectable()\n/**\n * @deprecated Use the HttpClient fetch backend instead. Intent to remove in Angular 23.\n * XHR support in `@angular/platform-server` is deprecated because the underlying `xhr2`\n * library does not safely handle redirects (e.g. it can forward `Authorization` headers\n * on cross-origin redirects and is susceptible to denial-of-service (DoS) via redirect loops).\n */\nexport class ServerXhr implements XhrFactory {\n  private xhrImpl: typeof import('xhr2') | undefined;\n\n  // The `xhr2` dependency has a side-effect of accessing and modifying a\n  // global scope. Loading `xhr2` dynamically allows us to delay the loading\n  // and start the process once the global scope is established by the underlying\n  // server platform (via shims, etc).\n  private async ɵloadImpl(): Promise<void> {\n    if (!this.xhrImpl) {\n      if (typeof ngDevMode === 'undefined' || ngDevMode) {\n        console.warn(\n          'XHR support in `@angular/platform-server` is deprecated and will be removed ' +\n            'in Angular 23. It has known security and performance issues in server ' +\n            'environments, such as forwarding `Authorization` headers on cross-origin ' +\n            'redirects and susceptibility to denial-of-service (DoS) via redirect loops. ' +\n            'Please use the HttpClient fetch backend instead, which is the default since Angular 22.',\n        );\n      }\n\n      const {default: xhr} = await import('xhr2');\n      this.xhrImpl = xhr;\n    }\n  }\n\n  build(): XMLHttpRequest {\n    const impl = this.xhrImpl;\n    if (!impl) {\n      throw new RuntimeError(\n        RuntimeErrorCode.XHR_NOT_LOADED,\n        (typeof ngDevMode === 'undefined' || ngDevMode) &&\n          'Unexpected state in ServerXhr: XHR implementation is not loaded.',\n      );\n    }\n\n    return new impl.XMLHttpRequest();\n  }\n}\n\n/**\n * Regex to match a URL schema.\n */\nconst URL_SCHEMA_REGEXP = /^(?:[a-zA-Z][a-zA-Z0-9+\\-.]*:)/;\n\nfunction relativeUrlsTransformerInterceptorFn(\n  request: HttpRequest<unknown>,\n  next: HttpHandlerFn,\n): Observable<HttpEvent<unknown>> {\n  const trimmedUrl = request.url.trim();\n  if (URL_SCHEMA_REGEXP.test(trimmedUrl)) {\n    // URLs with a schema should be left unchanged.\n    return next(request);\n  }\n\n  const platformLocation = inject(PlatformLocation);\n  const {href, protocol, hostname, port} = platformLocation;\n  if (!protocol.startsWith('http')) {\n    return next(request);\n  }\n\n  let urlPrefix = `${protocol}//${hostname}`;\n  if (port) {\n    urlPrefix += `:${port}`;\n  }\n\n  const baseHref = platformLocation.getBaseHrefFromDOM() || href;\n  const baseUrl = new URL(baseHref, urlPrefix);\n\n  const parsedUrl = resolveUrl(request.url, baseUrl, {\n    allowProtocolRelative: true,\n  });\n\n  return next(request.clone({url: parsedUrl.toString()}));\n}\n\nexport const SERVER_HTTP_PROVIDERS: Provider[] = [\n  {provide: XhrFactory, useClass: ServerXhr},\n  {\n    provide: HTTP_ROOT_INTERCEPTOR_FNS,\n    useValue: relativeUrlsTransformerInterceptorFn,\n    multi: true,\n  },\n];\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  DOCUMENT,\n  LocationChangeEvent,\n  LocationChangeListener,\n  PlatformLocation,\n  ɵgetDOM as getDOM,\n} from '@angular/common';\nimport {inject, Injectable, ɵWritable as Writable} from '@angular/core';\nimport {Subject} from 'rxjs';\n\nimport {INITIAL_CONFIG} from './tokens';\nimport {resolveUrl} from './url';\n\n/**\n * Server-side implementation of URL state. Implements `pathname`, `search`, and `hash`\n * but not the state stack.\n */\n@Injectable()\nexport class ServerPlatformLocation implements PlatformLocation {\n  public readonly href: string = '/';\n  public readonly hostname: string = '/';\n  public readonly protocol: string = '/';\n  public readonly port: string = '/';\n  public readonly pathname: string = '/';\n  public readonly search: string = '';\n  public readonly hash: string = '';\n  private _hashUpdate = new Subject<LocationChangeEvent>();\n  private readonly _doc = inject(DOCUMENT);\n  private readonly origin = this._doc.location.origin;\n\n  constructor() {\n    const config = inject(INITIAL_CONFIG, {optional: true});\n    if (!config) {\n      return;\n    }\n    if (config.url) {\n      const {protocol, hostname, port, pathname, search, hash, href, origin} = resolveUrl(\n        config.url,\n        this.origin,\n      );\n      this.protocol = protocol;\n      this.hostname = hostname;\n      this.port = port;\n      this.pathname = pathname;\n      this.search = search;\n      this.hash = hash;\n      this.href = href;\n      this.origin = origin;\n    }\n  }\n\n  getBaseHrefFromDOM(): string {\n    return getDOM().getBaseHref(this._doc)!;\n  }\n\n  onPopState(fn: LocationChangeListener): VoidFunction {\n    // No-op: a state stack is not implemented, so\n    // no events will ever come.\n    return () => {};\n  }\n\n  onHashChange(fn: LocationChangeListener): VoidFunction {\n    const subscription = this._hashUpdate.subscribe(fn);\n    return () => subscription.unsubscribe();\n  }\n\n  get url(): string {\n    return `${this.pathname}${this.search}${this.hash}`;\n  }\n\n  private setHash(value: string, oldUrl: string) {\n    if (this.hash === value) {\n      // Don't fire events if the hash has not changed.\n      return;\n    }\n    (this as Writable<this>).hash = value;\n    const newUrl = this.url;\n    queueMicrotask(() =>\n      this._hashUpdate.next({\n        type: 'hashchange',\n        state: null,\n        oldUrl,\n        newUrl,\n      } as LocationChangeEvent),\n    );\n  }\n\n  replaceState(state: any, title: string, newUrl: string): void {\n    const oldUrl = this.url;\n    const {pathname, search, hash, href, protocol} = resolveUrl(newUrl, this.origin, {\n      allowOriginChange: false,\n    });\n    const writableThis = this as Writable<this>;\n    writableThis.pathname = pathname;\n    writableThis.search = search;\n    writableThis.href = href;\n    writableThis.protocol = protocol;\n    this.setHash(hash, oldUrl);\n  }\n\n  pushState(state: any, title: string, newUrl: string): void {\n    this.replaceState(state, title, newUrl);\n  }\n\n  forward(): void {\n    throw new Error('Not implemented');\n  }\n\n  back(): void {\n    throw new Error('Not implemented');\n  }\n\n  // History API isn't available on server, therefore return undefined\n  getState(): unknown {\n    return undefined;\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT, ɵgetDOM as getDOM} from '@angular/common';\nimport {Inject, Injectable, type ListenerOptions} from '@angular/core';\nimport {EventManagerPlugin} from '@angular/platform-browser';\n\n@Injectable()\nexport class ServerEventManagerPlugin extends EventManagerPlugin {\n  constructor(@Inject(DOCUMENT) private doc: any) {\n    super(doc);\n  }\n\n  // Handle all events on the server.\n  override supports(eventName: string) {\n    return true;\n  }\n\n  override addEventListener(\n    element: HTMLElement,\n    eventName: string,\n    handler: Function,\n    options?: ListenerOptions,\n  ): Function {\n    return getDOM().onAndCancel(element, eventName, handler, options);\n  }\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {DOCUMENT} from '@angular/common';\nimport {\n  APP_ID,\n  inject,\n  InjectionToken,\n  Injector,\n  Provider,\n  TransferState,\n  ɵstartMeasuring as startMeasuring,\n  ɵstopMeasuring as stopMeasuring,\n} from '@angular/core';\n\nimport {BEFORE_APP_SERIALIZED} from './tokens';\n\n/** Tracks whether the server-side application transfer state has already been serialized. */\nconst TRANSFER_STATE_STATUS = new InjectionToken<{serialized: boolean}>(\n  typeof ngDevMode === 'undefined' || ngDevMode ? 'TRANSFER_STATE_STATUS' : '',\n  {\n    factory: () => ({serialized: false}),\n  },\n);\n\nexport const TRANSFER_STATE_SERIALIZATION_PROVIDERS: Provider[] = [\n  {\n    provide: BEFORE_APP_SERIALIZED,\n    useFactory: serializeTransferStateFactory,\n    multi: true,\n  },\n];\n\n/** TODO: Move this to a utils folder and convert to use SafeValues. */\nexport function createScript(\n  doc: Document,\n  textContent: string,\n  nonce: string | null,\n): HTMLScriptElement {\n  const script = doc.createElement('script');\n  script.textContent = textContent;\n  if (nonce) {\n    script.setAttribute('nonce', nonce);\n  }\n\n  return script;\n}\n\nfunction warnIfStateTransferHappened(injector: Injector): void {\n  const transferStateStatus = injector.get(TRANSFER_STATE_STATUS);\n\n  if (transferStateStatus.serialized) {\n    console.warn(\n      `Angular detected an incompatible configuration, which causes duplicate serialization of the server-side application state.\\n\\n` +\n        `This can happen if the server providers have been provided more than once using different mechanisms. For example:\\n\\n` +\n        `  imports: [ServerModule], // Registers server providers\\n` +\n        `  providers: [provideServerRendering()] // Also registers server providers\\n\\n` +\n        `To fix this, ensure that the \\`provideServerRendering()\\` function is the only provider used and remove the other(s).`,\n    );\n  }\n\n  transferStateStatus.serialized = true;\n}\n\nfunction serializeTransferStateFactory() {\n  const doc = inject(DOCUMENT);\n  const appId = inject(APP_ID);\n  const transferStore = inject(TransferState);\n  const injector = inject(Injector);\n\n  return () => {\n    const measuringLabel = 'serializeTransferStateFactory';\n    startMeasuring(measuringLabel);\n    // The `.toJSON` here causes the `onSerialize` callbacks to be called.\n    // These callbacks can be used to provide the value for a given key.\n    const content = transferStore.toJson();\n\n    if (transferStore.isEmpty) {\n      // The state is empty, nothing to transfer,\n      // avoid creating an extra `<script>` tag in this case.\n      return;\n    }\n\n    if (typeof ngDevMode !== 'undefined' && ngDevMode) {\n      warnIfStateTransferHappened(injector);\n    }\n\n    const script = createScript(\n      doc,\n      content,\n      /**\n       * `nonce` is not required for 'application/json'\n       * See: https://html.spec.whatwg.org/multipage/scripting.html#attr-script-type\n       */\n      null,\n    );\n    script.id = appId + '-state';\n    script.setAttribute('type', 'application/json');\n\n    // It is intentional that we add the script at the very bottom. Angular CLI script tags for\n    // bundles are always `type=\"module\"`. These are deferred by default and cause the\n    // transfer data to be queried only after the browser has finished parsing the DOM.\n    doc.body.appendChild(script);\n    stopMeasuring(measuringLabel);\n  };\n}\n","/**\n * @license\n * Copyright Google LLC All Rights Reserved.\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://angular.dev/license\n */\n\nimport {\n  DOCUMENT,\n  PlatformLocation,\n  ViewportScroller,\n  ɵgetDOM as getDOM,\n  ɵNullViewportScroller as NullViewportScroller,\n  ɵPLATFORM_SERVER_ID as PLATFORM_SERVER_ID,\n} from '@angular/common';\nimport {\n  createPlatformFactory,\n  Injector,\n  NgModule,\n  PLATFORM_ID,\n  PLATFORM_INITIALIZER,\n  platformCore,\n  PlatformRef,\n  Provider,\n  Testability,\n  ɵsetDocument,\n  ɵTESTABILITY as TESTABILITY,\n  inject,\n  StaticProvider,\n} from '@angular/core';\nimport {\n  BrowserModule,\n  EVENT_MANAGER_PLUGINS,\n  ɵBrowserDomAdapter as BrowserDomAdapter,\n} from '@angular/platform-browser';\n\nimport {DominoAdapter, parseDocument} from './domino_adapter';\nimport {SERVER_HTTP_PROVIDERS} from './http';\nimport {resolveUrl} from './url';\nimport {ServerPlatformLocation} from './location';\nimport {enableDomEmulation, PlatformState} from './platform_state';\nimport {ServerEventManagerPlugin} from './server_events';\nimport {INITIAL_CONFIG, PlatformConfig} from './tokens';\nimport {TRANSFER_STATE_SERIALIZATION_PROVIDERS} from './transfer_state';\n\nexport const INTERNAL_SERVER_PLATFORM_PROVIDERS: StaticProvider[] = [\n  {provide: DOCUMENT, useFactory: _document},\n  {provide: PLATFORM_ID, useValue: PLATFORM_SERVER_ID},\n  {provide: PLATFORM_INITIALIZER, useFactory: initDominoAdapter, multi: true},\n  {\n    provide: PlatformLocation,\n    useClass: ServerPlatformLocation,\n    deps: [],\n  },\n  {provide: PlatformState, deps: [DOCUMENT]},\n];\n\nfunction initDominoAdapter() {\n  const injector = inject(Injector);\n  const _enableDomEmulation = enableDomEmulation(injector);\n  return () => {\n    if (_enableDomEmulation) {\n      DominoAdapter.makeCurrent();\n    } else {\n      BrowserDomAdapter.makeCurrent();\n    }\n  };\n}\n\nexport const SERVER_RENDER_PROVIDERS: Provider[] = [\n  {provide: EVENT_MANAGER_PLUGINS, multi: true, useClass: ServerEventManagerPlugin},\n];\n\nexport const PLATFORM_SERVER_PROVIDERS: Provider[] = [\n  TRANSFER_STATE_SERIALIZATION_PROVIDERS,\n  SERVER_RENDER_PROVIDERS,\n  SERVER_HTTP_PROVIDERS,\n  {provide: Testability, useValue: null}, // Keep for backwards-compatibility.\n  {provide: TESTABILITY, useValue: null},\n  {provide: ViewportScroller, useClass: NullViewportScroller},\n];\n\n/**\n * The ng module for the server.\n *\n * @publicApi\n */\n@NgModule({\n  exports: [BrowserModule],\n  providers: PLATFORM_SERVER_PROVIDERS,\n})\nexport class ServerModule {}\n\nfunction _document() {\n  const injector = inject(Injector);\n  const config: PlatformConfig | null = injector.get(INITIAL_CONFIG, null);\n  const _enableDomEmulation = enableDomEmulation(injector);\n  let document: Document;\n  if (config && config.document) {\n    document =\n      typeof config.document === 'string'\n        ? _enableDomEmulation\n          ? parseDocument(\n              config.document,\n              config.url !== undefined\n                ? resolveUrl(config.url, 'http://localhost').href\n                : undefined,\n            )\n          : window.document\n        : config.document;\n  } else {\n    document = getDOM().createHtmlDocument();\n  }\n  // Tell ivy about the global document\n  ɵsetDocument(document);\n  return document;\n}\n\n/**\n * Creates a server-side instance of an Angular platform.\n *\n * This platform should be used when performing server-side rendering of an Angular application.\n * Standalone applications can be bootstrapped on the server using the `bootstrapApplication`\n * function from `@angular/platform-browser`. When using `bootstrapApplication`, the `platformServer`\n * should be created first and passed to the bootstrap function using the `BootstrapContext`.\n *\n * @publicApi\n */\nexport function platformServer(extraProviders?: StaticProvider[] | undefined): PlatformRef {\n  const noServerModeSet = typeof ngServerMode === 'undefined';\n  if (noServerModeSet) {\n    globalThis['ngServerMode'] = true;\n  }\n\n  const platform = createPlatformFactory(\n    platformCore,\n    'server',\n    INTERNAL_SERVER_PLATFORM_PROVIDERS,\n  )(extraProviders);\n\n  if (noServerModeSet) {\n    platform.onDestroy(() => {\n      globalThis['ngServerMode'] = undefined;\n    });\n  }\n\n  return platform;\n}\n"],"names":["BrowserDomAdapter","setRootDomAdapter","RuntimeError","startMeasuring","stopMeasuring","HTTP_ROOT_INTERCEPTOR_FNS","getDOM","PLATFORM_SERVER_ID","TESTABILITY","NullViewportScroller","ɵsetDocument"],"mappings":"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"}