@trokky/client 2.0.3
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 +833 -0
- package/dist/cache/manager.d.ts +47 -0
- package/dist/cache/manager.d.ts.map +1 -0
- package/dist/cache/manager.js +100 -0
- package/dist/cache/manager.js.map +1 -0
- package/dist/cli/index.d.ts +7 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +159 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/client.d.ts +221 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +310 -0
- package/dist/client.js.map +1 -0
- package/dist/document/client.d.ts +57 -0
- package/dist/document/client.d.ts.map +1 -0
- package/dist/document/client.js +176 -0
- package/dist/document/client.js.map +1 -0
- package/dist/generator/document-generator.d.ts +50 -0
- package/dist/generator/document-generator.d.ts.map +1 -0
- package/dist/generator/document-generator.js +329 -0
- package/dist/generator/document-generator.js.map +1 -0
- package/dist/generator/index.d.ts +121 -0
- package/dist/generator/index.d.ts.map +1 -0
- package/dist/generator/index.js +559 -0
- package/dist/generator/index.js.map +1 -0
- package/dist/http/client.d.ts +117 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +411 -0
- package/dist/http/client.js.map +1 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/media/helper.d.ts +89 -0
- package/dist/media/helper.d.ts.map +1 -0
- package/dist/media/helper.js +197 -0
- package/dist/media/helper.js.map +1 -0
- package/dist/media/url-builder.d.ts +142 -0
- package/dist/media/url-builder.d.ts.map +1 -0
- package/dist/media/url-builder.js +280 -0
- package/dist/media/url-builder.js.map +1 -0
- package/dist/query/builder.d.ts +270 -0
- package/dist/query/builder.d.ts.map +1 -0
- package/dist/query/builder.js +731 -0
- package/dist/query/builder.js.map +1 -0
- package/dist/query/index.d.ts +6 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +5 -0
- package/dist/query/index.js.map +1 -0
- package/dist/react/hooks.d.ts +42 -0
- package/dist/react/hooks.d.ts.map +1 -0
- package/dist/react/hooks.js +59 -0
- package/dist/react/hooks.js.map +1 -0
- package/dist/react/index.d.ts +6 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +6 -0
- package/dist/react/index.js.map +1 -0
- package/dist/server/index.d.ts +9 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/media-proxy.d.ts +102 -0
- package/dist/server/media-proxy.d.ts.map +1 -0
- package/dist/server/media-proxy.js +160 -0
- package/dist/server/media-proxy.js.map +1 -0
- package/dist/shortcodes/index.d.ts +11 -0
- package/dist/shortcodes/index.d.ts.map +1 -0
- package/dist/shortcodes/index.js +10 -0
- package/dist/shortcodes/index.js.map +1 -0
- package/dist/shortcodes/parser.d.ts +32 -0
- package/dist/shortcodes/parser.d.ts.map +1 -0
- package/dist/shortcodes/parser.js +88 -0
- package/dist/shortcodes/parser.js.map +1 -0
- package/dist/shortcodes/resolver.d.ts +57 -0
- package/dist/shortcodes/resolver.d.ts.map +1 -0
- package/dist/shortcodes/resolver.js +97 -0
- package/dist/shortcodes/resolver.js.map +1 -0
- package/dist/shortcodes/types.d.ts +17 -0
- package/dist/shortcodes/types.d.ts.map +1 -0
- package/dist/shortcodes/types.js +6 -0
- package/dist/shortcodes/types.js.map +1 -0
- package/dist/types/index.d.ts +134 -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/package.json +101 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Client
|
|
3
|
+
* Framework-agnostic HTTP client for Trokky API
|
|
4
|
+
*/
|
|
5
|
+
import type { ClientConfig, RequestOptions, AuthTokens, AuthConfig } from '../types/index.js';
|
|
6
|
+
export declare class HttpClient {
|
|
7
|
+
private config;
|
|
8
|
+
private tokens;
|
|
9
|
+
private logger;
|
|
10
|
+
constructor(config: ClientConfig);
|
|
11
|
+
/**
|
|
12
|
+
* Set authentication tokens
|
|
13
|
+
*/
|
|
14
|
+
setTokens(tokens: AuthTokens): void;
|
|
15
|
+
/**
|
|
16
|
+
* Get current authentication tokens
|
|
17
|
+
*/
|
|
18
|
+
getTokens(): AuthTokens | null;
|
|
19
|
+
/**
|
|
20
|
+
* Clear authentication tokens
|
|
21
|
+
*/
|
|
22
|
+
clearTokens(): void;
|
|
23
|
+
/**
|
|
24
|
+
* Check if client is authenticated
|
|
25
|
+
*/
|
|
26
|
+
isAuthenticated(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Get the base URL of the API
|
|
29
|
+
*/
|
|
30
|
+
getBaseUrl(): string;
|
|
31
|
+
/**
|
|
32
|
+
* Authenticate with username and password
|
|
33
|
+
*/
|
|
34
|
+
authenticate(credentials: AuthConfig): Promise<AuthTokens>;
|
|
35
|
+
/**
|
|
36
|
+
* Refresh authentication token
|
|
37
|
+
*/
|
|
38
|
+
refreshAuth(): Promise<AuthTokens>;
|
|
39
|
+
/**
|
|
40
|
+
* Logout and clear tokens
|
|
41
|
+
*/
|
|
42
|
+
logout(): Promise<void>;
|
|
43
|
+
/**
|
|
44
|
+
* Make HTTP request with automatic auth and error handling
|
|
45
|
+
*/
|
|
46
|
+
request<T = any>(endpoint: string, options?: RequestInit & RequestOptions): Promise<T>;
|
|
47
|
+
/**
|
|
48
|
+
* GET request
|
|
49
|
+
*/
|
|
50
|
+
get<T = any>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
51
|
+
/**
|
|
52
|
+
* POST request
|
|
53
|
+
*/
|
|
54
|
+
post<T = any>(endpoint: string, data?: any, options?: RequestOptions): Promise<T>;
|
|
55
|
+
/**
|
|
56
|
+
* PUT request
|
|
57
|
+
*/
|
|
58
|
+
put<T = any>(endpoint: string, data?: any, options?: RequestOptions): Promise<T>;
|
|
59
|
+
/**
|
|
60
|
+
* PATCH request
|
|
61
|
+
*/
|
|
62
|
+
patch<T = any>(endpoint: string, data?: any, options?: RequestOptions): Promise<T>;
|
|
63
|
+
/**
|
|
64
|
+
* DELETE request
|
|
65
|
+
*/
|
|
66
|
+
delete<T = any>(endpoint: string, options?: RequestOptions): Promise<T>;
|
|
67
|
+
/**
|
|
68
|
+
* Upload file
|
|
69
|
+
*/
|
|
70
|
+
upload(file: File | Buffer, filename?: string): Promise<any>;
|
|
71
|
+
/**
|
|
72
|
+
* List API tokens
|
|
73
|
+
*/
|
|
74
|
+
listApiTokens(): Promise<any>;
|
|
75
|
+
/**
|
|
76
|
+
* Create API token
|
|
77
|
+
*/
|
|
78
|
+
createApiToken(data: any): Promise<any>;
|
|
79
|
+
/**
|
|
80
|
+
* Get API token by ID from server
|
|
81
|
+
*/
|
|
82
|
+
getApiTokenById(id: string): Promise<any>;
|
|
83
|
+
/**
|
|
84
|
+
* Update API token
|
|
85
|
+
*/
|
|
86
|
+
updateApiToken(id: string, data: any): Promise<any>;
|
|
87
|
+
/**
|
|
88
|
+
* Delete API token
|
|
89
|
+
*/
|
|
90
|
+
deleteApiToken(id: string): Promise<void>;
|
|
91
|
+
/**
|
|
92
|
+
* Set API token for authentication (alternative to JWT)
|
|
93
|
+
*/
|
|
94
|
+
setApiToken(token: string): void;
|
|
95
|
+
/**
|
|
96
|
+
* Get current API token
|
|
97
|
+
*/
|
|
98
|
+
getApiToken(): string | null;
|
|
99
|
+
/**
|
|
100
|
+
* Clear API token
|
|
101
|
+
*/
|
|
102
|
+
clearApiToken(): void;
|
|
103
|
+
private buildUrl;
|
|
104
|
+
private buildRequestOptions;
|
|
105
|
+
private buildHeaders;
|
|
106
|
+
private makeRequest;
|
|
107
|
+
private handleResponse;
|
|
108
|
+
/**
|
|
109
|
+
* Transform Trokky API response format to client expected format
|
|
110
|
+
*/
|
|
111
|
+
private transformResponse;
|
|
112
|
+
private isAuthError;
|
|
113
|
+
private isRetryableError;
|
|
114
|
+
private wait;
|
|
115
|
+
private log;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP Client
|
|
3
|
+
* Framework-agnostic HTTP client for Trokky API
|
|
4
|
+
*/
|
|
5
|
+
import { createLogger } from '@trokky/trokky';
|
|
6
|
+
/**
|
|
7
|
+
* Endpoints where a 401 must not trigger a refresh: it means the supplied
|
|
8
|
+
* credentials or refresh token are themselves bad, not that the access token
|
|
9
|
+
* expired, so refreshing cannot help and would recurse on /auth/refresh.
|
|
10
|
+
*/
|
|
11
|
+
const NON_RECOVERABLE_ENDPOINTS = [
|
|
12
|
+
'/auth/login',
|
|
13
|
+
'/auth/refresh',
|
|
14
|
+
'/auth/logout',
|
|
15
|
+
'/auth/validate'
|
|
16
|
+
];
|
|
17
|
+
export class HttpClient {
|
|
18
|
+
constructor(config) {
|
|
19
|
+
this.tokens = null;
|
|
20
|
+
this.logger = createLogger('client', 'HttpClient');
|
|
21
|
+
this.config = {
|
|
22
|
+
baseUrl: config.baseUrl,
|
|
23
|
+
apiVersion: config.apiVersion ?? '', // Default to no versioning, not 'v1'
|
|
24
|
+
token: config.token || '',
|
|
25
|
+
refreshToken: config.refreshToken || '',
|
|
26
|
+
apiToken: config.apiToken || '',
|
|
27
|
+
timeout: config.timeout || 30000,
|
|
28
|
+
retries: config.retries || 3,
|
|
29
|
+
enableCache: config.enableCache ?? true,
|
|
30
|
+
cacheMaxAge: config.cacheMaxAge || 300000, // 5 minutes
|
|
31
|
+
enableRealtime: config.enableRealtime ?? false,
|
|
32
|
+
websocketUrl: config.websocketUrl || '',
|
|
33
|
+
debug: config.debug ?? false
|
|
34
|
+
};
|
|
35
|
+
// Initialize with provided tokens (JWT tokens)
|
|
36
|
+
if (this.config.token) {
|
|
37
|
+
this.tokens = {
|
|
38
|
+
accessToken: this.config.token,
|
|
39
|
+
refreshToken: this.config.refreshToken
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Set authentication tokens
|
|
45
|
+
*/
|
|
46
|
+
setTokens(tokens) {
|
|
47
|
+
this.tokens = tokens;
|
|
48
|
+
this.config.token = tokens.accessToken;
|
|
49
|
+
this.config.refreshToken = tokens.refreshToken || '';
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Get current authentication tokens
|
|
53
|
+
*/
|
|
54
|
+
getTokens() {
|
|
55
|
+
return this.tokens;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Clear authentication tokens
|
|
59
|
+
*/
|
|
60
|
+
clearTokens() {
|
|
61
|
+
this.tokens = null;
|
|
62
|
+
this.config.token = '';
|
|
63
|
+
this.config.refreshToken = '';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if client is authenticated
|
|
67
|
+
*/
|
|
68
|
+
isAuthenticated() {
|
|
69
|
+
return !!this.tokens?.accessToken;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Get the base URL of the API
|
|
73
|
+
*/
|
|
74
|
+
getBaseUrl() {
|
|
75
|
+
return this.config.baseUrl;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Authenticate with username and password
|
|
79
|
+
*/
|
|
80
|
+
async authenticate(credentials) {
|
|
81
|
+
const response = await this.request('/auth/login', {
|
|
82
|
+
method: 'POST',
|
|
83
|
+
body: JSON.stringify(credentials), // Send credentials directly
|
|
84
|
+
headers: {
|
|
85
|
+
'Content-Type': 'application/json'
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
// Handle both old and new response formats
|
|
89
|
+
// New format: { success: true, token: "...", refreshToken: "...", expiresAt: "..." }
|
|
90
|
+
// Old format: { success: true, data: { token: "...", refreshToken: "...", expiresAt: "..." } }
|
|
91
|
+
// The transformResponse method already handles the old format by extracting the data field
|
|
92
|
+
const tokens = {
|
|
93
|
+
accessToken: response.token,
|
|
94
|
+
refreshToken: response.refreshToken,
|
|
95
|
+
expiresAt: response.expiresAt ? new Date(response.expiresAt).getTime() : undefined
|
|
96
|
+
};
|
|
97
|
+
// Validate that we received the required tokens
|
|
98
|
+
if (!tokens.accessToken) {
|
|
99
|
+
throw new Error('Authentication failed: No access token received');
|
|
100
|
+
}
|
|
101
|
+
this.setTokens(tokens);
|
|
102
|
+
return tokens;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Refresh authentication token
|
|
106
|
+
*/
|
|
107
|
+
async refreshAuth() {
|
|
108
|
+
if (!this.tokens?.refreshToken) {
|
|
109
|
+
throw new Error('No refresh token available');
|
|
110
|
+
}
|
|
111
|
+
const response = await this.request('/auth/refresh', {
|
|
112
|
+
method: 'POST',
|
|
113
|
+
body: JSON.stringify({ refreshToken: this.tokens.refreshToken }),
|
|
114
|
+
headers: {
|
|
115
|
+
'Content-Type': 'application/json'
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
this.setTokens(response);
|
|
119
|
+
return response;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Logout and clear tokens
|
|
123
|
+
*/
|
|
124
|
+
async logout() {
|
|
125
|
+
if (this.tokens?.accessToken) {
|
|
126
|
+
try {
|
|
127
|
+
await this.request('/auth/logout', {
|
|
128
|
+
method: 'POST'
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
// Continue with logout even if API call fails
|
|
133
|
+
this.log('Logout API call failed, clearing tokens anyway:', error);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
this.clearTokens();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Make HTTP request with automatic auth and error handling
|
|
140
|
+
*/
|
|
141
|
+
async request(endpoint, options = {}) {
|
|
142
|
+
const url = this.buildUrl(endpoint);
|
|
143
|
+
const requestOptions = this.buildRequestOptions(options);
|
|
144
|
+
const recoverable = !NON_RECOVERABLE_ENDPOINTS.some(path => endpoint.includes(path));
|
|
145
|
+
let attempt = 0;
|
|
146
|
+
while (attempt <= this.config.retries) {
|
|
147
|
+
try {
|
|
148
|
+
const response = await this.makeRequest(url, requestOptions);
|
|
149
|
+
return await this.handleResponse(response);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
attempt++;
|
|
153
|
+
// If it's an auth error and we have a refresh token, try to refresh
|
|
154
|
+
if (recoverable && this.isAuthError(error) && this.tokens?.refreshToken && attempt === 1) {
|
|
155
|
+
try {
|
|
156
|
+
await this.refreshAuth();
|
|
157
|
+
requestOptions.headers = this.buildHeaders(options.headers);
|
|
158
|
+
continue;
|
|
159
|
+
}
|
|
160
|
+
catch (refreshError) {
|
|
161
|
+
this.clearTokens();
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
// If we've exhausted retries or it's not a retryable error, throw
|
|
166
|
+
if (attempt > this.config.retries || !this.isRetryableError(error)) {
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
// Wait before retry (exponential backoff)
|
|
170
|
+
await this.wait(Math.pow(2, attempt - 1) * 1000);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
throw new Error('Request failed after all retries');
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* GET request
|
|
177
|
+
*/
|
|
178
|
+
async get(endpoint, options = {}) {
|
|
179
|
+
return this.request(endpoint, { ...options, method: 'GET' });
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* POST request
|
|
183
|
+
*/
|
|
184
|
+
async post(endpoint, data, options = {}) {
|
|
185
|
+
return this.request(endpoint, {
|
|
186
|
+
...options,
|
|
187
|
+
method: 'POST',
|
|
188
|
+
body: data ? JSON.stringify(data) : undefined,
|
|
189
|
+
headers: {
|
|
190
|
+
'Content-Type': 'application/json',
|
|
191
|
+
...options.headers
|
|
192
|
+
}
|
|
193
|
+
});
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* PUT request
|
|
197
|
+
*/
|
|
198
|
+
async put(endpoint, data, options = {}) {
|
|
199
|
+
return this.request(endpoint, {
|
|
200
|
+
...options,
|
|
201
|
+
method: 'PUT',
|
|
202
|
+
body: data ? JSON.stringify(data) : undefined,
|
|
203
|
+
headers: {
|
|
204
|
+
'Content-Type': 'application/json',
|
|
205
|
+
...options.headers
|
|
206
|
+
}
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* PATCH request
|
|
211
|
+
*/
|
|
212
|
+
async patch(endpoint, data, options = {}) {
|
|
213
|
+
return this.request(endpoint, {
|
|
214
|
+
...options,
|
|
215
|
+
method: 'PATCH',
|
|
216
|
+
body: data ? JSON.stringify(data) : undefined,
|
|
217
|
+
headers: {
|
|
218
|
+
'Content-Type': 'application/json',
|
|
219
|
+
...options.headers
|
|
220
|
+
}
|
|
221
|
+
});
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* DELETE request
|
|
225
|
+
*/
|
|
226
|
+
async delete(endpoint, options = {}) {
|
|
227
|
+
return this.request(endpoint, { ...options, method: 'DELETE' });
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Upload file
|
|
231
|
+
*/
|
|
232
|
+
async upload(file, filename) {
|
|
233
|
+
const formData = new FormData();
|
|
234
|
+
if (file instanceof File) {
|
|
235
|
+
formData.append('file', file);
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
// For Node.js Buffer support - convert Buffer to Uint8Array to ensure ArrayBuffer compatibility
|
|
239
|
+
const uint8Array = new Uint8Array(file);
|
|
240
|
+
const blob = new Blob([uint8Array]);
|
|
241
|
+
formData.append('file', blob, filename || 'file');
|
|
242
|
+
}
|
|
243
|
+
return this.request('/media', {
|
|
244
|
+
method: 'POST',
|
|
245
|
+
body: formData
|
|
246
|
+
// Don't set Content-Type for FormData - browser will set it with boundary
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
// API Token Management Methods
|
|
250
|
+
/**
|
|
251
|
+
* List API tokens
|
|
252
|
+
*/
|
|
253
|
+
async listApiTokens() {
|
|
254
|
+
return this.get('/tokens');
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Create API token
|
|
258
|
+
*/
|
|
259
|
+
async createApiToken(data) {
|
|
260
|
+
return this.post('/tokens', data);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Get API token by ID from server
|
|
264
|
+
*/
|
|
265
|
+
async getApiTokenById(id) {
|
|
266
|
+
return this.get(`/tokens/${id}`);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Update API token
|
|
270
|
+
*/
|
|
271
|
+
async updateApiToken(id, data) {
|
|
272
|
+
return this.put(`/tokens/${id}`, data);
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Delete API token
|
|
276
|
+
*/
|
|
277
|
+
async deleteApiToken(id) {
|
|
278
|
+
return this.delete(`/tokens/${id}`);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Set API token for authentication (alternative to JWT)
|
|
282
|
+
*/
|
|
283
|
+
setApiToken(token) {
|
|
284
|
+
this.config.apiToken = token;
|
|
285
|
+
// Clear JWT tokens when using API token
|
|
286
|
+
this.clearTokens();
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get current API token
|
|
290
|
+
*/
|
|
291
|
+
getApiToken() {
|
|
292
|
+
return this.config.apiToken || null;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Clear API token
|
|
296
|
+
*/
|
|
297
|
+
clearApiToken() {
|
|
298
|
+
this.config.apiToken = '';
|
|
299
|
+
}
|
|
300
|
+
// Private methods
|
|
301
|
+
buildUrl(endpoint) {
|
|
302
|
+
const cleanEndpoint = endpoint.startsWith('/') ? endpoint.slice(1) : endpoint;
|
|
303
|
+
const apiPath = this.config.apiVersion ? `/${this.config.apiVersion}` : '';
|
|
304
|
+
return `${this.config.baseUrl}${apiPath}/${cleanEndpoint}`;
|
|
305
|
+
}
|
|
306
|
+
buildRequestOptions(options) {
|
|
307
|
+
return {
|
|
308
|
+
...options,
|
|
309
|
+
headers: this.buildHeaders(options.headers),
|
|
310
|
+
signal: options.signal || AbortSignal.timeout(this.config.timeout)
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
buildHeaders(additionalHeaders = {}) {
|
|
314
|
+
const headers = {
|
|
315
|
+
'Accept': 'application/json',
|
|
316
|
+
...additionalHeaders
|
|
317
|
+
};
|
|
318
|
+
// Priority: JWT token > API token
|
|
319
|
+
if (this.tokens?.accessToken) {
|
|
320
|
+
headers.Authorization = `Bearer ${this.tokens.accessToken}`;
|
|
321
|
+
}
|
|
322
|
+
else if (this.config.apiToken) {
|
|
323
|
+
headers.Authorization = `Bearer ${this.config.apiToken}`;
|
|
324
|
+
}
|
|
325
|
+
return headers;
|
|
326
|
+
}
|
|
327
|
+
async makeRequest(url, options) {
|
|
328
|
+
this.log('Request', { method: options.method, url });
|
|
329
|
+
const response = await fetch(url, options);
|
|
330
|
+
this.log('Response', { status: response.status, statusText: response.statusText });
|
|
331
|
+
return response;
|
|
332
|
+
}
|
|
333
|
+
async handleResponse(response) {
|
|
334
|
+
const contentType = response.headers.get('Content-Type') || '';
|
|
335
|
+
if (!response.ok) {
|
|
336
|
+
let errorData = {};
|
|
337
|
+
if (contentType.includes('application/json')) {
|
|
338
|
+
try {
|
|
339
|
+
errorData = await response.json();
|
|
340
|
+
}
|
|
341
|
+
catch {
|
|
342
|
+
// If JSON parsing fails, use status text
|
|
343
|
+
errorData = { message: response.statusText };
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
errorData = { message: response.statusText };
|
|
348
|
+
}
|
|
349
|
+
const apiError = {
|
|
350
|
+
message: errorData.message || `HTTP ${response.status}`,
|
|
351
|
+
code: errorData.code || 'HTTP_ERROR',
|
|
352
|
+
status: response.status,
|
|
353
|
+
details: errorData.details,
|
|
354
|
+
validation: errorData.validation
|
|
355
|
+
};
|
|
356
|
+
throw apiError;
|
|
357
|
+
}
|
|
358
|
+
if (contentType.includes('application/json')) {
|
|
359
|
+
const json = await response.json();
|
|
360
|
+
return this.transformResponse(json);
|
|
361
|
+
}
|
|
362
|
+
return response.text();
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Transform Trokky API response format to client expected format
|
|
366
|
+
*/
|
|
367
|
+
transformResponse(apiResponse) {
|
|
368
|
+
// If response has success and data fields (Trokky API format)
|
|
369
|
+
if (typeof apiResponse === 'object' && apiResponse.success && apiResponse.data) {
|
|
370
|
+
const data = apiResponse.data;
|
|
371
|
+
// Transform collection responses
|
|
372
|
+
if (data.documents && data.pagination) {
|
|
373
|
+
return {
|
|
374
|
+
data: data.documents,
|
|
375
|
+
total: data.pagination.total,
|
|
376
|
+
offset: (data.pagination.page - 1) * data.pagination.limit,
|
|
377
|
+
limit: data.pagination.limit,
|
|
378
|
+
hasMore: data.pagination.page < data.pagination.pages
|
|
379
|
+
};
|
|
380
|
+
}
|
|
381
|
+
// Transform single document responses
|
|
382
|
+
if (data.id || data._id) {
|
|
383
|
+
return data;
|
|
384
|
+
}
|
|
385
|
+
// Return unwrapped data for other cases
|
|
386
|
+
return data;
|
|
387
|
+
}
|
|
388
|
+
// Return as-is if not in Trokky API format
|
|
389
|
+
return apiResponse;
|
|
390
|
+
}
|
|
391
|
+
isAuthError(error) {
|
|
392
|
+
return error.status === 401 || error.code === 'UNAUTHORIZED';
|
|
393
|
+
}
|
|
394
|
+
isRetryableError(error) {
|
|
395
|
+
// Retry on network errors and 5xx status codes
|
|
396
|
+
if (!error.status)
|
|
397
|
+
return true; // Network error
|
|
398
|
+
return error.status >= 500 && error.status < 600;
|
|
399
|
+
}
|
|
400
|
+
async wait(ms) {
|
|
401
|
+
return new Promise(resolve => setTimeout(resolve, ms));
|
|
402
|
+
}
|
|
403
|
+
log(message, data) {
|
|
404
|
+
if (this.config.debug) {
|
|
405
|
+
this.logger.debug(message, data);
|
|
406
|
+
// Also log to console for browser debugging
|
|
407
|
+
console.log(`[TrokkyClient] ${message}:`, data);
|
|
408
|
+
}
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/http/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trokky Client SDK
|
|
3
|
+
* TypeScript-native client for Trokky CMS with type generation
|
|
4
|
+
*/
|
|
5
|
+
export { HttpClient } from './http/client.js';
|
|
6
|
+
export { CacheManager } from './cache/manager.js';
|
|
7
|
+
export { DocumentClient } from './document/client.js';
|
|
8
|
+
export { TrokkyClient } from './client.js';
|
|
9
|
+
export { MediaHelper } from './media/helper.js';
|
|
10
|
+
export { QueryBuilder, SingletonBuilder } from './query/builder.js';
|
|
11
|
+
export type { QueryBuilderOptions, ExpandConfig } from './query/builder.js';
|
|
12
|
+
export { ImageUrlBuilder, createImageUrlBuilder, getSrcSet, getBestVariant } from './media/url-builder.js';
|
|
13
|
+
export type { ImageUrlBuilderOptions, ImageFormat, ImageFit } from './media/url-builder.js';
|
|
14
|
+
export { ShortcodeResolver, createMediaUrlResolver } from './shortcodes/resolver.js';
|
|
15
|
+
export { parseShortcodeAttrs, parseImageShortcode, shortcodeToHtml, resolveShortcodes, hasShortcodes, extractImageShortcodes } from './shortcodes/parser.js';
|
|
16
|
+
export type { ClientConfig, AuthConfig, ApiTokenAuth, AuthTokens, AppToken, CreateAppTokenData, AppTokenResult, RequestOptions, MediaResult, ValidationError, ApiError, CacheEntry, TypeGeneratorOptions, DocumentGeneratorOptions, ClientEvents, ClientEventType, BaseDocument, DocumentResult, CollectionResult, DocumentWithContent, QueryOptions, ListOptions, MediaAsset, MediaFieldValue, MediaAssetReference, MediaType } from './types/index.js';
|
|
17
|
+
export type { TrokkyImageShortcode, MediaUrlResolver } from './shortcodes/types.js';
|
|
18
|
+
export { TypeGenerator, generateTypes, generateTypesFromSchema, DocumentGenerator, generateDocuments } from './generator/index.js';
|
|
19
|
+
export type { FieldSchema, DocumentSchema, ProjectSchema } from './generator/index.js';
|
|
20
|
+
export type { MediaVariant, MediaFile, MediaResponse } from './media/helper.js';
|
|
21
|
+
export * as React from './react/index.js';
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnE,YAAY,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAG3E,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,cAAc,EACf,MAAM,wBAAwB,CAAA;AAC/B,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AAG3F,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAE/B,YAAY,EACV,YAAY,EACZ,UAAU,EACV,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,WAAW,EACX,eAAe,EACf,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,wBAAwB,EACxB,YAAY,EACZ,eAAe,EAEf,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,SAAS,EACV,MAAM,kBAAkB,CAAA;AAGzB,YAAY,EACV,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAG9B,OAAO,EACL,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,sBAAsB,CAAA;AAE7B,YAAY,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACd,MAAM,sBAAsB,CAAA;AAG7B,YAAY,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACd,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trokky Client SDK
|
|
3
|
+
* TypeScript-native client for Trokky CMS with type generation
|
|
4
|
+
*/
|
|
5
|
+
export { HttpClient } from './http/client.js';
|
|
6
|
+
export { CacheManager } from './cache/manager.js';
|
|
7
|
+
export { DocumentClient } from './document/client.js';
|
|
8
|
+
export { TrokkyClient } from './client.js';
|
|
9
|
+
export { MediaHelper } from './media/helper.js';
|
|
10
|
+
// Fluent Query Builder
|
|
11
|
+
export { QueryBuilder, SingletonBuilder } from './query/builder.js';
|
|
12
|
+
// Fluent Image URL Builder
|
|
13
|
+
export { ImageUrlBuilder, createImageUrlBuilder, getSrcSet, getBestVariant } from './media/url-builder.js';
|
|
14
|
+
// Shortcode support
|
|
15
|
+
export { ShortcodeResolver, createMediaUrlResolver } from './shortcodes/resolver.js';
|
|
16
|
+
export { parseShortcodeAttrs, parseImageShortcode, shortcodeToHtml, resolveShortcodes, hasShortcodes, extractImageShortcodes } from './shortcodes/parser.js';
|
|
17
|
+
// Type generator exports (for separate import)
|
|
18
|
+
export { TypeGenerator, generateTypes, generateTypesFromSchema, DocumentGenerator, generateDocuments } from './generator/index.js';
|
|
19
|
+
// React integration (optional export path)
|
|
20
|
+
export * as React from './react/index.js';
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAE/C,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAGnE,2BAA2B;AAC3B,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,SAAS,EACT,cAAc,EACf,MAAM,wBAAwB,CAAA;AAG/B,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AACpF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,sBAAsB,EACvB,MAAM,wBAAwB,CAAA;AAsC/B,+CAA+C;AAC/C,OAAO,EACL,aAAa,EACb,aAAa,EACb,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,sBAAsB,CAAA;AAe7B,2CAA2C;AAC3C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA"}
|