@specverse/engines 4.1.28 → 4.2.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.
- package/assets/examples/manifests/frontend-only.yaml +3 -6
- package/assets/examples/manifests/fullstack-app.yaml +5 -7
- package/assets/examples/manifests/fullstack-monorepo.yaml +3 -6
- package/dist/inference/comprehensive-engine.d.ts.map +1 -1
- package/dist/inference/comprehensive-engine.js +3 -19
- package/dist/inference/comprehensive-engine.js.map +1 -1
- package/dist/inference/core/rule-engine.d.ts +31 -0
- package/dist/inference/core/rule-engine.d.ts.map +1 -1
- package/dist/inference/core/rule-engine.js +117 -33
- package/dist/inference/core/rule-engine.js.map +1 -1
- package/dist/inference/core/rule-file-types.d.ts +0 -2
- package/dist/inference/core/rule-file-types.d.ts.map +1 -1
- package/dist/inference/core/rule-file-types.js +3 -6
- package/dist/inference/core/rule-file-types.js.map +1 -1
- package/dist/inference/core/rule-loader.d.ts +5 -15
- package/dist/inference/core/rule-loader.d.ts.map +1 -1
- package/dist/inference/core/rule-loader.js +43 -132
- package/dist/inference/core/rule-loader.js.map +1 -1
- package/dist/inference/core/types.d.ts +0 -6
- package/dist/inference/core/types.d.ts.map +1 -1
- package/dist/inference/core/types.js +0 -4
- package/dist/inference/core/types.js.map +1 -1
- package/dist/inference/logical/generators/component-type-resolver.d.ts +0 -26
- package/dist/inference/logical/generators/component-type-resolver.d.ts.map +1 -1
- package/dist/inference/logical/generators/component-type-resolver.js +0 -19
- package/dist/inference/logical/generators/component-type-resolver.js.map +1 -1
- package/dist/inference/logical/generators/specialist-view-expander.d.ts +1 -17
- package/dist/inference/logical/generators/specialist-view-expander.d.ts.map +1 -1
- package/dist/inference/logical/generators/specialist-view-expander.js +0 -15
- package/dist/inference/logical/generators/specialist-view-expander.js.map +1 -1
- package/dist/inference/logical/generators/view-generator.d.ts +4 -14
- package/dist/inference/logical/generators/view-generator.d.ts.map +1 -1
- package/dist/inference/logical/generators/view-generator.js +6 -26
- package/dist/inference/logical/generators/view-generator.js.map +1 -1
- package/dist/inference/logical/index.d.ts +2 -2
- package/dist/inference/logical/index.d.ts.map +1 -1
- package/dist/inference/logical/logical-engine.d.ts.map +1 -1
- package/dist/inference/logical/logical-engine.js +17 -80
- package/dist/inference/logical/logical-engine.js.map +1 -1
- package/dist/inference/quint-transpiler.d.ts +5 -3
- package/dist/inference/quint-transpiler.d.ts.map +1 -1
- package/dist/inference/quint-transpiler.js +11 -6
- package/dist/inference/quint-transpiler.js.map +1 -1
- package/dist/libs/instance-factories/applications/templates/generic/main-generator.js +3 -3
- package/dist/libs/instance-factories/applications/templates/react/api-client-generator.js +16 -6
- package/dist/libs/instance-factories/applications/templates/react-starter/app-tsx-generator.js +110 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/dashboard-body-composer.js +121 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/detail-body-composer.js +78 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/form-body-composer.js +190 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/helpers-emitter.js +45 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/html-to-jsx.js +192 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/list-body-composer.js +46 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/orchestrator.js +30 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/package-json-generator.js +38 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/regen-safety.js +89 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/view-emitter.js +56 -0
- package/dist/libs/instance-factories/applications/templates/react-starter/views-generator.js +66 -0
- package/dist/libs/instance-factories/cli/templates/commander/command-generator.js +14 -11
- package/dist/libs/instance-factories/controllers/templates/fastify/server-generator.js +11 -3
- package/dist/libs/instance-factories/services/templates/prisma/controller-generator.js +27 -17
- package/dist/libs/instance-factories/shared/path-resolver.js +1 -1
- package/dist/realize/index.d.ts.map +1 -1
- package/dist/realize/index.js +15 -22
- package/dist/realize/index.js.map +1 -1
- package/dist/registry/utils/manifest-adapter.d.ts +8 -1
- package/dist/registry/utils/manifest-adapter.d.ts.map +1 -1
- package/dist/registry/utils/manifest-adapter.js +8 -1
- package/dist/registry/utils/manifest-adapter.js.map +1 -1
- package/libs/instance-factories/applications/react-app-starter.yaml +150 -0
- package/libs/instance-factories/applications/templates/generic/main-generator.ts +3 -3
- package/libs/instance-factories/applications/templates/react/api-client-generator.ts +16 -6
- package/libs/instance-factories/applications/templates/react-starter/README.md +211 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/dashboard-body-composer.test.ts +153 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/detail-body-composer.test.ts +145 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/form-body-composer.test.ts +175 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/helpers-emitter.test.ts +55 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/html-to-jsx.test.ts +140 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/list-body-composer.test.ts +146 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/orchestrator.test.ts +163 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/parity-p2-factory-imports.test.ts +116 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/parity-p3-rendered-output.test.ts +183 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/regen-safety.test.ts +144 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/starter-generators.test.ts +114 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/view-emitter.test.ts +107 -0
- package/libs/instance-factories/applications/templates/react-starter/__tests__/views-generator.test.ts +139 -0
- package/libs/instance-factories/applications/templates/react-starter/app-tsx-generator.ts +141 -0
- package/libs/instance-factories/applications/templates/react-starter/dashboard-body-composer.ts +174 -0
- package/libs/instance-factories/applications/templates/react-starter/detail-body-composer.ts +135 -0
- package/libs/instance-factories/applications/templates/react-starter/form-body-composer.ts +306 -0
- package/libs/instance-factories/applications/templates/react-starter/helpers-emitter.ts +60 -0
- package/libs/instance-factories/applications/templates/react-starter/html-to-jsx.ts +334 -0
- package/libs/instance-factories/applications/templates/react-starter/list-body-composer.ts +120 -0
- package/libs/instance-factories/applications/templates/react-starter/orchestrator.ts +80 -0
- package/libs/instance-factories/applications/templates/react-starter/package-json-generator.ts +57 -0
- package/libs/instance-factories/applications/templates/react-starter/regen-safety.ts +157 -0
- package/libs/instance-factories/applications/templates/react-starter/skeletons/dashboard.tsx.template +47 -0
- package/libs/instance-factories/applications/templates/react-starter/skeletons/detail.tsx.template +94 -0
- package/libs/instance-factories/applications/templates/react-starter/skeletons/form.tsx.template +114 -0
- package/libs/instance-factories/applications/templates/react-starter/skeletons/list.tsx.template +72 -0
- package/libs/instance-factories/applications/templates/react-starter/view-emitter.ts +151 -0
- package/libs/instance-factories/applications/templates/react-starter/views-generator.ts +137 -0
- package/libs/instance-factories/cli/templates/commander/command-generator.ts +14 -11
- package/libs/instance-factories/controllers/templates/fastify/server-generator.ts +11 -3
- package/libs/instance-factories/services/templates/prisma/controller-generator.ts +27 -17
- package/libs/instance-factories/shared/path-resolver.ts +8 -2
- package/package.json +3 -3
- package/dist/libs/instance-factories/applications/templates/react/_view-components-source.js +0 -530
- package/dist/libs/instance-factories/applications/templates/react/app-tsx-generator.js +0 -73
- package/dist/libs/instance-factories/applications/templates/react/field-helpers-generator.js +0 -99
- package/dist/libs/instance-factories/applications/templates/react/package-json-generator.js +0 -49
- package/dist/libs/instance-factories/applications/templates/react/pattern-adapter-generator.js +0 -156
- package/dist/libs/instance-factories/applications/templates/react/react-pattern-adapter.js +0 -935
- package/dist/libs/instance-factories/applications/templates/react/relationship-field-generator.js +0 -143
- package/dist/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.js +0 -646
- package/dist/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.js +0 -65
- package/dist/libs/instance-factories/applications/templates/react/view-dashboard-generator.js +0 -143
- package/dist/libs/instance-factories/applications/templates/react/view-detail-generator.js +0 -143
- package/dist/libs/instance-factories/applications/templates/react/view-form-generator.js +0 -355
- package/dist/libs/instance-factories/applications/templates/react/view-list-generator.js +0 -91
- package/dist/libs/instance-factories/applications/templates/react/view-router-generator.js +0 -79
- package/dist/libs/instance-factories/tools/templates/vscode/vscode-extension-generator.js.bak +0 -244
- package/dist/libs/instance-factories/views/index.js +0 -48
- package/dist/libs/instance-factories/views/templates/react/adapters/antd-adapter.js +0 -742
- package/dist/libs/instance-factories/views/templates/react/adapters/mui-adapter.js +0 -824
- package/dist/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.js +0 -719
- package/dist/libs/instance-factories/views/templates/react/app-generator.js +0 -45
- package/dist/libs/instance-factories/views/templates/react/components-generator.js +0 -820
- package/dist/libs/instance-factories/views/templates/react/forms-generator.js +0 -275
- package/dist/libs/instance-factories/views/templates/react/frontend-package-json-generator.js +0 -46
- package/dist/libs/instance-factories/views/templates/react/hooks-generator.js +0 -81
- package/dist/libs/instance-factories/views/templates/react/index-css-generator.js +0 -9
- package/dist/libs/instance-factories/views/templates/react/index-html-generator.js +0 -23
- package/dist/libs/instance-factories/views/templates/react/main-tsx-generator.js +0 -21
- package/dist/libs/instance-factories/views/templates/react/react-component-generator.js +0 -299
- package/dist/libs/instance-factories/views/templates/react/router-generator.js +0 -136
- package/dist/libs/instance-factories/views/templates/react/router-generic-generator.js +0 -107
- package/dist/libs/instance-factories/views/templates/react/shared-utils-generator.js +0 -187
- package/dist/libs/instance-factories/views/templates/react/spec-json-generator.js +0 -7
- package/dist/libs/instance-factories/views/templates/react/types-generator.js +0 -56
- package/dist/libs/instance-factories/views/templates/react/views-metadata-generator.js +0 -27
- package/dist/libs/instance-factories/views/templates/react/vite-config-generator.js +0 -29
- package/dist/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js +0 -261
- package/dist/libs/instance-factories/views/templates/shared/adapter-types.js +0 -34
- package/dist/libs/instance-factories/views/templates/shared/atomic-components-registry.js +0 -800
- package/dist/libs/instance-factories/views/templates/shared/base-generator.js +0 -305
- package/dist/libs/instance-factories/views/templates/shared/component-metadata.js +0 -517
- package/dist/libs/instance-factories/views/templates/shared/composite-pattern-types.js +0 -0
- package/dist/libs/instance-factories/views/templates/shared/composite-patterns.js +0 -445
- package/dist/libs/instance-factories/views/templates/shared/index.js +0 -80
- package/dist/libs/instance-factories/views/templates/shared/pattern-validator.js +0 -210
- package/dist/libs/instance-factories/views/templates/shared/property-mapper.js +0 -492
- package/dist/libs/instance-factories/views/templates/shared/syntax-mapper.js +0 -321
- package/dist/realize/index.js.bak +0 -758
- package/libs/instance-factories/applications/react-app.yaml +0 -186
- package/libs/instance-factories/applications/templates/react/_view-components-source.ts +0 -555
- package/libs/instance-factories/applications/templates/react/app-tsx-generator.ts +0 -94
- package/libs/instance-factories/applications/templates/react/field-helpers-generator.ts +0 -106
- package/libs/instance-factories/applications/templates/react/package-json-generator.ts +0 -57
- package/libs/instance-factories/applications/templates/react/pattern-adapter-generator.ts +0 -179
- package/libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx +0 -1347
- package/libs/instance-factories/applications/templates/react/relationship-field-generator.ts +0 -150
- package/libs/instance-factories/applications/templates/react/tailwind-adapter-generator.ts +0 -704
- package/libs/instance-factories/applications/templates/react/tailwind-adapter-wrapper-generator.ts +0 -84
- package/libs/instance-factories/applications/templates/react/view-dashboard-generator.ts +0 -150
- package/libs/instance-factories/applications/templates/react/view-detail-generator.ts +0 -150
- package/libs/instance-factories/applications/templates/react/view-form-generator.ts +0 -362
- package/libs/instance-factories/applications/templates/react/view-list-generator.ts +0 -98
- package/libs/instance-factories/applications/templates/react/view-router-generator.ts +0 -89
- package/libs/instance-factories/views/README.md +0 -62
- package/libs/instance-factories/views/index.d.ts +0 -13
- package/libs/instance-factories/views/index.d.ts.map +0 -1
- package/libs/instance-factories/views/index.js +0 -18
- package/libs/instance-factories/views/index.js.map +0 -1
- package/libs/instance-factories/views/index.ts +0 -45
- package/libs/instance-factories/views/react-components.yaml +0 -129
- package/libs/instance-factories/views/templates/ARCHITECTURE.md +0 -198
- package/libs/instance-factories/views/templates/react/adapters/antd-adapter.ts +0 -869
- package/libs/instance-factories/views/templates/react/adapters/mui-adapter.ts +0 -953
- package/libs/instance-factories/views/templates/react/adapters/shadcn-adapter.ts +0 -806
- package/libs/instance-factories/views/templates/react/app-generator.ts +0 -55
- package/libs/instance-factories/views/templates/react/components-generator.ts +0 -938
- package/libs/instance-factories/views/templates/react/forms-generator.ts +0 -325
- package/libs/instance-factories/views/templates/react/frontend-package-json-generator.ts +0 -57
- package/libs/instance-factories/views/templates/react/hooks-generator.ts +0 -106
- package/libs/instance-factories/views/templates/react/index-css-generator.ts +0 -14
- package/libs/instance-factories/views/templates/react/index-html-generator.ts +0 -34
- package/libs/instance-factories/views/templates/react/main-tsx-generator.ts +0 -29
- package/libs/instance-factories/views/templates/react/react-component-generator.d.ts +0 -152
- package/libs/instance-factories/views/templates/react/react-component-generator.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/react/react-component-generator.js +0 -398
- package/libs/instance-factories/views/templates/react/react-component-generator.js.map +0 -1
- package/libs/instance-factories/views/templates/react/react-component-generator.ts +0 -533
- package/libs/instance-factories/views/templates/react/router-generator.ts +0 -197
- package/libs/instance-factories/views/templates/react/router-generic-generator.ts +0 -132
- package/libs/instance-factories/views/templates/react/shared-utils-generator.ts +0 -196
- package/libs/instance-factories/views/templates/react/spec-json-generator.ts +0 -17
- package/libs/instance-factories/views/templates/react/types-generator.ts +0 -76
- package/libs/instance-factories/views/templates/react/views-metadata-generator.ts +0 -42
- package/libs/instance-factories/views/templates/react/vite-config-generator.ts +0 -38
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.js.map +0 -1
- package/libs/instance-factories/views/templates/runtime/runtime-view-renderer.ts +0 -474
- package/libs/instance-factories/views/templates/shared/__tests__/composite-patterns.test.ts +0 -242
- package/libs/instance-factories/views/templates/shared/adapter-types.d.ts +0 -77
- package/libs/instance-factories/views/templates/shared/adapter-types.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/shared/adapter-types.js +0 -47
- package/libs/instance-factories/views/templates/shared/adapter-types.js.map +0 -1
- package/libs/instance-factories/views/templates/shared/adapter-types.ts +0 -142
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts +0 -63
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.js +0 -822
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.js.map +0 -1
- package/libs/instance-factories/views/templates/shared/atomic-components-registry.ts +0 -908
- package/libs/instance-factories/views/templates/shared/base-generator.d.ts +0 -247
- package/libs/instance-factories/views/templates/shared/base-generator.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/shared/base-generator.js +0 -363
- package/libs/instance-factories/views/templates/shared/base-generator.js.map +0 -1
- package/libs/instance-factories/views/templates/shared/base-generator.ts +0 -608
- package/libs/instance-factories/views/templates/shared/component-metadata.d.ts +0 -254
- package/libs/instance-factories/views/templates/shared/component-metadata.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/shared/component-metadata.js +0 -602
- package/libs/instance-factories/views/templates/shared/component-metadata.js.map +0 -1
- package/libs/instance-factories/views/templates/shared/component-metadata.ts +0 -803
- package/libs/instance-factories/views/templates/shared/composite-pattern-types.ts +0 -250
- package/libs/instance-factories/views/templates/shared/composite-patterns.ts +0 -535
- package/libs/instance-factories/views/templates/shared/index.ts +0 -68
- package/libs/instance-factories/views/templates/shared/pattern-validator.ts +0 -279
- package/libs/instance-factories/views/templates/shared/property-mapper.d.ts +0 -149
- package/libs/instance-factories/views/templates/shared/property-mapper.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/shared/property-mapper.js +0 -580
- package/libs/instance-factories/views/templates/shared/property-mapper.js.map +0 -1
- package/libs/instance-factories/views/templates/shared/property-mapper.ts +0 -700
- package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts +0 -143
- package/libs/instance-factories/views/templates/shared/syntax-mapper.d.ts.map +0 -1
- package/libs/instance-factories/views/templates/shared/syntax-mapper.js +0 -420
- package/libs/instance-factories/views/templates/shared/syntax-mapper.js.map +0 -1
- package/libs/instance-factories/views/templates/shared/syntax-mapper.ts +0 -539
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React Component Generator
|
|
3
|
-
*
|
|
4
|
-
* Extends BaseComponentGenerator to generate React/TypeScript components.
|
|
5
|
-
* Outputs .tsx files with proper imports, hooks, types, and JSX.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - TypeScript with strict typing
|
|
9
|
-
* - React hooks (useState, useEffect)
|
|
10
|
-
* - JSX component rendering
|
|
11
|
-
* - Adapter integration (shadcn, MUI, antd)
|
|
12
|
-
* - Proper file structure and exports
|
|
13
|
-
*/
|
|
14
|
-
import { BaseComponentGenerator, ViewSpec, StateDefinition, EventDefinition, GeneratorConfig } from '../shared/base-generator.js';
|
|
15
|
-
import type { ComponentAdapter } from '../shared/adapter-types.js';
|
|
16
|
-
/**
|
|
17
|
-
* React-specific generator configuration
|
|
18
|
-
*/
|
|
19
|
-
export interface ReactGeneratorConfig extends GeneratorConfig {
|
|
20
|
-
framework: 'react';
|
|
21
|
-
target: 'shadcn' | 'mui' | 'antd';
|
|
22
|
-
typescript: boolean;
|
|
23
|
-
strictMode?: boolean;
|
|
24
|
-
includeComments?: boolean;
|
|
25
|
-
}
|
|
26
|
-
/**
|
|
27
|
-
* React component props interface
|
|
28
|
-
*/
|
|
29
|
-
export interface ReactComponentProps {
|
|
30
|
-
[key: string]: any;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Generates React/TypeScript components from SpecVerse view specifications
|
|
34
|
-
*
|
|
35
|
-
* Output structure:
|
|
36
|
-
* ```tsx
|
|
37
|
-
* import React, { useState, useEffect } from 'react';
|
|
38
|
-
* import { Button } from '@/components/ui/button';
|
|
39
|
-
*
|
|
40
|
-
* interface {ComponentName}Props {
|
|
41
|
-
* // ... props
|
|
42
|
-
* }
|
|
43
|
-
*
|
|
44
|
-
* export function {ComponentName}({ ...props }: {ComponentName}Props) {
|
|
45
|
-
* // State declarations
|
|
46
|
-
* const [count, setCount] = useState(0);
|
|
47
|
-
*
|
|
48
|
-
* // Event handlers
|
|
49
|
-
* const handleClick = () => { ... };
|
|
50
|
-
*
|
|
51
|
-
* // Component tree
|
|
52
|
-
* return (
|
|
53
|
-
* <div>
|
|
54
|
-
* <Button onClick={handleClick}>Click me</Button>
|
|
55
|
-
* </div>
|
|
56
|
-
* );
|
|
57
|
-
* }
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
export declare class ReactComponentGenerator extends BaseComponentGenerator {
|
|
61
|
-
private readonly reactConfig;
|
|
62
|
-
constructor(adapter: ComponentAdapter, config: ReactGeneratorConfig);
|
|
63
|
-
/**
|
|
64
|
-
* Generate React imports
|
|
65
|
-
*/
|
|
66
|
-
protected generateImports(viewSpec: ViewSpec): string;
|
|
67
|
-
/**
|
|
68
|
-
* Generate complete React component
|
|
69
|
-
*/
|
|
70
|
-
protected generateComponent(parts: {
|
|
71
|
-
name: string;
|
|
72
|
-
imports: string;
|
|
73
|
-
state: string;
|
|
74
|
-
events: string;
|
|
75
|
-
components: string;
|
|
76
|
-
}): string;
|
|
77
|
-
/**
|
|
78
|
-
* Generate state declarations using React hooks
|
|
79
|
-
*/
|
|
80
|
-
protected generateState(state: Record<string, StateDefinition>): string;
|
|
81
|
-
/**
|
|
82
|
-
* Generate event handlers
|
|
83
|
-
*/
|
|
84
|
-
protected generateEvents(events: Record<string, EventDefinition>): string;
|
|
85
|
-
/**
|
|
86
|
-
* Get file extension (.tsx for React/TypeScript)
|
|
87
|
-
*/
|
|
88
|
-
getFileExtension(): string;
|
|
89
|
-
/**
|
|
90
|
-
* Get additional files (styles, types, etc.)
|
|
91
|
-
*/
|
|
92
|
-
getAdditionalFiles(viewSpec: ViewSpec): Record<string, string>;
|
|
93
|
-
/**
|
|
94
|
-
* Get React core imports (useState, useEffect, etc.)
|
|
95
|
-
*/
|
|
96
|
-
private getReactCoreImports;
|
|
97
|
-
/**
|
|
98
|
-
* Get component library imports
|
|
99
|
-
*/
|
|
100
|
-
private getComponentImports;
|
|
101
|
-
/**
|
|
102
|
-
* Generate props interface for TypeScript
|
|
103
|
-
*/
|
|
104
|
-
private generatePropsInterface;
|
|
105
|
-
/**
|
|
106
|
-
* Generate main component function
|
|
107
|
-
*/
|
|
108
|
-
private generateComponentFunction;
|
|
109
|
-
/**
|
|
110
|
-
* Generate separate types file
|
|
111
|
-
*/
|
|
112
|
-
private generateTypesFile;
|
|
113
|
-
/**
|
|
114
|
-
* Check if component needs useEffect hook
|
|
115
|
-
*/
|
|
116
|
-
private needsUseEffect;
|
|
117
|
-
/**
|
|
118
|
-
* Capitalize first letter of string
|
|
119
|
-
*/
|
|
120
|
-
private capitalize;
|
|
121
|
-
/**
|
|
122
|
-
* Override to add React-specific rendering hints
|
|
123
|
-
*/
|
|
124
|
-
protected renderAdapterComponent(type: string, properties: Record<string, any>, children: string | undefined, context: any): string;
|
|
125
|
-
}
|
|
126
|
-
/**
|
|
127
|
-
* Create a ReactComponentGenerator instance
|
|
128
|
-
*
|
|
129
|
-
* @param adapter - Component adapter (shadcn, mui, antd)
|
|
130
|
-
* @param config - Generator configuration
|
|
131
|
-
* @returns ReactComponentGenerator instance
|
|
132
|
-
*/
|
|
133
|
-
export declare function createReactGenerator(adapter: ComponentAdapter, config?: Partial<ReactGeneratorConfig>): ReactComponentGenerator;
|
|
134
|
-
/**
|
|
135
|
-
* Generate React component from view spec (one-liner)
|
|
136
|
-
*
|
|
137
|
-
* @param viewSpec - View specification
|
|
138
|
-
* @param adapter - Component adapter
|
|
139
|
-
* @param options - Optional configuration
|
|
140
|
-
* @returns Generated component code
|
|
141
|
-
*/
|
|
142
|
-
export declare function generateReactComponent(viewSpec: ViewSpec, adapter: ComponentAdapter, options?: Partial<ReactGeneratorConfig>): string;
|
|
143
|
-
/**
|
|
144
|
-
* Generate React component with all additional files
|
|
145
|
-
*
|
|
146
|
-
* @param viewSpec - View specification
|
|
147
|
-
* @param adapter - Component adapter
|
|
148
|
-
* @param options - Optional configuration
|
|
149
|
-
* @returns Map of filename to content
|
|
150
|
-
*/
|
|
151
|
-
export declare function generateReactComponentFiles(viewSpec: ViewSpec, adapter: ComponentAdapter, options?: Partial<ReactGeneratorConfig>): Map<string, string>;
|
|
152
|
-
//# sourceMappingURL=react-component-generator.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-component-generator.d.ts","sourceRoot":"","sources":["react-component-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,sBAAsB,EACtB,QAAQ,EACR,eAAe,EACf,eAAe,EACf,eAAe,EAChB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAMnE;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,eAAe;IAC3D,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,QAAQ,GAAG,KAAK,GAAG,MAAM,CAAC;IAClC,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,uBAAwB,SAAQ,sBAAsB;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuB;gBAEvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,oBAAoB;IASnE;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM;IAiBrD;;OAEG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE;QACjC,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,GAAG,MAAM;IA6BV;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM;IAqBvE;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,GAAG,MAAM;IAoBzE;;OAEG;IACI,gBAAgB,IAAI,MAAM;IAIjC;;OAEG;IACI,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAerE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAmC3B;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAqB9B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA6CjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAwCzB;;OAEG;IACH,OAAO,CAAC,cAAc;IActB;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;IACH,SAAS,CAAC,sBAAsB,CAC9B,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC/B,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,GAAG,GACX,MAAM;CASV;AAMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EACzB,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,uBAAuB,CAczB;AAMD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACtC,MAAM,CASR;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,gBAAgB,EACzB,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACtC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAiBrB"}
|
|
@@ -1,398 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* React Component Generator
|
|
3
|
-
*
|
|
4
|
-
* Extends BaseComponentGenerator to generate React/TypeScript components.
|
|
5
|
-
* Outputs .tsx files with proper imports, hooks, types, and JSX.
|
|
6
|
-
*
|
|
7
|
-
* Features:
|
|
8
|
-
* - TypeScript with strict typing
|
|
9
|
-
* - React hooks (useState, useEffect)
|
|
10
|
-
* - JSX component rendering
|
|
11
|
-
* - Adapter integration (shadcn, MUI, antd)
|
|
12
|
-
* - Proper file structure and exports
|
|
13
|
-
*/
|
|
14
|
-
import { BaseComponentGenerator } from '../shared/base-generator.js';
|
|
15
|
-
import { getSyntaxPattern } from '../shared/syntax-mapper.js';
|
|
16
|
-
import { extractComponentTypes } from '../shared/base-generator.js';
|
|
17
|
-
// ============================================================================
|
|
18
|
-
// React Component Generator
|
|
19
|
-
// ============================================================================
|
|
20
|
-
/**
|
|
21
|
-
* Generates React/TypeScript components from SpecVerse view specifications
|
|
22
|
-
*
|
|
23
|
-
* Output structure:
|
|
24
|
-
* ```tsx
|
|
25
|
-
* import React, { useState, useEffect } from 'react';
|
|
26
|
-
* import { Button } from '@/components/ui/button';
|
|
27
|
-
*
|
|
28
|
-
* interface {ComponentName}Props {
|
|
29
|
-
* // ... props
|
|
30
|
-
* }
|
|
31
|
-
*
|
|
32
|
-
* export function {ComponentName}({ ...props }: {ComponentName}Props) {
|
|
33
|
-
* // State declarations
|
|
34
|
-
* const [count, setCount] = useState(0);
|
|
35
|
-
*
|
|
36
|
-
* // Event handlers
|
|
37
|
-
* const handleClick = () => { ... };
|
|
38
|
-
*
|
|
39
|
-
* // Component tree
|
|
40
|
-
* return (
|
|
41
|
-
* <div>
|
|
42
|
-
* <Button onClick={handleClick}>Click me</Button>
|
|
43
|
-
* </div>
|
|
44
|
-
* );
|
|
45
|
-
* }
|
|
46
|
-
* ```
|
|
47
|
-
*/
|
|
48
|
-
export class ReactComponentGenerator extends BaseComponentGenerator {
|
|
49
|
-
reactConfig;
|
|
50
|
-
constructor(adapter, config) {
|
|
51
|
-
super(adapter, config);
|
|
52
|
-
this.reactConfig = config;
|
|
53
|
-
}
|
|
54
|
-
// ============================================================================
|
|
55
|
-
// Abstract Method Implementations
|
|
56
|
-
// ============================================================================
|
|
57
|
-
/**
|
|
58
|
-
* Generate React imports
|
|
59
|
-
*/
|
|
60
|
-
generateImports(viewSpec) {
|
|
61
|
-
const imports = [];
|
|
62
|
-
// React core imports
|
|
63
|
-
const reactImports = this.getReactCoreImports(viewSpec);
|
|
64
|
-
if (reactImports) {
|
|
65
|
-
imports.push(reactImports);
|
|
66
|
-
}
|
|
67
|
-
// Component library imports
|
|
68
|
-
const componentTypes = extractComponentTypes(viewSpec.components);
|
|
69
|
-
const componentImports = this.getComponentImports(componentTypes);
|
|
70
|
-
imports.push(...componentImports);
|
|
71
|
-
return imports.join('\n');
|
|
72
|
-
}
|
|
73
|
-
/**
|
|
74
|
-
* Generate complete React component
|
|
75
|
-
*/
|
|
76
|
-
generateComponent(parts) {
|
|
77
|
-
const lines = [];
|
|
78
|
-
// File header comment
|
|
79
|
-
if (this.reactConfig.includeComments) {
|
|
80
|
-
lines.push(`/**`);
|
|
81
|
-
lines.push(` * ${parts.name} Component`);
|
|
82
|
-
lines.push(` * Generated by SpecVerse v3.4.0`);
|
|
83
|
-
lines.push(` */`);
|
|
84
|
-
lines.push('');
|
|
85
|
-
}
|
|
86
|
-
// Imports
|
|
87
|
-
lines.push(parts.imports);
|
|
88
|
-
lines.push('');
|
|
89
|
-
// Props interface
|
|
90
|
-
const propsInterface = this.generatePropsInterface(parts.name);
|
|
91
|
-
if (propsInterface) {
|
|
92
|
-
lines.push(propsInterface);
|
|
93
|
-
lines.push('');
|
|
94
|
-
}
|
|
95
|
-
// Component function
|
|
96
|
-
lines.push(this.generateComponentFunction(parts));
|
|
97
|
-
return lines.join('\n');
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Generate state declarations using React hooks
|
|
101
|
-
*/
|
|
102
|
-
generateState(state) {
|
|
103
|
-
const stateDeclarations = [];
|
|
104
|
-
for (const [name, def] of Object.entries(state)) {
|
|
105
|
-
const declaration = getSyntaxPattern('stateDeclaration', 'react', {
|
|
106
|
-
name,
|
|
107
|
-
Name: this.capitalize(name),
|
|
108
|
-
type: def.type,
|
|
109
|
-
initial: JSON.stringify(def.initial)
|
|
110
|
-
});
|
|
111
|
-
if (this.reactConfig.includeComments && def.description) {
|
|
112
|
-
stateDeclarations.push(` // ${def.description}`);
|
|
113
|
-
}
|
|
114
|
-
stateDeclarations.push(` ${declaration}`);
|
|
115
|
-
}
|
|
116
|
-
return stateDeclarations.join('\n');
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Generate event handlers
|
|
120
|
-
*/
|
|
121
|
-
generateEvents(events) {
|
|
122
|
-
const eventHandlers = [];
|
|
123
|
-
for (const [name, def] of Object.entries(events)) {
|
|
124
|
-
const handler = getSyntaxPattern('eventHandler', 'react', {
|
|
125
|
-
Name: this.capitalize(name),
|
|
126
|
-
params: def.params || '',
|
|
127
|
-
body: def.body
|
|
128
|
-
});
|
|
129
|
-
if (this.reactConfig.includeComments && def.description) {
|
|
130
|
-
eventHandlers.push(` // ${def.description}`);
|
|
131
|
-
}
|
|
132
|
-
eventHandlers.push(` ${handler}`);
|
|
133
|
-
}
|
|
134
|
-
return eventHandlers.join('\n\n');
|
|
135
|
-
}
|
|
136
|
-
/**
|
|
137
|
-
* Get file extension (.tsx for React/TypeScript)
|
|
138
|
-
*/
|
|
139
|
-
getFileExtension() {
|
|
140
|
-
return this.reactConfig.typescript ? '.tsx' : '.jsx';
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Get additional files (styles, types, etc.)
|
|
144
|
-
*/
|
|
145
|
-
getAdditionalFiles(viewSpec) {
|
|
146
|
-
const files = {};
|
|
147
|
-
// Optional: Generate separate types file
|
|
148
|
-
if (this.reactConfig.typescript && this.reactConfig.strictMode) {
|
|
149
|
-
files[`${viewSpec.name}.types.ts`] = this.generateTypesFile(viewSpec);
|
|
150
|
-
}
|
|
151
|
-
return files;
|
|
152
|
-
}
|
|
153
|
-
// ============================================================================
|
|
154
|
-
// React-Specific Helper Methods
|
|
155
|
-
// ============================================================================
|
|
156
|
-
/**
|
|
157
|
-
* Get React core imports (useState, useEffect, etc.)
|
|
158
|
-
*/
|
|
159
|
-
getReactCoreImports(viewSpec) {
|
|
160
|
-
const hooks = [];
|
|
161
|
-
// Add useState if component has state
|
|
162
|
-
if (viewSpec.state && Object.keys(viewSpec.state).length > 0) {
|
|
163
|
-
hooks.push('useState');
|
|
164
|
-
}
|
|
165
|
-
// Add useEffect if needed (detect lifecycle needs)
|
|
166
|
-
// For now, simplified - could be enhanced based on view spec analysis
|
|
167
|
-
if (this.needsUseEffect(viewSpec)) {
|
|
168
|
-
hooks.push('useEffect');
|
|
169
|
-
}
|
|
170
|
-
if (hooks.length > 0) {
|
|
171
|
-
// Generate: import React, { useState, useEffect } from 'react';
|
|
172
|
-
return `import React, { ${hooks.join(', ')} } from 'react';`;
|
|
173
|
-
}
|
|
174
|
-
return `import React from 'react';`;
|
|
175
|
-
}
|
|
176
|
-
/**
|
|
177
|
-
* Get component library imports
|
|
178
|
-
*/
|
|
179
|
-
getComponentImports(componentTypes) {
|
|
180
|
-
const imports = [];
|
|
181
|
-
const importMap = new Map();
|
|
182
|
-
// Group components by their import source
|
|
183
|
-
for (const type of componentTypes) {
|
|
184
|
-
const adapterComponent = this.adapter.components[type];
|
|
185
|
-
if (adapterComponent && adapterComponent.import) {
|
|
186
|
-
// Parse import to group by source
|
|
187
|
-
const importMatch = adapterComponent.import.match(/from ['"](.+)['"]/);
|
|
188
|
-
if (importMatch) {
|
|
189
|
-
const source = importMatch[1];
|
|
190
|
-
const componentMatch = adapterComponent.import.match(/import \{ (.+) \}/);
|
|
191
|
-
if (componentMatch) {
|
|
192
|
-
const componentName = componentMatch[1];
|
|
193
|
-
if (!importMap.has(source)) {
|
|
194
|
-
importMap.set(source, []);
|
|
195
|
-
}
|
|
196
|
-
importMap.get(source).push(componentName);
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
// Generate grouped imports
|
|
202
|
-
for (const [source, components] of importMap) {
|
|
203
|
-
imports.push(getSyntaxPattern('libraryImport', 'react', {
|
|
204
|
-
exports: components.join(', '),
|
|
205
|
-
library: source
|
|
206
|
-
}));
|
|
207
|
-
}
|
|
208
|
-
return imports;
|
|
209
|
-
}
|
|
210
|
-
/**
|
|
211
|
-
* Generate props interface for TypeScript
|
|
212
|
-
*/
|
|
213
|
-
generatePropsInterface(componentName) {
|
|
214
|
-
if (!this.reactConfig.typescript) {
|
|
215
|
-
return null;
|
|
216
|
-
}
|
|
217
|
-
// For now, generate empty interface (can be enhanced based on view spec)
|
|
218
|
-
const lines = [];
|
|
219
|
-
if (this.reactConfig.includeComments) {
|
|
220
|
-
lines.push(`/**`);
|
|
221
|
-
lines.push(` * Props for ${componentName} component`);
|
|
222
|
-
lines.push(` */`);
|
|
223
|
-
}
|
|
224
|
-
lines.push(`interface ${componentName}Props {`);
|
|
225
|
-
lines.push(` // Component props will be added here`);
|
|
226
|
-
lines.push(`}`);
|
|
227
|
-
return lines.join('\n');
|
|
228
|
-
}
|
|
229
|
-
/**
|
|
230
|
-
* Generate main component function
|
|
231
|
-
*/
|
|
232
|
-
generateComponentFunction(parts) {
|
|
233
|
-
const lines = [];
|
|
234
|
-
// Function signature
|
|
235
|
-
const propsParam = this.reactConfig.typescript
|
|
236
|
-
? `props: ${parts.name}Props`
|
|
237
|
-
: 'props';
|
|
238
|
-
lines.push(`export function ${parts.name}(${propsParam}) {`);
|
|
239
|
-
// State declarations
|
|
240
|
-
if (parts.state) {
|
|
241
|
-
lines.push(parts.state);
|
|
242
|
-
lines.push('');
|
|
243
|
-
}
|
|
244
|
-
// Event handlers
|
|
245
|
-
if (parts.events) {
|
|
246
|
-
lines.push(parts.events);
|
|
247
|
-
lines.push('');
|
|
248
|
-
}
|
|
249
|
-
// Return JSX
|
|
250
|
-
lines.push(' return (');
|
|
251
|
-
lines.push(' <div className="specverse-view">');
|
|
252
|
-
// Indent component tree
|
|
253
|
-
const indentedComponents = parts.components
|
|
254
|
-
.split('\n')
|
|
255
|
-
.map(line => line ? ` ${line}` : '')
|
|
256
|
-
.join('\n');
|
|
257
|
-
lines.push(indentedComponents);
|
|
258
|
-
lines.push(' </div>');
|
|
259
|
-
lines.push(' );');
|
|
260
|
-
lines.push('}');
|
|
261
|
-
return lines.join('\n');
|
|
262
|
-
}
|
|
263
|
-
/**
|
|
264
|
-
* Generate separate types file
|
|
265
|
-
*/
|
|
266
|
-
generateTypesFile(viewSpec) {
|
|
267
|
-
const lines = [];
|
|
268
|
-
lines.push(`/**`);
|
|
269
|
-
lines.push(` * Type definitions for ${viewSpec.name}`);
|
|
270
|
-
lines.push(` * Generated by SpecVerse v3.4.0`);
|
|
271
|
-
lines.push(` */`);
|
|
272
|
-
lines.push('');
|
|
273
|
-
// State types
|
|
274
|
-
if (viewSpec.state) {
|
|
275
|
-
lines.push(`export interface ${viewSpec.name}State {`);
|
|
276
|
-
for (const [name, def] of Object.entries(viewSpec.state)) {
|
|
277
|
-
if (def.description) {
|
|
278
|
-
lines.push(` /** ${def.description} */`);
|
|
279
|
-
}
|
|
280
|
-
lines.push(` ${name}: ${def.type};`);
|
|
281
|
-
}
|
|
282
|
-
lines.push(`}`);
|
|
283
|
-
lines.push('');
|
|
284
|
-
}
|
|
285
|
-
// Event handler types
|
|
286
|
-
if (viewSpec.events) {
|
|
287
|
-
for (const [name, def] of Object.entries(viewSpec.events)) {
|
|
288
|
-
const handlerName = `${this.capitalize(name)}Handler`;
|
|
289
|
-
const params = def.params || '';
|
|
290
|
-
if (def.description) {
|
|
291
|
-
lines.push(`/** ${def.description} */`);
|
|
292
|
-
}
|
|
293
|
-
lines.push(`export type ${handlerName} = (${params}) => void;`);
|
|
294
|
-
lines.push('');
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
return lines.join('\n');
|
|
298
|
-
}
|
|
299
|
-
/**
|
|
300
|
-
* Check if component needs useEffect hook
|
|
301
|
-
*/
|
|
302
|
-
needsUseEffect(viewSpec) {
|
|
303
|
-
// Simplified heuristic - could be enhanced
|
|
304
|
-
// Check if any event has mount/unmount keywords
|
|
305
|
-
if (viewSpec.events) {
|
|
306
|
-
const eventNames = Object.keys(viewSpec.events).map(e => e.toLowerCase());
|
|
307
|
-
return eventNames.some(name => name.includes('mount') ||
|
|
308
|
-
name.includes('init') ||
|
|
309
|
-
name.includes('load'));
|
|
310
|
-
}
|
|
311
|
-
return false;
|
|
312
|
-
}
|
|
313
|
-
/**
|
|
314
|
-
* Capitalize first letter of string
|
|
315
|
-
*/
|
|
316
|
-
capitalize(str) {
|
|
317
|
-
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
318
|
-
}
|
|
319
|
-
// ============================================================================
|
|
320
|
-
// React-Specific Component Rendering
|
|
321
|
-
// ============================================================================
|
|
322
|
-
/**
|
|
323
|
-
* Override to add React-specific rendering hints
|
|
324
|
-
*/
|
|
325
|
-
renderAdapterComponent(type, properties, children, context) {
|
|
326
|
-
// Add React-specific className if not present
|
|
327
|
-
if (!properties.className && type !== 'container') {
|
|
328
|
-
properties.className = `specverse-${type}`;
|
|
329
|
-
}
|
|
330
|
-
// Call parent implementation
|
|
331
|
-
return super.renderAdapterComponent(type, properties, children, context);
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
// ============================================================================
|
|
335
|
-
// Factory Function
|
|
336
|
-
// ============================================================================
|
|
337
|
-
/**
|
|
338
|
-
* Create a ReactComponentGenerator instance
|
|
339
|
-
*
|
|
340
|
-
* @param adapter - Component adapter (shadcn, mui, antd)
|
|
341
|
-
* @param config - Generator configuration
|
|
342
|
-
* @returns ReactComponentGenerator instance
|
|
343
|
-
*/
|
|
344
|
-
export function createReactGenerator(adapter, config) {
|
|
345
|
-
const defaultConfig = {
|
|
346
|
-
framework: 'react',
|
|
347
|
-
target: 'shadcn',
|
|
348
|
-
typescript: true,
|
|
349
|
-
strictMode: false,
|
|
350
|
-
includeComments: true,
|
|
351
|
-
maxDepth: 3,
|
|
352
|
-
enableWarnings: true
|
|
353
|
-
};
|
|
354
|
-
const finalConfig = { ...defaultConfig, ...config };
|
|
355
|
-
return new ReactComponentGenerator(adapter, finalConfig);
|
|
356
|
-
}
|
|
357
|
-
// ============================================================================
|
|
358
|
-
// Convenience Functions
|
|
359
|
-
// ============================================================================
|
|
360
|
-
/**
|
|
361
|
-
* Generate React component from view spec (one-liner)
|
|
362
|
-
*
|
|
363
|
-
* @param viewSpec - View specification
|
|
364
|
-
* @param adapter - Component adapter
|
|
365
|
-
* @param options - Optional configuration
|
|
366
|
-
* @returns Generated component code
|
|
367
|
-
*/
|
|
368
|
-
export function generateReactComponent(viewSpec, adapter, options) {
|
|
369
|
-
const generator = createReactGenerator(adapter, options);
|
|
370
|
-
const result = generator.generate(viewSpec);
|
|
371
|
-
if (result.warnings.length > 0) {
|
|
372
|
-
console.warn('Generation warnings:', result.warnings);
|
|
373
|
-
}
|
|
374
|
-
return result.code;
|
|
375
|
-
}
|
|
376
|
-
/**
|
|
377
|
-
* Generate React component with all additional files
|
|
378
|
-
*
|
|
379
|
-
* @param viewSpec - View specification
|
|
380
|
-
* @param adapter - Component adapter
|
|
381
|
-
* @param options - Optional configuration
|
|
382
|
-
* @returns Map of filename to content
|
|
383
|
-
*/
|
|
384
|
-
export function generateReactComponentFiles(viewSpec, adapter, options) {
|
|
385
|
-
const generator = createReactGenerator(adapter, options);
|
|
386
|
-
const result = generator.generate(viewSpec);
|
|
387
|
-
const files = new Map();
|
|
388
|
-
// Main component file
|
|
389
|
-
const ext = generator.getFileExtension();
|
|
390
|
-
files.set(`${viewSpec.name}${ext}`, result.code);
|
|
391
|
-
// Additional files (types, styles, etc.)
|
|
392
|
-
const additionalFiles = generator.getAdditionalFiles(viewSpec);
|
|
393
|
-
for (const [filename, content] of Object.entries(additionalFiles)) {
|
|
394
|
-
files.set(filename, content);
|
|
395
|
-
}
|
|
396
|
-
return files;
|
|
397
|
-
}
|
|
398
|
-
//# sourceMappingURL=react-component-generator.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"react-component-generator.js","sourceRoot":"","sources":["react-component-generator.ts"],"names":[],"mappings":"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"}
|