Type definitions for code generation pipeline, including intermediate representations and final output structures.
Structure for generated package.json files.
/**
* Package.json structure for code generation
*/
interface PackageJSON {
/** Package name */
name: string;
/** Package version */
version: string;
/** Package description */
description?: string;
/** Runtime dependencies */
dependencies: Record<string, string>;
/** Development dependencies */
devDependencies: Record<string, string>;
/** NPM scripts */
scripts?: Record<string, string>;
/** Engine requirements */
engines?: Record<string, string>;
/** Repository information */
repository?: {
type: string;
url: string;
};
/** Whether package is private */
private?: boolean;
}Output structures for code generation results.
/**
* Directory structure in code generation output
*/
interface ResultDir {
/** Directory name (Root name defaults to '.') */
name: string;
/** Subdirectories */
dirs: ResultDir[];
/** Files in directory */
files: ResultFile[];
}
/**
* File structure in code generation output
*/
interface ResultFile {
/** File name */
name: string;
/** File extension (e.g., .js, .less) */
ext: string;
/** File content */
content: string;
}Usage Examples:
import { PackageJSON, ResultDir, ResultFile } from "@alilc/lowcode-types";
// Generated package.json
const packageJson: PackageJSON = {
name: "my-lowcode-app",
version: "1.0.0",
description: "Generated from lowcode schema",
dependencies: {
"react": "^17.0.0",
"antd": "^4.0.0"
},
devDependencies: {
"typescript": "^4.0.0"
},
scripts: {
"start": "react-scripts start",
"build": "react-scripts build"
}
};
// Generated file structure
const appFile: ResultFile = {
name: "App",
ext: ".tsx",
content: `import React from 'react';
import { Button } from 'antd';
export default function App() {
return <Button type="primary">Hello World</Button>;
}`
};
const resultStructure: ResultDir = {
name: ".",
dirs: [
{
name: "src",
dirs: [],
files: [appFile]
}
],
files: [
{
name: "package",
ext: ".json",
content: JSON.stringify(packageJson, null, 2)
}
]
};