@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,329 @@
1
+ /**
2
+ * Document Generator with Faker.js Integration
3
+ * Generates realistic test documents based on Trokky schemas
4
+ */
5
+ let faker;
6
+ async function ensureFaker() {
7
+ if (faker)
8
+ return;
9
+ try {
10
+ ;
11
+ ({ faker } = await import('@faker-js/faker'));
12
+ }
13
+ catch {
14
+ throw new Error('DocumentGenerator requires @faker-js/faker, which is not installed. It is an optional ' +
15
+ 'peer of @trokky/client so that reading content does not pull in a test-data library. ' +
16
+ 'Install it with: npm install -D @faker-js/faker');
17
+ }
18
+ }
19
+ export class DocumentGenerator {
20
+ constructor(options) {
21
+ this.schemas = [];
22
+ this.generatedDocuments = {};
23
+ this.options = {
24
+ schemaUrl: options.schemaUrl || '',
25
+ schemas: options.schemas || [],
26
+ count: options.count || 10,
27
+ locale: options.locale || 'en',
28
+ seed: options.seed || Math.floor(Math.random() * 10000),
29
+ format: options.format || 'json',
30
+ outputDir: options.outputDir || './generated',
31
+ fieldOverrides: options.fieldOverrides || {},
32
+ generateReferences: options.generateReferences ?? true,
33
+ existingDocuments: options.existingDocuments || {}
34
+ };
35
+ // The seed is applied in generateDocuments, once faker has been loaded.
36
+ }
37
+ /**
38
+ * Generate documents from schema URL
39
+ */
40
+ async generateFromUrl() {
41
+ const schemas = await this.fetchSchemas();
42
+ return this.generateDocuments(schemas);
43
+ }
44
+ /**
45
+ * Generate documents from provided schemas
46
+ */
47
+ async generateFromSchemas(schemas) {
48
+ return this.generateDocuments(schemas);
49
+ }
50
+ /**
51
+ * Generate documents for all schemas
52
+ */
53
+ async generateDocuments(schemas) {
54
+ await ensureFaker();
55
+ // Seeded here rather than in the constructor so that the same input still produces the
56
+ // same output, now that faker is not available until this point.
57
+ faker.seed(this.options.seed);
58
+ this.schemas = schemas;
59
+ this.generatedDocuments = {};
60
+ // First pass: Generate documents without references
61
+ for (const schema of schemas) {
62
+ this.generatedDocuments[schema.name] = [];
63
+ for (let i = 0; i < this.options.count; i++) {
64
+ const document = this.generateDocument(schema, false);
65
+ this.generatedDocuments[schema.name].push(document);
66
+ }
67
+ }
68
+ // Second pass: Fill in references if enabled
69
+ if (this.options.generateReferences) {
70
+ for (const schema of schemas) {
71
+ for (const document of this.generatedDocuments[schema.name]) {
72
+ this.fillReferences(document, schema);
73
+ }
74
+ }
75
+ }
76
+ // Write to files if outputDir is specified
77
+ if (this.options.outputDir) {
78
+ await this.writeToFiles();
79
+ }
80
+ return this.generatedDocuments;
81
+ }
82
+ /**
83
+ * Generate a single document based on schema
84
+ */
85
+ generateDocument(schema, includeReferences = true) {
86
+ const document = {
87
+ _id: this.generateId(),
88
+ _type: schema.name,
89
+ _createdAt: faker.date.past().toISOString(),
90
+ _updatedAt: faker.date.recent().toISOString(),
91
+ _version: 1
92
+ };
93
+ // Generate field values
94
+ for (const field of schema.fields) {
95
+ if (field.type === 'reference' && !includeReferences) {
96
+ continue; // Skip references in first pass
97
+ }
98
+ document[field.name] = this.generateFieldValue(field, schema.name);
99
+ }
100
+ return document;
101
+ }
102
+ /**
103
+ * Generate value for a specific field
104
+ */
105
+ generateFieldValue(field, schemaName) {
106
+ // Check for custom field override
107
+ if (this.options.fieldOverrides[field.name]) {
108
+ return this.options.fieldOverrides[field.name](faker, field);
109
+ }
110
+ // Handle required vs optional fields
111
+ if (!field.required && faker.datatype.boolean(0.8)) {
112
+ // 20% chance to leave optional fields empty
113
+ return null;
114
+ }
115
+ switch (field.type) {
116
+ case 'string':
117
+ return this.generateStringValue(field);
118
+ case 'slug':
119
+ return this.generateSlugValue(field);
120
+ case 'email':
121
+ return faker.internet.email();
122
+ case 'url':
123
+ return faker.internet.url();
124
+ case 'number':
125
+ return this.generateNumberValue(field);
126
+ case 'boolean':
127
+ return faker.datatype.boolean();
128
+ case 'date':
129
+ case 'datetime':
130
+ return faker.date.past().toISOString();
131
+ case 'array':
132
+ return this.generateArrayValue(field, schemaName);
133
+ case 'object':
134
+ return this.generateObjectValue(field, schemaName);
135
+ case 'reference':
136
+ return this.generateReferenceValue(field);
137
+ case 'media':
138
+ case 'image':
139
+ return this.generateMediaValue(field);
140
+ case 'portableText':
141
+ case 'richText':
142
+ return this.generateRichTextValue();
143
+ default:
144
+ return faker.lorem.words(3);
145
+ }
146
+ }
147
+ generateStringValue(field) {
148
+ const validation = field.validation || {};
149
+ const maxLength = validation.maxLength || 100;
150
+ const minLength = validation.minLength || 5;
151
+ // Generate different types of string content based on field name
152
+ const fieldName = field.name.toLowerCase();
153
+ if (fieldName.includes('title') || fieldName.includes('name')) {
154
+ return faker.lorem.words(faker.number.int({ min: 1, max: 4 }));
155
+ }
156
+ if (fieldName.includes('description') || fieldName.includes('content')) {
157
+ return faker.lorem.paragraphs(faker.number.int({ min: 1, max: 3 }));
158
+ }
159
+ if (fieldName.includes('phone')) {
160
+ return faker.phone.number();
161
+ }
162
+ if (fieldName.includes('address')) {
163
+ return faker.location.streetAddress();
164
+ }
165
+ // Default string generation
166
+ const length = faker.number.int({ min: minLength, max: Math.min(maxLength, 200) });
167
+ return faker.lorem.sentence(Math.ceil(length / 8));
168
+ }
169
+ generateSlugValue(field) {
170
+ const prefix = field.prefix || '';
171
+ const suffix = field.suffix || '';
172
+ let slug = faker.lorem.slug(faker.number.int({ min: 2, max: 4 }));
173
+ if (prefix) {
174
+ slug = `${prefix}-${slug}`;
175
+ }
176
+ if (suffix) {
177
+ slug = `${slug}-${suffix}`;
178
+ }
179
+ return slug;
180
+ }
181
+ generateNumberValue(field) {
182
+ const validation = field.validation || {};
183
+ const min = validation.min || 0;
184
+ const max = validation.max || 1000;
185
+ return faker.number.int({ min, max });
186
+ }
187
+ generateArrayValue(field, schemaName) {
188
+ const itemType = field.options?.of;
189
+ if (!itemType)
190
+ return [];
191
+ const length = faker.number.int({ min: 1, max: 5 });
192
+ const items = [];
193
+ for (let i = 0; i < length; i++) {
194
+ if (typeof itemType === 'object') {
195
+ items.push(this.generateFieldValue(itemType, schemaName));
196
+ }
197
+ else {
198
+ // Simple array types
199
+ items.push(this.generateFieldValue({ type: itemType, name: 'item' }, schemaName));
200
+ }
201
+ }
202
+ return items;
203
+ }
204
+ generateObjectValue(field, schemaName) {
205
+ const subFields = field.options?.fields || [];
206
+ const obj = {};
207
+ for (const subField of subFields) {
208
+ obj[subField.name] = this.generateFieldValue(subField, schemaName);
209
+ }
210
+ return obj;
211
+ }
212
+ generateReferenceValue(field) {
213
+ const referenceTo = field.options?.to;
214
+ if (!referenceTo)
215
+ return null;
216
+ // Use existing documents if provided
217
+ const existingIds = this.options.existingDocuments[referenceTo];
218
+ if (existingIds && existingIds.length > 0) {
219
+ return faker.helpers.arrayElement(existingIds);
220
+ }
221
+ // Use generated documents
222
+ const generatedDocs = this.generatedDocuments[referenceTo];
223
+ if (generatedDocs && generatedDocs.length > 0) {
224
+ return faker.helpers.arrayElement(generatedDocs)._id;
225
+ }
226
+ // Generate a fake ID
227
+ return this.generateId();
228
+ }
229
+ generateMediaValue(field) {
230
+ return {
231
+ _type: 'media',
232
+ asset: {
233
+ _ref: this.generateId(),
234
+ _type: 'mediaAsset'
235
+ },
236
+ alt: faker.lorem.sentence(),
237
+ title: faker.lorem.words(3),
238
+ url: faker.image.url({ width: 800, height: 600 }),
239
+ filename: faker.system.fileName(),
240
+ size: faker.number.int({ min: 1000, max: 10000000 }),
241
+ mimeType: faker.helpers.arrayElement(['image/jpeg', 'image/png', 'image/webp'])
242
+ };
243
+ }
244
+ generateRichTextValue() {
245
+ const blocks = [];
246
+ const numBlocks = faker.number.int({ min: 1, max: 3 });
247
+ for (let i = 0; i < numBlocks; i++) {
248
+ blocks.push({
249
+ _key: this.generateId(),
250
+ _type: 'block',
251
+ style: faker.helpers.arrayElement(['normal', 'h1', 'h2', 'h3']),
252
+ children: [
253
+ {
254
+ _key: this.generateId(),
255
+ _type: 'span',
256
+ text: faker.lorem.paragraph(),
257
+ marks: []
258
+ }
259
+ ]
260
+ });
261
+ }
262
+ return blocks;
263
+ }
264
+ fillReferences(document, schema) {
265
+ for (const field of schema.fields) {
266
+ if (field.type === 'reference' && !document[field.name]) {
267
+ document[field.name] = this.generateReferenceValue(field);
268
+ }
269
+ }
270
+ }
271
+ generateId() {
272
+ return `doc-${faker.string.uuid()}`;
273
+ }
274
+ async fetchSchemas() {
275
+ if (!this.options.schemaUrl) {
276
+ throw new Error('Schema URL is required when not providing schemas directly');
277
+ }
278
+ const response = await fetch(this.options.schemaUrl);
279
+ if (!response.ok) {
280
+ throw new Error(`Failed to fetch schemas: ${response.statusText}`);
281
+ }
282
+ const data = await response.json();
283
+ return data.documents || data.schemas || [];
284
+ }
285
+ async writeToFiles() {
286
+ const fs = await import('fs/promises');
287
+ const path = await import('path');
288
+ // Ensure output directory exists
289
+ await fs.mkdir(this.options.outputDir, { recursive: true });
290
+ for (const [schemaName, documents] of Object.entries(this.generatedDocuments)) {
291
+ if (this.options.format === 'json' || this.options.format === 'both') {
292
+ const jsonPath = path.join(this.options.outputDir, `${schemaName}.json`);
293
+ await fs.writeFile(jsonPath, JSON.stringify(documents, null, 2));
294
+ }
295
+ if (this.options.format === 'typescript' || this.options.format === 'both') {
296
+ const tsPath = path.join(this.options.outputDir, `${schemaName}.ts`);
297
+ const tsContent = this.generateTypeScriptFile(schemaName, documents);
298
+ await fs.writeFile(tsPath, tsContent);
299
+ }
300
+ }
301
+ console.log(`Generated ${Object.keys(this.generatedDocuments).length} document collections in ${this.options.outputDir}`);
302
+ }
303
+ generateTypeScriptFile(schemaName, documents) {
304
+ const interfaceName = `${this.capitalize(schemaName)}Document`;
305
+ let content = `/**\n * Generated test documents for ${schemaName}\n * Auto-generated with @faker-js/faker\n */\n\n`;
306
+ content += `import type { ${interfaceName} } from '../types/index.js'\n\n`;
307
+ content += `export const ${schemaName}TestData: ${interfaceName}[] = `;
308
+ content += JSON.stringify(documents, null, 2);
309
+ content += ' as const\n\n';
310
+ content += `export default ${schemaName}TestData\n`;
311
+ return content;
312
+ }
313
+ capitalize(str) {
314
+ return str.charAt(0).toUpperCase() + str.slice(1);
315
+ }
316
+ }
317
+ /**
318
+ * Convenience function to generate documents
319
+ */
320
+ export async function generateDocuments(options) {
321
+ const generator = new DocumentGenerator(options);
322
+ if (options.schemas) {
323
+ return generator.generateFromSchemas(options.schemas);
324
+ }
325
+ else {
326
+ return generator.generateFromUrl();
327
+ }
328
+ }
329
+ //# sourceMappingURL=document-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-generator.js","sourceRoot":"","sources":["../../src/generator/document-generator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * TypeScript Type Generator
3
+ * Generates TypeScript types from Trokky schema definitions
4
+ */
5
+ import type { TypeGeneratorOptions } from '../types/index.js';
6
+ export interface FieldSchema {
7
+ type: string;
8
+ name: string;
9
+ title?: string;
10
+ description?: string;
11
+ required?: boolean;
12
+ validation?: Record<string, any>;
13
+ options?: Record<string, any>;
14
+ fields?: FieldSchema[] | Record<string, FieldSchema>;
15
+ of?: FieldSchema;
16
+ to?: string | string[];
17
+ default?: any;
18
+ hidden?: boolean | ((values: Record<string, any>) => boolean);
19
+ readOnly?: boolean | ((values: Record<string, any>) => boolean);
20
+ conditional?: {
21
+ field: string;
22
+ value: any;
23
+ operator?: 'equals' | 'notEquals' | 'contains' | 'notContains' | 'exists' | 'notExists';
24
+ };
25
+ }
26
+ export interface DocumentSchema {
27
+ name: string;
28
+ title?: string;
29
+ description?: string;
30
+ fields: FieldSchema[];
31
+ }
32
+ export interface ProjectSchema {
33
+ name: string;
34
+ version: string;
35
+ documents: DocumentSchema[];
36
+ }
37
+ export declare class TypeGenerator {
38
+ private options;
39
+ constructor(options: TypeGeneratorOptions);
40
+ /**
41
+ * Generate TypeScript types from schema URL
42
+ */
43
+ generateFromUrl(): Promise<void>;
44
+ /**
45
+ * Generate TypeScript types from schema object
46
+ */
47
+ generateFromSchema(schema: ProjectSchema): Promise<void>;
48
+ /**
49
+ * Fetch schema from remote URL
50
+ */
51
+ private fetchSchema;
52
+ /**
53
+ * Transform Trokky field format to generator field format
54
+ */
55
+ private transformFields;
56
+ /**
57
+ * Transform a single field (used for array 'of' property)
58
+ */
59
+ private transformSingleField;
60
+ /**
61
+ * Generate TypeScript types from schema
62
+ */
63
+ private generateTypes;
64
+ /**
65
+ * Generate TypeScript interface for a document
66
+ */
67
+ private generateDocumentType;
68
+ /**
69
+ * Check if document has media fields (recursively)
70
+ */
71
+ private hasMediaFields;
72
+ /**
73
+ * Generate TypeScript interface for complex field types
74
+ */
75
+ private generateFieldInterface;
76
+ /**
77
+ * Map field type to TypeScript type
78
+ */
79
+ private mapFieldType;
80
+ /**
81
+ * Generate validation schema
82
+ */
83
+ private generateValidationSchema;
84
+ /**
85
+ * Generate index file
86
+ */
87
+ private generateIndex;
88
+ /**
89
+ * Utility functions
90
+ */
91
+ private capitalize;
92
+ private camelToKebab;
93
+ }
94
+ /**
95
+ * CLI function for generating types from URL
96
+ */
97
+ export declare function generateTypes(options: TypeGeneratorOptions): Promise<void>;
98
+ /**
99
+ * Generate types from local schema files
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * await generateTypesFromPath({
104
+ * schemaPath: '../cms/schemas',
105
+ * outputDir: './src/types/cms'
106
+ * })
107
+ * ```
108
+ */
109
+ export declare function generateTypesFromPath(options: {
110
+ schemaPath: string;
111
+ outputDir: string;
112
+ namespace?: string;
113
+ fileExtension?: 'ts' | 'd.ts';
114
+ includeValidation?: boolean;
115
+ }): Promise<void>;
116
+ /**
117
+ * Generate types from schema object
118
+ */
119
+ export declare function generateTypesFromSchema(schema: ProjectSchema, options: Omit<TypeGeneratorOptions, 'schemaUrl'>): Promise<void>;
120
+ export { DocumentGenerator, generateDocuments } from './document-generator.js';
121
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generator/index.ts"],"names":[],"mappings":"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"}