@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
package/dist/client.js
ADDED
|
@@ -0,0 +1,310 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Main Trokky Client
|
|
3
|
+
* High-level client that orchestrates all SDK functionality
|
|
4
|
+
*/
|
|
5
|
+
import { HttpClient } from './http/client.js';
|
|
6
|
+
import { CacheManager } from './cache/manager.js';
|
|
7
|
+
import { DocumentClient } from './document/client.js';
|
|
8
|
+
import { MediaHelper } from './media/helper.js';
|
|
9
|
+
import { ShortcodeResolver } from './shortcodes/resolver.js';
|
|
10
|
+
import { QueryBuilder, SingletonBuilder } from './query/builder.js';
|
|
11
|
+
import { ImageUrlBuilder, createImageUrlBuilder } from './media/url-builder.js';
|
|
12
|
+
export class TrokkyClient {
|
|
13
|
+
constructor(config) {
|
|
14
|
+
// Initialize core components
|
|
15
|
+
this.http = new HttpClient(config);
|
|
16
|
+
this.cache = new CacheManager(config.cacheMaxAge);
|
|
17
|
+
this.documents = new DocumentClient(this.http, this.cache);
|
|
18
|
+
this.media = new MediaHelper(this.http);
|
|
19
|
+
this.shortcodes = new ShortcodeResolver(this.http, this.media);
|
|
20
|
+
}
|
|
21
|
+
// Authentication methods (delegate to http client)
|
|
22
|
+
/**
|
|
23
|
+
* Authenticate with username and password
|
|
24
|
+
*/
|
|
25
|
+
async authenticate(credentials) {
|
|
26
|
+
return this.http.authenticate(credentials);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Refresh authentication token
|
|
30
|
+
*/
|
|
31
|
+
async refreshAuth() {
|
|
32
|
+
return this.http.refreshAuth();
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Logout and clear tokens
|
|
36
|
+
*/
|
|
37
|
+
async logout() {
|
|
38
|
+
await this.http.logout();
|
|
39
|
+
this.cache.clear(); // Clear cache on logout
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Check if client is authenticated
|
|
43
|
+
*/
|
|
44
|
+
isAuthenticated() {
|
|
45
|
+
return this.http.isAuthenticated();
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get current authentication tokens
|
|
49
|
+
*/
|
|
50
|
+
getTokens() {
|
|
51
|
+
return this.http.getTokens();
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Set authentication tokens
|
|
55
|
+
*/
|
|
56
|
+
setTokens(tokens) {
|
|
57
|
+
this.http.setTokens(tokens);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Set API token for authentication (alternative to JWT)
|
|
61
|
+
*/
|
|
62
|
+
setApiToken(token) {
|
|
63
|
+
this.http.setApiToken(token);
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get current API token
|
|
67
|
+
*/
|
|
68
|
+
getApiToken() {
|
|
69
|
+
return this.http.getApiToken();
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Clear API token
|
|
73
|
+
*/
|
|
74
|
+
clearApiToken() {
|
|
75
|
+
this.http.clearApiToken();
|
|
76
|
+
}
|
|
77
|
+
// Document methods (delegate to document client)
|
|
78
|
+
/**
|
|
79
|
+
* Get document by ID
|
|
80
|
+
*/
|
|
81
|
+
async getDocument(type, id, useCache = true) {
|
|
82
|
+
return this.documents.getById(type, id, useCache);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Query documents
|
|
86
|
+
*/
|
|
87
|
+
async queryDocuments(type, options = {}, useCache = true) {
|
|
88
|
+
return this.documents.query(type, options, useCache);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Create new document
|
|
92
|
+
*/
|
|
93
|
+
async createDocument(type, data) {
|
|
94
|
+
return this.documents.create(type, data);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Update document
|
|
98
|
+
*/
|
|
99
|
+
async updateDocument(type, id, data) {
|
|
100
|
+
return this.documents.update(type, id, data);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Replace document
|
|
104
|
+
*/
|
|
105
|
+
async replaceDocument(type, id, data) {
|
|
106
|
+
return this.documents.replace(type, id, data);
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Delete document
|
|
110
|
+
*/
|
|
111
|
+
async deleteDocument(type, id) {
|
|
112
|
+
return this.documents.delete(type, id);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Search documents
|
|
116
|
+
*/
|
|
117
|
+
async searchDocuments(type, searchTerm, fields, options = {}) {
|
|
118
|
+
return this.documents.search(type, searchTerm, fields, options);
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Count documents
|
|
122
|
+
*/
|
|
123
|
+
async countDocuments(type, filter) {
|
|
124
|
+
return this.documents.count(type, filter);
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Check if document exists
|
|
128
|
+
*/
|
|
129
|
+
async documentExists(type, id) {
|
|
130
|
+
return this.documents.exists(type, id);
|
|
131
|
+
}
|
|
132
|
+
// Media methods (delegate to http client)
|
|
133
|
+
/**
|
|
134
|
+
* Upload file
|
|
135
|
+
*/
|
|
136
|
+
async uploadFile(file, filename) {
|
|
137
|
+
return this.http.upload(file, filename);
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get media by ID
|
|
141
|
+
*/
|
|
142
|
+
async getMedia(id) {
|
|
143
|
+
return this.http.get(`/media/${id}`);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Delete media
|
|
147
|
+
*/
|
|
148
|
+
async deleteMedia(id) {
|
|
149
|
+
return this.http.delete(`/media/${id}`);
|
|
150
|
+
}
|
|
151
|
+
// API Token Management methods
|
|
152
|
+
/**
|
|
153
|
+
* List API tokens
|
|
154
|
+
*/
|
|
155
|
+
async listApiTokens() {
|
|
156
|
+
return this.http.listApiTokens();
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Create API token
|
|
160
|
+
*/
|
|
161
|
+
async createApiToken(data) {
|
|
162
|
+
return this.http.createApiToken(data);
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Get API token by ID
|
|
166
|
+
*/
|
|
167
|
+
async getApiTokenById(id) {
|
|
168
|
+
return this.http.getApiTokenById(id);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Update API token
|
|
172
|
+
*/
|
|
173
|
+
async updateApiToken(id, data) {
|
|
174
|
+
return this.http.updateApiToken(id, data);
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Delete API token
|
|
178
|
+
*/
|
|
179
|
+
async deleteApiToken(id) {
|
|
180
|
+
return this.http.deleteApiToken(id);
|
|
181
|
+
}
|
|
182
|
+
// Content methods with shortcode support
|
|
183
|
+
/**
|
|
184
|
+
* Resolve shortcodes in content to HTML
|
|
185
|
+
* Converts environment-agnostic shortcodes to actual HTML for display
|
|
186
|
+
*/
|
|
187
|
+
resolveContent(content) {
|
|
188
|
+
return this.shortcodes.resolveContent(content);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Check if content contains shortcodes
|
|
192
|
+
*/
|
|
193
|
+
hasShortcodes(content) {
|
|
194
|
+
return this.shortcodes.hasShortcodes(content);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Extract media dependencies from content
|
|
198
|
+
* Useful for preloading or understanding content requirements
|
|
199
|
+
*/
|
|
200
|
+
extractContentMedia(content) {
|
|
201
|
+
return this.shortcodes.extractImageShortcodes(content);
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Preload all media in content for faster rendering
|
|
205
|
+
*/
|
|
206
|
+
async preloadContentMedia(content) {
|
|
207
|
+
return this.shortcodes.preloadContentMedia(content);
|
|
208
|
+
}
|
|
209
|
+
// Utility methods
|
|
210
|
+
/**
|
|
211
|
+
* Test API connection
|
|
212
|
+
*/
|
|
213
|
+
async ping() {
|
|
214
|
+
return this.http.get('/ping');
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get API health status
|
|
218
|
+
*/
|
|
219
|
+
async health() {
|
|
220
|
+
return this.http.get('/health');
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Clear client cache
|
|
224
|
+
*/
|
|
225
|
+
clearCache() {
|
|
226
|
+
this.cache.clear();
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get cache statistics
|
|
230
|
+
*/
|
|
231
|
+
getCacheStats() {
|
|
232
|
+
return {
|
|
233
|
+
size: this.cache.size()
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Destroy client and cleanup resources
|
|
238
|
+
*/
|
|
239
|
+
destroy() {
|
|
240
|
+
this.cache.destroy();
|
|
241
|
+
}
|
|
242
|
+
// ============================================
|
|
243
|
+
// Fluent Query Builder API
|
|
244
|
+
// ============================================
|
|
245
|
+
/**
|
|
246
|
+
* Start a fluent query for a collection type
|
|
247
|
+
*
|
|
248
|
+
* @example
|
|
249
|
+
* ```typescript
|
|
250
|
+
* const articles = await client
|
|
251
|
+
* .from('article')
|
|
252
|
+
* .published()
|
|
253
|
+
* .expand('category')
|
|
254
|
+
* .sort({ _createdAt: 'desc' })
|
|
255
|
+
* .limit(10)
|
|
256
|
+
* .fetch()
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
from(type) {
|
|
260
|
+
return new QueryBuilder(this.http, this.cache, type);
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Fetch a singleton document (e.g., homepage, settings)
|
|
264
|
+
*
|
|
265
|
+
* @example
|
|
266
|
+
* ```typescript
|
|
267
|
+
* const homepage = await client.singleton('homepage').fetch()
|
|
268
|
+
* const settings = await client.singleton('settings', 'site-settings').fetch()
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
singleton(type, id) {
|
|
272
|
+
return new SingletonBuilder(this.http, this.cache, type, id);
|
|
273
|
+
}
|
|
274
|
+
// ============================================
|
|
275
|
+
// Fluent Image URL Builder API
|
|
276
|
+
// ============================================
|
|
277
|
+
/**
|
|
278
|
+
* Create an image URL builder for a media field
|
|
279
|
+
*
|
|
280
|
+
* @example
|
|
281
|
+
* ```typescript
|
|
282
|
+
* const url = client.imageUrl(article.featuredImage)
|
|
283
|
+
* .width(800)
|
|
284
|
+
* .height(400)
|
|
285
|
+
* .format('webp')
|
|
286
|
+
* .url()
|
|
287
|
+
* ```
|
|
288
|
+
*/
|
|
289
|
+
imageUrl(source) {
|
|
290
|
+
return new ImageUrlBuilder({
|
|
291
|
+
baseUrl: this.http.getBaseUrl()
|
|
292
|
+
}).image(source);
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Create a reusable image URL builder factory
|
|
296
|
+
*
|
|
297
|
+
* @example
|
|
298
|
+
* ```typescript
|
|
299
|
+
* const urlFor = client.createImageUrlBuilder()
|
|
300
|
+
* const url = urlFor(article.image).width(800).url()
|
|
301
|
+
* ```
|
|
302
|
+
*/
|
|
303
|
+
createImageUrlBuilder(options) {
|
|
304
|
+
return createImageUrlBuilder({
|
|
305
|
+
baseUrl: this.http.getBaseUrl(),
|
|
306
|
+
proxyPath: options?.proxyPath
|
|
307
|
+
});
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document Client
|
|
3
|
+
* High-level API for document operations
|
|
4
|
+
*/
|
|
5
|
+
import type { QueryOptions, DocumentResult, CollectionResult, BaseDocument } from '../types/index.js';
|
|
6
|
+
import type { HttpClient } from '../http/client.js';
|
|
7
|
+
import type { CacheManager } from '../cache/manager.js';
|
|
8
|
+
export declare class DocumentClient {
|
|
9
|
+
private http;
|
|
10
|
+
private cache;
|
|
11
|
+
constructor(http: HttpClient, cache: CacheManager);
|
|
12
|
+
/**
|
|
13
|
+
* Get document by ID
|
|
14
|
+
*/
|
|
15
|
+
getById<T extends BaseDocument>(type: string, id: string, useCache?: boolean): Promise<DocumentResult<T>>;
|
|
16
|
+
/**
|
|
17
|
+
* Query documents
|
|
18
|
+
*/
|
|
19
|
+
query<T extends BaseDocument>(type: string, options?: QueryOptions, useCache?: boolean): Promise<CollectionResult<T>>;
|
|
20
|
+
/**
|
|
21
|
+
* Create new document
|
|
22
|
+
*/
|
|
23
|
+
create<T extends BaseDocument>(type: string, data: Omit<T, '_id' | '_type' | '_createdAt' | '_updatedAt' | '_version'>): Promise<DocumentResult<T>>;
|
|
24
|
+
/**
|
|
25
|
+
* Update document
|
|
26
|
+
*/
|
|
27
|
+
update<T extends BaseDocument>(type: string, id: string, data: Partial<Omit<T, '_id' | '_type' | '_createdAt' | '_updatedAt' | '_version'>>): Promise<DocumentResult<T>>;
|
|
28
|
+
/**
|
|
29
|
+
* Replace document
|
|
30
|
+
*/
|
|
31
|
+
replace<T extends BaseDocument>(type: string, id: string, data: Omit<T, '_id' | '_type' | '_createdAt' | '_updatedAt' | '_version'>): Promise<DocumentResult<T>>;
|
|
32
|
+
/**
|
|
33
|
+
* Delete document
|
|
34
|
+
*/
|
|
35
|
+
delete(type: string, id: string): Promise<void>;
|
|
36
|
+
/**
|
|
37
|
+
* Get all documents of a type (paginated)
|
|
38
|
+
*/
|
|
39
|
+
getAll<T extends BaseDocument>(type: string, limit?: number, useCache?: boolean): Promise<CollectionResult<T>>;
|
|
40
|
+
/**
|
|
41
|
+
* Search documents
|
|
42
|
+
*/
|
|
43
|
+
search<T extends BaseDocument>(type: string, searchTerm: string, fields?: string[], options?: Omit<QueryOptions, 'filter'>): Promise<CollectionResult<T>>;
|
|
44
|
+
/**
|
|
45
|
+
* Count documents
|
|
46
|
+
*/
|
|
47
|
+
count(type: string, filter?: Record<string, any>): Promise<number>;
|
|
48
|
+
/**
|
|
49
|
+
* Check if document exists
|
|
50
|
+
*/
|
|
51
|
+
exists(type: string, id: string): Promise<boolean>;
|
|
52
|
+
/**
|
|
53
|
+
* Invalidate cache for a document type
|
|
54
|
+
*/
|
|
55
|
+
private invalidateTypeCache;
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/document/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAEvD,qBAAa,cAAc;IAEvB,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,KAAK;gBADL,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,YAAY;IAG7B;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,YAAY,EAClC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,QAAQ,UAAO,GACd,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAiB7B;;OAEG;IACG,KAAK,CAAC,CAAC,SAAS,YAAY,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,YAAiB,EAC1B,QAAQ,UAAO,GACd,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IA6C/B;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,YAAY,EACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC,GACxE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAc7B;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,YAAY,EACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC,CAAC,GACjF,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAa7B;;OAEG;IACG,OAAO,CAAC,CAAC,SAAS,YAAY,EAClC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,UAAU,CAAC,GACxE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;IAkB7B;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWrD;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,YAAY,EACjC,IAAI,EAAE,MAAM,EACZ,KAAK,SAAM,EACX,QAAQ,UAAO,GACd,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAI/B;;OAEG;IACG,MAAM,CAAC,CAAC,SAAS,YAAY,EACjC,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,EAAE,EACjB,OAAO,GAAE,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAM,GACzC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;IAY/B;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAYxE;;OAEG;IACG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUxD;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAQ5B"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document Client
|
|
3
|
+
* High-level API for document operations
|
|
4
|
+
*/
|
|
5
|
+
export class DocumentClient {
|
|
6
|
+
constructor(http, cache) {
|
|
7
|
+
this.http = http;
|
|
8
|
+
this.cache = cache;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Get document by ID
|
|
12
|
+
*/
|
|
13
|
+
async getById(type, id, useCache = true) {
|
|
14
|
+
const cacheKey = this.cache.generateKey(`collections/${type}/${id}`);
|
|
15
|
+
if (useCache) {
|
|
16
|
+
const cached = this.cache.get(cacheKey);
|
|
17
|
+
if (cached)
|
|
18
|
+
return cached;
|
|
19
|
+
}
|
|
20
|
+
const result = await this.http.get(`/collections/${type}/${id}`);
|
|
21
|
+
if (useCache) {
|
|
22
|
+
this.cache.set(cacheKey, result);
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Query documents
|
|
28
|
+
*/
|
|
29
|
+
async query(type, options = {}, useCache = true) {
|
|
30
|
+
const cacheKey = this.cache.generateKey(`collections/${type}`, options);
|
|
31
|
+
if (useCache) {
|
|
32
|
+
const cached = this.cache.get(cacheKey);
|
|
33
|
+
if (cached)
|
|
34
|
+
return cached;
|
|
35
|
+
}
|
|
36
|
+
const queryParams = new URLSearchParams();
|
|
37
|
+
if (options.filter) {
|
|
38
|
+
queryParams.set('filter', JSON.stringify(options.filter));
|
|
39
|
+
}
|
|
40
|
+
if (options.sort) {
|
|
41
|
+
// Convert sort object to server expected format
|
|
42
|
+
if (typeof options.sort === 'object') {
|
|
43
|
+
Object.entries(options.sort).forEach(([field, direction]) => {
|
|
44
|
+
const dir = direction === -1 || direction === 'desc' ? 'desc' : 'asc';
|
|
45
|
+
queryParams.append('sort', `${field}.${dir}`);
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// If it's already a string, use as-is
|
|
50
|
+
queryParams.set('sort', options.sort.toString());
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (options.limit) {
|
|
54
|
+
queryParams.set('limit', options.limit.toString());
|
|
55
|
+
}
|
|
56
|
+
if (options.offset) {
|
|
57
|
+
queryParams.set('offset', options.offset.toString());
|
|
58
|
+
}
|
|
59
|
+
if (options.select) {
|
|
60
|
+
queryParams.set('select', options.select.join(','));
|
|
61
|
+
}
|
|
62
|
+
const endpoint = `/collections/${type}${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
|
|
63
|
+
const result = await this.http.get(endpoint);
|
|
64
|
+
if (useCache) {
|
|
65
|
+
this.cache.set(cacheKey, result);
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Create new document
|
|
71
|
+
*/
|
|
72
|
+
async create(type, data) {
|
|
73
|
+
const payload = {
|
|
74
|
+
...data,
|
|
75
|
+
_type: type
|
|
76
|
+
};
|
|
77
|
+
const result = await this.http.post(`/collections/${type}`, payload);
|
|
78
|
+
// Invalidate type cache
|
|
79
|
+
this.invalidateTypeCache(type);
|
|
80
|
+
return result;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Update document
|
|
84
|
+
*/
|
|
85
|
+
async update(type, id, data) {
|
|
86
|
+
const result = await this.http.patch(`/collections/${type}/${id}`, data);
|
|
87
|
+
// Update cache
|
|
88
|
+
const cacheKey = this.cache.generateKey(`collections/${type}/${id}`);
|
|
89
|
+
this.cache.set(cacheKey, result);
|
|
90
|
+
// Invalidate type cache
|
|
91
|
+
this.invalidateTypeCache(type);
|
|
92
|
+
return result;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Replace document
|
|
96
|
+
*/
|
|
97
|
+
async replace(type, id, data) {
|
|
98
|
+
const payload = {
|
|
99
|
+
...data,
|
|
100
|
+
_type: type
|
|
101
|
+
};
|
|
102
|
+
const result = await this.http.put(`/collections/${type}/${id}`, payload);
|
|
103
|
+
// Update cache
|
|
104
|
+
const cacheKey = this.cache.generateKey(`collections/${type}/${id}`);
|
|
105
|
+
this.cache.set(cacheKey, result);
|
|
106
|
+
// Invalidate type cache
|
|
107
|
+
this.invalidateTypeCache(type);
|
|
108
|
+
return result;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Delete document
|
|
112
|
+
*/
|
|
113
|
+
async delete(type, id) {
|
|
114
|
+
await this.http.delete(`/collections/${type}/${id}`);
|
|
115
|
+
// Remove from cache
|
|
116
|
+
const cacheKey = this.cache.generateKey(`collections/${type}/${id}`);
|
|
117
|
+
this.cache.delete(cacheKey);
|
|
118
|
+
// Invalidate type cache
|
|
119
|
+
this.invalidateTypeCache(type);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get all documents of a type (paginated)
|
|
123
|
+
*/
|
|
124
|
+
async getAll(type, limit = 100, useCache = true) {
|
|
125
|
+
return this.query(type, { limit }, useCache);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Search documents
|
|
129
|
+
*/
|
|
130
|
+
async search(type, searchTerm, fields, options = {}) {
|
|
131
|
+
const filter = {
|
|
132
|
+
$text: { $search: searchTerm }
|
|
133
|
+
};
|
|
134
|
+
if (fields && fields.length > 0) {
|
|
135
|
+
filter.$text.$searchFields = fields;
|
|
136
|
+
}
|
|
137
|
+
return this.query(type, { ...options, filter }, false); // Don't cache search results
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Count documents
|
|
141
|
+
*/
|
|
142
|
+
async count(type, filter) {
|
|
143
|
+
const queryParams = new URLSearchParams();
|
|
144
|
+
if (filter) {
|
|
145
|
+
queryParams.set('filter', JSON.stringify(filter));
|
|
146
|
+
}
|
|
147
|
+
const endpoint = `/collections/${type}/count${queryParams.toString() ? `?${queryParams.toString()}` : ''}`;
|
|
148
|
+
const result = await this.http.get(endpoint);
|
|
149
|
+
return result.count;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Check if document exists
|
|
153
|
+
*/
|
|
154
|
+
async exists(type, id) {
|
|
155
|
+
try {
|
|
156
|
+
await this.http.get(`/collections/${type}/${id}/exists`);
|
|
157
|
+
return true;
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
if (error.status === 404)
|
|
161
|
+
return false;
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Invalidate cache for a document type
|
|
167
|
+
*/
|
|
168
|
+
invalidateTypeCache(type) {
|
|
169
|
+
// In a more sophisticated implementation, we'd track cache keys by type
|
|
170
|
+
// For now, we'll clear all cache entries that start with the type
|
|
171
|
+
const keysToDelete = [];
|
|
172
|
+
// This is a simplified approach - in production you'd want better cache key management
|
|
173
|
+
this.cache.clear(); // For now, just clear all cache
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/document/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document Generator with Faker.js Integration
|
|
3
|
+
* Generates realistic test documents based on Trokky schemas
|
|
4
|
+
*/
|
|
5
|
+
import type { DocumentGeneratorOptions, DocumentSchema, BaseDocument } from '../types/index.js';
|
|
6
|
+
export declare class DocumentGenerator {
|
|
7
|
+
private options;
|
|
8
|
+
private schemas;
|
|
9
|
+
private generatedDocuments;
|
|
10
|
+
constructor(options: DocumentGeneratorOptions);
|
|
11
|
+
/**
|
|
12
|
+
* Generate documents from schema URL
|
|
13
|
+
*/
|
|
14
|
+
generateFromUrl(): Promise<Record<string, BaseDocument[]>>;
|
|
15
|
+
/**
|
|
16
|
+
* Generate documents from provided schemas
|
|
17
|
+
*/
|
|
18
|
+
generateFromSchemas(schemas: DocumentSchema[]): Promise<Record<string, BaseDocument[]>>;
|
|
19
|
+
/**
|
|
20
|
+
* Generate documents for all schemas
|
|
21
|
+
*/
|
|
22
|
+
private generateDocuments;
|
|
23
|
+
/**
|
|
24
|
+
* Generate a single document based on schema
|
|
25
|
+
*/
|
|
26
|
+
private generateDocument;
|
|
27
|
+
/**
|
|
28
|
+
* Generate value for a specific field
|
|
29
|
+
*/
|
|
30
|
+
private generateFieldValue;
|
|
31
|
+
private generateStringValue;
|
|
32
|
+
private generateSlugValue;
|
|
33
|
+
private generateNumberValue;
|
|
34
|
+
private generateArrayValue;
|
|
35
|
+
private generateObjectValue;
|
|
36
|
+
private generateReferenceValue;
|
|
37
|
+
private generateMediaValue;
|
|
38
|
+
private generateRichTextValue;
|
|
39
|
+
private fillReferences;
|
|
40
|
+
private generateId;
|
|
41
|
+
private fetchSchemas;
|
|
42
|
+
private writeToFiles;
|
|
43
|
+
private generateTypeScriptFile;
|
|
44
|
+
private capitalize;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Convenience function to generate documents
|
|
48
|
+
*/
|
|
49
|
+
export declare function generateDocuments(options: DocumentGeneratorOptions): Promise<Record<string, BaseDocument[]>>;
|
|
50
|
+
//# sourceMappingURL=document-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-generator.d.ts","sourceRoot":"","sources":["../../src/generator/document-generator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAsBH,OAAO,KAAK,EACV,wBAAwB,EACxB,cAAc,EAEd,YAAY,EACb,MAAM,mBAAmB,CAAA;AAE1B,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,OAAO,CAAoC;IACnD,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,kBAAkB,CAAqC;gBAEnD,OAAO,EAAE,wBAAwB;IAiB7C;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAKhE;;OAEG;IACG,mBAAmB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAI7F;;OAEG;YACW,iBAAiB;IAoC/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAqBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAyD1B,OAAO,CAAC,mBAAmB;IA6B3B,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,kBAAkB;IAmB1B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,sBAAsB;IAoB9B,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,qBAAqB;IAuB7B,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,UAAU;YAIJ,YAAY;YAcZ,YAAY;IAuB1B,OAAO,CAAC,sBAAsB;IAa9B,OAAO,CAAC,UAAU;CAGnB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC,CAQlH"}
|