jiren 1.5.5 → 1.6.0
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.
- package/README.md +77 -21
- package/components/cache.ts +1 -1
- package/components/client-node-native.ts +497 -159
- package/components/client.ts +51 -29
- package/components/metrics.ts +1 -4
- package/components/native-node.ts +7 -3
- package/components/native.ts +29 -0
- package/components/persistent-worker.ts +73 -0
- package/components/subprocess-worker.ts +65 -0
- package/components/worker-pool.ts +169 -0
- package/components/worker.ts +39 -23
- package/dist/components/cache.d.ts +76 -0
- package/dist/components/cache.d.ts.map +1 -0
- package/dist/components/cache.js +439 -0
- package/dist/components/cache.js.map +1 -0
- package/dist/components/client-node-native.d.ts +114 -0
- package/dist/components/client-node-native.d.ts.map +1 -0
- package/dist/components/client-node-native.js +744 -0
- package/dist/components/client-node-native.js.map +1 -0
- package/dist/components/metrics.d.ts +104 -0
- package/dist/components/metrics.d.ts.map +1 -0
- package/dist/components/metrics.js +296 -0
- package/dist/components/metrics.js.map +1 -0
- package/dist/components/native-node.d.ts +60 -0
- package/dist/components/native-node.d.ts.map +1 -0
- package/dist/components/native-node.js +108 -0
- package/dist/components/native-node.js.map +1 -0
- package/dist/components/types.d.ts +250 -0
- package/dist/components/types.d.ts.map +1 -0
- package/dist/components/types.js +5 -0
- package/dist/components/types.js.map +1 -0
- package/dist/index-node.d.ts +10 -0
- package/dist/index-node.d.ts.map +1 -0
- package/dist/index-node.js +12 -0
- package/dist/index-node.js.map +1 -0
- package/dist/types/index.d.ts +63 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +6 -0
- package/dist/types/index.js.map +1 -0
- package/index-node.ts +6 -6
- package/index.ts +4 -3
- package/lib/libhttpclient.dylib +0 -0
- package/package.json +13 -5
- package/types/index.ts +0 -68
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* pow - Ultra-fast HTTP/HTTPS client powered by native Zigr than any other HTTP/HTTPS client
|
|
3
|
+
*/
|
|
4
|
+
/** Options for batch HTTP requests */
|
|
5
|
+
export interface BatchOptions {
|
|
6
|
+
/** Number of requests to send (default: 1000) */
|
|
7
|
+
count?: number;
|
|
8
|
+
/** Number of concurrent threads (default: 100) */
|
|
9
|
+
threads?: number;
|
|
10
|
+
}
|
|
11
|
+
/** Result of a batch request operation */
|
|
12
|
+
export interface BatchResult {
|
|
13
|
+
/** Number of successful requests */
|
|
14
|
+
success: number;
|
|
15
|
+
/** Total requests attempted */
|
|
16
|
+
total: number;
|
|
17
|
+
/** Duration in seconds */
|
|
18
|
+
duration: number;
|
|
19
|
+
/** Requests per second */
|
|
20
|
+
requestsPerSecond: number;
|
|
21
|
+
}
|
|
22
|
+
/** Options for single HTTP requests */
|
|
23
|
+
export interface RequestOptions {
|
|
24
|
+
/** HTTP method (default: GET) */
|
|
25
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD";
|
|
26
|
+
/** Request headers */
|
|
27
|
+
headers?: Record<string, string>;
|
|
28
|
+
/** Request body (for POST, PUT, PATCH) */
|
|
29
|
+
body?: string | object;
|
|
30
|
+
/** Request timeout in milliseconds */
|
|
31
|
+
timeout?: number;
|
|
32
|
+
/** Maximum number of redirects to follow */
|
|
33
|
+
maxRedirects?: number;
|
|
34
|
+
/** Automatically parse response body */
|
|
35
|
+
responseType?: "json" | "text" | "arraybuffer" | "blob";
|
|
36
|
+
/** Enable anti-bot protection (using curl-impersonate) */
|
|
37
|
+
antibot?: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** HTTP Response Body Wrapper */
|
|
40
|
+
export interface JirenResponseBody<T = any> {
|
|
41
|
+
/** Get response as JSON */
|
|
42
|
+
json: <R = T>() => Promise<R>;
|
|
43
|
+
/** Get response as text */
|
|
44
|
+
text: () => Promise<string>;
|
|
45
|
+
/** Get response as ArrayBuffer */
|
|
46
|
+
arrayBuffer: () => Promise<ArrayBuffer>;
|
|
47
|
+
/** Get response as Blob */
|
|
48
|
+
blob: () => Promise<Blob>;
|
|
49
|
+
/** Whether the body has been used */
|
|
50
|
+
bodyUsed: boolean;
|
|
51
|
+
}
|
|
52
|
+
/** HTTP Response */
|
|
53
|
+
export interface JirenResponse<T = any> {
|
|
54
|
+
/** HTTP status code */
|
|
55
|
+
status: number;
|
|
56
|
+
/** Response body object */
|
|
57
|
+
body: JirenResponseBody<T>;
|
|
58
|
+
/** Response headers */
|
|
59
|
+
headers: Record<string, string>;
|
|
60
|
+
/** Whether the request was successful (status 200-299) */
|
|
61
|
+
ok: boolean;
|
|
62
|
+
/** The URL of the response */
|
|
63
|
+
url: string;
|
|
64
|
+
/** The status message corresponding to the status code */
|
|
65
|
+
statusText: string;
|
|
66
|
+
/** Whether the response was redirected */
|
|
67
|
+
redirected: boolean;
|
|
68
|
+
/** The type of the response */
|
|
69
|
+
type: "basic" | "cors" | "default" | "error" | "opaque" | "opaqueredirect";
|
|
70
|
+
}
|
|
71
|
+
/** Configuration for JirenHttpClient */
|
|
72
|
+
export interface JirenHttpConfig {
|
|
73
|
+
/** Default number of threads for batch operations */
|
|
74
|
+
defaultThreads?: number;
|
|
75
|
+
/** Base URL prefix for all requests */
|
|
76
|
+
baseUrl?: string;
|
|
77
|
+
}
|
|
78
|
+
/** Parsed URL components */
|
|
79
|
+
export interface ParsedUrl {
|
|
80
|
+
protocol: "http" | "https";
|
|
81
|
+
host: string;
|
|
82
|
+
port: number;
|
|
83
|
+
path: string;
|
|
84
|
+
}
|
|
85
|
+
/** Target URL with a key for type-safe access */
|
|
86
|
+
export interface TargetUrlConfig {
|
|
87
|
+
/** Unique key to access this URL via client.url[key] */
|
|
88
|
+
key: string;
|
|
89
|
+
/** The target URL */
|
|
90
|
+
url: string;
|
|
91
|
+
/** Enable response caching for this URL (default: false) */
|
|
92
|
+
cache?: boolean | CacheConfig;
|
|
93
|
+
/** Enable anti-bot protection for all requests to this URL (default: false) */
|
|
94
|
+
antibot?: boolean;
|
|
95
|
+
}
|
|
96
|
+
/** Cache configuration */
|
|
97
|
+
export interface CacheConfig {
|
|
98
|
+
/** Cache TTL in milliseconds (default: 60000 = 1 minute) */
|
|
99
|
+
ttl?: number;
|
|
100
|
+
/** Maximum cache size (default: 100 entries) */
|
|
101
|
+
maxSize?: number;
|
|
102
|
+
}
|
|
103
|
+
/** Configuration for automatic request retries */
|
|
104
|
+
export interface RetryConfig {
|
|
105
|
+
/** Number of retry attempts (default: 0) */
|
|
106
|
+
count?: number;
|
|
107
|
+
/** Initial delay in milliseconds before first retry (default: 100) */
|
|
108
|
+
delay?: number;
|
|
109
|
+
/** Backoff multiplier for subsequent retries (2 = double delay each time) (default: 2) */
|
|
110
|
+
backoff?: number;
|
|
111
|
+
}
|
|
112
|
+
/** Options for URL endpoint requests */
|
|
113
|
+
export interface UrlRequestOptions {
|
|
114
|
+
/** Request headers */
|
|
115
|
+
headers?: Record<string, string>;
|
|
116
|
+
/** Path to append to the base URL */
|
|
117
|
+
path?: string;
|
|
118
|
+
/** Request body (for POST, PUT, PATCH, DELETE) - Auto-stringifies objects */
|
|
119
|
+
body?: string | object | null;
|
|
120
|
+
/** Maximum number of redirects to follow */
|
|
121
|
+
maxRedirects?: number;
|
|
122
|
+
/** Automatically parse response body */
|
|
123
|
+
responseType?: "json" | "text" | "arraybuffer" | "blob";
|
|
124
|
+
/** Enable anti-bot protection (using curl-impersonate) */
|
|
125
|
+
antibot?: boolean;
|
|
126
|
+
/** Retry configuration for this request */
|
|
127
|
+
retry?: number | RetryConfig;
|
|
128
|
+
}
|
|
129
|
+
/** Interface for a URL endpoint with HTTP method helpers */
|
|
130
|
+
export interface UrlEndpoint {
|
|
131
|
+
/** GET request */
|
|
132
|
+
get<T = any>(options?: UrlRequestOptions): Promise<JirenResponse<T>>;
|
|
133
|
+
get<T = any>(options?: UrlRequestOptions & {
|
|
134
|
+
responseType: "json";
|
|
135
|
+
}): Promise<T>;
|
|
136
|
+
get<T = any>(options?: UrlRequestOptions & {
|
|
137
|
+
responseType: "text";
|
|
138
|
+
}): Promise<string>;
|
|
139
|
+
/** POST request */
|
|
140
|
+
post<T = any>(options?: UrlRequestOptions): Promise<JirenResponse<T>>;
|
|
141
|
+
post<T = any>(options?: UrlRequestOptions & {
|
|
142
|
+
responseType: "json";
|
|
143
|
+
}): Promise<T>;
|
|
144
|
+
/** PUT request */
|
|
145
|
+
put<T = any>(options?: UrlRequestOptions): Promise<JirenResponse<T>>;
|
|
146
|
+
put<T = any>(options?: UrlRequestOptions & {
|
|
147
|
+
responseType: "json";
|
|
148
|
+
}): Promise<T>;
|
|
149
|
+
/** PATCH request */
|
|
150
|
+
patch<T = any>(options?: UrlRequestOptions): Promise<JirenResponse<T>>;
|
|
151
|
+
patch<T = any>(options?: UrlRequestOptions & {
|
|
152
|
+
responseType: "json";
|
|
153
|
+
}): Promise<T>;
|
|
154
|
+
/** DELETE request */
|
|
155
|
+
delete<T = any>(options?: UrlRequestOptions): Promise<JirenResponse<T>>;
|
|
156
|
+
delete<T = any>(options?: UrlRequestOptions & {
|
|
157
|
+
responseType: "json";
|
|
158
|
+
}): Promise<T>;
|
|
159
|
+
/** HEAD request */
|
|
160
|
+
head(options?: UrlRequestOptions): Promise<JirenResponse<any>>;
|
|
161
|
+
/** OPTIONS request */
|
|
162
|
+
options(options?: UrlRequestOptions): Promise<JirenResponse<any>>;
|
|
163
|
+
/** Prefetch/refresh cache for this URL */
|
|
164
|
+
prefetch(options?: UrlRequestOptions): Promise<void>;
|
|
165
|
+
}
|
|
166
|
+
/** Type helper to extract keys from target config array */
|
|
167
|
+
export type ExtractTargetKeys<T extends readonly TargetUrlConfig[]> = T[number]["key"];
|
|
168
|
+
/** Context passed to request interceptors */
|
|
169
|
+
export interface InterceptorRequestContext {
|
|
170
|
+
method: string;
|
|
171
|
+
url: string;
|
|
172
|
+
headers: Record<string, string>;
|
|
173
|
+
body?: string | null;
|
|
174
|
+
path?: string;
|
|
175
|
+
}
|
|
176
|
+
/** Context passed to response interceptors */
|
|
177
|
+
export interface InterceptorResponseContext<T = any> {
|
|
178
|
+
request: InterceptorRequestContext;
|
|
179
|
+
response: JirenResponse<T>;
|
|
180
|
+
}
|
|
181
|
+
/** Request interceptor - can modify request before sending */
|
|
182
|
+
export type RequestInterceptor = (ctx: InterceptorRequestContext) => InterceptorRequestContext | Promise<InterceptorRequestContext>;
|
|
183
|
+
/** Response interceptor - can transform response after receiving */
|
|
184
|
+
export type ResponseInterceptor = <T>(ctx: InterceptorResponseContext<T>) => InterceptorResponseContext<T> | Promise<InterceptorResponseContext<T>>;
|
|
185
|
+
/** Error interceptor - handles errors thrown during request */
|
|
186
|
+
export type ErrorInterceptor = (error: Error, ctx: InterceptorRequestContext) => void | Promise<void>;
|
|
187
|
+
/** Interceptor configuration */
|
|
188
|
+
export interface Interceptors {
|
|
189
|
+
request?: RequestInterceptor[];
|
|
190
|
+
response?: ResponseInterceptor[];
|
|
191
|
+
error?: ErrorInterceptor[];
|
|
192
|
+
}
|
|
193
|
+
/** Metrics for a single endpoint */
|
|
194
|
+
export interface EndpointMetrics {
|
|
195
|
+
endpoint: string;
|
|
196
|
+
requests: {
|
|
197
|
+
total: number;
|
|
198
|
+
success: number;
|
|
199
|
+
failed: number;
|
|
200
|
+
};
|
|
201
|
+
statusCodes: Record<number, number>;
|
|
202
|
+
timing: {
|
|
203
|
+
avgMs: number;
|
|
204
|
+
minMs: number;
|
|
205
|
+
maxMs: number;
|
|
206
|
+
p50Ms: number;
|
|
207
|
+
p95Ms: number;
|
|
208
|
+
p99Ms: number;
|
|
209
|
+
};
|
|
210
|
+
cache: {
|
|
211
|
+
l1Hits: number;
|
|
212
|
+
l1Misses: number;
|
|
213
|
+
l2Hits: number;
|
|
214
|
+
l2Misses: number;
|
|
215
|
+
hitRate: string;
|
|
216
|
+
};
|
|
217
|
+
deduplication: {
|
|
218
|
+
hits: number;
|
|
219
|
+
misses: number;
|
|
220
|
+
hitRate: string;
|
|
221
|
+
};
|
|
222
|
+
bytes: {
|
|
223
|
+
sent: number;
|
|
224
|
+
received: number;
|
|
225
|
+
};
|
|
226
|
+
errors: Record<string, number>;
|
|
227
|
+
lastRequestAt: number | null;
|
|
228
|
+
}
|
|
229
|
+
/** Global aggregated metrics across all endpoints */
|
|
230
|
+
export interface GlobalMetrics {
|
|
231
|
+
totalRequests: number;
|
|
232
|
+
totalSuccess: number;
|
|
233
|
+
totalFailed: number;
|
|
234
|
+
avgResponseTimeMs: number;
|
|
235
|
+
totalBytesSent: number;
|
|
236
|
+
totalBytesReceived: number;
|
|
237
|
+
overallCacheHitRate: string;
|
|
238
|
+
overallDeduplicationRate: string;
|
|
239
|
+
endpoints: number;
|
|
240
|
+
uptime: number;
|
|
241
|
+
}
|
|
242
|
+
/** Public API for accessing metrics */
|
|
243
|
+
export interface MetricsAPI {
|
|
244
|
+
get(endpoint: string): EndpointMetrics | null;
|
|
245
|
+
getAll(): Record<string, EndpointMetrics>;
|
|
246
|
+
getGlobal(): GlobalMetrics;
|
|
247
|
+
reset(endpoint?: string): void;
|
|
248
|
+
export(): string;
|
|
249
|
+
}
|
|
250
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../components/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../components/types.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* jiren - Ultra-fast HTTP/HTTPS client (Node.js Native)
|
|
3
|
+
*
|
|
4
|
+
* Use the same high-performance Zig backend as Bun.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
export { JirenClient, type JirenClientOptions, type UrlAccessor, } from "./components/client-node-native.js";
|
|
9
|
+
export * from "./components/types.js";
|
|
10
|
+
//# sourceMappingURL=index-node.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-node.d.ts","sourceRoot":"","sources":["../index-node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,EACL,WAAW,EACX,KAAK,kBAAkB,EACvB,KAAK,WAAW,GACjB,MAAM,oCAAoC,CAAC;AAI5C,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* jiren - Ultra-fast HTTP/HTTPS client (Node.js Native)
|
|
3
|
+
*
|
|
4
|
+
* Use the same high-performance Zig backend as Bun.
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
// Main client (Node.js Native)
|
|
9
|
+
export { JirenClient, } from "./components/client-node-native.js";
|
|
10
|
+
// Types
|
|
11
|
+
export * from "./components/types.js";
|
|
12
|
+
//# sourceMappingURL=index-node.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-node.js","sourceRoot":"","sources":["../index-node.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,+BAA+B;AAC/B,OAAO,EACL,WAAW,GAGZ,MAAM,oCAAoC,CAAC;AAE5C,QAAQ;AAER,cAAc,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* jiren - Ultra-fast HTTP/HTTPS Client Types
|
|
3
|
+
* 56% faster than llhttp
|
|
4
|
+
*/
|
|
5
|
+
/** Options for batch HTTP requests */
|
|
6
|
+
export interface BatchOptions {
|
|
7
|
+
/** Number of requests to send (default: 1000) */
|
|
8
|
+
count?: number;
|
|
9
|
+
/** Number of concurrent threads (default: 100) */
|
|
10
|
+
threads?: number;
|
|
11
|
+
}
|
|
12
|
+
/** Result of a batch request operation */
|
|
13
|
+
export interface BatchResult {
|
|
14
|
+
/** Number of successful requests */
|
|
15
|
+
success: number;
|
|
16
|
+
/** Total requests attempted */
|
|
17
|
+
total: number;
|
|
18
|
+
/** Duration in seconds */
|
|
19
|
+
duration: number;
|
|
20
|
+
/** Requests per second */
|
|
21
|
+
requestsPerSecond: number;
|
|
22
|
+
}
|
|
23
|
+
/** Options for single HTTP requests */
|
|
24
|
+
export interface RequestOptions {
|
|
25
|
+
/** HTTP method (default: GET) */
|
|
26
|
+
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD";
|
|
27
|
+
/** Request headers */
|
|
28
|
+
headers?: Record<string, string>;
|
|
29
|
+
/** Request body (for POST, PUT, PATCH) */
|
|
30
|
+
body?: string | object;
|
|
31
|
+
/** Request timeout in milliseconds */
|
|
32
|
+
timeout?: number;
|
|
33
|
+
/** Maximum number of redirects to follow */
|
|
34
|
+
maxRedirects?: number;
|
|
35
|
+
/** Automatically parse response body */
|
|
36
|
+
responseType?: "json" | "text" | "arraybuffer" | "blob";
|
|
37
|
+
/** Enable anti-bot protection (using curl-impersonate) */
|
|
38
|
+
antibot?: boolean;
|
|
39
|
+
}
|
|
40
|
+
/** HTTP Response */
|
|
41
|
+
export interface HttpResponse {
|
|
42
|
+
/** HTTP status code */
|
|
43
|
+
status: number;
|
|
44
|
+
/** Response body as string */
|
|
45
|
+
body: string;
|
|
46
|
+
/** Response headers */
|
|
47
|
+
headers?: Record<string, string>;
|
|
48
|
+
}
|
|
49
|
+
/** Configuration for JirenHttpClient */
|
|
50
|
+
export interface JirenHttpConfig {
|
|
51
|
+
/** Default number of threads for batch operations */
|
|
52
|
+
defaultThreads?: number;
|
|
53
|
+
/** Base URL prefix for all requests */
|
|
54
|
+
baseUrl?: string;
|
|
55
|
+
}
|
|
56
|
+
/** Parsed URL components */
|
|
57
|
+
export interface ParsedUrl {
|
|
58
|
+
protocol: "http" | "https";
|
|
59
|
+
host: string;
|
|
60
|
+
port: number;
|
|
61
|
+
path: string;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,sCAAsC;AACtC,MAAM,WAAW,YAAY;IAC3B,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC1B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,0BAA0B;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,uCAAuC;AACvC,MAAM,WAAW,cAAc;IAC7B,iCAAiC;IACjC,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9D,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;IACxD,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,oBAAoB;AACpB,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,uBAAuB;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,4BAA4B;AAC5B,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../types/index.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
package/index-node.ts
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* jiren - Ultra-fast HTTP/HTTPS client (Node.js
|
|
2
|
+
* jiren - Ultra-fast HTTP/HTTPS client (Node.js Native)
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* For maximum performance with native Zig bindings, use Bun.
|
|
4
|
+
* Use the same high-performance Zig backend as Bun.
|
|
6
5
|
*
|
|
7
6
|
* @packageDocumentation
|
|
8
7
|
*/
|
|
9
8
|
|
|
10
|
-
// Main client (Node.js
|
|
9
|
+
// Main client (Node.js Native)
|
|
11
10
|
export {
|
|
12
11
|
JirenClient,
|
|
13
12
|
type JirenClientOptions,
|
|
14
13
|
type UrlAccessor,
|
|
15
|
-
} from "./components/client-node-native";
|
|
14
|
+
} from "./components/client-node-native.js";
|
|
16
15
|
|
|
17
16
|
// Types
|
|
18
|
-
|
|
17
|
+
|
|
18
|
+
export * from "./components/types.js";
|
package/index.ts
CHANGED
|
@@ -22,12 +22,13 @@
|
|
|
22
22
|
* @packageDocumentation
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
+
// Main client
|
|
25
26
|
// Main client
|
|
26
27
|
export {
|
|
27
28
|
JirenClient,
|
|
28
|
-
type
|
|
29
|
-
type
|
|
29
|
+
type JirenClientOptions,
|
|
30
|
+
type UrlAccessor,
|
|
30
31
|
} from "./components";
|
|
31
32
|
|
|
32
33
|
// Types
|
|
33
|
-
export * from "./types";
|
|
34
|
+
export * from "./components/types";
|
package/lib/libhttpclient.dylib
CHANGED
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jiren",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"author": "",
|
|
5
5
|
"main": "index.ts",
|
|
6
6
|
"module": "index.ts",
|
|
7
7
|
"types": "index.ts",
|
|
8
8
|
"devDependencies": {
|
|
9
|
-
"@types/bun": "^1.3.4"
|
|
9
|
+
"@types/bun": "^1.3.4",
|
|
10
|
+
"@types/node": "^22.0.0"
|
|
10
11
|
},
|
|
11
12
|
"peerDependencies": {
|
|
12
13
|
"typescript": "^5"
|
|
@@ -17,7 +18,8 @@
|
|
|
17
18
|
"index-node.ts",
|
|
18
19
|
"types",
|
|
19
20
|
"lib",
|
|
20
|
-
"components"
|
|
21
|
+
"components",
|
|
22
|
+
"dist"
|
|
21
23
|
],
|
|
22
24
|
"keywords": [
|
|
23
25
|
"http",
|
|
@@ -29,12 +31,17 @@
|
|
|
29
31
|
"benchmark",
|
|
30
32
|
"performance",
|
|
31
33
|
"bun",
|
|
34
|
+
"node",
|
|
32
35
|
"parser"
|
|
33
36
|
],
|
|
34
37
|
"license": "MIT",
|
|
35
38
|
"scripts": {
|
|
36
39
|
"build:zig": "cd .. && zig build --release=fast",
|
|
37
|
-
"
|
|
40
|
+
"build:node": "tsc -p tsconfig.node.json",
|
|
41
|
+
"build": "npm run build:node",
|
|
42
|
+
"prepublishOnly": "npm run build",
|
|
43
|
+
"test": "bun run examples/basic.ts",
|
|
44
|
+
"test:node": "node --experimental-strip-types test-node.mjs"
|
|
38
45
|
},
|
|
39
46
|
"engines": {
|
|
40
47
|
"node": ">=18.0.0",
|
|
@@ -44,7 +51,8 @@
|
|
|
44
51
|
"exports": {
|
|
45
52
|
".": {
|
|
46
53
|
"bun": "./index.ts",
|
|
47
|
-
"
|
|
54
|
+
"import": "./dist/index-node.js",
|
|
55
|
+
"types": "./dist/index-node.d.ts"
|
|
48
56
|
},
|
|
49
57
|
"./package.json": "./package.json"
|
|
50
58
|
},
|
package/types/index.ts
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* jiren - Ultra-fast HTTP/HTTPS Client Types
|
|
3
|
-
* 56% faster than llhttp
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
/** Options for batch HTTP requests */
|
|
7
|
-
export interface BatchOptions {
|
|
8
|
-
/** Number of requests to send (default: 1000) */
|
|
9
|
-
count?: number;
|
|
10
|
-
/** Number of concurrent threads (default: 100) */
|
|
11
|
-
threads?: number;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
/** Result of a batch request operation */
|
|
15
|
-
export interface BatchResult {
|
|
16
|
-
/** Number of successful requests */
|
|
17
|
-
success: number;
|
|
18
|
-
/** Total requests attempted */
|
|
19
|
-
total: number;
|
|
20
|
-
/** Duration in seconds */
|
|
21
|
-
duration: number;
|
|
22
|
-
/** Requests per second */
|
|
23
|
-
requestsPerSecond: number;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/** Options for single HTTP requests */
|
|
27
|
-
export interface RequestOptions {
|
|
28
|
-
/** HTTP method (default: GET) */
|
|
29
|
-
method?: "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD";
|
|
30
|
-
/** Request headers */
|
|
31
|
-
headers?: Record<string, string>;
|
|
32
|
-
/** Request body (for POST, PUT, PATCH) */
|
|
33
|
-
body?: string | object;
|
|
34
|
-
/** Request timeout in milliseconds */
|
|
35
|
-
timeout?: number;
|
|
36
|
-
/** Maximum number of redirects to follow */
|
|
37
|
-
maxRedirects?: number;
|
|
38
|
-
/** Automatically parse response body */
|
|
39
|
-
responseType?: "json" | "text" | "arraybuffer" | "blob";
|
|
40
|
-
/** Enable anti-bot protection (using curl-impersonate) */
|
|
41
|
-
antibot?: boolean;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
/** HTTP Response */
|
|
45
|
-
export interface HttpResponse {
|
|
46
|
-
/** HTTP status code */
|
|
47
|
-
status: number;
|
|
48
|
-
/** Response body as string */
|
|
49
|
-
body: string;
|
|
50
|
-
/** Response headers */
|
|
51
|
-
headers?: Record<string, string>;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/** Configuration for JirenHttpClient */
|
|
55
|
-
export interface JirenHttpConfig {
|
|
56
|
-
/** Default number of threads for batch operations */
|
|
57
|
-
defaultThreads?: number;
|
|
58
|
-
/** Base URL prefix for all requests */
|
|
59
|
-
baseUrl?: string;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
/** Parsed URL components */
|
|
63
|
-
export interface ParsedUrl {
|
|
64
|
-
protocol: "http" | "https";
|
|
65
|
-
host: string;
|
|
66
|
-
port: number;
|
|
67
|
-
path: string;
|
|
68
|
-
}
|