@json-to-office/jto 0.1.0

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 (54) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +23 -0
  3. package/dist/cli.d.ts +2 -0
  4. package/dist/cli.js +5639 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/client/assets/HomePage-CGK1cPFp.js +99 -0
  7. package/dist/client/assets/HomePage-CGK1cPFp.js.map +1 -0
  8. package/dist/client/assets/JsonEditorPage-DKaFqYpM.js +3 -0
  9. package/dist/client/assets/JsonEditorPage-DKaFqYpM.js.map +1 -0
  10. package/dist/client/assets/NotFoundPage-Et1QhbQw.js +2 -0
  11. package/dist/client/assets/NotFoundPage-Et1QhbQw.js.map +1 -0
  12. package/dist/client/assets/button-B5W5GwSc.js +2 -0
  13. package/dist/client/assets/button-B5W5GwSc.js.map +1 -0
  14. package/dist/client/assets/docx-preview-CUjVWdSJ.js +34 -0
  15. package/dist/client/assets/docx-preview-CUjVWdSJ.js.map +1 -0
  16. package/dist/client/assets/editor-CH_tiHyn.js +9 -0
  17. package/dist/client/assets/editor-CH_tiHyn.js.map +1 -0
  18. package/dist/client/assets/editor-monaco-json-8I2epq6g.js +6 -0
  19. package/dist/client/assets/editor-monaco-json-8I2epq6g.js.map +1 -0
  20. package/dist/client/assets/index-B9dV-vCI.css +1 -0
  21. package/dist/client/assets/index-DactvF4v.js +3 -0
  22. package/dist/client/assets/index-DactvF4v.js.map +1 -0
  23. package/dist/client/assets/monaco-editor-DzeBDgmk.js +12 -0
  24. package/dist/client/assets/monaco-editor-DzeBDgmk.js.map +1 -0
  25. package/dist/client/assets/preview-CJlTPgks.js +3 -0
  26. package/dist/client/assets/preview-CJlTPgks.js.map +1 -0
  27. package/dist/client/assets/query-vendor-UL64zsGL.js +15 -0
  28. package/dist/client/assets/query-vendor-UL64zsGL.js.map +1 -0
  29. package/dist/client/assets/radix-ui-CXavUarI.js +2 -0
  30. package/dist/client/assets/radix-ui-CXavUarI.js.map +1 -0
  31. package/dist/client/assets/react-vendor-DhdcN9D5.js +102 -0
  32. package/dist/client/assets/react-vendor-DhdcN9D5.js.map +1 -0
  33. package/dist/client/assets/settings-store-provider-DuCKtwqs.js +2 -0
  34. package/dist/client/assets/settings-store-provider-DuCKtwqs.js.map +1 -0
  35. package/dist/client/assets/state-vendor-CAMVKh-F.js +6 -0
  36. package/dist/client/assets/state-vendor-CAMVKh-F.js.map +1 -0
  37. package/dist/client/assets/ui-vendor-C6DsfOoA.js +247 -0
  38. package/dist/client/assets/ui-vendor-C6DsfOoA.js.map +1 -0
  39. package/dist/client/css/preview/docxjs.css +11 -0
  40. package/dist/client/icon.svg +5 -0
  41. package/dist/client/index.html +23 -0
  42. package/dist/client/templates/Charts Demo.pptx.json +174 -0
  43. package/dist/client/templates/Company Branding.pptx.json +143 -0
  44. package/dist/client/templates/Dashboard.pptx.json +91 -0
  45. package/dist/client/templates/Product Launch.pptx.json +87 -0
  46. package/dist/client/templates/Sales Deck.pptx.json +80 -0
  47. package/dist/client/templates/Wiseair.pptx.json +5382 -0
  48. package/dist/client/templates/themes/corporate.pptx.theme.json +32 -0
  49. package/dist/client/templates/themes/minimal.pptx.theme.json +32 -0
  50. package/dist/client/templates/themes/vibrant.pptx.theme.json +32 -0
  51. package/dist/index.d.ts +387 -0
  52. package/dist/index.js +2303 -0
  53. package/dist/index.js.map +1 -0
  54. package/package.json +147 -0
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "corporate",
3
+ "colors": {
4
+ "primary": "#1a365d",
5
+ "secondary": "#2D3748",
6
+ "accent": "#3182CE",
7
+ "background": "#F7FAFC",
8
+ "text": "#1A202C",
9
+ "text2": "#4A5568",
10
+ "background2": "#EDF2F7",
11
+ "accent4": "#E53E3E",
12
+ "accent5": "#38A169",
13
+ "accent6": "#D69E2E"
14
+ },
15
+ "fonts": {
16
+ "heading": "Arial",
17
+ "body": "Arial"
18
+ },
19
+ "defaults": {
20
+ "fontSize": 14,
21
+ "fontColor": "#1A202C"
22
+ },
23
+ "styles": {
24
+ "title": { "fontSize": 44, "bold": true, "fontColor": "text", "align": "center" },
25
+ "subtitle": { "fontSize": 20, "italic": true, "fontColor": "text2", "align": "center" },
26
+ "heading1": { "fontSize": 28, "bold": true, "fontColor": "primary" },
27
+ "heading2": { "fontSize": 22, "bold": true, "fontColor": "primary" },
28
+ "heading3": { "fontSize": 18, "bold": true, "fontColor": "text" },
29
+ "body": { "fontSize": 14 },
30
+ "caption": { "fontSize": 10, "italic": true, "fontColor": "text2" }
31
+ }
32
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "minimal",
3
+ "colors": {
4
+ "primary": "#1F2937",
5
+ "secondary": "#6B7280",
6
+ "accent": "#3B82F6",
7
+ "background": "#FFFFFF",
8
+ "text": "#1F2937",
9
+ "text2": "#9CA3AF",
10
+ "background2": "#F3F4F6",
11
+ "accent4": "#EF4444",
12
+ "accent5": "#10B981",
13
+ "accent6": "#F59E0B"
14
+ },
15
+ "fonts": {
16
+ "heading": "Inter",
17
+ "body": "Inter"
18
+ },
19
+ "defaults": {
20
+ "fontSize": 16,
21
+ "fontColor": "#1F2937"
22
+ },
23
+ "styles": {
24
+ "title": { "fontSize": 36, "bold": true, "fontColor": "text", "align": "center" },
25
+ "subtitle": { "fontSize": 18, "italic": true, "fontColor": "text2", "align": "center" },
26
+ "heading1": { "fontSize": 28, "bold": true, "fontColor": "primary" },
27
+ "heading2": { "fontSize": 22, "bold": true, "fontColor": "primary" },
28
+ "heading3": { "fontSize": 18, "bold": true, "fontColor": "text" },
29
+ "body": { "fontSize": 14 },
30
+ "caption": { "fontSize": 10, "italic": true, "fontColor": "text2" }
31
+ }
32
+ }
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "vibrant",
3
+ "colors": {
4
+ "primary": "#7C3AED",
5
+ "secondary": "#2563EB",
6
+ "accent": "#059669",
7
+ "background": "#0F172A",
8
+ "text": "#F8FAFC",
9
+ "text2": "#94A3B8",
10
+ "background2": "#1E293B",
11
+ "accent4": "#F59E0B",
12
+ "accent5": "#EC4899",
13
+ "accent6": "#06B6D4"
14
+ },
15
+ "fonts": {
16
+ "heading": "Helvetica",
17
+ "body": "Helvetica"
18
+ },
19
+ "defaults": {
20
+ "fontSize": 16,
21
+ "fontColor": "#F8FAFC"
22
+ },
23
+ "styles": {
24
+ "title": { "fontSize": 44, "bold": true, "fontColor": "text", "align": "center" },
25
+ "subtitle": { "fontSize": 18, "italic": true, "fontColor": "text2", "align": "center" },
26
+ "heading1": { "fontSize": 32, "bold": true, "fontColor": "text" },
27
+ "heading2": { "fontSize": 24, "bold": true, "fontColor": "primary" },
28
+ "heading3": { "fontSize": 18, "bold": true, "fontColor": "text" },
29
+ "body": { "fontSize": 14 },
30
+ "caption": { "fontSize": 10, "italic": true, "fontColor": "text2" }
31
+ }
32
+ }
@@ -0,0 +1,387 @@
1
+ import * as _sinclair_typebox from '@sinclair/typebox';
2
+ import { TSchema, Static } from '@sinclair/typebox';
3
+
4
+ type FormatName = 'docx' | 'pptx';
5
+ interface GeneratorOptions {
6
+ theme?: string | any;
7
+ themePath?: string;
8
+ customThemes?: Record<string, any>;
9
+ validation?: {
10
+ strict?: boolean;
11
+ allowUnknownFields?: boolean;
12
+ };
13
+ }
14
+ interface GeneratorResult {
15
+ generateBuffer: (document: any) => Promise<Buffer>;
16
+ getStandardComponentsDefinition?: (config: any) => Promise<any>;
17
+ hasPlugins: boolean;
18
+ pluginNames: string[];
19
+ }
20
+ interface FormatAdapter {
21
+ name: FormatName;
22
+ extension: string;
23
+ label: string;
24
+ defaultPort: number;
25
+ generateBuffer(json: unknown, options: GeneratorOptions): Promise<Buffer>;
26
+ createGenerator(plugins: any[], options: GeneratorOptions): Promise<GeneratorResult>;
27
+ parseJson(input: string | object): unknown;
28
+ validateDocument(doc: unknown): {
29
+ valid: boolean;
30
+ errors?: any[];
31
+ };
32
+ generateSchema(options?: any): any;
33
+ getBuiltinThemes(): Record<string, any>;
34
+ resolveTheme(options: GeneratorOptions): Promise<any>;
35
+ loadCustomThemes(options: GeneratorOptions): Promise<Record<string, any> | undefined>;
36
+ getComponentCacheStats?(): Promise<any>;
37
+ getComponentCacheAnalytics?(): Promise<any>;
38
+ }
39
+ declare class DocxFormatAdapter implements FormatAdapter {
40
+ name: FormatName;
41
+ extension: string;
42
+ label: string;
43
+ defaultPort: number;
44
+ generateBuffer(json: unknown, options: GeneratorOptions): Promise<Buffer>;
45
+ createGenerator(plugins: any[], options: GeneratorOptions): Promise<GeneratorResult>;
46
+ parseJson(input: string | object): unknown;
47
+ validateDocument(_doc: unknown): {
48
+ valid: boolean;
49
+ errors?: any[];
50
+ };
51
+ generateSchema(_options?: any): any;
52
+ getBuiltinThemes(): Record<string, any>;
53
+ resolveTheme(options: GeneratorOptions): Promise<any>;
54
+ loadCustomThemes(options: GeneratorOptions): Promise<Record<string, any> | undefined>;
55
+ getComponentCacheStats(): Promise<any>;
56
+ getComponentCacheAnalytics(): Promise<any>;
57
+ }
58
+ declare class PptxFormatAdapter implements FormatAdapter {
59
+ name: FormatName;
60
+ extension: string;
61
+ label: string;
62
+ defaultPort: number;
63
+ generateBuffer(json: unknown, options: GeneratorOptions): Promise<Buffer>;
64
+ createGenerator(plugins: any[], options: GeneratorOptions): Promise<GeneratorResult>;
65
+ parseJson(input: string | object): unknown;
66
+ validateDocument(_doc: unknown): {
67
+ valid: boolean;
68
+ errors?: any[];
69
+ };
70
+ generateSchema(_options?: any): any;
71
+ getBuiltinThemes(): Record<string, any>;
72
+ resolveTheme(options: GeneratorOptions): Promise<any>;
73
+ loadCustomThemes(options: GeneratorOptions): Promise<Record<string, any> | undefined>;
74
+ }
75
+ declare function createAdapter(format: FormatName): FormatAdapter;
76
+
77
+ type ComponentDefinition = any;
78
+ declare class GeneratorFactory {
79
+ private registry;
80
+ private adapter;
81
+ constructor(adapter: FormatAdapter);
82
+ createGenerator(options?: GeneratorOptions): Promise<{
83
+ generateBuffer: (document: ComponentDefinition | string) => Promise<Buffer>;
84
+ hasPlugins: boolean;
85
+ pluginNames: string[];
86
+ }>;
87
+ generate(document: ComponentDefinition | string, options?: GeneratorOptions): Promise<Buffer>;
88
+ getPluginInfo(): {
89
+ hasPlugins: boolean;
90
+ count: number;
91
+ names: string[];
92
+ };
93
+ }
94
+
95
+ interface CustomComponent {
96
+ name: string;
97
+ versions?: Record<string, any>;
98
+ [key: string]: any;
99
+ }
100
+ declare class PluginLoader {
101
+ private tsxUnregister?;
102
+ initialize(): Promise<void>;
103
+ loadPlugin(filePath: string): Promise<CustomComponent | null>;
104
+ loadPlugins(filePaths: string[]): Promise<Map<string, CustomComponent>>;
105
+ private extractComponent;
106
+ private isValidComponent;
107
+ cleanup(): void;
108
+ }
109
+
110
+ interface PluginExample {
111
+ title?: string;
112
+ props: any;
113
+ description?: string;
114
+ }
115
+ interface PluginMetadata {
116
+ name: string;
117
+ description?: string;
118
+ version?: string;
119
+ filePath: string;
120
+ relativePath: string;
121
+ location: 'upstream' | 'downstream' | 'current';
122
+ hasChildren?: boolean;
123
+ schema: {
124
+ raw: TSchema;
125
+ jsonSchema?: any;
126
+ properties?: Record<string, any>;
127
+ };
128
+ examples?: PluginExample[];
129
+ }
130
+ declare class PluginMetadataExtractor {
131
+ private cwd;
132
+ constructor(cwd?: string);
133
+ extract(component: CustomComponent, filePath: string): Promise<PluginMetadata>;
134
+ private determineLocation;
135
+ private typeboxToJsonSchema;
136
+ private extractProperties;
137
+ private extractExamples;
138
+ extractBatch(components: Map<string, CustomComponent>): Promise<PluginMetadata[]>;
139
+ }
140
+
141
+ declare class PluginRegistry {
142
+ private static instance;
143
+ private plugins;
144
+ private pluginPaths;
145
+ private pluginMetadata;
146
+ private loader;
147
+ private discoveryService;
148
+ private constructor();
149
+ static getInstance(): PluginRegistry;
150
+ private notifyCacheInvalidation;
151
+ loadPlugin(pathOrName: string): Promise<void>;
152
+ loadPlugins(pathsOrNames: string[]): Promise<void>;
153
+ private loadPluginsFromMetadata;
154
+ loadPluginsFromDirectory(dir: string): Promise<number>;
155
+ discoverAndLoad(): Promise<{
156
+ discovered: number;
157
+ loaded: number;
158
+ }>;
159
+ resolvePluginName(name: string): Promise<string | undefined>;
160
+ private resolvePluginPath;
161
+ getPlugins(): CustomComponent[];
162
+ getPluginNames(): string[];
163
+ getPlugin(name: string): CustomComponent | undefined;
164
+ hasPlugins(): boolean;
165
+ getPluginCount(): number;
166
+ clear(): void;
167
+ static cleanup(): void;
168
+ getPluginMetadata(name: string): PluginMetadata | undefined;
169
+ getAllPluginMetadata(): PluginMetadata[];
170
+ }
171
+
172
+ declare class PluginResolver {
173
+ private discoveryService;
174
+ private discoveredPlugins;
175
+ private lastDiscoveryTime;
176
+ private readonly CACHE_DURATION;
177
+ constructor();
178
+ resolve(input: string): Promise<string>;
179
+ resolveMultiple(inputs: string[]): Promise<Map<string, string>>;
180
+ private resolveAsPath;
181
+ private resolveAsName;
182
+ private refreshDiscoveryCache;
183
+ private isCacheExpired;
184
+ private looksLikePath;
185
+ private createNotFoundError;
186
+ private findSimilarNames;
187
+ getAvailablePluginNames(): Promise<string[]>;
188
+ clearCache(): void;
189
+ }
190
+
191
+ type DiscoveryType = 'plugin' | 'docx-document' | 'pptx-document' | 'pptx-theme' | 'docx-theme';
192
+
193
+ interface DiscoverOptions {
194
+ scope?: string;
195
+ maxDepth?: number;
196
+ includeNodeModules?: boolean;
197
+ verbose?: boolean;
198
+ type?: DiscoveryType | 'all';
199
+ }
200
+ interface DocumentMetadata {
201
+ name: string;
202
+ path: string;
203
+ location: 'current' | 'downstream';
204
+ type?: string;
205
+ title?: string;
206
+ description?: string;
207
+ theme?: string;
208
+ }
209
+ interface ThemeMetadata {
210
+ name: string;
211
+ path: string;
212
+ location: 'current' | 'downstream';
213
+ description?: string;
214
+ }
215
+ declare class PluginDiscoveryService {
216
+ private scanner;
217
+ private loader;
218
+ private metadataExtractor;
219
+ private options;
220
+ private searchPath;
221
+ private projectRoot;
222
+ constructor(options?: DiscoverOptions);
223
+ discover(): Promise<PluginMetadata[]>;
224
+ discoverPlugins(): Promise<PluginMetadata[]>;
225
+ discoverDocuments(format?: 'docx' | 'pptx'): Promise<DocumentMetadata[]>;
226
+ discoverThemes(format: 'docx' | 'pptx'): Promise<ThemeMetadata[]>;
227
+ getDocumentContent(name: string, format?: 'docx' | 'pptx'): Promise<string>;
228
+ getThemeContent(name: string, format: 'docx' | 'pptx'): Promise<string>;
229
+ discoverAll(format: 'docx' | 'pptx'): Promise<{
230
+ plugins: PluginMetadata[];
231
+ documents: DocumentMetadata[];
232
+ themes: ThemeMetadata[];
233
+ }>;
234
+ private getFileLocation;
235
+ private searchDownstream;
236
+ hasPlugins(): Promise<boolean>;
237
+ getPluginByName(name: string): Promise<PluginMetadata | undefined>;
238
+ }
239
+
240
+ interface SchemaGenerateOptions {
241
+ includeDocument?: boolean;
242
+ includeTheme?: boolean;
243
+ split?: boolean;
244
+ format?: 'json' | 'typebox';
245
+ }
246
+ interface SchemaGenerateResults {
247
+ document?: string;
248
+ theme?: string;
249
+ components?: string[];
250
+ }
251
+ declare class SchemaGenerator {
252
+ private registry;
253
+ private typeboxExporter;
254
+ private formatName;
255
+ constructor(formatName?: FormatName);
256
+ generateAndExportSchemas(outputDir: string, options?: SchemaGenerateOptions): Promise<SchemaGenerateResults>;
257
+ private generateDocumentSchema;
258
+ private generateThemeSchema;
259
+ private generateComponentSchemas;
260
+ private getStandardComponentSchemas;
261
+ private getCustomComponents;
262
+ }
263
+
264
+ interface ValidationError {
265
+ path: string;
266
+ message: string;
267
+ code?: string;
268
+ line?: number;
269
+ column?: number;
270
+ suggestion?: string;
271
+ value?: any;
272
+ }
273
+ interface ValidateFileResult {
274
+ file: string;
275
+ valid: boolean;
276
+ type?: 'document' | 'theme' | 'custom';
277
+ errors?: ValidationError[];
278
+ warnings?: ValidationError[];
279
+ }
280
+ interface ValidateOptions {
281
+ type?: 'document' | 'theme' | 'auto';
282
+ schema?: string;
283
+ strict?: boolean;
284
+ recursive?: boolean;
285
+ }
286
+ declare class JsonValidator {
287
+ private format;
288
+ constructor(format?: FormatName);
289
+ validate(pathOrPattern: string, options?: ValidateOptions): Promise<ValidateFileResult[]>;
290
+ validateFile(filePath: string, options?: ValidateOptions): Promise<ValidateFileResult>;
291
+ private validateAsDocument;
292
+ private validateAsTheme;
293
+ private validateWithCustomSchema;
294
+ private detectType;
295
+ private getFilesToValidate;
296
+ formatError(error: ValidationError, indent?: number): string;
297
+ formatResultsAsJson(results: ValidateFileResult[]): string;
298
+ }
299
+
300
+ interface PluginConfig {
301
+ plugins?: string[];
302
+ pluginDirs?: string[];
303
+ autoDiscover?: boolean;
304
+ aliases?: Record<string, string>;
305
+ theme?: string | any;
306
+ themePath?: string;
307
+ discovery?: {
308
+ maxDepth?: number;
309
+ includeNodeModules?: boolean;
310
+ upstreamOnly?: boolean;
311
+ downstreamOnly?: boolean;
312
+ };
313
+ validation?: {
314
+ strict?: boolean;
315
+ allowUnknownFields?: boolean;
316
+ };
317
+ }
318
+ declare class PluginConfigService {
319
+ private static instance;
320
+ private config;
321
+ private configPath;
322
+ private static readonly CONFIG_FILES;
323
+ private constructor();
324
+ static getInstance(): PluginConfigService;
325
+ loadConfig(startPath?: string): Promise<PluginConfig | null>;
326
+ private loadFromPackageJson;
327
+ getConfig(): PluginConfig | null;
328
+ getConfigPath(): string | null;
329
+ mergeWithOptions(options: Partial<PluginConfig>): PluginConfig;
330
+ private mergeArrays;
331
+ resolveAlias(name: string): string;
332
+ getConfiguredPlugins(): string[];
333
+ getPluginDirectories(): string[];
334
+ isAutoDiscoverEnabled(): boolean;
335
+ saveConfig(config: PluginConfig, filePath?: string): Promise<void>;
336
+ createDefaultConfig(filePath?: string): Promise<void>;
337
+ clearConfig(): void;
338
+ }
339
+
340
+ declare const ConfigSchema: _sinclair_typebox.TObject<{
341
+ mode: _sinclair_typebox.TUnion<[_sinclair_typebox.TLiteral<"development">, _sinclair_typebox.TLiteral<"production">]>;
342
+ server: _sinclair_typebox.TObject<{
343
+ port: _sinclair_typebox.TNumber;
344
+ host: _sinclair_typebox.TString;
345
+ cors: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
346
+ origin: _sinclair_typebox.TUnion<[_sinclair_typebox.TString, _sinclair_typebox.TArray<_sinclair_typebox.TString>]>;
347
+ credentials: _sinclair_typebox.TBoolean;
348
+ }>>;
349
+ }>;
350
+ api: _sinclair_typebox.TObject<{
351
+ basePath: _sinclair_typebox.TString;
352
+ rateLimit: _sinclair_typebox.TOptional<_sinclair_typebox.TObject<{
353
+ windowMs: _sinclair_typebox.TNumber;
354
+ max: _sinclair_typebox.TNumber;
355
+ }>>;
356
+ upload: _sinclair_typebox.TObject<{
357
+ maxFileSize: _sinclair_typebox.TNumber;
358
+ allowedMimeTypes: _sinclair_typebox.TArray<_sinclair_typebox.TString>;
359
+ }>;
360
+ }>;
361
+ playground: _sinclair_typebox.TObject<{
362
+ enabled: _sinclair_typebox.TBoolean;
363
+ root: _sinclair_typebox.TString;
364
+ features: _sinclair_typebox.TObject<{
365
+ livePreview: _sinclair_typebox.TBoolean;
366
+ templateLibrary: _sinclair_typebox.TBoolean;
367
+ componentBuilder: _sinclair_typebox.TBoolean;
368
+ collaboration: _sinclair_typebox.TBoolean;
369
+ }>;
370
+ }>;
371
+ development: _sinclair_typebox.TObject<{
372
+ hmr: _sinclair_typebox.TBoolean;
373
+ hmrPort: _sinclair_typebox.TOptional<_sinclair_typebox.TNumber>;
374
+ sourceMap: _sinclair_typebox.TBoolean;
375
+ verbose: _sinclair_typebox.TBoolean;
376
+ }>;
377
+ paths: _sinclair_typebox.TObject<{
378
+ templates: _sinclair_typebox.TString;
379
+ modules: _sinclair_typebox.TString;
380
+ cache: _sinclair_typebox.TString;
381
+ }>;
382
+ }>;
383
+ type Config = Static<typeof ConfigSchema>;
384
+
385
+ declare function loadConfig(configPath?: string): Promise<Config>;
386
+
387
+ export { type Config, type CustomComponent, type DiscoverOptions, type DocumentMetadata, DocxFormatAdapter, type FormatAdapter, type FormatName, GeneratorFactory, type GeneratorOptions, type GeneratorResult, JsonValidator, type PluginConfig, PluginConfigService, PluginDiscoveryService, type PluginExample, PluginLoader, type PluginMetadata, PluginMetadataExtractor, PluginRegistry, PluginResolver, PptxFormatAdapter, type SchemaGenerateOptions, type SchemaGenerateResults, SchemaGenerator, type ThemeMetadata, type ValidateFileResult, type ValidateOptions, type ValidationError, createAdapter, loadConfig };