@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.
Files changed (86) hide show
  1. package/README.md +833 -0
  2. package/dist/cache/manager.d.ts +47 -0
  3. package/dist/cache/manager.d.ts.map +1 -0
  4. package/dist/cache/manager.js +100 -0
  5. package/dist/cache/manager.js.map +1 -0
  6. package/dist/cli/index.d.ts +7 -0
  7. package/dist/cli/index.d.ts.map +1 -0
  8. package/dist/cli/index.js +159 -0
  9. package/dist/cli/index.js.map +1 -0
  10. package/dist/client.d.ts +221 -0
  11. package/dist/client.d.ts.map +1 -0
  12. package/dist/client.js +310 -0
  13. package/dist/client.js.map +1 -0
  14. package/dist/document/client.d.ts +57 -0
  15. package/dist/document/client.d.ts.map +1 -0
  16. package/dist/document/client.js +176 -0
  17. package/dist/document/client.js.map +1 -0
  18. package/dist/generator/document-generator.d.ts +50 -0
  19. package/dist/generator/document-generator.d.ts.map +1 -0
  20. package/dist/generator/document-generator.js +329 -0
  21. package/dist/generator/document-generator.js.map +1 -0
  22. package/dist/generator/index.d.ts +121 -0
  23. package/dist/generator/index.d.ts.map +1 -0
  24. package/dist/generator/index.js +559 -0
  25. package/dist/generator/index.js.map +1 -0
  26. package/dist/http/client.d.ts +117 -0
  27. package/dist/http/client.d.ts.map +1 -0
  28. package/dist/http/client.js +411 -0
  29. package/dist/http/client.js.map +1 -0
  30. package/dist/index.d.ts +22 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +21 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/media/helper.d.ts +89 -0
  35. package/dist/media/helper.d.ts.map +1 -0
  36. package/dist/media/helper.js +197 -0
  37. package/dist/media/helper.js.map +1 -0
  38. package/dist/media/url-builder.d.ts +142 -0
  39. package/dist/media/url-builder.d.ts.map +1 -0
  40. package/dist/media/url-builder.js +280 -0
  41. package/dist/media/url-builder.js.map +1 -0
  42. package/dist/query/builder.d.ts +270 -0
  43. package/dist/query/builder.d.ts.map +1 -0
  44. package/dist/query/builder.js +731 -0
  45. package/dist/query/builder.js.map +1 -0
  46. package/dist/query/index.d.ts +6 -0
  47. package/dist/query/index.d.ts.map +1 -0
  48. package/dist/query/index.js +5 -0
  49. package/dist/query/index.js.map +1 -0
  50. package/dist/react/hooks.d.ts +42 -0
  51. package/dist/react/hooks.d.ts.map +1 -0
  52. package/dist/react/hooks.js +59 -0
  53. package/dist/react/hooks.js.map +1 -0
  54. package/dist/react/index.d.ts +6 -0
  55. package/dist/react/index.d.ts.map +1 -0
  56. package/dist/react/index.js +6 -0
  57. package/dist/react/index.js.map +1 -0
  58. package/dist/server/index.d.ts +9 -0
  59. package/dist/server/index.d.ts.map +1 -0
  60. package/dist/server/index.js +8 -0
  61. package/dist/server/index.js.map +1 -0
  62. package/dist/server/media-proxy.d.ts +102 -0
  63. package/dist/server/media-proxy.d.ts.map +1 -0
  64. package/dist/server/media-proxy.js +160 -0
  65. package/dist/server/media-proxy.js.map +1 -0
  66. package/dist/shortcodes/index.d.ts +11 -0
  67. package/dist/shortcodes/index.d.ts.map +1 -0
  68. package/dist/shortcodes/index.js +10 -0
  69. package/dist/shortcodes/index.js.map +1 -0
  70. package/dist/shortcodes/parser.d.ts +32 -0
  71. package/dist/shortcodes/parser.d.ts.map +1 -0
  72. package/dist/shortcodes/parser.js +88 -0
  73. package/dist/shortcodes/parser.js.map +1 -0
  74. package/dist/shortcodes/resolver.d.ts +57 -0
  75. package/dist/shortcodes/resolver.d.ts.map +1 -0
  76. package/dist/shortcodes/resolver.js +97 -0
  77. package/dist/shortcodes/resolver.js.map +1 -0
  78. package/dist/shortcodes/types.d.ts +17 -0
  79. package/dist/shortcodes/types.d.ts.map +1 -0
  80. package/dist/shortcodes/types.js +6 -0
  81. package/dist/shortcodes/types.js.map +1 -0
  82. package/dist/types/index.d.ts +134 -0
  83. package/dist/types/index.d.ts.map +1 -0
  84. package/dist/types/index.js +6 -0
  85. package/dist/types/index.js.map +1 -0
  86. 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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"}
@@ -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"}