# sahil1337/node-tls-client architecture

> Architecture diagram of the GitHub repository sahil1337/node-tls-client, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-13). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sahil1337/node-tls-client
- Repository: https://github.com/sahil1337/node-tls-client

## Overview

node-tls-client is a Node.js HTTP client that delegates requests to a native tls-client library to reproduce browser-like TLS and HTTP/2 fingerprints. The main workflow is: initialize the native runtime, configure a Session with a browser profile and request options, build a native payload, dispatch it through a concurrency mode, then expose the native result as a Response while mirroring cookies. The graph also preserves documented fingerprint, proxy, HTTP/3, and concurrency capabilities. Some subsystem links are documented rather than verified in sampled implementation excerpts.

Main entry points: [`src/core/session.ts`](https://github.com/sahil1337/node-tls-client/blob/main/src/core/session.ts) (Session), [`src/native/runtime.ts`](https://github.com/sahil1337/node-tls-client/blob/main/src/native/runtime.ts) (Lifecycle Runtime), [`src/core/payload.ts`](https://github.com/sahil1337/node-tls-client/blob/main/src/core/payload.ts) (Payload Builder), [`src/native/client/native-client.ts`](https://github.com/sahil1337/node-tls-client/blob/main/src/native/client/native-client.ts) (Native Client)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["Session API"]
  node_session["Session<br/>[session.ts]"]
  node_fetch["Fetch API<br/>[fetch.ts]"]
  node_response["Response<br/>[response.ts]"]
  node_cookies["Cookie Mirror<br/>[cookie-mirror.ts]"]
end

subgraph group_request["Request Modeling"]
  node_payload["Payload Builder<br/>[payload.ts]"]
end

subgraph group_runtime["Native Runtime"]
  node_runtime["Lifecycle Runtime<br/>[runtime.ts]"]
  node_library["Library Locate/Load<br/>[locate.ts]"]
  node_loader["Native Loader<br/>[load.ts]"]
  node_client["Native Client<br/>[native-client.ts]"]
  node_queue["Completion Queue<br/>[queue-client.ts]"]
  node_threadpool["Threadpool Client"]
end

subgraph group_types["Configuration Types"]
  node_requestopts["Request Options<br/>[request.ts]"]
  node_sessionopts["Session Options<br/>[session.ts]"]
  node_profiles["Browser Profiles"]
  node_fingerprints["Custom Fingerprints<br/>[fingerprint.ts]"]
end

node_caller(("Application"))
node_native["Native TLS Library"]
node_httpserver(("HTTP Server"))

node_caller -->|"creates and uses"| node_session
node_caller -->|"initializes"| node_runtime
node_session -->|"builds payload"| node_payload
node_session -->|"gets client"| node_runtime
node_session -->|"records cookies"| node_cookies
node_session -->|"wraps result"| node_response
node_session -->|"accepts options"| node_requestopts
node_payload -->|"encodes settings"| node_sessionopts
node_payload -->|"encodes request"| node_requestopts
node_payload -->|"selects profile"| node_profiles
node_payload -->|"encodes custom profile"| node_fingerprints
node_runtime -->|"locates library"| node_library
node_runtime -->|"creates client"| node_client
node_library -->|"loads library"| node_loader
node_client -->|"sends request"| node_native
node_queue -->|"extends"| node_client
node_threadpool -->|"extends"| node_client
node_runtime -->|"selects mode"| node_queue
node_runtime -->|"selects mode"| node_threadpool
node_native -.->|"performs HTTP request"| node_httpserver
node_fetch -.->|"uses session"| node_session

click node_session "https://github.com/sahil1337/node-tls-client/blob/main/src/core/session.ts"
click node_fetch "https://github.com/sahil1337/node-tls-client/blob/main/src/core/fetch.ts"
click node_response "https://github.com/sahil1337/node-tls-client/blob/main/src/core/response.ts"
click node_cookies "https://github.com/sahil1337/node-tls-client/blob/main/src/core/cookie-mirror.ts"
click node_payload "https://github.com/sahil1337/node-tls-client/blob/main/src/core/payload.ts"
click node_requestopts "https://github.com/sahil1337/node-tls-client/blob/main/src/types/request.ts"
click node_sessionopts "https://github.com/sahil1337/node-tls-client/blob/main/src/types/session.ts"
click node_profiles "https://github.com/sahil1337/node-tls-client/blob/main/src/types/client-identifier.ts"
click node_fingerprints "https://github.com/sahil1337/node-tls-client/blob/main/src/types/fingerprint.ts"
click node_runtime "https://github.com/sahil1337/node-tls-client/blob/main/src/native/runtime.ts"
click node_library "https://github.com/sahil1337/node-tls-client/blob/main/src/native/library/locate.ts"
click node_loader "https://github.com/sahil1337/node-tls-client/blob/main/src/native/library/load.ts"
click node_client "https://github.com/sahil1337/node-tls-client/blob/main/src/native/client/native-client.ts"
click node_queue "https://github.com/sahil1337/node-tls-client/blob/main/src/native/client/queue-client.ts"
click node_threadpool "https://github.com/sahil1337/node-tls-client/blob/main/src/native/client/threadpool-client.ts"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_session,node_fetch,node_response,node_cookies toneBlue
class node_payload toneAmber
class node_runtime,node_library,node_loader,node_client,node_queue,node_threadpool,node_httpserver toneMint
class node_requestopts,node_sessionopts,node_profiles,node_fingerprints toneRose
class node_caller,node_native toneIndigo
```

## Components

### Session API

- [Session](https://github.com/sahil1337/node-tls-client/blob/main/src/core/session.ts): `src/core/session.ts`
- [Fetch API](https://github.com/sahil1337/node-tls-client/blob/main/src/core/fetch.ts): `src/core/fetch.ts`
- [Response](https://github.com/sahil1337/node-tls-client/blob/main/src/core/response.ts): `src/core/response.ts`
- [Cookie Mirror](https://github.com/sahil1337/node-tls-client/blob/main/src/core/cookie-mirror.ts): `src/core/cookie-mirror.ts`

### Request Modeling

- [Payload Builder](https://github.com/sahil1337/node-tls-client/blob/main/src/core/payload.ts): `src/core/payload.ts`

### Native Runtime

- [Lifecycle Runtime](https://github.com/sahil1337/node-tls-client/blob/main/src/native/runtime.ts): `src/native/runtime.ts`
- [Library Locate/Load](https://github.com/sahil1337/node-tls-client/blob/main/src/native/library/locate.ts): `src/native/library/locate.ts`
- [Native Loader](https://github.com/sahil1337/node-tls-client/blob/main/src/native/library/load.ts): `src/native/library/load.ts`
- [Native Client](https://github.com/sahil1337/node-tls-client/blob/main/src/native/client/native-client.ts): `src/native/client/native-client.ts`
- [Completion Queue](https://github.com/sahil1337/node-tls-client/blob/main/src/native/client/queue-client.ts): `src/native/client/queue-client.ts`
- [Threadpool Client](https://github.com/sahil1337/node-tls-client/blob/main/src/native/client/threadpool-client.ts): `src/native/client/threadpool-client.ts`

### Configuration Types

- [Request Options](https://github.com/sahil1337/node-tls-client/blob/main/src/types/request.ts): `src/types/request.ts`
- [Session Options](https://github.com/sahil1337/node-tls-client/blob/main/src/types/session.ts): `src/types/session.ts`
- [Browser Profiles](https://github.com/sahil1337/node-tls-client/blob/main/src/types/client-identifier.ts): `src/types/client-identifier.ts`
- [Custom Fingerprints](https://github.com/sahil1337/node-tls-client/blob/main/src/types/fingerprint.ts): `src/types/fingerprint.ts`

### Other components

- **Application**
- **Native TLS Library**
- **HTTP Server**

## Connections

- Application → Session: creates and uses
- Application → Lifecycle Runtime: initializes
- Session → Payload Builder: builds payload (evidence: `src/core/session.ts`)
- Session → Lifecycle Runtime: gets client (evidence: `src/core/session.ts`)
- Session → Cookie Mirror: records cookies (evidence: `src/core/session.ts`)
- Session → Response: wraps result (evidence: `src/core/session.ts`)
- Session → Request Options: accepts options (evidence: `src/core/session.ts`)
- Payload Builder → Session Options: encodes settings (evidence: `src/core/payload.ts`)
- Payload Builder → Request Options: encodes request (evidence: `src/core/payload.ts`)
- Payload Builder → Browser Profiles: selects profile (evidence: `src/core/payload.ts`)
- Payload Builder → Custom Fingerprints: encodes custom profile (evidence: `src/core/payload.ts`)
- Lifecycle Runtime → Library Locate/Load: locates library (evidence: `src/native/runtime.ts`)
- Lifecycle Runtime → Native Client: creates client (evidence: `src/native/runtime.ts`)
- Library Locate/Load → Native Loader: loads library (evidence: `src/native/library/index.ts`)
- Native Client → Native TLS Library: sends request (evidence: `src/native/client/native-client.ts`)
- Completion Queue → Native Client: extends (evidence: `src/native/client/queue-client.ts`)
- Threadpool Client → Native Client: extends (evidence: `src/native/client/threadpool-client.ts`)
- Lifecycle Runtime → Completion Queue: selects mode (evidence: `src/native/runtime.ts`)
- Lifecycle Runtime → Threadpool Client: selects mode (evidence: `src/native/runtime.ts`)
- Native TLS Library → HTTP Server: performs HTTP request
- Fetch API → Session: uses session
