@specverse/engines 4.1.30 → 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/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/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/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/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/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,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Field Helpers Generator
|
|
3
|
-
* Generates utility functions for form field handling
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
export interface FieldHelpersGeneratorContext {
|
|
7
|
-
spec: any;
|
|
8
|
-
manifest: any;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export async function generate(context: FieldHelpersGeneratorContext): Promise<string> {
|
|
12
|
-
return `/**
|
|
13
|
-
* Utility functions for form field handling
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Check if a field should be hidden because it's auto-generated
|
|
18
|
-
*/
|
|
19
|
-
export function isAutoGeneratedField(attrName: string, attrDef: any): boolean {
|
|
20
|
-
const typeStr = typeof attrDef === 'string' ? attrDef : attrDef?.type || '';
|
|
21
|
-
|
|
22
|
-
// Hide UUID id field
|
|
23
|
-
if (attrName === 'id' && typeStr.includes('UUID')) return true;
|
|
24
|
-
|
|
25
|
-
// Hide auto-generated DateTime fields
|
|
26
|
-
const autoDateFields = ['createdAt', 'updatedAt', 'joinedAt', 'publishedAt'];
|
|
27
|
-
if (autoDateFields.includes(attrName) && typeStr.includes('DateTime')) return true;
|
|
28
|
-
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* Check if a field is required
|
|
34
|
-
*/
|
|
35
|
-
export function isFieldRequired(attrDef: any): boolean {
|
|
36
|
-
if (!attrDef) return false;
|
|
37
|
-
if (typeof attrDef === 'string') {
|
|
38
|
-
return attrDef.toLowerCase().includes('required');
|
|
39
|
-
}
|
|
40
|
-
return attrDef.required === true;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Get default value for a field based on its type
|
|
45
|
-
*/
|
|
46
|
-
export function getFieldDefaultValue(attrDef: any): any {
|
|
47
|
-
if (!attrDef) return '';
|
|
48
|
-
|
|
49
|
-
const typeStr = typeof attrDef === 'string' ? attrDef : attrDef?.type || '';
|
|
50
|
-
|
|
51
|
-
// Check if schema has a default value
|
|
52
|
-
if (attrDef && typeof attrDef === 'object' && attrDef.default !== undefined) {
|
|
53
|
-
const defaultVal = attrDef.default;
|
|
54
|
-
// Parse string defaults to proper types
|
|
55
|
-
if (typeStr.toLowerCase().includes('bool')) {
|
|
56
|
-
return defaultVal === 'true' || defaultVal === true;
|
|
57
|
-
} else if (
|
|
58
|
-
typeStr.toLowerCase().includes('int') ||
|
|
59
|
-
typeStr.toLowerCase().includes('number')
|
|
60
|
-
) {
|
|
61
|
-
return typeof defaultVal === 'number' ? defaultVal : parseInt(defaultVal) || 0;
|
|
62
|
-
} else if (typeStr.toLowerCase().includes('string')) {
|
|
63
|
-
// Remove surrounding quotes if present
|
|
64
|
-
return typeof defaultVal === 'string'
|
|
65
|
-
? defaultVal.replace(/^"|"$/g, '')
|
|
66
|
-
: defaultVal;
|
|
67
|
-
} else {
|
|
68
|
-
return defaultVal;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Otherwise use type-based defaults
|
|
73
|
-
if (typeStr.toLowerCase().includes('bool')) {
|
|
74
|
-
return false;
|
|
75
|
-
} else if (
|
|
76
|
-
typeStr.toLowerCase().includes('int') ||
|
|
77
|
-
typeStr.toLowerCase().includes('number')
|
|
78
|
-
) {
|
|
79
|
-
return 0;
|
|
80
|
-
} else {
|
|
81
|
-
return '';
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Initialize form data from schema attributes
|
|
87
|
-
*/
|
|
88
|
-
export function initializeFormData(
|
|
89
|
-
attributes: Record<string, any>,
|
|
90
|
-
options: { includeAutoGenerated?: boolean } = {}
|
|
91
|
-
): Record<string, any> {
|
|
92
|
-
const data: Record<string, any> = {};
|
|
93
|
-
|
|
94
|
-
Object.entries(attributes).forEach(([attrName, attrDef]) => {
|
|
95
|
-
// Skip auto-generated fields unless explicitly included
|
|
96
|
-
if (!options.includeAutoGenerated && isAutoGeneratedField(attrName, attrDef)) {
|
|
97
|
-
return;
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
data[attrName] = getFieldDefaultValue(attrDef);
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
return data;
|
|
104
|
-
}
|
|
105
|
-
`;
|
|
106
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Package.json Generator for React Frontend
|
|
3
|
-
*
|
|
4
|
-
* Generates package.json for the frontend workspace
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import type { TemplateContext } from '@specverse/types';
|
|
8
|
-
|
|
9
|
-
export default function generatePackageJson(context: TemplateContext): string {
|
|
10
|
-
const { spec } = context;
|
|
11
|
-
|
|
12
|
-
const appName = spec.metadata?.component?.toLowerCase() || 'frontend';
|
|
13
|
-
const version = spec.metadata?.version || '1.0.0';
|
|
14
|
-
const description = spec.metadata?.description || 'Frontend application';
|
|
15
|
-
|
|
16
|
-
const pkg = {
|
|
17
|
-
name: `${appName}-frontend`,
|
|
18
|
-
version,
|
|
19
|
-
description,
|
|
20
|
-
private: true,
|
|
21
|
-
type: "module",
|
|
22
|
-
scripts: {
|
|
23
|
-
dev: "vite",
|
|
24
|
-
build: "tsc && vite build",
|
|
25
|
-
preview: "vite preview",
|
|
26
|
-
test: "echo 'No tests configured for frontend'",
|
|
27
|
-
lint: "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0"
|
|
28
|
-
},
|
|
29
|
-
dependencies: {
|
|
30
|
-
"react": "^18.2.0",
|
|
31
|
-
"react-dom": "^18.2.0",
|
|
32
|
-
"react-router-dom": "^6.18.0",
|
|
33
|
-
"@tanstack/react-query": "^5.0.0",
|
|
34
|
-
"react-hook-form": "^7.48.0",
|
|
35
|
-
"zod": "^3.22.0",
|
|
36
|
-
"@hookform/resolvers": "^3.3.0",
|
|
37
|
-
"zustand": "^4.4.0"
|
|
38
|
-
},
|
|
39
|
-
devDependencies: {
|
|
40
|
-
"@types/react": "^18.2.0",
|
|
41
|
-
"@types/react-dom": "^18.2.0",
|
|
42
|
-
"@vitejs/plugin-react": "^4.2.0",
|
|
43
|
-
"autoprefixer": "^10.4.20",
|
|
44
|
-
"postcss": "^8.4.47",
|
|
45
|
-
"tailwindcss": "^3.4.13",
|
|
46
|
-
"typescript": "^5.2.0",
|
|
47
|
-
"vite": "^6.0.0",
|
|
48
|
-
"eslint": "^9.0.0",
|
|
49
|
-
"@typescript-eslint/eslint-plugin": "^8.0.0",
|
|
50
|
-
"@typescript-eslint/parser": "^8.0.0",
|
|
51
|
-
"eslint-plugin-react-hooks": "^5.0.0",
|
|
52
|
-
"eslint-plugin-react-refresh": "^0.4.4"
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
return JSON.stringify(pkg, null, 2);
|
|
57
|
-
}
|
|
@@ -1,179 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Pattern Adapter Generator (v0.9.0)
|
|
3
|
-
*
|
|
4
|
-
* Copies ReactPatternAdapter from specverse-app-demo for pattern-based view rendering.
|
|
5
|
-
* This bundles the adapter with generated code for standalone deployment.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import { readFileSync, existsSync } from 'fs';
|
|
9
|
-
import { join, dirname } from 'path';
|
|
10
|
-
import { fileURLToPath } from 'url';
|
|
11
|
-
|
|
12
|
-
export interface PatternAdapterGeneratorContext {
|
|
13
|
-
spec: any;
|
|
14
|
-
manifest: any;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export async function generate(context: PatternAdapterGeneratorContext): Promise<string> {
|
|
18
|
-
// Try to find the react-pattern-adapter.tsx source file
|
|
19
|
-
// It should be in specverse-app-demo/frontend-react/src/lib/react-pattern-adapter.tsx
|
|
20
|
-
|
|
21
|
-
const __filename = fileURLToPath(import.meta.url);
|
|
22
|
-
const __dirname = dirname(__filename);
|
|
23
|
-
|
|
24
|
-
// Possible locations for the source file
|
|
25
|
-
const possiblePaths = [
|
|
26
|
-
// PRIORITY 0: Same directory as this generator (source)
|
|
27
|
-
join(__dirname, 'react-pattern-adapter.tsx'),
|
|
28
|
-
// PRIORITY 1: Bundled with package (in libs/ directory, from dist/)
|
|
29
|
-
join(__dirname, '../../../../../../libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx'),
|
|
30
|
-
// Up from dist to package root then into libs
|
|
31
|
-
join(__dirname, '../../../../../libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx'),
|
|
32
|
-
join(__dirname, '../../../../libs/instance-factories/applications/templates/react/react-pattern-adapter.tsx'),
|
|
33
|
-
// Development environment (specverse-app-demo sibling)
|
|
34
|
-
join(__dirname, '../../../../../../../specverse-app-demo/frontend-react/src/lib/react-pattern-adapter.tsx'),
|
|
35
|
-
];
|
|
36
|
-
|
|
37
|
-
let adapterSource: string | null = null;
|
|
38
|
-
let foundPath: string | null = null;
|
|
39
|
-
|
|
40
|
-
for (const path of possiblePaths) {
|
|
41
|
-
if (existsSync(path)) {
|
|
42
|
-
try {
|
|
43
|
-
adapterSource = readFileSync(path, 'utf-8');
|
|
44
|
-
foundPath = path;
|
|
45
|
-
break;
|
|
46
|
-
} catch (error) {
|
|
47
|
-
// Continue to next path
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
if (adapterSource) {
|
|
53
|
-
// Successfully read the adapter - return it with a header comment
|
|
54
|
-
// The imports from @specverse/engine-realize are valid and exported
|
|
55
|
-
return `/**
|
|
56
|
-
* ReactPatternAdapter - Pattern-Based View Rendering
|
|
57
|
-
*
|
|
58
|
-
* AUTO-GENERATED: Copied from specverse-app-demo
|
|
59
|
-
* Source: ${foundPath}
|
|
60
|
-
*
|
|
61
|
-
* This file provides pattern detection and React/Tailwind rendering for
|
|
62
|
-
* tech-independent composite patterns. It is bundled with generated code
|
|
63
|
-
* for standalone deployment.
|
|
64
|
-
*
|
|
65
|
-
* Imports COMPOSITE_VIEW_PATTERNS and types from @specverse/engine-realize
|
|
66
|
-
* which are exported from the published npm package.
|
|
67
|
-
*
|
|
68
|
-
* DO NOT EDIT: Changes will be overwritten on next generation.
|
|
69
|
-
* To customize, create a wrapper or modify the original source.
|
|
70
|
-
*/
|
|
71
|
-
|
|
72
|
-
${adapterSource}
|
|
73
|
-
`;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// Fallback: Return stub that imports from @specverse/engine-realize
|
|
77
|
-
return `/**
|
|
78
|
-
* ReactPatternAdapter - Pattern-Based View Rendering (STUB)
|
|
79
|
-
*
|
|
80
|
-
* ⚠️ WARNING: Could not locate react-pattern-adapter.tsx source file.
|
|
81
|
-
*
|
|
82
|
-
* This is a stub implementation that imports from @specverse/engine-realize.
|
|
83
|
-
* For full functionality, ensure specverse-app-demo is available at generation time.
|
|
84
|
-
*
|
|
85
|
-
* Attempted paths:
|
|
86
|
-
${possiblePaths.map(p => ` * - ${p}`).join('\n')}
|
|
87
|
-
*/
|
|
88
|
-
|
|
89
|
-
import { useMemo } from 'react';
|
|
90
|
-
import {
|
|
91
|
-
COMPOSITE_VIEW_PATTERNS,
|
|
92
|
-
type CompositeViewPattern,
|
|
93
|
-
type CURVEDOperation
|
|
94
|
-
} from '@specverse/engines/realize';
|
|
95
|
-
|
|
96
|
-
/**
|
|
97
|
-
* React-specific protocol mapping for CURVED operations (STUB)
|
|
98
|
-
*/
|
|
99
|
-
export const REACT_PROTOCOL_MAPPING: Record<CURVEDOperation, {
|
|
100
|
-
method: string;
|
|
101
|
-
pathPattern: string;
|
|
102
|
-
}> = {
|
|
103
|
-
create: {
|
|
104
|
-
method: 'POST',
|
|
105
|
-
pathPattern: '/api/{resource}'
|
|
106
|
-
},
|
|
107
|
-
update: {
|
|
108
|
-
method: 'PUT',
|
|
109
|
-
pathPattern: '/api/{resource}/{id}'
|
|
110
|
-
},
|
|
111
|
-
retrieve: {
|
|
112
|
-
method: 'GET',
|
|
113
|
-
pathPattern: '/api/{resource}/{id}'
|
|
114
|
-
},
|
|
115
|
-
retrieve_many: {
|
|
116
|
-
method: 'GET',
|
|
117
|
-
pathPattern: '/api/{resource}'
|
|
118
|
-
},
|
|
119
|
-
validate: {
|
|
120
|
-
method: 'POST',
|
|
121
|
-
pathPattern: '/api/{resource}/validate'
|
|
122
|
-
},
|
|
123
|
-
evolve: {
|
|
124
|
-
method: 'POST',
|
|
125
|
-
pathPattern: '/api/{resource}/{id}/evolve'
|
|
126
|
-
},
|
|
127
|
-
delete: {
|
|
128
|
-
method: 'DELETE',
|
|
129
|
-
pathPattern: '/api/{resource}/{id}'
|
|
130
|
-
}
|
|
131
|
-
};
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Simple Tailwind adapter stub
|
|
135
|
-
*/
|
|
136
|
-
const createStubTailwindAdapter = () => ({
|
|
137
|
-
renderComponent: (type: string, _props: any) => {
|
|
138
|
-
return \`<div class="p-2 text-gray-600">[\${type}]</div>\`;
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* Stub PatternAdapter that uses browser exports
|
|
144
|
-
*/
|
|
145
|
-
export function usePatternAdapter() {
|
|
146
|
-
return useMemo(() => ({
|
|
147
|
-
tailwindAdapter: createStubTailwindAdapter(),
|
|
148
|
-
|
|
149
|
-
detectPattern(view: any): CompositeViewPattern | null {
|
|
150
|
-
const viewType = view.type?.toLowerCase();
|
|
151
|
-
const typeToPattern: Record<string, string> = {
|
|
152
|
-
'form': 'form-view',
|
|
153
|
-
'list': 'list-view',
|
|
154
|
-
'detail': 'detail-view',
|
|
155
|
-
'dashboard': 'dashboard-view'
|
|
156
|
-
};
|
|
157
|
-
const patternId = typeToPattern[viewType];
|
|
158
|
-
return patternId ? COMPOSITE_VIEW_PATTERNS[patternId] : null;
|
|
159
|
-
},
|
|
160
|
-
|
|
161
|
-
renderPattern(_context: any): string {
|
|
162
|
-
return \`
|
|
163
|
-
<div class="p-4 bg-yellow-50 border border-yellow-200 rounded">
|
|
164
|
-
<p class="text-yellow-800 font-semibold">⚠️ Pattern Adapter Stub</p>
|
|
165
|
-
<p class="text-sm text-yellow-700 mt-2">
|
|
166
|
-
Full ReactPatternAdapter could not be bundled.
|
|
167
|
-
Views will not render correctly.
|
|
168
|
-
</p>
|
|
169
|
-
</div>
|
|
170
|
-
\`;
|
|
171
|
-
}
|
|
172
|
-
}), []);
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
export { COMPOSITE_VIEW_PATTERNS } from '@specverse/engines/realize';
|
|
176
|
-
|
|
177
|
-
console.warn('⚠️ Using stub ReactPatternAdapter - full source file not found during generation');
|
|
178
|
-
`;
|
|
179
|
-
}
|