diff --git a/packages/editor-core/src/utils/assets-transform.ts b/packages/editor-core/src/utils/assets-transform.ts index d4e735c03..8dc1b6fc3 100644 --- a/packages/editor-core/src/utils/assets-transform.ts +++ b/packages/editor-core/src/utils/assets-transform.ts @@ -1,25 +1,27 @@ -import { AssetsJson, ComponentDescription } from '@alilc/lowcode-types'; - +/* eslint-disable no-param-reassign */ +import { AssetsJson, ComponentDescription, Package, RemoteComponentDescription } from '@alilc/lowcode-types'; +// TODO: 该转换逻辑未来需要消化掉 export function assetsTransform(assets: AssetsJson) { const { components, packages } = assets; - const packageMaps = (packages || []).reduce((acc, cur) => { - const key = (cur.id || cur.package) as string; + const packageMaps = (packages || []).reduce((acc: Record, cur: Package) => { + const key = cur.id || cur.package || ''; acc[key] = cur; return acc; }, {} as any); - components.forEach((componentDesc) => { - let { devMode, schema, reference } = componentDesc as ComponentDescription; + components.forEach((componentDesc: ComponentDescription | RemoteComponentDescription) => { + let { devMode, schema, reference } = componentDesc; if ((devMode as string) === 'lowcode') { devMode = 'lowCode'; } else if (devMode === 'proCode') { devMode = 'proCode'; } if (devMode) { - (componentDesc as ComponentDescription).devMode = devMode; + componentDesc.devMode = devMode; } if (devMode === 'lowCode' && !schema && reference) { - (componentDesc as ComponentDescription).schema = packageMaps[reference.id as string].schema; + const referenceId = reference.id || ''; + componentDesc.schema = packageMaps[referenceId].schema; } }); return assets; diff --git a/packages/types/src/assets.ts b/packages/types/src/assets.ts index 588f56230..b9fdeffdc 100644 --- a/packages/types/src/assets.ts +++ b/packages/types/src/assets.ts @@ -2,6 +2,7 @@ import { Snippet, ComponentMetadata } from './metadata'; import { I18nData } from './i18n'; import { Reference } from './npm'; import { EitherOr } from './utils'; +import { ComponentSchema } from './schema'; export interface AssetItem { type: AssetType; @@ -148,6 +149,10 @@ export type Package = EitherOr<{ * 组件描述导出名字,可以通过 window[exportName] 获取到组件描述的 Object 内容; */ exportName?: string; + /** + * 低代码组件 schema 内容 + */ + schema?: ComponentSchema; }, 'package', 'id'>; /** @@ -223,7 +228,7 @@ export interface ComponentDescription extends ComponentMetadata { /** * 远程物料描述 */ -export interface RemoteComponentDescription { +export interface RemoteComponentDescription extends ComponentMetadata { /** * 组件描述导出名字,可以通过 window[exportName] 获取到组件描述的 Object 内容; */ @@ -233,9 +238,14 @@ export interface RemoteComponentDescription { */ url?: string; /** - * 组件(库)的 npm 信息; + * 组件 (库) 的 npm 信息; */ package?: { npm?: string; }; + + /** + * 替代 npm 字段的升级版本 + */ + reference?: Reference; }