@nahisaho/katashiro-collector 0.2.9 → 0.2.11
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/dist/api/api-client.d.ts +83 -11
- package/dist/api/api-client.d.ts.map +1 -1
- package/dist/api/api-client.js +206 -47
- package/dist/api/api-client.js.map +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/api/api-client.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
* APIClient - 汎用APIクライアント
|
|
3
3
|
*
|
|
4
4
|
* @requirement REQ-COLLECT-005
|
|
5
|
+
* @requirement REQ-FIX-011 (v0.2.10)
|
|
5
6
|
* @design DES-KATASHIRO-001 §2.2 Collector Container
|
|
6
7
|
* @task TSK-014
|
|
7
8
|
*/
|
|
@@ -17,6 +18,39 @@ export interface APIClientOptions {
|
|
|
17
18
|
readonly rateLimit?: {
|
|
18
19
|
readonly requestsPerSecond: number;
|
|
19
20
|
};
|
|
21
|
+
readonly retries?: number;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* APIクライアントエラー
|
|
25
|
+
* @since 0.2.10
|
|
26
|
+
*/
|
|
27
|
+
export declare class ApiClientError extends Error {
|
|
28
|
+
readonly code = "KATASHIRO-E011";
|
|
29
|
+
readonly statusCode: number;
|
|
30
|
+
readonly statusText: string;
|
|
31
|
+
readonly url: string;
|
|
32
|
+
readonly body?: string;
|
|
33
|
+
constructor(statusCode: number, statusText: string, url: string, body?: string);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* ネットワークエラー
|
|
37
|
+
* @since 0.2.10
|
|
38
|
+
*/
|
|
39
|
+
export declare class NetworkError extends Error {
|
|
40
|
+
readonly code: string;
|
|
41
|
+
readonly url: string;
|
|
42
|
+
readonly cause: string;
|
|
43
|
+
constructor(code: string, url: string, cause: string);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* JSONパースエラー
|
|
47
|
+
* @since 0.2.10
|
|
48
|
+
*/
|
|
49
|
+
export declare class JsonParseError extends Error {
|
|
50
|
+
readonly url: string;
|
|
51
|
+
readonly contentType: string;
|
|
52
|
+
readonly body: string;
|
|
53
|
+
constructor(url: string, contentType: string, body: string);
|
|
20
54
|
}
|
|
21
55
|
/**
|
|
22
56
|
* 汎用APIクライアント実装
|
|
@@ -27,35 +61,73 @@ export declare class APIClient implements IAPIClient {
|
|
|
27
61
|
private readonly headers;
|
|
28
62
|
private readonly timeout;
|
|
29
63
|
private readonly requestsPerSecond;
|
|
64
|
+
private readonly retries;
|
|
30
65
|
private lastRequestTime;
|
|
31
66
|
private requestQueue;
|
|
32
67
|
constructor(options?: APIClientOptions);
|
|
33
68
|
/**
|
|
34
|
-
* GET
|
|
69
|
+
* GETリクエスト(AGENTS.md互換API - 直接オブジェクトを返す)
|
|
70
|
+
* @throws {ApiClientError} HTTPエラー時
|
|
71
|
+
* @throws {NetworkError} ネットワークエラー時
|
|
72
|
+
* @throws {JsonParseError} JSONパースエラー時
|
|
73
|
+
* @since 0.2.10
|
|
35
74
|
*/
|
|
36
|
-
get<T>(endpoint: string, params?: Record<string, string>): Promise<
|
|
75
|
+
get<T = unknown>(endpoint: string, params?: Record<string, string>): Promise<T>;
|
|
37
76
|
/**
|
|
38
|
-
*
|
|
77
|
+
* GETリクエスト(Result型を返す安全版)
|
|
39
78
|
*/
|
|
40
|
-
|
|
79
|
+
getSafe<T>(endpoint: string, params?: Record<string, string>): Promise<Result<T, Error>>;
|
|
41
80
|
/**
|
|
42
|
-
*
|
|
81
|
+
* POSTリクエスト(AGENTS.md互換API)
|
|
82
|
+
* @since 0.2.10
|
|
43
83
|
*/
|
|
44
|
-
|
|
84
|
+
post<T = unknown>(endpoint: string, body: unknown): Promise<T>;
|
|
45
85
|
/**
|
|
46
|
-
*
|
|
86
|
+
* POSTリクエスト(Result型を返す安全版)
|
|
47
87
|
*/
|
|
48
|
-
|
|
88
|
+
postSafe<T>(endpoint: string, body: unknown): Promise<Result<T, Error>>;
|
|
49
89
|
/**
|
|
50
|
-
*
|
|
90
|
+
* PUTリクエスト(AGENTS.md互換API)
|
|
91
|
+
* @since 0.2.10
|
|
51
92
|
*/
|
|
52
|
-
|
|
93
|
+
put<T = unknown>(endpoint: string, body: unknown): Promise<T>;
|
|
94
|
+
/**
|
|
95
|
+
* PUTリクエスト(Result型を返す安全版)
|
|
96
|
+
*/
|
|
97
|
+
putSafe<T>(endpoint: string, body: unknown): Promise<Result<T, Error>>;
|
|
98
|
+
/**
|
|
99
|
+
* DELETEリクエスト(AGENTS.md互換API)
|
|
100
|
+
* @since 0.2.10
|
|
101
|
+
*/
|
|
102
|
+
delete<T = unknown>(endpoint: string): Promise<T>;
|
|
103
|
+
/**
|
|
104
|
+
* DELETEリクエスト(Result型を返す安全版)
|
|
105
|
+
*/
|
|
106
|
+
deleteSafe<T>(endpoint: string): Promise<Result<T, Error>>;
|
|
107
|
+
/**
|
|
108
|
+
* PATCHリクエスト(AGENTS.md互換API)
|
|
109
|
+
* @since 0.2.10
|
|
110
|
+
*/
|
|
111
|
+
patch<T = unknown>(endpoint: string, body: unknown): Promise<T>;
|
|
112
|
+
/**
|
|
113
|
+
* PATCHリクエスト(Result型を返す安全版)
|
|
114
|
+
*/
|
|
115
|
+
patchSafe<T>(endpoint: string, body: unknown): Promise<Result<T, Error>>;
|
|
53
116
|
/**
|
|
54
117
|
* URLを構築
|
|
55
118
|
*/
|
|
56
119
|
private buildUrl;
|
|
57
120
|
/**
|
|
58
|
-
*
|
|
121
|
+
* リクエスト実行(直接オブジェクトを返す - AGENTS.md互換)
|
|
122
|
+
* @since 0.2.10
|
|
123
|
+
*/
|
|
124
|
+
private requestDirect;
|
|
125
|
+
/**
|
|
126
|
+
* リトライ可能なエラーかどうかを判定
|
|
127
|
+
*/
|
|
128
|
+
private isRetryableError;
|
|
129
|
+
/**
|
|
130
|
+
* リクエスト実行(Result型を返す - 後方互換)
|
|
59
131
|
*/
|
|
60
132
|
private request;
|
|
61
133
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api-client.d.ts","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/api-client.js
CHANGED
|
@@ -2,10 +2,62 @@
|
|
|
2
2
|
* APIClient - 汎用APIクライアント
|
|
3
3
|
*
|
|
4
4
|
* @requirement REQ-COLLECT-005
|
|
5
|
+
* @requirement REQ-FIX-011 (v0.2.10)
|
|
5
6
|
* @design DES-KATASHIRO-001 §2.2 Collector Container
|
|
6
7
|
* @task TSK-014
|
|
7
8
|
*/
|
|
8
9
|
import { ok, err } from '@nahisaho/katashiro-core';
|
|
10
|
+
/**
|
|
11
|
+
* APIクライアントエラー
|
|
12
|
+
* @since 0.2.10
|
|
13
|
+
*/
|
|
14
|
+
export class ApiClientError extends Error {
|
|
15
|
+
code = 'KATASHIRO-E011';
|
|
16
|
+
statusCode;
|
|
17
|
+
statusText;
|
|
18
|
+
url;
|
|
19
|
+
body;
|
|
20
|
+
constructor(statusCode, statusText, url, body) {
|
|
21
|
+
super(`HTTP error ${statusCode}: ${statusText} (${url})`);
|
|
22
|
+
this.name = 'ApiClientError';
|
|
23
|
+
this.statusCode = statusCode;
|
|
24
|
+
this.statusText = statusText;
|
|
25
|
+
this.url = url;
|
|
26
|
+
this.body = body?.slice(0, 1000);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* ネットワークエラー
|
|
31
|
+
* @since 0.2.10
|
|
32
|
+
*/
|
|
33
|
+
export class NetworkError extends Error {
|
|
34
|
+
code;
|
|
35
|
+
url;
|
|
36
|
+
cause;
|
|
37
|
+
constructor(code, url, cause) {
|
|
38
|
+
super(`Network error ${code}: ${cause} (${url})`);
|
|
39
|
+
this.name = 'NetworkError';
|
|
40
|
+
this.code = code;
|
|
41
|
+
this.url = url;
|
|
42
|
+
this.cause = cause;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* JSONパースエラー
|
|
47
|
+
* @since 0.2.10
|
|
48
|
+
*/
|
|
49
|
+
export class JsonParseError extends Error {
|
|
50
|
+
url;
|
|
51
|
+
contentType;
|
|
52
|
+
body;
|
|
53
|
+
constructor(url, contentType, body) {
|
|
54
|
+
super(`Failed to parse JSON response from ${url}`);
|
|
55
|
+
this.name = 'JsonParseError';
|
|
56
|
+
this.url = url;
|
|
57
|
+
this.contentType = contentType;
|
|
58
|
+
this.body = body.slice(0, 500);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
9
61
|
/**
|
|
10
62
|
* 汎用APIクライアント実装
|
|
11
63
|
* レート制限、タイムアウト、リトライ機能を提供
|
|
@@ -15,50 +67,95 @@ export class APIClient {
|
|
|
15
67
|
headers;
|
|
16
68
|
timeout;
|
|
17
69
|
requestsPerSecond;
|
|
70
|
+
retries;
|
|
18
71
|
lastRequestTime = 0;
|
|
19
72
|
requestQueue = Promise.resolve();
|
|
20
73
|
constructor(options = {}) {
|
|
21
74
|
this.baseUrl = (options.baseUrl ?? '').replace(/\/$/, ''); // Remove trailing slash
|
|
22
75
|
this.headers = {
|
|
23
76
|
'Content-Type': 'application/json',
|
|
24
|
-
'User-Agent': 'KATASHIRO/0.
|
|
77
|
+
'User-Agent': 'KATASHIRO/0.2.10',
|
|
25
78
|
...options.headers,
|
|
26
79
|
};
|
|
27
80
|
this.timeout = options.timeout ?? 30000;
|
|
28
81
|
this.requestsPerSecond = options.rateLimit?.requestsPerSecond ?? 10;
|
|
82
|
+
this.retries = options.retries ?? 0;
|
|
29
83
|
}
|
|
30
84
|
/**
|
|
31
|
-
* GET
|
|
85
|
+
* GETリクエスト(AGENTS.md互換API - 直接オブジェクトを返す)
|
|
86
|
+
* @throws {ApiClientError} HTTPエラー時
|
|
87
|
+
* @throws {NetworkError} ネットワークエラー時
|
|
88
|
+
* @throws {JsonParseError} JSONパースエラー時
|
|
89
|
+
* @since 0.2.10
|
|
32
90
|
*/
|
|
33
91
|
async get(endpoint, params) {
|
|
92
|
+
const url = this.buildUrl(endpoint, params);
|
|
93
|
+
return this.requestDirect('GET', url);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* GETリクエスト(Result型を返す安全版)
|
|
97
|
+
*/
|
|
98
|
+
async getSafe(endpoint, params) {
|
|
34
99
|
const url = this.buildUrl(endpoint, params);
|
|
35
100
|
return this.request('GET', url);
|
|
36
101
|
}
|
|
37
102
|
/**
|
|
38
|
-
* POST
|
|
103
|
+
* POSTリクエスト(AGENTS.md互換API)
|
|
104
|
+
* @since 0.2.10
|
|
39
105
|
*/
|
|
40
106
|
async post(endpoint, body) {
|
|
107
|
+
const url = this.buildUrl(endpoint);
|
|
108
|
+
return this.requestDirect('POST', url, body);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* POSTリクエスト(Result型を返す安全版)
|
|
112
|
+
*/
|
|
113
|
+
async postSafe(endpoint, body) {
|
|
41
114
|
const url = this.buildUrl(endpoint);
|
|
42
115
|
return this.request('POST', url, body);
|
|
43
116
|
}
|
|
44
117
|
/**
|
|
45
|
-
* PUT
|
|
118
|
+
* PUTリクエスト(AGENTS.md互換API)
|
|
119
|
+
* @since 0.2.10
|
|
46
120
|
*/
|
|
47
121
|
async put(endpoint, body) {
|
|
122
|
+
const url = this.buildUrl(endpoint);
|
|
123
|
+
return this.requestDirect('PUT', url, body);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* PUTリクエスト(Result型を返す安全版)
|
|
127
|
+
*/
|
|
128
|
+
async putSafe(endpoint, body) {
|
|
48
129
|
const url = this.buildUrl(endpoint);
|
|
49
130
|
return this.request('PUT', url, body);
|
|
50
131
|
}
|
|
51
132
|
/**
|
|
52
|
-
* DELETE
|
|
133
|
+
* DELETEリクエスト(AGENTS.md互換API)
|
|
134
|
+
* @since 0.2.10
|
|
53
135
|
*/
|
|
54
136
|
async delete(endpoint) {
|
|
137
|
+
const url = this.buildUrl(endpoint);
|
|
138
|
+
return this.requestDirect('DELETE', url);
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* DELETEリクエスト(Result型を返す安全版)
|
|
142
|
+
*/
|
|
143
|
+
async deleteSafe(endpoint) {
|
|
55
144
|
const url = this.buildUrl(endpoint);
|
|
56
145
|
return this.request('DELETE', url);
|
|
57
146
|
}
|
|
58
147
|
/**
|
|
59
|
-
* PATCH
|
|
148
|
+
* PATCHリクエスト(AGENTS.md互換API)
|
|
149
|
+
* @since 0.2.10
|
|
60
150
|
*/
|
|
61
151
|
async patch(endpoint, body) {
|
|
152
|
+
const url = this.buildUrl(endpoint);
|
|
153
|
+
return this.requestDirect('PATCH', url, body);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* PATCHリクエスト(Result型を返す安全版)
|
|
157
|
+
*/
|
|
158
|
+
async patchSafe(endpoint, body) {
|
|
62
159
|
const url = this.buildUrl(endpoint);
|
|
63
160
|
return this.request('PATCH', url, body);
|
|
64
161
|
}
|
|
@@ -66,6 +163,15 @@ export class APIClient {
|
|
|
66
163
|
* URLを構築
|
|
67
164
|
*/
|
|
68
165
|
buildUrl(endpoint, params) {
|
|
166
|
+
// 絶対URLの場合はそのまま使用
|
|
167
|
+
if (endpoint.startsWith('http://') || endpoint.startsWith('https://')) {
|
|
168
|
+
let url = endpoint;
|
|
169
|
+
if (params && Object.keys(params).length > 0) {
|
|
170
|
+
const searchParams = new URLSearchParams(params);
|
|
171
|
+
url += (url.includes('?') ? '&' : '?') + searchParams.toString();
|
|
172
|
+
}
|
|
173
|
+
return url;
|
|
174
|
+
}
|
|
69
175
|
const path = endpoint.startsWith('/') ? endpoint : `/${endpoint}`;
|
|
70
176
|
let url = `${this.baseUrl}${path}`;
|
|
71
177
|
if (params && Object.keys(params).length > 0) {
|
|
@@ -75,63 +181,116 @@ export class APIClient {
|
|
|
75
181
|
return url;
|
|
76
182
|
}
|
|
77
183
|
/**
|
|
78
|
-
*
|
|
184
|
+
* リクエスト実行(直接オブジェクトを返す - AGENTS.md互換)
|
|
185
|
+
* @since 0.2.10
|
|
79
186
|
*/
|
|
80
|
-
async
|
|
81
|
-
// Rate limiting - queue requests
|
|
187
|
+
async requestDirect(method, url, body) {
|
|
82
188
|
await this.waitForRateLimit();
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
body: body ? JSON.stringify(body) : undefined,
|
|
90
|
-
signal: controller.signal,
|
|
91
|
-
});
|
|
92
|
-
clearTimeout(timeoutId);
|
|
93
|
-
if (!response.ok) {
|
|
94
|
-
return err(new Error(`HTTP error: ${response.status} ${response.statusText}`));
|
|
95
|
-
}
|
|
96
|
-
// Content-Typeに応じてレスポンスをパース
|
|
97
|
-
const contentType = response.headers.get('content-type') || '';
|
|
98
|
-
let data;
|
|
99
|
-
if (contentType.includes('application/json')) {
|
|
100
|
-
data = (await response.json());
|
|
101
|
-
}
|
|
102
|
-
else if (contentType.includes('text/')) {
|
|
103
|
-
// テキストレスポンスをラップして返す
|
|
104
|
-
const text = await response.text();
|
|
105
|
-
data = { text, contentType };
|
|
106
|
-
}
|
|
107
|
-
else {
|
|
108
|
-
// その他の形式はJSONとして試行
|
|
189
|
+
let lastError = null;
|
|
190
|
+
for (let attempt = 0; attempt <= this.retries; attempt++) {
|
|
191
|
+
try {
|
|
192
|
+
const controller = new AbortController();
|
|
193
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeout);
|
|
194
|
+
let response;
|
|
109
195
|
try {
|
|
110
|
-
|
|
196
|
+
response = await fetch(url, {
|
|
197
|
+
method,
|
|
198
|
+
headers: this.headers,
|
|
199
|
+
body: body ? JSON.stringify(body) : undefined,
|
|
200
|
+
signal: controller.signal,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
catch (fetchError) {
|
|
204
|
+
clearTimeout(timeoutId);
|
|
205
|
+
const errorMessage = fetchError instanceof Error ? fetchError.message : 'Unknown error';
|
|
206
|
+
if (fetchError instanceof Error && fetchError.name === 'AbortError') {
|
|
207
|
+
throw new NetworkError('TIMEOUT', url, 'Request timed out');
|
|
208
|
+
}
|
|
209
|
+
if (errorMessage.includes('ENOTFOUND') || errorMessage.includes('getaddrinfo')) {
|
|
210
|
+
throw new NetworkError('DNS_FAILURE', url, errorMessage);
|
|
211
|
+
}
|
|
212
|
+
if (errorMessage.includes('ECONNREFUSED')) {
|
|
213
|
+
throw new NetworkError('CONNECTION_REFUSED', url, errorMessage);
|
|
214
|
+
}
|
|
215
|
+
throw new NetworkError('NETWORK_ERROR', url, errorMessage);
|
|
216
|
+
}
|
|
217
|
+
clearTimeout(timeoutId);
|
|
218
|
+
if (!response.ok) {
|
|
219
|
+
let responseBody;
|
|
220
|
+
try {
|
|
221
|
+
responseBody = await response.text();
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
// レスポンスボディの取得に失敗
|
|
225
|
+
}
|
|
226
|
+
throw new ApiClientError(response.status, response.statusText, url, responseBody);
|
|
111
227
|
}
|
|
112
|
-
|
|
113
|
-
|
|
228
|
+
// Content-Typeに応じてレスポンスをパース
|
|
229
|
+
const contentType = response.headers.get('content-type') || '';
|
|
230
|
+
if (contentType.includes('application/json')) {
|
|
231
|
+
try {
|
|
232
|
+
return (await response.json());
|
|
233
|
+
}
|
|
234
|
+
catch {
|
|
235
|
+
const text = await response.text();
|
|
236
|
+
throw new JsonParseError(url, contentType, text);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
else if (contentType.includes('text/')) {
|
|
114
240
|
const text = await response.text();
|
|
115
|
-
|
|
241
|
+
return { text, contentType };
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// その他の形式はJSONとして試行
|
|
245
|
+
try {
|
|
246
|
+
return (await response.json());
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
const text = await response.text();
|
|
250
|
+
return { text, contentType };
|
|
251
|
+
}
|
|
116
252
|
}
|
|
117
253
|
}
|
|
254
|
+
catch (error) {
|
|
255
|
+
lastError = error instanceof Error ? error : new Error('Unknown error');
|
|
256
|
+
// リトライ可能なエラーかチェック
|
|
257
|
+
if (attempt < this.retries && this.isRetryableError(lastError)) {
|
|
258
|
+
await this.sleep(Math.pow(2, attempt) * 1000); // 指数バックオフ
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
throw lastError;
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
throw lastError ?? new Error('Unknown error');
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* リトライ可能なエラーかどうかを判定
|
|
268
|
+
*/
|
|
269
|
+
isRetryableError(error) {
|
|
270
|
+
if (error instanceof NetworkError) {
|
|
271
|
+
return error.code === 'TIMEOUT' || error.code === 'CONNECTION_REFUSED';
|
|
272
|
+
}
|
|
273
|
+
if (error instanceof ApiClientError) {
|
|
274
|
+
return error.statusCode >= 500 || error.statusCode === 429;
|
|
275
|
+
}
|
|
276
|
+
return false;
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* リクエスト実行(Result型を返す - 後方互換)
|
|
280
|
+
*/
|
|
281
|
+
async request(method, url, body) {
|
|
282
|
+
try {
|
|
283
|
+
const data = await this.requestDirect(method, url, body);
|
|
118
284
|
return ok(data);
|
|
119
285
|
}
|
|
120
286
|
catch (error) {
|
|
121
|
-
|
|
122
|
-
if (error.name === 'AbortError') {
|
|
123
|
-
return err(new Error('Request timeout'));
|
|
124
|
-
}
|
|
125
|
-
return err(new Error(`Request failed: ${error.message}`));
|
|
126
|
-
}
|
|
127
|
-
return err(new Error('Unknown request error'));
|
|
287
|
+
return err(error instanceof Error ? error : new Error('Unknown error'));
|
|
128
288
|
}
|
|
129
289
|
}
|
|
130
290
|
/**
|
|
131
291
|
* レート制限のための待機
|
|
132
292
|
*/
|
|
133
293
|
async waitForRateLimit() {
|
|
134
|
-
// Chain requests to ensure rate limiting
|
|
135
294
|
this.requestQueue = this.requestQueue.then(async () => {
|
|
136
295
|
const now = Date.now();
|
|
137
296
|
const minInterval = 1000 / this.requestsPerSecond;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":"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"}
|
package/dist/api/index.d.ts
CHANGED
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
package/dist/api/index.js
CHANGED
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EACL,SAAS,EAET,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export { WebSearchClient } from './web-search/index.js';
|
|
|
12
12
|
export { WebScraper } from './scraper/index.js';
|
|
13
13
|
export { YouTubeTranscript } from './youtube/index.js';
|
|
14
14
|
export { FeedReader } from './feed/index.js';
|
|
15
|
-
export { APIClient, type APIClientOptions } from './api/index.js';
|
|
15
|
+
export { APIClient, type APIClientOptions, ApiClientError, NetworkError, JsonParseError, } from './api/index.js';
|
|
16
16
|
export { MediaExtractor, type ExtractedMedia } from './media/index.js';
|
|
17
17
|
export { APIClient as ApiClient } from './api/index.js';
|
|
18
18
|
export { SourceTracker, type TrackedSource, type SourceMetadata, CredibilityScorer, type CredibilityFactors, type CredibilityScore, } from './source/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,UAAU,EACV,kBAAkB,EAClB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AAGzB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,QAAQ,EACR,IAAI,EACJ,iBAAiB,EACjB,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,SAAS,EACT,KAAK,gBAAgB,EACrB,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGxD,OAAO,EACL,aAAa,EACb,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,iBAAiB,EACjB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,UAAU,EACV,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,OAAO,EACP,SAAS,EACT,cAAc,EACd,OAAO,EACP,eAAe,EACf,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,SAAS,EACT,cAAc,EACd,QAAQ,EACR,SAAS,GACV,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,iBAAiB,EACjB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,OAAO,EACP,UAAU,EACV,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAEL,iBAAiB,EACjB,sBAAsB,EAEtB,cAAc,EACd,gBAAgB,EAChB,cAAc,EAEd,sBAAsB,EAEtB,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,oBAAoB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -11,7 +11,7 @@ export { WebSearchClient } from './web-search/index.js';
|
|
|
11
11
|
export { WebScraper } from './scraper/index.js';
|
|
12
12
|
export { YouTubeTranscript } from './youtube/index.js';
|
|
13
13
|
export { FeedReader } from './feed/index.js';
|
|
14
|
-
export { APIClient } from './api/index.js';
|
|
14
|
+
export { APIClient, ApiClientError, NetworkError, JsonParseError, } from './api/index.js';
|
|
15
15
|
export { MediaExtractor } from './media/index.js';
|
|
16
16
|
// AGENTS.md互換エイリアス(APIClientをApiClientとしてもエクスポート)
|
|
17
17
|
export { APIClient as ApiClient } from './api/index.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuBH,KAAK;AACL,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAuBH,KAAK;AACL,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EACL,SAAS,EAET,cAAc,EACd,YAAY,EACZ,cAAc,GACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AAEvE,kDAAkD;AAClD,OAAO,EAAE,SAAS,IAAI,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAExD,2BAA2B;AAC3B,OAAO,EACL,aAAa,EAGb,iBAAiB,GAGlB,MAAM,mBAAmB,CAAC;AAE3B,8CAA8C;AAC9C,OAAO,EACL,cAAc,EACd,SAAS,EACT,UAAU,EACV,UAAU,EACV,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAyB7B,2CAA2C;AAC3C,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AA4B7B,gDAAgD;AAChD,OAAO;AACL,aAAa;AACb,iBAAiB,EACjB,sBAAsB;AACtB,iBAAiB;AACjB,cAAc,EACd,gBAAgB,EAChB,cAAc;AACd,SAAS;AACT,sBAAsB,GAuCvB,MAAM,oBAAoB,CAAC"}
|