jiren 3.3.0 → 3.5.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.
@@ -0,0 +1,9 @@
1
+ import { isNativeAvailable } from "./native-node.js";
2
+ import { JirenClient as NativeJirenClient } from "./client-node-native.js";
3
+ import { JirenClient as FetchJirenClient } from "./client-node-fetch.js";
4
+
5
+ const forceFallback = process.env.JIREN_FORCE_FETCH_FALLBACK === "1";
6
+
7
+ export const JirenClient = (
8
+ isNativeAvailable && !forceFallback ? NativeJirenClient : FetchJirenClient
9
+ ) as unknown as typeof NativeJirenClient;
@@ -7,7 +7,6 @@ const __filename = fileURLToPath(import.meta.url);
7
7
  const __dirname = path.dirname(__filename);
8
8
 
9
9
  const platform = process.platform;
10
- const arch = process.arch;
11
10
 
12
11
  let suffix = "so";
13
12
  if (platform === "darwin") {
@@ -24,18 +23,61 @@ if (!fs.existsSync(libPath)) {
24
23
  libPath = path.join(__dirname, `../../lib/libhttpclient.${suffix}`);
25
24
  }
26
25
 
27
- const lib = koffi.load(libPath);
26
+ let lib: any = null;
27
+ let nativeLoadError: Error | null = null;
28
+
29
+ try {
30
+ if (!fs.existsSync(libPath)) {
31
+ nativeLoadError = new Error(`Native library not found at: ${libPath}`);
32
+ } else {
33
+ lib = koffi.load(libPath);
34
+ }
35
+ } catch (error) {
36
+ nativeLoadError =
37
+ error instanceof Error ? error : new Error("Unknown native load error");
38
+ }
39
+
40
+ export const isNativeAvailable = lib !== null;
41
+ export const nativeLibraryPath = libPath;
42
+ export const nativeAvailabilityError = nativeLoadError;
43
+
44
+ function unavailableSymbol(symbol: string, cause?: unknown) {
45
+ return () => {
46
+ const causeMessage =
47
+ cause instanceof Error ? cause.message : cause ? String(cause) : "";
48
+ const reason =
49
+ causeMessage || nativeLoadError?.message || "Native runtime unavailable";
50
+ throw new Error(
51
+ `[Jiren] Native symbol "${symbol}" is unavailable. ${reason}`,
52
+ );
53
+ };
54
+ }
55
+
56
+ function bindSymbol(
57
+ symbol: string,
58
+ returnType: string,
59
+ args: string[],
60
+ ): (...args: any[]) => any {
61
+ if (!lib) {
62
+ return unavailableSymbol(symbol);
63
+ }
64
+ try {
65
+ return lib.func(symbol, returnType, args);
66
+ } catch (error) {
67
+ return unavailableSymbol(symbol, error);
68
+ }
69
+ }
28
70
 
29
71
  export const symbols = {
30
- zclient_new: lib.func("zclient_new", "void *", []),
31
- zclient_free: lib.func("zclient_free", "void", ["void *"]),
32
- zclient_get: lib.func("zclient_get", "void *", ["void *", "const char *"]),
33
- zclient_post: lib.func("zclient_post", "void *", [
72
+ zclient_new: bindSymbol("zclient_new", "void *", []),
73
+ zclient_free: bindSymbol("zclient_free", "void", ["void *"]),
74
+ zclient_get: bindSymbol("zclient_get", "void *", ["void *", "const char *"]),
75
+ zclient_post: bindSymbol("zclient_post", "void *", [
34
76
  "void *",
35
77
  "const char *",
36
78
  "const char *",
37
79
  ]),
38
- zclient_request: lib.func("zclient_request", "void *", [
80
+ zclient_request: bindSymbol("zclient_request", "void *", [
39
81
  "void *", // ptr
40
82
  "const char *", // method
41
83
  "const char *", // url
@@ -44,49 +86,49 @@ export const symbols = {
44
86
  "uint8_t", // max_redirects
45
87
  "bool", // antibot
46
88
  ]),
47
- zclient_prefetch: lib.func("zclient_prefetch", "void", [
89
+ zclient_prefetch: bindSymbol("zclient_prefetch", "void", [
48
90
  "void *",
49
91
  "const char *",
50
92
  ]),
51
- zclient_response_status: lib.func("zclient_response_status", "uint16_t", [
93
+ zclient_response_status: bindSymbol("zclient_response_status", "uint16_t", [
52
94
  "void *",
53
95
  ]),
54
- zclient_response_body: lib.func("zclient_response_body", "void *", [
96
+ zclient_response_body: bindSymbol("zclient_response_body", "void *", [
55
97
  "void *",
56
98
  ]),
57
- zclient_response_body_len: lib.func("zclient_response_body_len", "uint64_t", [
99
+ zclient_response_body_len: bindSymbol("zclient_response_body_len", "uint64_t", [
58
100
  "void *",
59
101
  ]),
60
- zclient_response_headers: lib.func("zclient_response_headers", "void *", [
102
+ zclient_response_headers: bindSymbol("zclient_response_headers", "void *", [
61
103
  "void *",
62
104
  ]),
63
- zclient_response_headers_len: lib.func(
105
+ zclient_response_headers_len: bindSymbol(
64
106
  "zclient_response_headers_len",
65
107
  "uint64_t",
66
108
  ["void *"],
67
109
  ),
68
- zclient_response_parse_header_offsets: lib.func(
110
+ zclient_response_parse_header_offsets: bindSymbol(
69
111
  "zclient_response_parse_header_offsets",
70
112
  "void *",
71
113
  ["void *"],
72
114
  ),
73
- zclient_header_offsets_free: lib.func("zclient_header_offsets_free", "void", [
115
+ zclient_header_offsets_free: bindSymbol("zclient_header_offsets_free", "void", [
74
116
  "void *",
75
117
  ]),
76
- z_find_header_value: lib.func("z_find_header_value", "void *", [
118
+ z_find_header_value: bindSymbol("z_find_header_value", "void *", [
77
119
  "void *", // raw headers ptr
78
120
  "uint64_t", // len
79
121
  "const char *", // key
80
122
  ]),
81
- zclient_header_value_free: lib.func("zclient_header_value_free", "void", [
123
+ zclient_header_value_free: bindSymbol("zclient_header_value_free", "void", [
82
124
  "void *",
83
125
  ]),
84
- zclient_response_free: lib.func("zclient_response_free", "void", ["void *"]),
85
- zclient_set_benchmark_mode: lib.func("zclient_set_benchmark_mode", "void", [
126
+ zclient_response_free: bindSymbol("zclient_response_free", "void", ["void *"]),
127
+ zclient_set_benchmark_mode: bindSymbol("zclient_set_benchmark_mode", "void", [
86
128
  "void *",
87
129
  "bool",
88
130
  ]),
89
- zclient_request_full: lib.func("zclient_request_full", "void *", [
131
+ zclient_request_full: bindSymbol("zclient_request_full", "void *", [
90
132
  "void *",
91
133
  "const char *",
92
134
  "const char *",
@@ -95,43 +137,43 @@ export const symbols = {
95
137
  "uint8_t",
96
138
  "bool",
97
139
  ]),
98
- zfull_response_status: lib.func("zfull_response_status", "uint16_t", [
140
+ zfull_response_status: bindSymbol("zfull_response_status", "uint16_t", [
99
141
  "void *",
100
142
  ]),
101
- zfull_response_header_ptr: lib.func("zfull_response_header_ptr", "void *", [
143
+ zfull_response_header_ptr: bindSymbol("zfull_response_header_ptr", "void *", [
102
144
  "void *",
103
145
  ]),
104
- zfull_response_header_len: lib.func("zfull_response_header_len", "uint64_t", [
146
+ zfull_response_header_len: bindSymbol("zfull_response_header_len", "uint64_t", [
105
147
  "void *",
106
148
  ]),
107
- zfull_response_body_ptr: lib.func("zfull_response_body_ptr", "void *", [
149
+ zfull_response_body_ptr: bindSymbol("zfull_response_body_ptr", "void *", [
108
150
  "void *",
109
151
  ]),
110
- zfull_response_body_len: lib.func("zfull_response_body_len", "uint64_t", [
152
+ zfull_response_body_len: bindSymbol("zfull_response_body_len", "uint64_t", [
111
153
  "void *",
112
154
  ]),
113
- zfull_response_was_decompressed: lib.func(
155
+ zfull_response_was_decompressed: bindSymbol(
114
156
  "zfull_response_was_decompressed",
115
157
  "uint8_t",
116
158
  ["void *"],
117
159
  ),
118
- z_simd_key_match: lib.func("z_simd_key_match", "bool", [
160
+ z_simd_key_match: bindSymbol("z_simd_key_match", "bool", [
119
161
  "void *",
120
162
  "uint64_t",
121
163
  "void *",
122
164
  "uint64_t",
123
165
  ]),
124
- z_find_double_crlf: lib.func("z_find_double_crlf", "int64_t", [
166
+ z_find_double_crlf: bindSymbol("z_find_double_crlf", "int64_t", [
125
167
  "void *",
126
168
  "uint64_t",
127
169
  ]),
128
- zclient_get_json_fields: lib.func("zclient_get_json_fields", "void *", [
170
+ zclient_get_json_fields: bindSymbol("zclient_get_json_fields", "void *", [
129
171
  "void *",
130
172
  "const char *",
131
173
  "const char **",
132
174
  "uint64_t",
133
175
  ]),
134
- zclient_request_json_fields: lib.func(
176
+ zclient_request_json_fields: bindSymbol(
135
177
  "zclient_request_json_fields",
136
178
  "void *",
137
179
  [
@@ -144,50 +186,50 @@ export const symbols = {
144
186
  "uint64_t",
145
187
  ],
146
188
  ),
147
- zclient_json_fields_free: lib.func("zclient_json_fields_free", "void", [
189
+ zclient_json_fields_free: bindSymbol("zclient_json_fields_free", "void", [
148
190
  "void *",
149
191
  ]),
150
- zjson_field_str: lib.func("zjson_field_str", "void *", [
192
+ zjson_field_str: bindSymbol("zjson_field_str", "void *", [
151
193
  "void *",
152
194
  "uint64_t",
153
195
  ]),
154
- zjson_field_len: lib.func("zjson_field_len", "uint64_t", [
196
+ zjson_field_len: bindSymbol("zjson_field_len", "uint64_t", [
155
197
  "void *",
156
198
  "uint64_t",
157
199
  ]),
158
- zjson_field_type: lib.func("zjson_field_type", "uint8_t", [
200
+ zjson_field_type: bindSymbol("zjson_field_type", "uint8_t", [
159
201
  "void *",
160
202
  "uint64_t",
161
203
  ]),
162
- zjson_object_len: lib.func("zjson_object_len", "uint64_t", ["void *"]),
163
- zjson_validate: lib.func("zjson_validate", "bool", ["void *", "uint64_t"]),
164
- zjson_parse: lib.func("zjson_parse", "void *", ["void *", "uint64_t"]),
165
- zjson_get_string: lib.func("zjson_get_string", "void *", [
204
+ zjson_object_len: bindSymbol("zjson_object_len", "uint64_t", ["void *"]),
205
+ zjson_validate: bindSymbol("zjson_validate", "bool", ["void *", "uint64_t"]),
206
+ zjson_parse: bindSymbol("zjson_parse", "void *", ["void *", "uint64_t"]),
207
+ zjson_get_string: bindSymbol("zjson_get_string", "void *", [
166
208
  "void *",
167
209
  "const char *",
168
210
  ]),
169
- zjson_get_string_len: lib.func("zjson_get_string_len", "uint64_t", [
211
+ zjson_get_string_len: bindSymbol("zjson_get_string_len", "uint64_t", [
170
212
  "void *",
171
213
  "const char *",
172
214
  ]),
173
- zjson_get_int: lib.func("zjson_get_int", "int64_t", [
215
+ zjson_get_int: bindSymbol("zjson_get_int", "int64_t", [
174
216
  "void *",
175
217
  "const char *",
176
218
  ]),
177
- zjson_get_bool: lib.func("zjson_get_bool", "bool", [
219
+ zjson_get_bool: bindSymbol("zjson_get_bool", "bool", [
178
220
  "void *",
179
221
  "const char *",
180
222
  ]),
181
- zjson_has_key: lib.func("zjson_has_key", "bool", ["void *", "const char *"]),
182
- zjson_get_type: lib.func("zjson_get_type", "uint8_t", ["void *"]),
183
- zjson_array_len: lib.func("zjson_array_len", "uint64_t", ["void *"]),
184
- zjson_free: lib.func("zjson_free", "void", ["void *"]),
223
+ zjson_has_key: bindSymbol("zjson_has_key", "bool", ["void *", "const char *"]),
224
+ zjson_get_type: bindSymbol("zjson_get_type", "uint8_t", ["void *"]),
225
+ zjson_array_len: bindSymbol("zjson_array_len", "uint64_t", ["void *"]),
226
+ zjson_free: bindSymbol("zjson_free", "void", ["void *"]),
185
227
 
186
- zcache_new: lib.func("zcache_new", "void *", ["uint64_t"]),
187
- zcache_free: lib.func("zcache_free", "void", ["void *"]),
188
- zcache_get: lib.func("zcache_get", "void *", ["void *", "const char *"]),
189
- zcache_entry_free: lib.func("zcache_entry_free", "void", ["void *"]),
190
- zcache_set: lib.func("zcache_set", "void", [
228
+ zcache_new: bindSymbol("zcache_new", "void *", ["uint64_t"]),
229
+ zcache_free: bindSymbol("zcache_free", "void", ["void *"]),
230
+ zcache_get: bindSymbol("zcache_get", "void *", ["void *", "const char *"]),
231
+ zcache_entry_free: bindSymbol("zcache_entry_free", "void", ["void *"]),
232
+ zcache_set: bindSymbol("zcache_set", "void", [
191
233
  "void *", // cache
192
234
  "const char *", // key
193
235
  "uint16_t", // status
@@ -197,18 +239,18 @@ export const symbols = {
197
239
  "uint64_t", // body_len
198
240
  "int64_t", // ttl
199
241
  ]),
200
- zcache_preload_l1: lib.func("zcache_preload_l1", "bool", [
242
+ zcache_preload_l1: bindSymbol("zcache_preload_l1", "bool", [
201
243
  "void *",
202
244
  "const char *",
203
245
  ]),
204
- zcache_clear: lib.func("zcache_clear", "void", ["void *"]),
205
- zcache_stats: lib.func("zcache_stats", "void *", ["void *"]),
206
- zcache_stats_free: lib.func("zcache_stats_free", "void", ["void *"]),
246
+ zcache_clear: bindSymbol("zcache_clear", "void", ["void *"]),
247
+ zcache_stats: bindSymbol("zcache_stats", "void *", ["void *"]),
248
+ zcache_stats_free: bindSymbol("zcache_stats_free", "void", ["void *"]),
207
249
 
208
250
  // =========================================================================
209
251
  // STREAMING DOWNLOAD FFI (PROGRESS TRACKING)
210
252
  // =========================================================================
211
- zclient_request_stream: lib.func("zclient_request_stream", "void *", [
253
+ zclient_request_stream: bindSymbol("zclient_request_stream", "void *", [
212
254
  "void *", // client
213
255
  "const char *", // method
214
256
  "const char *", // url
@@ -216,25 +258,25 @@ export const symbols = {
216
258
  "const char *", // body (nullable)
217
259
  "void *", // progress_callback (nullable)
218
260
  ]),
219
- zstream_poll: lib.func("zstream_poll", "uint64_t", ["void *"]),
220
- zstream_body: lib.func("zstream_body", "void *", ["void *"]),
221
- zstream_body_len: lib.func("zstream_body_len", "uint64_t", ["void *"]),
222
- zstream_headers: lib.func("zstream_headers", "void *", ["void *"]),
223
- zstream_headers_len: lib.func("zstream_headers_len", "uint64_t", ["void *"]),
224
- zstream_status: lib.func("zstream_status", "uint16_t", ["void *"]),
225
- zstream_content_length: lib.func("zstream_content_length", "uint64_t", [
261
+ zstream_poll: bindSymbol("zstream_poll", "uint64_t", ["void *"]),
262
+ zstream_body: bindSymbol("zstream_body", "void *", ["void *"]),
263
+ zstream_body_len: bindSymbol("zstream_body_len", "uint64_t", ["void *"]),
264
+ zstream_headers: bindSymbol("zstream_headers", "void *", ["void *"]),
265
+ zstream_headers_len: bindSymbol("zstream_headers_len", "uint64_t", ["void *"]),
266
+ zstream_status: bindSymbol("zstream_status", "uint16_t", ["void *"]),
267
+ zstream_content_length: bindSymbol("zstream_content_length", "uint64_t", [
226
268
  "void *",
227
269
  ]),
228
- zstream_bytes_received: lib.func("zstream_bytes_received", "uint64_t", [
270
+ zstream_bytes_received: bindSymbol("zstream_bytes_received", "uint64_t", [
229
271
  "void *",
230
272
  ]),
231
- zstream_is_complete: lib.func("zstream_is_complete", "bool", ["void *"]),
232
- zstream_free: lib.func("zstream_free", "void", ["void *"]),
273
+ zstream_is_complete: bindSymbol("zstream_is_complete", "bool", ["void *"]),
274
+ zstream_free: bindSymbol("zstream_free", "void", ["void *"]),
233
275
 
234
276
  // =========================================================================
235
277
  // STREAMING UPLOAD FFI (PROGRESS TRACKING)
236
278
  // =========================================================================
237
- zclient_upload_stream: lib.func("zclient_upload_stream", "void *", [
279
+ zclient_upload_stream: bindSymbol("zclient_upload_stream", "void *", [
238
280
  "void *", // client
239
281
  "const char *", // method
240
282
  "const char *", // url
@@ -243,32 +285,32 @@ export const symbols = {
243
285
  "uint64_t", // body length
244
286
  "void *", // progress_callback (nullable)
245
287
  ]),
246
- zupload_send_chunk: lib.func("zupload_send_chunk", "uint64_t", ["void *"]),
247
- zupload_read_response: lib.func("zupload_read_response", "uint64_t", [
288
+ zupload_send_chunk: bindSymbol("zupload_send_chunk", "uint64_t", ["void *"]),
289
+ zupload_read_response: bindSymbol("zupload_read_response", "uint64_t", [
248
290
  "void *",
249
291
  ]),
250
- zupload_bytes_sent: lib.func("zupload_bytes_sent", "uint64_t", ["void *"]),
251
- zupload_total_bytes: lib.func("zupload_total_bytes", "uint64_t", ["void *"]),
252
- zupload_is_upload_complete: lib.func("zupload_is_upload_complete", "bool", [
292
+ zupload_bytes_sent: bindSymbol("zupload_bytes_sent", "uint64_t", ["void *"]),
293
+ zupload_total_bytes: bindSymbol("zupload_total_bytes", "uint64_t", ["void *"]),
294
+ zupload_is_upload_complete: bindSymbol("zupload_is_upload_complete", "bool", [
253
295
  "void *",
254
296
  ]),
255
- zupload_is_complete: lib.func("zupload_is_complete", "bool", ["void *"]),
256
- zupload_status: lib.func("zupload_status", "uint16_t", ["void *"]),
257
- zupload_response_body: lib.func("zupload_response_body", "void *", [
297
+ zupload_is_complete: bindSymbol("zupload_is_complete", "bool", ["void *"]),
298
+ zupload_status: bindSymbol("zupload_status", "uint16_t", ["void *"]),
299
+ zupload_response_body: bindSymbol("zupload_response_body", "void *", [
258
300
  "void *",
259
301
  ]),
260
- zupload_response_body_len: lib.func("zupload_response_body_len", "uint64_t", [
302
+ zupload_response_body_len: bindSymbol("zupload_response_body_len", "uint64_t", [
261
303
  "void *",
262
304
  ]),
263
- zupload_response_headers: lib.func("zupload_response_headers", "void *", [
305
+ zupload_response_headers: bindSymbol("zupload_response_headers", "void *", [
264
306
  "void *",
265
307
  ]),
266
- zupload_response_headers_len: lib.func(
308
+ zupload_response_headers_len: bindSymbol(
267
309
  "zupload_response_headers_len",
268
310
  "uint64_t",
269
311
  ["void *"],
270
312
  ),
271
- zupload_free: lib.func("zupload_free", "void", ["void *"]),
313
+ zupload_free: bindSymbol("zupload_free", "void", ["void *"]),
272
314
  };
273
315
 
274
316
  export const nativeLib = {
@@ -0,0 +1,56 @@
1
+ import type { RequestOptions, JirenResponse, TargetUrlConfig, Interceptors, MetricsAPI, UrlConfig, JirenClientOptions, UrlAccessor } from "./types.js";
2
+ export declare function defineUrls<const T extends readonly TargetUrlConfig[]>(urls: T): T;
3
+ export declare class JirenClient<T extends readonly TargetUrlConfig[] | Record<string, UrlConfig> = readonly TargetUrlConfig[] | Record<string, UrlConfig>> implements Disposable {
4
+ private closed;
5
+ private urlMap;
6
+ private cacheConfig;
7
+ private antibotConfig;
8
+ private inflightRequests;
9
+ private globalRetry?;
10
+ private requestInterceptors;
11
+ private responseInterceptors;
12
+ private errorInterceptors;
13
+ private targetsPromise;
14
+ private targetsComplete;
15
+ private performanceMode;
16
+ private useDefaultHeaders;
17
+ private cacheStore;
18
+ private readonly defaultHeaders;
19
+ readonly url: UrlAccessor<T>;
20
+ private metricsCollector;
21
+ readonly metrics: MetricsAPI;
22
+ constructor(options?: JirenClientOptions<T>);
23
+ private waitFor;
24
+ waitForTargets(): Promise<void>;
25
+ waitForWarmup(): Promise<void>;
26
+ private createUrlAccessor;
27
+ close(): void;
28
+ [Symbol.dispose](): void;
29
+ use(interceptors: Interceptors): this;
30
+ preconnect(urls: string[]): Promise<void>;
31
+ warmup(urls: string[]): Promise<void>;
32
+ prefetch(urls: string[]): void;
33
+ protected _request<T = any>(method: string, url: string, body?: string | null, options?: RequestOptions & {
34
+ responseType: "json";
35
+ }): Promise<T>;
36
+ protected _request<T = any>(method: string, url: string, body?: string | null, options?: RequestOptions & {
37
+ responseType: "text";
38
+ }): Promise<string>;
39
+ protected _request<T = any>(method: string, url: string, body?: string | null, options?: RequestOptions & {
40
+ responseType: "arraybuffer";
41
+ }): Promise<ArrayBuffer>;
42
+ protected _request<T = any>(method: string, url: string, body?: string | null, options?: RequestOptions & {
43
+ responseType: "blob";
44
+ }): Promise<Blob>;
45
+ protected _request<T = any>(method: string, url: string, body?: string | null, options?: RequestOptions): Promise<JirenResponse<T>>;
46
+ private createResponse;
47
+ private cloneResponse;
48
+ private createBufferedResponse;
49
+ private isJirenResponse;
50
+ private prepareBody;
51
+ private buildHeaders;
52
+ private getRequestKey;
53
+ private getCachedResponse;
54
+ private setCachedResponse;
55
+ }
56
+ //# sourceMappingURL=client-node-fetch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client-node-fetch.d.ts","sourceRoot":"","sources":["../../components/client-node-fetch.ts"],"names":[],"mappings":"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"}