From 064e8423825defcb972640479a662c8d24470c5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Wed, 14 Dec 2022 17:25:02 +0800 Subject: [PATCH 001/581] feat(spec): support type NodeSchema when the Node is JSSlot --- docs/docs/specs/lowcode-spec.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/docs/specs/lowcode-spec.md b/docs/docs/specs/lowcode-spec.md index 6ad87caefe..cbe2040949 100644 --- a/docs/docs/specs/lowcode-spec.md +++ b/docs/docs/specs/lowcode-spec.md @@ -281,7 +281,7 @@ sidebar_position: 0 | 参数 | 说明 | 类型 | 变量支持 | 默认值 | | --------------- | ---------------------- | ------------------------- | -------- | ------ | -| componentsMap[] | 描述组件映射关系的集合 | Array\<**ComponentMap**\> | - | null | +| componentsMap[] | 描述组件映射关系的集合 | **ComponentMap**[] | - | null | **ComponentMap 结构描述**如下: @@ -413,7 +413,7 @@ import { Input as CustomInput } from '@ali/custom/lib/input'; | 参数 | 说明 | 类型 | 支持变量 | 默认值 | 备注 | | ----------- | ---------------------- | -------------------------------------- | -------- | ------ | ----------------------------------------------------------------------------------------------------------- | -| list[] | 数据源列表 | Array\<**ComponentDataSourceItem**\> | - | - | 成为为单个请求配置, 内容定义详见 [ComponentDataSourceItem 对象描述](#2314-componentdatasourceitem-对象描述) | +| list[] | 数据源列表 | **ComponentDataSourceItem**[] | - | - | 成为为单个请求配置, 内容定义详见 [ComponentDataSourceItem 对象描述](#2314-componentdatasourceitem-对象描述) | | dataHandler | 所有请求数据的处理函数 | Function | - | - | 详见 [dataHandler Function 描述](#2317-datahandler-function 描述) | ##### 2.3.1.4 ComponentDataSourceItem 对象描述 @@ -607,7 +607,7 @@ try { | props { } | 组件属性对象 | **Props** | - | {} | 必填,详见 [Props 结构描述](#2311-props-结构描述) | | static | 低代码业务组件类的静态对象 | | | | | | defaultProps | 低代码业务组件默认属性 | Object | - | - | 选填,仅用于定义低代码业务组件的默认属性 | -| propDefinitions | 低代码业务组件属性类型定义 | **Array\** | - | - | 选填,仅用于定义低代码业务组件的属性数据类型。详见 [ComponentPropDefinition 对象描述](#2318-componentpropdefinition-对象描述) | +| propDefinitions | 低代码业务组件属性类型定义 | **ComponentPropDefinition**[] | - | - | 选填,仅用于定义低代码业务组件的属性数据类型。详见 [ComponentPropDefinition 对象描述](#2318-componentpropdefinition-对象描述) | | condition | 渲染条件 | Boolean | ✅ | true | 选填,根据表达式结果判断是否渲染物料;支持变量表达式 | | state | 容器初始数据 | Object | ✅ | - | 选填,支持变量表达式 | | children | 子组件 | Array | - | | 选填,支持变量表达式 | @@ -751,7 +751,7 @@ try { | 参数 | 说明 | 值类型 | 默认值 | 备注 | | ----- | ---------- | --------------------- | -------- | -------------------------------------------------------------- | | type | 值类型描述 | String | 'JSSlot' | 固定值 | -| value | 具体的值 | Array\ | null | 内容为 NodeSchema 类型,详见[组件结构描述](#232-组件结构描述(A)) | +| value | 具体的值 | NodeSchema \| NodeSchema[] | null | 内容为 NodeSchema 类型,详见[组件结构描述](#232-组件结构描述(A)) | 举例描述:如 **Card** 的 **title** 属性 @@ -782,8 +782,8 @@ try { | 参数 | 说明 | 值类型 | 默认值 | 备注 | | ------ | ---------- | --------------------- | -------- | -------------------------------------------------------------- | | type | 值类型描述 | String | 'JSSlot' | 固定值 | -| value | 具体的值 | Array\ | null | 内容为 NodeSchema 类型,详见[组件结构描述](#232-组件结构描述 a) | -| params | 函数的参数 | Array\ | null | 函数的入参,其子节点可以通过 `this[参数名]` 来获取对应的参数。 | +| value | 具体的值 | NodeSchema \| NodeSchema[] | null | 内容为 NodeSchema 类型,详见[组件结构描述](#232-组件结构描述 a) | +| params | 函数的参数 | String[] | null | 函数的入参,其子节点可以通过 `this[参数名]` 来获取对应的参数。 | 举例描述:如 **Table.Column** 的 **cell** 属性 @@ -1106,7 +1106,7 @@ this.setState((prevState) => ({ count: prevState.count + 1 })); | 参数 | 说明 | 类型 | 支持变量 | 默认值 | | ------------------ | ------------------ | ---------------------------------------------------------------------------------------------------------------- | -------- | ------ | -| utils[] | 工具类扩展映射关系 | Array\<**UtilItem**\> | - | | +| utils[] | 工具类扩展映射关系 | **UtilItem**[] | - | | | *UtilItem*.name | 工具类扩展项名称 | String | - | | | *UtilItem*.type | 工具类扩展项类型 | 枚举, `'npm'` (代表公网 npm 类型) / `'tnpm'` (代表阿里巴巴内部 npm 类型) / `'function'` (代表 Javascript 函数类型) | - | | | *UtilItem*.content | 工具类扩展项内容 | [ComponentMap 类型](#22-组件映射关系 a) 或 [JSFunction](#2432事件函数类型 a) | - | | From 3fe9882f9d5ef9302ee0265facb26ba1e58cccad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Wed, 21 Dec 2022 09:52:55 +0800 Subject: [PATCH 002/581] fix: compatible with SlotSchema which doesn't have title / name / params --- packages/designer/src/document/node/props/prop.ts | 12 ++++++++++-- packages/types/src/schema.ts | 7 +++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/packages/designer/src/document/node/props/prop.ts b/packages/designer/src/document/node/props/prop.ts index 634a6b14bf..33eb45d1cf 100644 --- a/packages/designer/src/document/node/props/prop.ts +++ b/packages/designer/src/document/node/props/prop.ts @@ -315,9 +315,17 @@ export class Prop implements IPropParent { setAsSlot(data: JSSlot) { this._type = 'slot'; let slotSchema: SlotSchema; - // 当 data.value 的结构为 { componentName: 'Slot' } 时,直接当成 slotSchema 使用 + // 当 data.value 的结构为 { componentName: 'Slot' } 时,复用部分 slotSchema 数据 if ((isPlainObject(data.value) && data.value?.componentName === 'Slot')) { - slotSchema = data.value as SlotSchema; + const value = data.value as SlotSchema; + slotSchema = { + componentName: 'Slot', + title: value.title || value.props?.slotTitle, + id: data.id, + name: value.name || value.props?.slotName, + params: value.params || value.props?.slotParams, + children: data.value, + } as SlotSchema; } else { slotSchema = { componentName: 'Slot', diff --git a/packages/types/src/schema.ts b/packages/types/src/schema.ts index e320d6b510..fe86a4132a 100644 --- a/packages/types/src/schema.ts +++ b/packages/types/src/schema.ts @@ -162,7 +162,14 @@ export type RootSchema = PageSchema | ComponentSchema | BlockSchema; export interface SlotSchema extends NodeSchema { componentName: 'Slot'; name?: string; + title?: string; params?: string[]; + props?: { + slotTitle?: string; + slotName?: string; + slotParams?: string[]; + }; + children?: NodeSchema[]; } /** From b3938b69a1f9548b25bc7357f8020f217c46733e Mon Sep 17 00:00:00 2001 From: JackLian Date: Tue, 20 Dec 2022 21:33:13 +0800 Subject: [PATCH 003/581] chore: add new cdn support --- docs/README.md | 7 ++--- docs/docs/guide/create/useEditor.md | 4 ++- docs/docs/participate/flow.md | 15 ++++++--- docs/package.json | 3 +- docs/scripts/sync-oss.js | 48 +++++++++++++++++++++++++++++ package.json | 3 +- packages/engine/README-zh_CN.md | 25 +++++++++------ packages/engine/README.md | 25 +++++++++------ scripts/sync-oss.js | 48 +++++++++++++++++++++++++++++ 9 files changed, 148 insertions(+), 30 deletions(-) create mode 100644 docs/scripts/sync-oss.js create mode 100644 scripts/sync-oss.js diff --git a/docs/README.md b/docs/README.md index 12c8f1fbe9..85da75163c 100644 --- a/docs/README.md +++ b/docs/README.md @@ -27,8 +27,8 @@ $ yarn build 1. npm run build 2. npm publish # 记得改下版本号,比如 1.0.1 -# 发布完后执行 tnpm sync -3. tnpm sync +# 发布完后执行 tnpm syncOss 同步到 uipaas CDN +3. tnpm syncOss 4. 更新 diamond 版本 1.0.1 5. lowcode-engine.cn 站点生效 @@ -37,10 +37,9 @@ $ yarn build ## 功能 - [x] 支持本地离线搜搜 -- [x] 版本化文档管理 +- [x] 版本化文档管理 - [x] 离线静态部署 - [x] 主题(fork 宜搭开发者中心) ## 使用文档 https://docusaurus.io/zh-CN/docs/docs-introduction - diff --git a/docs/docs/guide/create/useEditor.md b/docs/docs/guide/create/useEditor.md index 21de391080..7a778e02de 100644 --- a/docs/docs/guide/create/useEditor.md +++ b/docs/docs/guide/create/useEditor.md @@ -80,7 +80,9 @@ sidebar_position: 0 ``` -> 注:如果 unpkg 的服务比较缓慢,您可以使用 alicdn 来获得确定版本的低代码引擎,如对于引擎的 1.0.1 版本,可用 [https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.1/dist/js/engine-core.js](https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.1/dist/js/engine-core.js) +> 注:如果 unpkg 的服务比较缓慢,您可以使用 alicdn 来获得确定版本的低代码引擎,如对于引擎的 1.0.18 版本,可用以下官方 cdn 替代 +> - [https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js](https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js) +> - [https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js](https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js) ### 配置打包 diff --git a/docs/docs/participate/flow.md b/docs/docs/participate/flow.md index 0a088807a5..b8b804e123 100644 --- a/docs/docs/participate/flow.md +++ b/docs/docs/participate/flow.md @@ -70,9 +70,10 @@ sidebar_position: 2 ```bash npm run pub ``` -5. 同步到 tnpm 源 & alifd CDN(此步骤将发布在 npm 源的包同步到阿里内网源,因为 alifd cdn 将依赖内网 npm 源) +5. 同步到 tnpm 源 & alifd CDN & uipaas CDN(此步骤将发布在 npm 源的包同步到阿里内网源,因为 alifd cdn 将依赖内网 npm 源) ```bash tnpm run sync + tnpm run syncOss ``` 6. 更新[发布日志](https://github.com/alibaba/lowcode-engine/releases) 7. 合并 release/x.x.x 到 main 分支 @@ -102,9 +103,10 @@ sidebar_position: 2 ```bash npm run pub:preminor ``` -5. 同步到 tnpm 源 & alifd CDN +5. 同步到 tnpm 源 & alifd CDN & uipaas CDN ```bash tnpm run sync + tnpm run syncOss ``` #### 发某 z 位版本首个 beta,如 1.0.1-beta.0 @@ -129,9 +131,10 @@ sidebar_position: 2 ```bash npm run pub:prepatch ``` -5. 同步到 tnpm 源 & alifd CDN +5. 同步到 tnpm 源 & alifd CDN & uipaas CDN ```bash tnpm run sync + tnpm run syncOss ``` #### 发某版本非首个 beta,如 1.0.1-beta.0 -> 1.0.1-beta.1 @@ -151,9 +154,10 @@ sidebar_position: 2 ```bash npm run pub:prerelease ``` -5. 同步到 tnpm 源 & alifd CDN +5. 同步到 tnpm 源 & alifd CDN & uipaas CDN ```bash tnpm run sync + tnpm run syncOss ``` @@ -173,9 +177,10 @@ sidebar_position: 2 ```bash npm publish --tag beta ``` -4. 同步到 tnpm 源 & alifd CDN +4. 同步到 tnpm 源 & alifd CDN & uipaas CDN ```bash tnpm run sync + tnpm run syncOss ``` **官网生效** diff --git a/docs/package.json b/docs/package.json index d03668ad91..1cf731345b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -16,7 +16,8 @@ "serve": "docusaurus serve", "write-translations": "docusaurus write-translations", "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc" + "typecheck": "tsc", + "syncOss": "node ./scripts/sync-oss.js" }, "dependencies": { "@docusaurus/core": "^2.2.0", diff --git a/docs/scripts/sync-oss.js b/docs/scripts/sync-oss.js new file mode 100644 index 0000000000..407f113bdb --- /dev/null +++ b/docs/scripts/sync-oss.js @@ -0,0 +1,48 @@ +#!/usr/bin/env node +const http = require('http'); +const package = require('../package.json'); +const { version, name } = package; +const options = { + method: 'PUT', + // 暂时使用 日常环境的 uipaas-node,上线后可切换成线上环境 https://uipaas-node.alibaba-inc.com + hostname: 'uipaas-node.alibaba.net', + path: '/staticAssets/cdn/packages', + headers: { + 'Content-Type': 'application/json', + Cookie: 'locale=en-us', + }, + maxRedirects: 20, +}; + +const onResponse = function (res) { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + + res.on('end', (chunk) => { + const body = Buffer.concat(chunks); + console.table(JSON.stringify(JSON.parse(body.toString()), null, 2)); + }); + + res.on('error', (error) => { + console.error(error); + }); +}; + +const req = http.request(options, onResponse); + +const postData = JSON.stringify({ + packages: [ + { + packageName: name, + version, + }, + ], + // 可以发布指定源的 npm 包,默认公网 npm + useTnpm: false, +}); + +req.write(postData); + +req.end(); \ No newline at end of file diff --git a/package.json b/package.json index 08e649a3f8..572958d822 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ "test": "lerna run test --stream", "test:snapshot": "lerna run test:snapshot", "watchdog:build": "node ./scripts/watchdog.js", - "sync": "./scripts/sync.sh" + "sync": "./scripts/sync.sh", + "syncOss": "node ./scripts/sync-oss.js" }, "husky": { "hooks": { diff --git a/packages/engine/README-zh_CN.md b/packages/engine/README-zh_CN.md index 000a711f5f..793ee050be 100644 --- a/packages/engine/README-zh_CN.md +++ b/packages/engine/README-zh_CN.md @@ -97,26 +97,33 @@ init(document.getElementById('lce')); ### cdn 可选方式: #### 方式 1(推荐):alifd cdn ```html -https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js +https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js +https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` -#### 方式 2:unpkg +#### 方式 2(推荐):uipaas cdn ```html -https://unpkg.com/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js +https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js -https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js +https://uipaas-assets.com/prod/npm/@alilc/lowcode-react-simulator-renderer/1.0.18/dist/js/react-simulator-renderer.js ``` -#### 方式 3:jsdelivr +#### 方式 3:unpkg ```html -https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js +https://unpkg.com/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js +https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` -#### 方式 4:使用自有 cdn +#### 方式 4:jsdelivr +```html +https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js + +https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js +``` + +#### 方式 5:使用自有 cdn 将源码中 packages/engine/dist 和 packages/(react|rax)-simulator-renderer/dist 下的文件传至你的 cdn 提供商 ## 🔗 相关链接 diff --git a/packages/engine/README.md b/packages/engine/README.md index 8b11e5a1a4..8ce6759231 100644 --- a/packages/engine/README.md +++ b/packages/engine/README.md @@ -97,26 +97,33 @@ init(document.getElementById('lce')); ### cdn optional method: #### Method 1: alifd cdn ```html -https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js +https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js +https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` -#### Method 2: unpkg +#### Method 2: uipaas cdn ```html -https://unpkg.com/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js +https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js -https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js +https://uipaas-assets.com/prod/npm/@alilc/lowcode-react-simulator-renderer/1.0.18/dist/js/react-simulator-renderer.js ``` -#### Method 3: jsdelivr +#### Method 3: unpkg ```html -https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js +https://unpkg.com/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js -https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js +https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js ``` -#### Method 4: Use your own cdn +#### Method 4: jsdelivr +```html +https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js + +https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.18/dist/js/react-simulator-renderer.js +``` + +#### Method 5: Use your own cdn Pass the files under packages/engine/dist and packages/(react|rax)-simulator-renderer/dist in the source code to your cdn provider ## 🔗 Related Links diff --git a/scripts/sync-oss.js b/scripts/sync-oss.js new file mode 100644 index 0000000000..422f7162d5 --- /dev/null +++ b/scripts/sync-oss.js @@ -0,0 +1,48 @@ +#!/usr/bin/env node +const http = require('http'); +const package = require('../packages/engine/package.json'); +const { version, name } = package; +const options = { + method: 'PUT', + // 暂时使用 日常环境的 uipaas-node,上线后可切换成线上环境 https://uipaas-node.alibaba-inc.com + hostname: 'uipaas-node.alibaba.net', + path: '/staticAssets/cdn/packages', + headers: { + 'Content-Type': 'application/json', + Cookie: 'locale=en-us', + }, + maxRedirects: 20, +}; + +const onResponse = function (res) { + const chunks = []; + res.on('data', (chunk) => { + chunks.push(chunk); + }); + + res.on('end', (chunk) => { + const body = Buffer.concat(chunks); + console.table(JSON.stringify(JSON.parse(body.toString()), null, 2)); + }); + + res.on('error', (error) => { + console.error(error); + }); +}; + +const req = http.request(options, onResponse); + +const postData = JSON.stringify({ + packages: [ + { + packageName: name, + version, + }, + ], + // 可以发布指定源的 npm 包,默认公网 npm + useTnpm: false, +}); + +req.write(postData); + +req.end(); \ No newline at end of file From 82b6a01533337db7b1489c4b1a3235993bb45a7f Mon Sep 17 00:00:00 2001 From: JackLian Date: Wed, 21 Dec 2022 11:41:28 +0800 Subject: [PATCH 004/581] docs: change cdn --- docs/docs/guide/create/useEditor.md | 11 +++++------ docs/docs/participate/config.md | 26 +++++++++++++++++--------- docs/docs/participate/prepare.md | 12 ++++++------ docs/package.json | 2 +- 4 files changed, 29 insertions(+), 22 deletions(-) diff --git a/docs/docs/guide/create/useEditor.md b/docs/docs/guide/create/useEditor.md index 7a778e02de..cbb38f77de 100644 --- a/docs/docs/guide/create/useEditor.md +++ b/docs/docs/guide/create/useEditor.md @@ -54,13 +54,13 @@ sidebar_position: 0 ```html - + - + @@ -76,12 +76,11 @@ sidebar_position: 0 - + - + ``` -> 注:如果 unpkg 的服务比较缓慢,您可以使用 alicdn 来获得确定版本的低代码引擎,如对于引擎的 1.0.18 版本,可用以下官方 cdn 替代 -> - [https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js](https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.18/dist/js/engine-core.js) +> 注:如果 unpkg 的服务比较缓慢,您可以使用官方 CDN 来获得确定版本的低代码引擎,如对于引擎的 1.0.18 版本,可用以下官方 CDN 替代 > - [https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js](https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/1.0.18/dist/js/engine-core.js) diff --git a/docs/docs/participate/config.md b/docs/docs/participate/config.md index 235cd4f027..1d70a7a89e 100644 --- a/docs/docs/participate/config.md +++ b/docs/docs/participate/config.md @@ -2,13 +2,21 @@ title: 工程化配置 sidebar_position: 3 --- -目前引擎体系共包含 2 个 js 文件,即: +目前引擎体系共包含 2 个 js 文件 (配套 2 个 css),即: + + ```html - - - - + + + + + + + + + ``` + > 注,这里的版本号是示例,请尽量选用最新版 工程化配置我们进行了统一,具体如下: @@ -66,15 +74,15 @@ sidebar_position: 3 #### 所有资源: ```html - - + + - + - + ``` diff --git a/docs/docs/participate/prepare.md b/docs/docs/participate/prepare.md index b23dff33d5..c0e1d5880e 100644 --- a/docs/docs/participate/prepare.md +++ b/docs/docs/participate/prepare.md @@ -32,27 +32,27 @@ npm install && npm start { "proxy": [ [ - "https://alifd.alicdn.com/npm/@alilc/lowcode-engine@(.*)/dist/js/engine-core.js", + "https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/js/engine-core.js", "http://localhost:5555/js/engine-core.js" ], [ - "https://alifd.alicdn.com/npm/@alilc/lowcode-engine@(.*)/dist/css/engine-core.css", + "https://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/css/engine-core.css", "http://localhost:5555/css/engine-core.css" ], [ - "https?://alifd.alicdn.com/npm/@alilc/lowcode-engine@(.*)/dist/js/react-simulator-renderer.js", + "https?://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/js/react-simulator-renderer.js", "http://localhost:5555/js/react-simulator-renderer.js" ], [ - "https?://alifd.alicdn.com/npm/@alilc/lowcode-engine@(.*)/dist/css/react-simulator-renderer.css", + "https?://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/css/react-simulator-renderer.css", "http://localhost:5555/css/react-simulator-renderer.css" ], [ - "https?://alifd.alicdn.com/npm/@alilc/lowcode-engine@(.*)/dist/js/rax-simulator-renderer.js", + "https?://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/js/rax-simulator-renderer.js", "http://localhost:5555/js/rax-simulator-renderer.js" ], [ - "https?://alifd.alicdn.com/npm/@alilc/lowcode-engine@(.*)/dist/css/rax-simulator-renderer.css", + "https?://uipaas-assets.com/prod/npm/@alilc/lowcode-engine/(.*)/dist/css/rax-simulator-renderer.css", "http://localhost:5555/css/rax-simulator-renderer.css" ], ] diff --git a/docs/package.json b/docs/package.json index 1cf731345b..d28f9e7cfa 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@alilc/lowcode-engine-docs", - "version": "1.0.8", + "version": "1.0.9", "description": "低代码引擎版本化文档", "license": "MIT", "files": [ From 1ca940c88001ac0e201e447ad5a37a9a1f5f537e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Tue, 13 Dec 2022 11:36:44 +0800 Subject: [PATCH 005/581] feat: support UIPaaS-Component code generator solution --- .../code-generator/src/cli/solutions/example-solution.ts | 4 ++-- modules/code-generator/src/generator/ProjectBuilder.ts | 9 ++++++--- modules/code-generator/src/parser/SchemaParser.ts | 7 +++---- .../code-generator/src/postprocessor/prettier/index.ts | 4 +++- modules/code-generator/src/types/core.ts | 6 ++++++ modules/code-generator/src/utils/dataSource.ts | 8 ++++---- modules/code-generator/src/utils/index.ts | 2 ++ modules/code-generator/src/utils/nodeToJSX.ts | 8 +++----- modules/code-generator/src/utils/schema.ts | 8 ++++++++ 9 files changed, 37 insertions(+), 19 deletions(-) diff --git a/modules/code-generator/src/cli/solutions/example-solution.ts b/modules/code-generator/src/cli/solutions/example-solution.ts index 2efff780cd..fe303f360f 100644 --- a/modules/code-generator/src/cli/solutions/example-solution.ts +++ b/modules/code-generator/src/cli/solutions/example-solution.ts @@ -559,8 +559,8 @@ codealike.json "registry": "https://registry.npm.xxx.com" }, "dependencies": { - "@alilc/lowcode-code-generator": "^1.0.0-beta.16", - "@alilc/lowcode-types": "^1.0.0-beta.21", + "@alilc/lowcode-code-generator": "^1.0.0", + "@alilc/lowcode-types": "^1.0.0", "tslib": "^2.3.0" }, "devDependencies": { diff --git a/modules/code-generator/src/generator/ProjectBuilder.ts b/modules/code-generator/src/generator/ProjectBuilder.ts index 2a1282d6eb..186def2c58 100644 --- a/modules/code-generator/src/generator/ProjectBuilder.ts +++ b/modules/code-generator/src/generator/ProjectBuilder.ts @@ -62,10 +62,10 @@ export class ProjectBuilder implements IProjectBuilder { private projectPostProcessors: ProjectPostProcessor[]; /** 是否处于严格模式 */ - public readonly inStrictMode: boolean; + readonly inStrictMode: boolean; /** 一些额外的上下文数据 */ - public readonly extraContextData: IContextData; + readonly extraContextData: IContextData; constructor({ template, @@ -260,7 +260,10 @@ export class ProjectBuilder implements IProjectBuilder { let finalResult = projectRoot; for (const projectPostProcessor of this.projectPostProcessors) { // eslint-disable-next-line no-await-in-loop - finalResult = await projectPostProcessor(finalResult, schema, originalSchema); + finalResult = await projectPostProcessor(finalResult, schema, originalSchema, { + template: this.template, + parseResult, + }); } return finalResult; diff --git a/modules/code-generator/src/parser/SchemaParser.ts b/modules/code-generator/src/parser/SchemaParser.ts index 2e526d88bc..ab46365610 100644 --- a/modules/code-generator/src/parser/SchemaParser.ts +++ b/modules/code-generator/src/parser/SchemaParser.ts @@ -32,7 +32,7 @@ import { import { SUPPORT_SCHEMA_VERSION_LIST } from '../const'; import { getErrorMessage } from '../utils/errors'; -import { handleSubNodes } from '../utils/schema'; +import { handleSubNodes, isValidContainerType } from '../utils/schema'; import { uniqueArray } from '../utils/common'; import { componentAnalyzer } from '../analyzer/componentAnalyzer'; import { ensureValidClassName } from '../utils/validate'; @@ -141,7 +141,7 @@ export class SchemaParser implements ISchemaParser { if (schema.componentsTree.length > 0) { const firstRoot: ContainerSchema = schema.componentsTree[0] as ContainerSchema; - if (!('fileName' in firstRoot) || !firstRoot.fileName) { + if (!firstRoot.fileName && !isValidContainerType(firstRoot)) { // 整个 schema 描述一个容器,且无根节点定义 const container: IContainerInfo = { ...firstRoot, @@ -259,8 +259,7 @@ export class SchemaParser implements ISchemaParser { utils = schema.utils; utilsDeps = schema.utils .filter( - (u): u is { name: string; type: 'npm' | 'tnpm'; content: NpmInfo } => - u.type !== 'function', + (u): u is { name: string; type: 'npm' | 'tnpm'; content: NpmInfo } => u.type !== 'function', ) .map( (u): IExternalDependency => ({ diff --git a/modules/code-generator/src/postprocessor/prettier/index.ts b/modules/code-generator/src/postprocessor/prettier/index.ts index afdcc62258..d4e61e3c00 100644 --- a/modules/code-generator/src/postprocessor/prettier/index.ts +++ b/modules/code-generator/src/postprocessor/prettier/index.ts @@ -9,7 +9,7 @@ const PARSERS = ['css', 'scss', 'less', 'json', 'html', 'vue']; export interface ProcessorConfig { customFileTypeParser: Record; - plugins?: Array; + plugins?: prettier.Plugin[]; } const factory: PostProcessorFactory = (config?: ProcessorConfig) => { @@ -33,6 +33,8 @@ const factory: PostProcessorFactory = (config?: ProcessorConfig return prettier.format(content, { parser, plugins: [parserBabel, parserPostCss, parserHtml, ...(cfg.plugins || [])], + singleQuote: true, + jsxSingleQuote: false, }); }; diff --git a/modules/code-generator/src/types/core.ts b/modules/code-generator/src/types/core.ts index 99ca8c97ad..b1a00ad373 100644 --- a/modules/code-generator/src/types/core.ts +++ b/modules/code-generator/src/types/core.ts @@ -170,11 +170,17 @@ export interface IProjectBuilder { /** 项目级别的前置处理器 */ export type ProjectPreProcessor = (schema: ProjectSchema) => Promise | ProjectSchema; +export interface ProjectPostProcessorOptions { + parseResult?: IParseResult; + template?: IProjectTemplate; +} + /** 项目级别的后置处理器 */ export type ProjectPostProcessor = ( result: ResultDir, schema: ProjectSchema, originalSchema: ProjectSchema | string, + options: ProjectPostProcessorOptions, ) => Promise | ResultDir; /** 模块级别的后置处理器的工厂方法 */ diff --git a/modules/code-generator/src/utils/dataSource.ts b/modules/code-generator/src/utils/dataSource.ts index 610f399344..cd10351624 100644 --- a/modules/code-generator/src/utils/dataSource.ts +++ b/modules/code-generator/src/utils/dataSource.ts @@ -1,7 +1,7 @@ import changeCase from 'change-case'; import type { IProjectInfo } from '../types/intermediate'; -export type DataSourceDependenciesConfig = { +export interface DataSourceDependenciesConfig { /** 数据源引擎的版本 */ engineVersion?: string; /** 数据源引擎的包名 */ @@ -14,7 +14,7 @@ export type DataSourceDependenciesConfig = { handlersPackages?: { [key: string]: string; }; -}; +} export function buildDataSourceDependencies( ir: IProjectInfo, @@ -22,13 +22,13 @@ export function buildDataSourceDependencies( ): Record { return { // 数据源引擎的依赖包 - [cfg.enginePackage || '@alilc/lowcode-datasource-engine']: cfg.engineVersion || 'latest', + [cfg.enginePackage || '@alilc/lowcode-datasource-engine']: cfg.engineVersion || '^1.0.0', // 各种数据源的 handlers 的依赖包 ...(ir.dataSourcesTypes || []).reduce( (acc, dsType) => ({ ...acc, - [getDataSourceHandlerPackageName(dsType)]: cfg.handlersVersion?.[dsType] || 'latest', + [getDataSourceHandlerPackageName(dsType)]: cfg.handlersVersion?.[dsType] || '^1.0.0', }), {}, ), diff --git a/modules/code-generator/src/utils/index.ts b/modules/code-generator/src/utils/index.ts index ff5194172d..cac63d415c 100644 --- a/modules/code-generator/src/utils/index.ts +++ b/modules/code-generator/src/utils/index.ts @@ -11,6 +11,7 @@ import * as schema from './schema'; import * as version from './version'; import * as scope from './Scope'; import * as expressionParser from './expressionParser'; +import * as dataSource from './dataSource'; export { common, @@ -25,4 +26,5 @@ export { version, scope, expressionParser, + dataSource, }; diff --git a/modules/code-generator/src/utils/nodeToJSX.ts b/modules/code-generator/src/utils/nodeToJSX.ts index 0b5919902f..e928b866b7 100644 --- a/modules/code-generator/src/utils/nodeToJSX.ts +++ b/modules/code-generator/src/utils/nodeToJSX.ts @@ -182,7 +182,7 @@ function generateSimpleNode( function linkPieces(pieces: CodePiece[]): string { const tagsPieces = pieces.filter((p) => p.type === PIECE_TYPE.TAG); if (tagsPieces.length !== 1) { - throw new CodeGeneratorError('One node only need one tag define'); + throw new CodeGeneratorError('Only one tag definition required', tagsPieces); } const tagName = tagsPieces[0].value; @@ -270,8 +270,7 @@ export function generateReactLoopCtrl( const loopDataExpr = pipe( nodeItem.loop, // 将 JSExpression 转换为 JS 表达式代码: - (expr) => - generateCompositeType(expr, scope, { + (expr) => generateCompositeType(expr, scope, { handlers: config?.handlers, tolerateEvalErrors: false, // 这个内部不需要包 try catch, 下面会统一加的 }), @@ -391,8 +390,7 @@ export function createNodeGenerator(cfg: NodeGeneratorConfig = {}): NodeGenerato return `{${valueStr}}`; }; - return (nodeItem: NodeDataType, scope: IScope) => - unwrapJsExprQuoteInJsx(generateNode(nodeItem, scope)); + return (nodeItem: NodeDataType, scope: IScope) => unwrapJsExprQuoteInJsx(generateNode(nodeItem, scope)); } const defaultReactGeneratorConfig: NodeGeneratorConfig = { diff --git a/modules/code-generator/src/utils/schema.ts b/modules/code-generator/src/utils/schema.ts index b2faecbc64..9a4f131d41 100644 --- a/modules/code-generator/src/utils/schema.ts +++ b/modules/code-generator/src/utils/schema.ts @@ -138,3 +138,11 @@ export function handleSubNodes( return []; } } + +export function isValidContainerType(schema: NodeSchema) { + return [ + 'Page', + 'Component', + 'Block', + ].includes(schema.componentName); +} \ No newline at end of file From 2bd40d7589167553d82f69993363eecf466fff20 Mon Sep 17 00:00:00 2001 From: eternalsky Date: Wed, 14 Dec 2022 10:00:27 +0800 Subject: [PATCH 006/581] feat(codegen): add demo slots & add new cli option solutionOptions --- .../bin/lowcode-code-generator.js | 1 + modules/code-generator/src/cli/run.ts | 18 ++++++++++++++++-- .../src/generator/ProjectBuilder.ts | 9 +++++++++ modules/code-generator/src/types/core.ts | 1 + 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/modules/code-generator/bin/lowcode-code-generator.js b/modules/code-generator/bin/lowcode-code-generator.js index 6259a5a6fc..79c36c49a0 100755 --- a/modules/code-generator/bin/lowcode-code-generator.js +++ b/modules/code-generator/bin/lowcode-code-generator.js @@ -14,6 +14,7 @@ program .option('-c, --cwd ', 'specify the working directory', '.') .option('-q, --quiet', 'be quiet, do not output anything unless get error', false) .option('-v, --verbose', 'be verbose, output more information', false) + .option('--solution-options ', 'specify the solution options', '{}') .arguments('[input-schema] ali lowcode schema JSON file') .action(function doGenerate(inputSchema, command) { var options = command.opts(); diff --git a/modules/code-generator/src/cli/run.ts b/modules/code-generator/src/cli/run.ts index db66b46013..7dcfd9d5ac 100644 --- a/modules/code-generator/src/cli/run.ts +++ b/modules/code-generator/src/cli/run.ts @@ -25,6 +25,7 @@ export async function run( output?: string; quiet?: boolean; verbose?: boolean; + solutionOptions?: string; }, ): Promise { try { @@ -41,6 +42,19 @@ export async function run( ); } + let solutionOptions = {}; + + if (options.solutionOptions) { + try { + solutionOptions = JSON.parse(options.solutionOptions); + } catch (err: any) { + throw new Error( + `solution options parse error, error message is "${err.message}"`, + ); + } + } + + // 读取 Schema const schema = await loadSchemaFile(schemaFile); @@ -48,7 +62,7 @@ export async function run( const createProjectBuilder = await getProjectBuilderFactory(options.solution, { quiet: options.quiet, }); - const builder = createProjectBuilder(); + const builder = createProjectBuilder(solutionOptions); // 生成代码 const generatedSourceCodes = await builder.generateProject(schema); @@ -75,7 +89,7 @@ export async function run( async function getProjectBuilderFactory( solution: string, { quiet }: { quiet?: boolean }, -): Promise<() => IProjectBuilder> { +): Promise<(options: {[prop: string]: any}) => IProjectBuilder> { if (solution in CodeGenerator.solutions) { return CodeGenerator.solutions[solution as 'icejs' | 'rax']; } diff --git a/modules/code-generator/src/generator/ProjectBuilder.ts b/modules/code-generator/src/generator/ProjectBuilder.ts index 186def2c58..1cac2dea2d 100644 --- a/modules/code-generator/src/generator/ProjectBuilder.ts +++ b/modules/code-generator/src/generator/ProjectBuilder.ts @@ -241,6 +241,15 @@ export class ProjectBuilder implements IProjectBuilder { }); } + // demo + if (parseResult.project && builders.demo) { + const { files } = await builders.demo.generateModule(parseResult.project); + buildResult.push({ + path: this.template.slots.demo.path, + files, + }); + } + // TODO: 更多 slots 的处理??是不是可以考虑把 template 中所有的 slots 都处理下? // Post Process diff --git a/modules/code-generator/src/types/core.ts b/modules/code-generator/src/types/core.ts index b1a00ad373..f79db6cd90 100644 --- a/modules/code-generator/src/types/core.ts +++ b/modules/code-generator/src/types/core.ts @@ -25,6 +25,7 @@ export enum FileType { TS = 'ts', TSX = 'tsx', JSON = 'json', + MD = 'md', } export enum ChunkType { From 9cb4f0bd791edf3a55ffa99c7a6cf651dad56b84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LeoYuan=20=E8=A2=81=E5=8A=9B=E7=9A=93?= Date: Wed, 14 Dec 2022 14:21:55 +0800 Subject: [PATCH 007/581] chore: update UT snapshots of CodeGenerator --- .../tests/bugfix/i18n-with-params.test.ts | 2 +- .../bugfix/icejs-import-wrong-naming.test.ts | 28 +- .../bugfix/icejs-missing-imports-1.test.ts | 2 +- .../icejs-package-json-dependencies.test.ts | 10 +- .../demo01/expected/demo-project/package.json | 2 +- .../demo02/expected/demo-project/package.json | 6 +- .../demo-project/src/pages/Home/index.jsx | 2 + .../demo03/expected/demo-project/package.json | 2 +- .../demo04/expected/demo-project/package.json | 2 +- .../demo05/expected/demo-project/package.json | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/package.json | 4 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/package.json | 4 +- .../demo1/expected/demo-project/package.json | 6 +- .../demo1/expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/constants.js | 2 +- .../expected/demo-project/src/global.scss | 2 +- .../demo1/expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Test/index.jsx | 62 +-- .../demo1/expected/demo-project/src/routes.js | 8 +- .../demo1/expected/demo-project/src/utils.js | 2 +- .../expected/demo-project/package.json | 4 +- .../expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/global.scss | 2 +- .../expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Aaaa/index.jsx | 26 +- .../expected/demo-project/src/routes.js | 8 +- .../expected/demo-project/src/utils.js | 8 +- .../demo2/expected/demo-project/package.json | 2 +- .../demo2/expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/constants.js | 2 +- .../expected/demo-project/src/global.scss | 2 +- .../demo2/expected/demo-project/src/i18n.js | 30 +- .../demo-project/src/pages/Test/index.jsx | 34 +- .../demo2/expected/demo-project/src/routes.js | 8 +- .../demo2/expected/demo-project/src/utils.js | 2 +- .../demo3/expected/demo-project/package.json | 2 +- .../demo3/expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/constants.js | 2 +- .../expected/demo-project/src/global.scss | 2 +- .../demo3/expected/demo-project/src/i18n.js | 30 +- .../demo-project/src/pages/Test/index.jsx | 14 +- .../demo3/expected/demo-project/src/routes.js | 8 +- .../demo3/expected/demo-project/src/utils.js | 2 +- .../demo4/expected/demo-project/package.json | 6 +- .../demo4/expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/global.scss | 2 +- .../demo4/expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Test/index.jsx | 72 ++-- .../demo4/expected/demo-project/src/routes.js | 8 +- .../demo4/expected/demo-project/src/utils.js | 2 +- .../test-cases/react-app/demo4/schema.json5 | 10 +- .../demo5/expected/demo-project/package.json | 2 +- .../demo5/expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/global.scss | 2 +- .../demo5/expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Test/index.jsx | 156 +++---- .../demo5/expected/demo-project/src/routes.js | 8 +- .../demo5/expected/demo-project/src/utils.js | 2 +- .../expected/demo-project/package.json | 6 +- .../expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/constants.js | 2 +- .../expected/demo-project/src/global.scss | 2 +- .../expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Test/index.jsx | 62 +-- .../expected/demo-project/src/routes.js | 8 +- .../expected/demo-project/src/utils.js | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/global.scss | 2 +- .../expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Test/index.jsx | 398 +++++++++--------- .../expected/demo-project/src/routes.js | 8 +- .../expected/demo-project/src/utils.js | 2 +- .../expected/demo-project/package.json | 4 +- .../expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/global.scss | 2 +- .../expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Example/index.jsx | 30 +- .../expected/demo-project/src/routes.js | 8 +- .../expected/demo-project/src/utils.js | 2 +- .../expected/demo-project/package.json | 4 +- .../expected/demo-project/src/app.js | 6 +- .../src/components/Index/index.jsx | 120 ------ .../expected/demo-project/src/global.scss | 2 +- .../expected/demo-project/src/i18n.js | 18 +- .../{components/Index => pages/$}/index.css | 0 .../demo-project/src/pages/$/index.jsx | 79 ++++ .../expected/demo-project/src/routes.js | 13 +- .../expected/demo-project/src/utils.js | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/global.scss | 2 +- .../expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Test/index.jsx | 226 +++++----- .../expected/demo-project/src/routes.js | 8 +- .../expected/demo-project/src/utils.js | 2 +- .../expected/demo-project/package.json | 2 +- .../expected/demo-project/src/app.js | 6 +- .../expected/demo-project/src/global.scss | 2 +- .../expected/demo-project/src/i18n.js | 18 +- .../demo-project/src/pages/Test/index.jsx | 293 ++++++------- .../expected/demo-project/src/routes.js | 8 +- .../expected/demo-project/src/utils.js | 2 +- .../__snapshots__/prettier.test.ts.snap | 4 +- 110 files changed, 1078 insertions(+), 1103 deletions(-) delete mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/components/Index/index.jsx rename modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/{components/Index => pages/$}/index.css (100%) create mode 100644 modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx diff --git a/modules/code-generator/tests/bugfix/i18n-with-params.test.ts b/modules/code-generator/tests/bugfix/i18n-with-params.test.ts index be2d5e9e68..d640525eb1 100644 --- a/modules/code-generator/tests/bugfix/i18n-with-params.test.ts +++ b/modules/code-generator/tests/bugfix/i18n-with-params.test.ts @@ -19,7 +19,7 @@ describe(testCaseBaseName, () => { ` diff --git a/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts b/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts index 51e22b3a97..1f29fe6122 100644 --- a/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts +++ b/modules/code-generator/tests/bugfix/icejs-import-wrong-naming.test.ts @@ -27,7 +27,7 @@ describe(testCaseBaseName, () => { }); const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); - expect(generatedPageFileContent).toContain(`import Foo from "example-package/lib/index.js";`); + expect(generatedPageFileContent).toContain('import Foo from \'example-package/lib/index.js\';'); }); test('named import with no alias', async () => { @@ -47,7 +47,7 @@ describe(testCaseBaseName, () => { const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); expect(generatedPageFileContent).toContain( - `import { Foo } from "example-package/lib/index.js";`, + 'import { Foo } from \'example-package/lib/index.js\';', ); }); @@ -68,7 +68,7 @@ describe(testCaseBaseName, () => { const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); expect(generatedPageFileContent).toContain( - `import { Bar as Foo } from "example-package/lib/index.js";`, + 'import { Bar as Foo } from \'example-package/lib/index.js\';', ); }); @@ -88,7 +88,7 @@ describe(testCaseBaseName, () => { }); const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); - expect(generatedPageFileContent).toContain(`import Foo from "example-package/lib/index.js";`); + expect(generatedPageFileContent).toContain('import Foo from \'example-package/lib/index.js\';'); }); test('default import with sub name and export name', async () => { @@ -107,9 +107,9 @@ describe(testCaseBaseName, () => { }); const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); - expect(generatedPageFileContent).toContain(`import Bar from "example-package/lib/index.js";`); + expect(generatedPageFileContent).toContain('import Bar from \'example-package/lib/index.js\';'); - expect(generatedPageFileContent).toContain(`const Foo = Bar.Baz;`); + expect(generatedPageFileContent).toContain('const Foo = Bar.Baz;'); }); test('default import with sub name without export name', async () => { @@ -129,10 +129,10 @@ describe(testCaseBaseName, () => { const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); expect(generatedPageFileContent).toContain( - `import __$examplePackage_default from "example-package/lib/index.js";`, + 'import __$examplePackage_default from \'example-package/lib/index.js\';', ); - expect(generatedPageFileContent).toContain(`const Foo = __$examplePackage_default.Baz;`); + expect(generatedPageFileContent).toContain('const Foo = __$examplePackage_default.Baz;'); }); test('named import with sub name', async () => { @@ -152,10 +152,10 @@ describe(testCaseBaseName, () => { const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); expect(generatedPageFileContent).toContain( - `import { Bar } from "example-package/lib/index.js";`, + 'import { Bar } from \'example-package/lib/index.js\';', ); - expect(generatedPageFileContent).toContain(`const Foo = Bar.Baz;`); + expect(generatedPageFileContent).toContain('const Foo = Bar.Baz;'); }); test('default imports with different componentName', async () => { @@ -187,11 +187,11 @@ describe(testCaseBaseName, () => { }); const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx'); - expect(generatedPageFileContent).toContain(`import Foo from "example-package";`); - expect(generatedPageFileContent).toContain(`import Baz from "example-package";`); + expect(generatedPageFileContent).toContain('import Foo from \'example-package\';'); + expect(generatedPageFileContent).toContain('import Baz from \'example-package\';'); - expect(generatedPageFileContent).not.toContain(`const Foo =`); - expect(generatedPageFileContent).not.toContain(`const Baz =`); + expect(generatedPageFileContent).not.toContain('const Foo ='); + expect(generatedPageFileContent).not.toContain('const Baz ='); }); }); diff --git a/modules/code-generator/tests/bugfix/icejs-missing-imports-1.test.ts b/modules/code-generator/tests/bugfix/icejs-missing-imports-1.test.ts index 17c40a4fa1..cad73474ac 100644 --- a/modules/code-generator/tests/bugfix/icejs-missing-imports-1.test.ts +++ b/modules/code-generator/tests/bugfix/icejs-missing-imports-1.test.ts @@ -22,7 +22,7 @@ test(testCaseBaseName, async () => { Button, Typography, Tag, -} from "@alilc/antd-lowcode-materials/dist/antd-lowcode.esm.js";`); +} from '@alilc/antd-lowcode-materials/dist/antd-lowcode.esm.js';`); }); function exportProject(inputPath: string, outputPath: string) { diff --git a/modules/code-generator/tests/bugfix/icejs-package-json-dependencies.test.ts b/modules/code-generator/tests/bugfix/icejs-package-json-dependencies.test.ts index 6edd6b9124..88ca02c6ba 100644 --- a/modules/code-generator/tests/bugfix/icejs-package-json-dependencies.test.ts +++ b/modules/code-generator/tests/bugfix/icejs-package-json-dependencies.test.ts @@ -19,15 +19,15 @@ test(testCaseBaseName, async () => { // 里面有的数据源则应该生成对应的 dependencies expect(generatedPackageJson.dependencies).toMatchObject({ - '@alilc/lowcode-datasource-engine': 'latest', - '@alilc/lowcode-datasource-fetch-handler': 'latest', + '@alilc/lowcode-datasource-engine': '^1.0.0', + '@alilc/lowcode-datasource-fetch-handler': '^1.0.0', }); // 里面没有的,则不应该生成对应的 dependencies expect(generatedPackageJson.dependencies).not.toMatchObject({ - '@alilc/lowcode-datasource-url-params-handler': 'latest', - '@alilc/lowcode-datasource-mtop-handler': 'latest', - '@alilc/lowcode-datasource-mopen-handler': 'latest', + '@alilc/lowcode-datasource-url-params-handler': '^1.0.0', + '@alilc/lowcode-datasource-mtop-handler': '^1.0.0', + '@alilc/lowcode-datasource-mopen-handler': '^1.0.0', }); }); diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/package.json index 38cfdd186a..fd03ed9bc5 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/package.json index ca5a0f59cb..4d9a779880 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/package.json @@ -11,9 +11,9 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", - "@alilc/lowcode-datasource-url-params-handler": "latest", - "@alilc/lowcode-datasource-fetch-handler": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", + "@alilc/lowcode-datasource-url-params-handler": "^1.0.0", + "@alilc/lowcode-datasource-fetch-handler": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.jsx index 06e39454d0..7bfda59caf 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.jsx +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.jsx @@ -253,6 +253,7 @@ class Home$$Page extends Component { if (!response.success) { throw new Error(response.message); } + return response.data; }, isInit: true, @@ -279,6 +280,7 @@ class Home$$Page extends Component { if (!response.success) { throw new Error(response.message); } + return response.data.result; }, isInit: true, diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/package.json index 48690ff4d9..58b97921b5 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/package.json index 16fa70bbc1..56dda7653a 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/package.json index 38cfdd186a..fd03ed9bc5 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/package.json index bf31a967ea..dc00ba429f 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/package.json index 38cfdd186a..fd03ed9bc5 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/package.json index bf31a967ea..dc00ba429f 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/package.json index bf31a967ea..dc00ba429f 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/package.json index bf31a967ea..dc00ba429f 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/package.json index 60f0cb38a1..067cc161d9 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/package.json @@ -11,8 +11,8 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", - "@alilc/lowcode-datasource-url-params-handler": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", + "@alilc/lowcode-datasource-url-params-handler": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/package.json index 38cfdd186a..fd03ed9bc5 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/package.json @@ -11,7 +11,7 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/package.json index 3e59d29844..afadad8785 100644 --- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/package.json @@ -11,8 +11,8 @@ "lint": "npm run eslint && npm run stylelint" }, "dependencies": { - "@alilc/lowcode-datasource-engine": "latest", - "@alilc/lowcode-datasource-http-handler": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", + "@alilc/lowcode-datasource-http-handler": "^1.0.0", "universal-env": "^3.2.0", "intl-messageformat": "^9.3.6", "rax": "^1.1.0", diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/package.json index 767ec3898f..36eaf12f26 100644 --- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/package.json +++ b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/package.json @@ -11,9 +11,9 @@ "intl-messageformat": "^9.3.6", "@ice/store": "^1.4.3", "@loadable/component": "^5.15.2", - "@alilc/lowcode-datasource-engine": "latest", - "@alilc/lowcode-datasource-url-params-handler": "latest", - "@alilc/lowcode-datasource-fetch-handler": "latest", + "@alilc/lowcode-datasource-engine": "^1.0.0", + "@alilc/lowcode-datasource-url-params-handler": "^1.0.0", + "@alilc/lowcode-datasource-fetch-handler": "^1.0.0", "@alifd/next": "1.19.18" }, "devDependencies": { diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/app.js index fb01b106b4..266d8ef71d 100644 --- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/app.js +++ b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/app.js @@ -1,11 +1,11 @@ -import { createApp } from "ice"; +import { createApp } from 'ice'; const appConfig = { app: { - rootId: "app", + rootId: 'app', }, router: { - type: "hash", + type: 'hash', }, }; createApp(appConfig); diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/constants.js index c4a5859ee4..91198f9044 100644 --- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/constants.js +++ b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/constants.js @@ -1,3 +1,3 @@ -const __$$constants = { ENV: "prod", DOMAIN: "xxx.xxx.com" }; +const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' }; export default __$$constants; diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/global.scss index 2d97c56b09..ed7204b4a3 100644 --- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/global.scss +++ b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/global.scss @@ -1,5 +1,5 @@ // 引入默认全局样式 -@import "@alifd/next/reset.scss"; +@import '@alifd/next/reset.scss'; body { -webkit-font-smoothing: antialiased; diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/i18n.js index 1ae7c84b5e..adbbe673dc 100644 --- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/i18n.js +++ b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/i18n.js @@ -1,9 +1,9 @@ const i18nConfig = {}; let locale = - typeof navigator === "object" && typeof navigator.language === "string" + typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language - : "zh-CN"; + : 'zh-CN'; const getLocale = () => locale; @@ -13,22 +13,22 @@ const setLocale = (target) => { const isEmptyVariables = (variables) => (Array.isArray(variables) && variables.length === 0) || - (typeof variables === "object" && + (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0)); // 按低代码规范里面的要求进行变量替换 const format = (msg, variables) => - typeof msg === "string" - ? msg.replace(/\$\{(\w+)\}/g, (match, key) => variables?.[key] ?? "") + typeof msg === 'string' + ? msg.replace(/\$\{(\w+)\}/g, (match, key) => variables?.[key] ?? '') : msg; const i18nFormat = ({ id, defaultMessage, fallback }, variables) => { const msg = i18nConfig[locale]?.[id] ?? - i18nConfig[locale.replace("-", "_")]?.[id] ?? + i18nConfig[locale.replace('-', '_')]?.[id] ?? defaultMessage; if (msg == null) { - console.warn("[i18n]: unknown message id: %o (locale=%o)", id, locale); + console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale); return fallback === undefined ? `${id}` : fallback; } @@ -49,7 +49,7 @@ const _inject2 = (target) => { }; target._i18nText = (t) => { // 优先取直接传过来的语料 - const localMsg = t[locale] ?? t[String(locale).replace("-", "_")]; + const localMsg = t[locale] ?? t[String(locale).replace('-', '_')]; if (localMsg != null) { return format(localMsg, t.params); } @@ -61,7 +61,7 @@ const _inject2 = (target) => { } // 兜底用 use 指定的或默认语言的 - return format(t[t.use || "zh-CN"] ?? t.en_US, t.params); + return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params); }; // 注入到上下文中去 diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.jsx index b90fe6254d..c8db61db74 100644 --- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.jsx +++ b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.jsx @@ -1,22 +1,22 @@ // 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。 // 例外:react 框架的导出名和各种组件名除外。 -import React from "react"; +import React from 'react'; -import { Form, Input, NumberPicker, Select, Button } from "@alifd/next"; +import { Form, Input, NumberPicker, Select, Button } from '@alifd/next'; -import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from "@alilc/lowcode-datasource-url-params-handler"; +import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler'; -import { createFetchHandler as __$$createFetchRequestHandler } from "@alilc/lowcode-datasource-fetch-handler"; +import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler'; -import { create as __$$createDataSourceEngine } from "@alilc/lowcode-datasource-engine/runtime"; +import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime'; -import utils, { RefsManager } from "../../utils"; +import utils, { RefsManager } from '../../utils'; -import * as __$$i18n from "../../i18n"; +import * as __$$i18n from '../../i18n'; -import __$$constants from "../../constants"; +import __$$constants from '../../constants'; -import "./index.css"; +import './index.css'; class Test$$Page extends React.Component { _context = this; @@ -51,7 +51,7 @@ class Test$$Page extends React.Component { __$$i18n._inject2(this); - this.state = { text: "outter" }; + this.state = { text: 'outter' }; } $ = (refName) => { @@ -67,8 +67,8 @@ class Test$$Page extends React.Component { return { list: [ { - id: "urlParams", - type: "urlParams", + id: 'urlParams', + type: 'urlParams', isInit: function () { return undefined; }, @@ -77,12 +77,12 @@ class Test$$Page extends React.Component { }, }, { - id: "user", - type: "fetch", + id: 'user', + type: 'fetch', options: function () { return { - method: "GET", - uri: "https://shs.xxx.com/mock/1458/demo/user", + method: 'GET', + uri: 'https://shs.xxx.com/mock/1458/demo/user', isSync: true, }; }, @@ -90,6 +90,7 @@ class Test$$Page extends React.Component { if (!response.data.success) { throw new Error(response.data.message); } + return response.data.data; }, isInit: function () { @@ -97,12 +98,12 @@ class Test$$Page extends React.Component { }, }, { - id: "orders", - type: "fetch", + id: 'orders', + type: 'fetch', options: function () { return { - method: "GET", - uri: "https://shs.xxx.com/mock/1458/demo/orders", + method: 'GET', + uri: 'https://shs.xxx.com/mock/1458/demo/orders', isSync: true, }; }, @@ -110,6 +111,7 @@ class Test$$Page extends React.Component { if (!response.data.success) { throw new Error(response.data.message); } + return response.data.data.result; }, isInit: function () { @@ -118,7 +120,7 @@ class Test$$Page extends React.Component { }, ], dataHandler: function (dataMap) { - console.info("All datasources loaded:", dataMap); + console.info('All datasources loaded:', dataMap); }, }; } @@ -126,18 +128,18 @@ class Test$$Page extends React.Component { componentDidMount() { this._dataSourceEngine.reloadDataSource(); - console.log("componentDidMount"); + console.log('componentDidMount'); } render() { const __$$context = this._context || this; const { state } = __$$context; return ( -
+
this.state.colNum)} style={{}} - ref={this._refsManager.linkRef("testForm")} + ref={this._refsManager.linkRef('testForm')} > @@ -148,18 +150,18 @@ class Test$$Page extends React.Component { -
+