@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,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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"}
|