Home / File/ fetchableEnvironments.ts — vite Source File

fetchableEnvironments.ts — vite Source File

Architecture documentation for fetchableEnvironments.ts, a typescript file in the vite codebase. 7 imports, 0 dependents.

File typescript ViteCore ConfigEngine 7 imports 2 functions 1 classes

Entity Profile

Dependency Diagram

graph LR
  d8f420e9_0649_c8fd_4cf7_83d284bfc413["fetchableEnvironments.ts"]
  7da774f9_eca5_d54e_6e01_6bee7d460a2b["config.ts"]
  d8f420e9_0649_c8fd_4cf7_83d284bfc413 --> 7da774f9_eca5_d54e_6e01_6bee7d460a2b
  eb5604c2_58e1_1c00_5a1a_5d97ea5236ad["ResolvedConfig"]
  d8f420e9_0649_c8fd_4cf7_83d284bfc413 --> eb5604c2_58e1_1c00_5a1a_5d97ea5236ad
  7916c84f_5621_2b3b_d220_a171ebce997f["environment.ts"]
  d8f420e9_0649_c8fd_4cf7_83d284bfc413 --> 7916c84f_5621_2b3b_d220_a171ebce997f
  70c452df_b1b7_50ef_d90e_5bd179627481["DevEnvironmentContext"]
  d8f420e9_0649_c8fd_4cf7_83d284bfc413 --> 70c452df_b1b7_50ef_d90e_5bd179627481
  f634223d_ed8e_a65b_08f8_a839ec17994a["DevEnvironment"]
  d8f420e9_0649_c8fd_4cf7_83d284bfc413 --> f634223d_ed8e_a65b_08f8_a839ec17994a
  0c33ff62_54e9_5c90_902b_b26728e71fca["environment.ts"]
  d8f420e9_0649_c8fd_4cf7_83d284bfc413 --> 0c33ff62_54e9_5c90_902b_b26728e71fca
  7e6f7c83_3515_4e0d_5362_4eb9515b4a86["Environment"]
  d8f420e9_0649_c8fd_4cf7_83d284bfc413 --> 7e6f7c83_3515_4e0d_5362_4eb9515b4a86
  style d8f420e9_0649_c8fd_4cf7_83d284bfc413 fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

import type { ResolvedConfig } from '../../config'
import type { DevEnvironmentContext } from '../environment'
import { DevEnvironment } from '../environment'
import type { Environment } from '../../environment'

export interface FetchableDevEnvironmentContext extends DevEnvironmentContext {
  handleRequest(request: Request): Promise<Response> | Response
}

export function createFetchableDevEnvironment(
  name: string,
  config: ResolvedConfig,
  context: FetchableDevEnvironmentContext,
): FetchableDevEnvironment {
  if (typeof Request === 'undefined' || typeof Response === 'undefined') {
    throw new TypeError(
      'FetchableDevEnvironment requires a global `Request` and `Response` object.',
    )
  }

  if (!context.handleRequest) {
    throw new TypeError(
      'FetchableDevEnvironment requires a `handleRequest` method during initialisation.',
    )
  }

  return new FetchableDevEnvironment(name, config, context)
}

export function isFetchableDevEnvironment(
  environment: Environment,
): environment is FetchableDevEnvironment {
  return environment instanceof FetchableDevEnvironment
}

class FetchableDevEnvironment extends DevEnvironment {
  private _handleRequest: (request: Request) => Promise<Response> | Response

  constructor(
    name: string,
    config: ResolvedConfig,
    context: FetchableDevEnvironmentContext,
  ) {
    super(name, config, context)
    this._handleRequest = context.handleRequest
  }

  public async dispatchFetch(request: Request): Promise<Response> {
    if (!(request instanceof Request)) {
      throw new TypeError(
        'FetchableDevEnvironment `dispatchFetch` must receive a `Request` object.',
      )
    }
    const response = await this._handleRequest(request)
    if (!(response instanceof Response)) {
      throw new TypeError(
        'FetchableDevEnvironment `context.handleRequest` must return a `Response` object.',
      )
    }
    return response
  }
}

export type { FetchableDevEnvironment }

Domain

Subdomains

Frequently Asked Questions

What does fetchableEnvironments.ts do?
fetchableEnvironments.ts is a source file in the vite codebase, written in typescript. It belongs to the ViteCore domain, ConfigEngine subdomain.
What functions are defined in fetchableEnvironments.ts?
fetchableEnvironments.ts defines 2 function(s): createFetchableDevEnvironment, isFetchableDevEnvironment.
What does fetchableEnvironments.ts depend on?
fetchableEnvironments.ts imports 7 module(s): DevEnvironment, DevEnvironmentContext, Environment, ResolvedConfig, config.ts, environment.ts, environment.ts.
Where is fetchableEnvironments.ts in the architecture?
fetchableEnvironments.ts is located at packages/vite/src/node/server/environments/fetchableEnvironments.ts (domain: ViteCore, subdomain: ConfigEngine, directory: packages/vite/src/node/server/environments).

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free