import { PackageJson } from 'type-fest' export type Obj = Record export type PkgJson = PackageJson export type AnonymousFunction = (...args: unknown[]) => unknown export interface LowcodeRoute { id: string title: string desc: string filePath: string builderType: string routePath: string routeAlias: string } export interface LowcodeBlock { id: string title: string desc: string filePath: string builderType: string blockId: string } export interface BuildJson extends Obj { targets?: string[] cone?: Obj plugins?: (string | [string, Obj])[] } export interface ConeScaffoldProps extends Obj { gitGroup?: string name?: string title?: string description?: string version?: string port?: string /** * 是否开启 i18n 检查 */ i18nCheck?: boolean /** * i18n 检查不通过后是否报错 */ i18nCheckReportError?: boolean /** * 是否使用 TypeScript */ ts?: boolean /** * 是否一码多端 */ oneCode?: boolean /** * 是否是移动端 */ mobile?: boolean /** * 是否使用 lowcode */ lowcode?: boolean /** * 是否使用 lowcode 配置化, 会根据各种配置文件来生成代码 */ useLowcodeConfigs?: boolean /** * 路由模式 */ routerMode?: 'browser' | 'hash' useArms?: boolean armsPid?: string useAem?: boolean aemPid?: string pandaPid?: string pandaVersion?: string /** * 是否生成 demo 示例页面 */ useDemo?: boolean /** * 自定义布局组件 */ layoutPackageName?: string /** * 主题样式 */ themePackageName?: string /** * 自定义 build.json 插件 */ buildPluginPackageName?: string /** * cone-cli 插件包 */ coneCliPluginPackageName?: string /** * cone 物料模板包 */ coneMaterialTemplatePackageName?: string | string[] /** * 自定义模板处理函数包 */ templateProcessorPackageName?: string } export interface ConeConfig extends Obj { scaffold?: ConeScaffoldProps } export interface ComponentBuildJson extends Obj { cone?: Obj plugins?: (string | [string, Obj])[] } export interface ConeComponentScaffoldProps extends Obj { gitGroup?: string packageName?: string desc?: string version?: string port?: string storybookPort?: string /** * 是否一码多端 */ oneCode?: boolean /** * 是否是移动端 */ mobile?: boolean /** * 是否使用 lowcode */ lowcode?: boolean /** * 自定义模板处理函数包 */ templateProcessorPackageName?: string } export interface ConeComponentConfig extends Obj { scaffold?: ConeComponentScaffoldProps } export interface PkgJsonPatch { deps?: string[] | Record devDeps?: string[] | Record scripts?: Record } export type ProjectFileProcessor = (params: { srcDir: string destDir: string filepath: string str: string // json to be updated obj: T props: ConeScaffoldProps pkgJsonPatch?: PkgJsonPatch }) => string | T | Promise | Promise export type ComponentFileProcessor = (params: { srcDir: string destDir: string filepath: string str: string // json to be updated obj: T props: ConeComponentScaffoldProps pkgJsonPatch?: PkgJsonPatch }) => string | T | Promise | Promise