`);
- expect(generatedPageFileContent).not.toContain(`import Page from "undefined";`);
-});
-
-function exportProject(inputPath: string, outputPath: string) {
- const schemaJson = fs.readFileSync(inputPath, { encoding: 'utf8' });
- const newSchema = schemaJson;
- const builder = CodeGenerator.solutions.icejs();
-
- return builder.generateProject(newSchema).then(async (result) => {
- // displayResultInConsole(result);
- const publisher = createDiskPublisher();
- await publisher.publish({
- project: result,
- outputPath,
- projectSlug: 'demo-project',
- createProjectFolder: true,
- });
- return result;
- });
-}
diff --git a/modules/code-generator/tests/bugfix/page-element1.schema.json b/modules/code-generator/tests/bugfix/page-element1.schema.json
deleted file mode 100644
index 72640a246b..0000000000
--- a/modules/code-generator/tests/bugfix/page-element1.schema.json
+++ /dev/null
@@ -1,844 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Page",
- "main": "",
- "destructuring": true,
- "subName": "",
- "componentName": "Page"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Image",
- "main": "",
- "destructuring": true,
- "subName": "",
- "componentName": "Image"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Container",
- "main": "",
- "destructuring": true,
- "subName": "",
- "componentName": "Container"
- },
- {
- "devMode": "lowcode",
- "componentName": "Slot"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Text",
- "main": "",
- "destructuring": true,
- "subName": "",
- "componentName": "Text"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Link",
- "main": "",
- "destructuring": true,
- "subName": "",
- "componentName": "Link"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Share",
- "main": "",
- "destructuring": true,
- "subName": "",
- "componentName": "Share"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "DruidList",
- "main": "",
- "destructuring": true,
- "subName": "",
- "componentName": "DruidList"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node_dockcviv8fo1",
- "props": {
- "ref": "outerView",
- "style": {
- "height": "100%"
- },
- "isTransparentTitle": true,
- "spmA": "a691",
- "spmB": "b34649",
- "spmBizType": "BAOXIAN"
- },
- "fileName": "/",
- "dataSource": {
- "list": []
- },
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() {\n this.utils.rpc('com.alipay.inslifeweb.channel.pilotpension.render', {\n showType: 4,\n })\n .then((result) => {\n this.setState({\n policyCount: result.policyCount,\n hasAuthorized: result.hasAuthorized\n });\n });\n }"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "_insiopConfig": {
- "sceneCode": "PILOT_PENSION_LANDING_PAGE"
- },
- "css": "body {\n background: #f5f5f9;\n}",
- "methods": {
- "handleAuth": {
- "type": "JSFunction",
- "value": "function() {\n this.setState({\n hasAuthorized: true,\n });\n \n this.utils.rpc('com.alipay.inslifeweb.agreement.index.authorize', {\n bizScene: 'PILOT_ENDOWMENT_CHANNEL_POLICY_AGREEMENT',\n agreementScene: '20',\n });\n\n Tracert.click('c88773.d183217');\n }"
- }
- },
- "state": {
- "policyCount": 0,
- "hasAuthorized": false
- },
- "children": [
- {
- "componentName": "DruidList",
- "id": "node_ockwcyxpypb",
- "props": {
- "slotList": [
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockwnbkrje1e",
- "props": {
- "style": {
- "marginBottom": "16px"
- },
- "spmC": "c88756"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockwd01xqzc",
- "props": {
- "src": {
- "type": "JSExpression",
- "value": "this.module.imgList[0].imgUrl",
- "mock": "https://img.alicdn.com/imgextra/i3/O1CN01eqyMv71N2XZXffFkv_!!6000000001512-2-tps-750-642.png"
- },
- "width": "100%",
- "style": {
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ],
- "title": "图片区块"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_PICTURE"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockwdmjns334",
- "props": {
- "style": {
- "marginLeft": "24px",
- "marginRight": "24px",
- "marginTop": "0px",
- "borderRadius": "16px",
- "backgroundColor": "#ffffff",
- "marginBottom": "16px",
- "paddingLeft": "20px",
- "paddingTop": "20px",
- "paddingRight": "20px",
- "paddingBottom": "20px"
- },
- "spmC": "c88773"
- },
- "hidden": false,
- "title": "已授权状态",
- "isLocked": false,
- "condition": {
- "type": "JSExpression",
- "value": "this.state.policyCount > 0 && this.state.hasAuthorized",
- "mock": true
- },
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwkbudw48",
- "props": {
- "style": {
- "backgroundColor": "#fff",
- "marginRight": "0px",
- "display": "flex",
- "flexDirection": "row",
- "justifyContent": "space-between",
- "alignItems": "center",
- "borderBottomStyle": "solid",
- "borderBottomWidth": "0px",
- "borderBottomColor": "#9b9b9b",
- "marginBottom": "0px",
- "marginLeft": "0px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "condition": true,
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwkbudw49",
- "props": {},
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwkbudw4a",
- "props": {
- "context": "我的保单",
- "style": {
- "marginRight": "16px",
- "fontSize": "30px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- },
- {
- "componentName": "Text",
- "id": "node_ockwkbudw4b",
- "props": {
- "context": "专属商业养老保险",
- "style": {
- "color": "#999999",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- },
- {
- "componentName": "Link",
- "id": "node_ockx02i8r07",
- "props": {
- "link": "./pilot-pension_policy-list.html",
- "spmD": "c88773.d183218"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwkbudw4s",
- "props": {
- "style": {
- "boxSizing": "border-box",
- "display": "flex",
- "position": "relative",
- "alignItems": "center",
- "flexDirection": "row",
- "marginLeft": "24px",
- "borderWidth": "1px",
- "borderStyle": "solid",
- "borderRadius": "8px",
- "borderColor": "#1677ff",
- "paddingRight": "24px",
- "paddingLeft": "24px",
- "height": "58px",
- "lineHeight": "30px",
- "whiteSpace": "nowrap"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwkbudw4t",
- "props": {
- "context": "点击查看",
- "style": {
- "color": "#1677ff",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "componentName": "Container",
- "id": "node_ockwptkenn17",
- "props": {
- "style": {
- "marginLeft": "24px",
- "marginRight": "24px",
- "marginTop": "0px",
- "borderRadius": "16px",
- "backgroundColor": "#ffffff",
- "marginBottom": "16px",
- "paddingLeft": "20px",
- "paddingTop": "20px",
- "paddingRight": "20px",
- "paddingBottom": "20px"
- },
- "spmC": "c88773"
- },
- "hidden": false,
- "title": "未授权状态",
- "isLocked": false,
- "condition": {
- "type": "JSExpression",
- "value": "this.state.policyCount > 0 && !this.state.hasAuthorized",
- "mock": true
- },
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwptkenn19",
- "props": {
- "style": {
- "marginBottom": "0px",
- "borderStyle": "none",
- "display": "flex",
- "alignItems": "center",
- "paddingBottom": "16px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1a",
- "props": {
- "context": "我的保单",
- "style": {
- "marginRight": "16px",
- "fontSize": "30px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- },
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1b",
- "props": {
- "context": "专属商业养老保险",
- "style": {
- "color": "#999999",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- },
- {
- "componentName": "Container",
- "id": "node_ockwvvdp9p7",
- "props": {
- "style": {
- "paddingTop": "16px",
- "borderTopWidth": "1px",
- "borderTopColor": "#eeeeee"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1c",
- "props": {
- "context": "同意在蚂蚁保查看、管理专属商业养老保险保单",
- "style": {
- "height": "37px",
- "lineHeight": "37px",
- "color": "#999",
- "fontSize": "26px",
- "fontWeight": "400",
- "marginLeft": "0px",
- "display": "block",
- "borderTopWidth": "1px",
- "borderTopStyle": "solid",
- "borderTopColor": "#eeeeee",
- "paddingTop": "0px",
- "borderStyle": "none"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- },
- {
- "componentName": "Container",
- "id": "node_ockwptkenn1d",
- "props": {
- "style": {
- "display": "block",
- "flexDirection": "row"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwptkenn1e",
- "props": {
- "style": {
- "boxSizing": "border-box",
- "display": "inline-block",
- "position": "relative",
- "alignItems": "center",
- "flexDirection": "row",
- "marginTop": "16px",
- "marginLeft": "0px",
- "borderWidth": "1px",
- "borderStyle": "solid",
- "borderRadius": "8px",
- "borderColor": "#1677ff",
- "paddingRight": "24px",
- "paddingLeft": "24px",
- "whiteSpace": "nowrap",
- "paddingTop": "0px",
- "paddingBottom": "0px",
- "height": "58px",
- "lineHeight": "58px"
- },
- "__events": {
- "eventDataList": [
- {
- "type": "componentEvent",
- "name": "onClick",
- "relatedEventName": "handleAuth"
- }
- ],
- "eventList": [
- {
- "name": "onClick",
- "disabled": true
- }
- ]
- },
- "onClick": {
- "type": "JSFunction",
- "value": "function(){this.handleAuth.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1f",
- "props": {
- "context": "同意并查看",
- "style": {
- "color": "#1677ff",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "title": "我的保单"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_MYPOLICY"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockwdbwgg7o",
- "props": {
- "style": {
- "paddingTop": "20px",
- "paddingLeft": "20px",
- "paddingRight": "20px",
- "backgroundColor": "#ffffff",
- "marginLeft": "24px",
- "marginRight": "24px",
- "paddingBottom": "20px",
- "borderRadius": "16px",
- "marginBottom": "16px"
- },
- "spmC": "c88758"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwdb9utbc",
- "props": {
- "style": {
- "paddingBottom": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "loop": {
- "type": "JSExpression",
- "value": "this.module.productImg"
- },
- "children": [
- {
- "componentName": "Link",
- "id": "node_ockx03llkjw",
- "props": {
- "link": {
- "type": "JSExpression",
- "value": "this.item.link"
- },
- "spmD": "c88758.d183221"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockwdb9utbd",
- "props": {
- "src": {
- "type": "JSExpression",
- "value": "this.item.imgSrc",
- "mock": "https://img.alicdn.com/imgextra/i1/O1CN01c35RIk1e3Ji8oUPXQ_!!6000000003815-2-tps-654-376.png"
- },
- "width": "100%",
- "style": {
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ]
- },
- {
- "componentName": "Text",
- "id": "node_ockwnbkrje1l",
- "props": {
- "context": "更多指定保司产品将逐渐开放,敬请期待",
- "style": {
- "color": "#999999",
- "fontSize": "26px",
- "textAlign": "center",
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ]
- }
- ],
- "title": "产品列表"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_ARTICLE_LIST"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockx4gcrxg1c",
- "props": {
- "style": {
- "paddingTop": "0px",
- "paddingLeft": "0px",
- "paddingRight": "0px",
- "backgroundColor": "#ffffff",
- "marginLeft": "24px",
- "marginRight": "24px",
- "paddingBottom": "0px",
- "borderRadius": "16px",
- "marginBottom": "16px"
- },
- "spmC": "c88757"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockx4h25ygq",
- "props": {
- "src": {
- "type": "JSExpression",
- "value": "this.module.header",
- "mock": "https://gw.alicdn.com/imgextra/i2/O1CN01nQxtcb1ail4yyw2kZ_!!6000000003364-2-tps-702-78.png"
- },
- "width": "100%"
- },
- "hidden": false,
- "title": "标题",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- },
- {
- "componentName": "Container",
- "id": "node_ockx4gcrxg1d",
- "props": {
- "style": {
- "paddingBottom": "24px"
- }
- },
- "hidden": false,
- "title": "文章列表循环",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "loop": {
- "type": "JSExpression",
- "value": "this.module.productIntroduce"
- },
- "children": [
- {
- "componentName": "Link",
- "id": "node_ockx4gcrxg1e",
- "props": {
- "link": {
- "type": "JSExpression",
- "value": "this.item.link"
- },
- "spmD": {
- "type": "JSExpression",
- "value": "'c88757.d183219_' + this.index"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockx4gcrxg1f",
- "props": {
- "src": "https://img.alicdn.com/imgextra/i4/O1CN015NY1E21XIhhWNXs3J_!!6000000002901-2-tps-700-230.png",
- "width": "100%",
- "style": {
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "title": "文章列表"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_PRODUCT_LIST"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Share",
- "id": "node_ockx0429phm",
- "props": {
- "bizType": "ztokenV0_PaWxRUaO",
- "title": {
- "type": "JSExpression",
- "value": "this.module.share.shareTitle",
- "mock": "我是分享标题"
- },
- "desc": {
- "type": "JSExpression",
- "value": "this.module.share.shareDesc",
- "mock": "我是分享描述"
- },
- "iconUrl": {
- "type": "JSExpression",
- "value": "this.module.share.iconUrl",
- "mock": "我是分享图标链接"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ],
- "title": "分享设置"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_SHARE"
- }
- ],
- "moduleList": {
- "type": "JSExpression",
- "value": "this.state._insiopData.modules || []"
- }
- },
- "hidden": false,
- "title": "德鲁伊容器",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ],
- "i18n": {}
-}
diff --git a/modules/code-generator/tests/bugfix/page-element1.test.ts b/modules/code-generator/tests/bugfix/page-element1.test.ts
deleted file mode 100644
index 2aa27c0250..0000000000
--- a/modules/code-generator/tests/bugfix/page-element1.test.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import CodeGenerator from '../../src';
-import * as fs from 'fs';
-import * as path from 'path';
-import { createDiskPublisher } from '../helpers/solutionHelper';
-
-test('page-element1', async () => {
- const inputSchemaJsonFile = path.join(__dirname, 'page-element1.schema.json');
- const outputDir = path.join(__dirname, 'page-element1.generated');
- await exportProject(inputSchemaJsonFile, outputDir);
-
- const generatedPageFileContent = fs.readFileSync(
- path.join(outputDir, 'demo-project/src/pages/$/index.jsx'),
- 'utf-8',
- );
- expect(generatedPageFileContent).toContain('
{
- // displayResultInConsole(result);
- const publisher = createDiskPublisher();
- await publisher.publish({
- project: result,
- outputPath,
- projectSlug: 'demo-project',
- createProjectFolder: true,
- });
- return result;
- });
-}
diff --git a/modules/code-generator/tests/bugfix/page-element2.schema.json b/modules/code-generator/tests/bugfix/page-element2.schema.json
deleted file mode 100644
index 5317582c98..0000000000
--- a/modules/code-generator/tests/bugfix/page-element2.schema.json
+++ /dev/null
@@ -1,844 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Page",
- "destructuring": false,
- "main": "/es/components/page",
- "subName": "",
- "componentName": "Page"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Image",
- "main": "/es/components/image",
- "destructuring": false,
- "subName": "",
- "componentName": "Image"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Container",
- "main": "/es/components/container",
- "destructuring": false,
- "subName": "",
- "componentName": "Container"
- },
- {
- "devMode": "lowcode",
- "componentName": "Slot"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Text",
- "main": "/es/components/text",
- "destructuring": false,
- "subName": "",
- "componentName": "Text"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Link",
- "main": "/es/components/link",
- "destructuring": false,
- "subName": "",
- "componentName": "Link"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "Share",
- "main": "/es/components/share",
- "destructuring": false,
- "subName": "",
- "componentName": "Share"
- },
- {
- "package": "@alipay/insragdoll-common-components",
- "version": "1.0.x",
- "exportName": "DruidList",
- "main": "/es/components/druid-list",
- "destructuring": false,
- "subName": "",
- "componentName": "DruidList"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node_dockcviv8fo1",
- "props": {
- "ref": "outerView",
- "style": {
- "height": "100%"
- },
- "isTransparentTitle": true,
- "spmA": "a691",
- "spmB": "b34649",
- "spmBizType": "BAOXIAN"
- },
- "fileName": "/",
- "dataSource": {
- "list": []
- },
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() {\n this.utils.rpc('com.alipay.inslifeweb.channel.pilotpension.render', {\n showType: 4,\n })\n .then((result) => {\n this.setState({\n policyCount: result.policyCount,\n hasAuthorized: result.hasAuthorized\n });\n });\n }"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "_insiopConfig": {
- "sceneCode": "PILOT_PENSION_LANDING_PAGE"
- },
- "css": "body {\n background: #f5f5f9;\n}",
- "methods": {
- "handleAuth": {
- "type": "JSFunction",
- "value": "function() {\n this.setState({\n hasAuthorized: true,\n });\n \n this.utils.rpc('com.alipay.inslifeweb.agreement.index.authorize', {\n bizScene: 'PILOT_ENDOWMENT_CHANNEL_POLICY_AGREEMENT',\n agreementScene: '20',\n });\n\n Tracert.click('c88773.d183217');\n }"
- }
- },
- "state": {
- "policyCount": 0,
- "hasAuthorized": false
- },
- "children": [
- {
- "componentName": "DruidList",
- "id": "node_ockwcyxpypb",
- "props": {
- "slotList": [
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockwnbkrje1e",
- "props": {
- "style": {
- "marginBottom": "16px"
- },
- "spmC": "c88756"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockwd01xqzc",
- "props": {
- "src": {
- "type": "JSExpression",
- "value": "this.module.imgList[0].imgUrl",
- "mock": "https://img.alicdn.com/imgextra/i3/O1CN01eqyMv71N2XZXffFkv_!!6000000001512-2-tps-750-642.png"
- },
- "width": "100%",
- "style": {
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ],
- "title": "图片区块"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_PICTURE"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockwdmjns334",
- "props": {
- "style": {
- "marginLeft": "24px",
- "marginRight": "24px",
- "marginTop": "0px",
- "borderRadius": "16px",
- "backgroundColor": "#ffffff",
- "marginBottom": "16px",
- "paddingLeft": "20px",
- "paddingTop": "20px",
- "paddingRight": "20px",
- "paddingBottom": "20px"
- },
- "spmC": "c88773"
- },
- "hidden": false,
- "title": "已授权状态",
- "isLocked": false,
- "condition": {
- "type": "JSExpression",
- "value": "this.state.policyCount > 0 && this.state.hasAuthorized",
- "mock": true
- },
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwkbudw48",
- "props": {
- "style": {
- "backgroundColor": "#fff",
- "marginRight": "0px",
- "display": "flex",
- "flexDirection": "row",
- "justifyContent": "space-between",
- "alignItems": "center",
- "borderBottomStyle": "solid",
- "borderBottomWidth": "0px",
- "borderBottomColor": "#9b9b9b",
- "marginBottom": "0px",
- "marginLeft": "0px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "condition": true,
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwkbudw49",
- "props": {},
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwkbudw4a",
- "props": {
- "context": "我的保单",
- "style": {
- "marginRight": "16px",
- "fontSize": "30px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- },
- {
- "componentName": "Text",
- "id": "node_ockwkbudw4b",
- "props": {
- "context": "专属商业养老保险",
- "style": {
- "color": "#999999",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- },
- {
- "componentName": "Link",
- "id": "node_ockx02i8r07",
- "props": {
- "link": "./pilot-pension_policy-list.html",
- "spmD": "c88773.d183218"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwkbudw4s",
- "props": {
- "style": {
- "boxSizing": "border-box",
- "display": "flex",
- "position": "relative",
- "alignItems": "center",
- "flexDirection": "row",
- "marginLeft": "24px",
- "borderWidth": "1px",
- "borderStyle": "solid",
- "borderRadius": "8px",
- "borderColor": "#1677ff",
- "paddingRight": "24px",
- "paddingLeft": "24px",
- "height": "58px",
- "lineHeight": "30px",
- "whiteSpace": "nowrap"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwkbudw4t",
- "props": {
- "context": "点击查看",
- "style": {
- "color": "#1677ff",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "componentName": "Container",
- "id": "node_ockwptkenn17",
- "props": {
- "style": {
- "marginLeft": "24px",
- "marginRight": "24px",
- "marginTop": "0px",
- "borderRadius": "16px",
- "backgroundColor": "#ffffff",
- "marginBottom": "16px",
- "paddingLeft": "20px",
- "paddingTop": "20px",
- "paddingRight": "20px",
- "paddingBottom": "20px"
- },
- "spmC": "c88773"
- },
- "hidden": false,
- "title": "未授权状态",
- "isLocked": false,
- "condition": {
- "type": "JSExpression",
- "value": "this.state.policyCount > 0 && !this.state.hasAuthorized",
- "mock": true
- },
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwptkenn19",
- "props": {
- "style": {
- "marginBottom": "0px",
- "borderStyle": "none",
- "display": "flex",
- "alignItems": "center",
- "paddingBottom": "16px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1a",
- "props": {
- "context": "我的保单",
- "style": {
- "marginRight": "16px",
- "fontSize": "30px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- },
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1b",
- "props": {
- "context": "专属商业养老保险",
- "style": {
- "color": "#999999",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- },
- {
- "componentName": "Container",
- "id": "node_ockwvvdp9p7",
- "props": {
- "style": {
- "paddingTop": "16px",
- "borderTopWidth": "1px",
- "borderTopColor": "#eeeeee"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1c",
- "props": {
- "context": "同意在蚂蚁保查看、管理专属商业养老保险保单",
- "style": {
- "height": "37px",
- "lineHeight": "37px",
- "color": "#999",
- "fontSize": "26px",
- "fontWeight": "400",
- "marginLeft": "0px",
- "display": "block",
- "borderTopWidth": "1px",
- "borderTopStyle": "solid",
- "borderTopColor": "#eeeeee",
- "paddingTop": "0px",
- "borderStyle": "none"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- },
- {
- "componentName": "Container",
- "id": "node_ockwptkenn1d",
- "props": {
- "style": {
- "display": "block",
- "flexDirection": "row"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwptkenn1e",
- "props": {
- "style": {
- "boxSizing": "border-box",
- "display": "inline-block",
- "position": "relative",
- "alignItems": "center",
- "flexDirection": "row",
- "marginTop": "16px",
- "marginLeft": "0px",
- "borderWidth": "1px",
- "borderStyle": "solid",
- "borderRadius": "8px",
- "borderColor": "#1677ff",
- "paddingRight": "24px",
- "paddingLeft": "24px",
- "whiteSpace": "nowrap",
- "paddingTop": "0px",
- "paddingBottom": "0px",
- "height": "58px",
- "lineHeight": "58px"
- },
- "__events": {
- "eventDataList": [
- {
- "type": "componentEvent",
- "name": "onClick",
- "relatedEventName": "handleAuth"
- }
- ],
- "eventList": [
- {
- "name": "onClick",
- "disabled": true
- }
- ]
- },
- "onClick": {
- "type": "JSFunction",
- "value": "function(){this.handleAuth.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Text",
- "id": "node_ockwptkenn1f",
- "props": {
- "context": "同意并查看",
- "style": {
- "color": "#1677ff",
- "fontSize": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "title": "我的保单"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_MYPOLICY"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockwdbwgg7o",
- "props": {
- "style": {
- "paddingTop": "20px",
- "paddingLeft": "20px",
- "paddingRight": "20px",
- "backgroundColor": "#ffffff",
- "marginLeft": "24px",
- "marginRight": "24px",
- "paddingBottom": "20px",
- "borderRadius": "16px",
- "marginBottom": "16px"
- },
- "spmC": "c88758"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Container",
- "id": "node_ockwdb9utbc",
- "props": {
- "style": {
- "paddingBottom": "24px"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "loop": {
- "type": "JSExpression",
- "value": "this.module.productImg"
- },
- "children": [
- {
- "componentName": "Link",
- "id": "node_ockx03llkjw",
- "props": {
- "link": {
- "type": "JSExpression",
- "value": "this.item.link"
- },
- "spmD": "c88758.d183221"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockwdb9utbd",
- "props": {
- "src": {
- "type": "JSExpression",
- "value": "this.item.imgSrc",
- "mock": "https://img.alicdn.com/imgextra/i1/O1CN01c35RIk1e3Ji8oUPXQ_!!6000000003815-2-tps-654-376.png"
- },
- "width": "100%",
- "style": {
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ]
- },
- {
- "componentName": "Text",
- "id": "node_ockwnbkrje1l",
- "props": {
- "context": "更多指定保司产品将逐渐开放,敬请期待",
- "style": {
- "color": "#999999",
- "fontSize": "26px",
- "textAlign": "center",
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ]
- }
- ],
- "title": "产品列表"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_ARTICLE_LIST"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Container",
- "id": "node_ockx4gcrxg1c",
- "props": {
- "style": {
- "paddingTop": "0px",
- "paddingLeft": "0px",
- "paddingRight": "0px",
- "backgroundColor": "#ffffff",
- "marginLeft": "24px",
- "marginRight": "24px",
- "paddingBottom": "0px",
- "borderRadius": "16px",
- "marginBottom": "16px"
- },
- "spmC": "c88757"
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockx4h25ygq",
- "props": {
- "src": {
- "type": "JSExpression",
- "value": "this.module.header",
- "mock": "https://gw.alicdn.com/imgextra/i2/O1CN01nQxtcb1ail4yyw2kZ_!!6000000003364-2-tps-702-78.png"
- },
- "width": "100%"
- },
- "hidden": false,
- "title": "标题",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- },
- {
- "componentName": "Container",
- "id": "node_ockx4gcrxg1d",
- "props": {
- "style": {
- "paddingBottom": "24px"
- }
- },
- "hidden": false,
- "title": "文章列表循环",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "loop": {
- "type": "JSExpression",
- "value": "this.module.productIntroduce"
- },
- "children": [
- {
- "componentName": "Link",
- "id": "node_ockx4gcrxg1e",
- "props": {
- "link": {
- "type": "JSExpression",
- "value": "this.item.link"
- },
- "spmD": {
- "type": "JSExpression",
- "value": "'c88757.d183219_' + this.index"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""],
- "children": [
- {
- "componentName": "Image",
- "id": "node_ockx4gcrxg1f",
- "props": {
- "src": "https://img.alicdn.com/imgextra/i4/O1CN015NY1E21XIhhWNXs3J_!!6000000002901-2-tps-700-230.png",
- "width": "100%",
- "style": {
- "display": "block"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "title": "文章列表"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_PRODUCT_LIST"
- },
- {
- "childRender": {
- "type": "JSSlot",
- "params": ["module"],
- "value": [
- {
- "componentName": "Share",
- "id": "node_ockx0429phm",
- "props": {
- "bizType": "ztokenV0_PaWxRUaO",
- "title": {
- "type": "JSExpression",
- "value": "this.module.share.shareTitle",
- "mock": "我是分享标题"
- },
- "desc": {
- "type": "JSExpression",
- "value": "this.module.share.shareDesc",
- "mock": "我是分享描述"
- },
- "iconUrl": {
- "type": "JSExpression",
- "value": "this.module.share.iconUrl",
- "mock": "我是分享图标链接"
- }
- },
- "hidden": false,
- "title": "",
- "isLocked": false,
- "condition": true,
- "conditionGroup": ""
- }
- ],
- "title": "分享设置"
- },
- "templateCode": "PILOT_PENSION_LANDING_PAGE_SHARE"
- }
- ],
- "moduleList": {
- "type": "JSExpression",
- "value": "this.state._insiopData.modules || []"
- }
- },
- "hidden": false,
- "title": "德鲁伊容器",
- "isLocked": false,
- "condition": true,
- "conditionGroup": "",
- "loopArgs": ["", ""]
- }
- ]
- }
- ],
- "i18n": {}
-}
diff --git a/modules/code-generator/tests/bugfix/page-element2.test.ts b/modules/code-generator/tests/bugfix/page-element2.test.ts
deleted file mode 100644
index d0bff34e6e..0000000000
--- a/modules/code-generator/tests/bugfix/page-element2.test.ts
+++ /dev/null
@@ -1,80 +0,0 @@
-import CodeGenerator from '../../src';
-import * as fs from 'fs';
-import * as path from 'path';
-import { createDiskPublisher } from '../helpers/solutionHelper';
-
-test('page-element2', async () => {
- const inputSchemaJsonFile = path.join(__dirname, 'page-element2.schema.json');
- const outputDir = path.join(__dirname, 'page-element2.generated');
- await exportProject(inputSchemaJsonFile, outputDir);
-
- const generatedPageFileContent = fs.readFileSync(
- path.join(outputDir, 'demo-project/src/pages/$/index.jsx'),
- 'utf-8',
- );
- expect(generatedPageFileContent).toContain(' {
- // displayResultInConsole(result);
- const publisher = createDiskPublisher();
- await publisher.publish({
- project: result,
- outputPath,
- projectSlug: 'demo-project',
- createProjectFolder: true,
- });
- return result;
- });
-}
diff --git a/modules/code-generator/tests/bugfix/strict-mode-context-1.schema.json b/modules/code-generator/tests/bugfix/strict-mode-context-1.schema.json
deleted file mode 100644
index ec74b77ad9..0000000000
--- a/modules/code-generator/tests/bugfix/strict-mode-context-1.schema.json
+++ /dev/null
@@ -1,677 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Typography",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "subName": "Text",
- "componentName": "Typography.Text"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Select",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "componentName": "Select"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Space",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "componentName": "Space"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Button",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "componentName": "Button"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "InputNumber",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "componentName": "InputNumber"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Form",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "subName": "Item",
- "componentName": "Form.Item"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Input",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "subName": "TextArea",
- "componentName": "Input.TextArea"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Form",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "componentName": "Form"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Modal",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "componentName": "Modal"
- },
- {
- "package": "@alife/mc-assets-1935",
- "version": "0.1.16",
- "exportName": "AliAutoSearchTable",
- "main": "build/lowcode/index.js",
- "destructuring": true,
- "subName": "default",
- "componentName": "AliAutoSearchTableDefault"
- },
- {
- "package": "@alilc/antd-lowcode",
- "version": "0.5.4",
- "exportName": "Card",
- "main": "dist/antd-lowcode.esm.js",
- "destructuring": true,
- "componentName": "Card"
- },
- {
- "package": "@alife/container",
- "version": "0.3.7",
- "exportName": "P",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextP"
- },
- {
- "package": "@alife/container",
- "version": "0.3.7",
- "exportName": "Block",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "Cell",
- "componentName": "NextBlockCell"
- },
- {
- "package": "@alife/container",
- "version": "0.3.7",
- "exportName": "Block",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextBlock"
- },
- {
- "devMode": "lowcode",
- "componentName": "Slot"
- },
- {
- "package": "@alife/container",
- "version": "0.3.7",
- "exportName": "Page",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextPage"
- },
- {
- "devMode": "lowcode",
- "componentName": "Page"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node_dockcviv8fo1",
- "props": {
- "ref": "outterView",
- "style": {
- "height": "100%"
- }
- },
- "fileName": "test",
- "dataSource": {
- "list": []
- },
- "css": "body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}",
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- },
- "componentWillUnmount": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- },
- "componentDidUpdate": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- }
- },
- "methods": {
- "onChange": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- },
- "getActions": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- },
- "onCreateOrder": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- },
- "onCancelModal": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- },
- "onConfirmCreateOrder": {
- "type": "JSFunction",
- "value": "function() { /* ... */ }"
- }
- },
- "state": {
- "name": "nongzhou",
- "gateways": [],
- "selectedGateway": null,
- "records": [],
- "modalVisible": false
- },
- "children": [
- {
- "componentName": "NextPage",
- "id": "node_ocknqx3esma",
- "props": {
- "columns": 12,
- "headerDivider": true,
- "placeholderStyle": {
- "gridRowEnd": "span 1",
- "gridColumnEnd": "span 12"
- },
- "placeholder": "页面主体内容:拖拽Block布局组件到这里",
- "header": {
- "type": "JSSlot",
- "title": "header"
- },
- "headerProps": {
- "background": "surface"
- },
- "footer": {
- "type": "JSSlot",
- "title": "footer"
- },
- "minHeight": "100vh",
- "style": {
- "cursor": "pointer"
- }
- },
- "title": "页面",
- "children": [
- {
- "componentName": "NextBlock",
- "id": "node_ocknqx3esmb",
- "props": {
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "noPadding": false,
- "noBorder": false,
- "background": "surface",
- "layoutmode": "O",
- "colSpan": 12,
- "rowSpan": 1,
- "childTotalColumns": 12
- },
- "title": "区块",
- "children": [
- {
- "componentName": "NextBlockCell",
- "id": "node_ocknqx3esmc",
- "props": {
- "title": "",
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "layoutmode": "O",
- "childTotalColumns": 12,
- "isAutoContainer": true,
- "colSpan": 12,
- "rowSpan": 1
- },
- "children": [
- {
- "componentName": "NextP",
- "id": "node_ocknqx3esm1j",
- "props": {
- "wrap": false,
- "type": "body2",
- "verAlign": "middle",
- "textSpacing": true,
- "align": "left",
- "full": true,
- "flex": true
- },
- "title": "段落",
- "children": [
- {
- "componentName": "Card",
- "id": "node_ocknqx3esm1k",
- "props": {
- "title": ""
- },
- "children": [
- {
- "componentName": "Space",
- "id": "node_ocknqx3esm1n",
- "props": {
- "size": 0,
- "align": "center",
- "direction": "horizontal"
- },
- "children": [
- {
- "componentName": "Typography.Text",
- "id": "node_ocknqx3esm1l",
- "props": {
- "children": "所在网关:"
- }
- },
- {
- "componentName": "Select",
- "id": "node_ocknqx3esm1m",
- "props": {
- "style": {
- "marginTop": "16px",
- "marginRight": "16px",
- "marginBottom": "16px",
- "marginLeft": "16px",
- "width": "400px",
- "display": "inline-block"
- },
- "options": {
- "type": "JSExpression",
- "value": "this.state.gateways"
- },
- "mode": "single",
- "defaultValue": ["auto-edd-uniproxy"],
- "labelInValue": true,
- "showSearch": true,
- "allowClear": false,
- "placeholder": "请选取网关",
- "showArrow": true,
- "loading": false,
- "tokenSeparators": [],
- "__events": {
- "eventDataList": [
- {
- "type": "componentEvent",
- "name": "onChange",
- "relatedEventName": "onChange"
- }
- ],
- "eventList": [
- {
- "name": "onBlur",
- "disabled": false
- },
- {
- "name": "onChange",
- "disabled": true
- },
- {
- "name": "onDeselect",
- "disabled": false
- },
- {
- "name": "onFocus",
- "disabled": false
- },
- {
- "name": "onInputKeyDown",
- "disabled": false
- },
- {
- "name": "onMouseEnter",
- "disabled": false
- },
- {
- "name": "onMouseLeave",
- "disabled": false
- },
- {
- "name": "onPopupScroll",
- "disabled": false
- },
- {
- "name": "onSearch",
- "disabled": false
- },
- {
- "name": "onSelect",
- "disabled": false
- },
- {
- "name": "onDropdownVisibleChange",
- "disabled": false
- }
- ]
- },
- "onChange": {
- "type": "JSFunction",
- "value": "function(){this.onChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- }
- }
- }
- ]
- },
- {
- "componentName": "Button",
- "id": "node_ockntwgdsn7",
- "props": {
- "type": "primary",
- "children": "创建发布单",
- "style": {
- "display": "block",
- "marginTop": "20px",
- "marginBottom": "20px"
- },
- "__events": {
- "eventDataList": [
- {
- "type": "componentEvent",
- "name": "onClick",
- "relatedEventName": "onCreateOrder"
- }
- ],
- "eventList": [
- {
- "name": "onClick",
- "disabled": true
- }
- ]
- },
- "onClick": {
- "type": "JSFunction",
- "value": "function(){this.onCreateOrder.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- }
- }
- },
- {
- "componentName": "Modal",
- "id": "node_ockntx4eo9p",
- "props": {
- "title": "创建发布单",
- "visible": {
- "type": "JSExpression",
- "value": "this.state.modalVisible"
- },
- "footer": "",
- "__events": {
- "eventDataList": [
- {
- "type": "componentEvent",
- "name": "onCancel",
- "relatedEventName": "onCancelModal"
- }
- ],
- "eventList": [
- {
- "name": "onCancel",
- "disabled": true
- },
- {
- "name": "onOk",
- "disabled": false
- }
- ]
- },
- "onCancel": {
- "type": "JSFunction",
- "value": "function(){this.onCancelModal.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "zIndex": 2000
- },
- "hidden": true,
- "children": [
- {
- "componentName": "Form",
- "id": "node_ockntx4eo9s",
- "props": {
- "labelCol": {
- "span": 6
- },
- "wrapperCol": {
- "span": 14
- },
- "onFinish": {
- "type": "JSFunction",
- "value": "function(){this.onConfirmCreateOrder.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "name": "basic",
- "__events": {
- "eventDataList": [
- {
- "type": "componentEvent",
- "name": "onFinish",
- "relatedEventName": "onConfirmCreateOrder"
- }
- ],
- "eventList": [
- {
- "name": "onFinish",
- "disabled": true
- },
- {
- "name": "onFinishFailed",
- "disabled": false
- },
- {
- "name": "onFieldsChange",
- "disabled": false
- },
- {
- "name": "onValuesChange",
- "disabled": false
- }
- ]
- }
- },
- "children": [
- {
- "componentName": "Form.Item",
- "id": "node_ockntx4eo91k",
- "props": {
- "label": "发布批次"
- },
- "children": [
- {
- "componentName": "InputNumber",
- "id": "node_ockntx4eo91l",
- "props": {
- "value": 3,
- "min": 1
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node_ockntx4eo91r",
- "props": {
- "label": "批次间隔时间"
- },
- "children": [
- {
- "componentName": "InputNumber",
- "id": "node_ockntx4eo91s",
- "props": {
- "value": 3
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node_ockntx4eo91y",
- "props": {
- "label": "备注 "
- },
- "children": [
- {
- "componentName": "Input.TextArea",
- "id": "node_ockntx4eo91z",
- "props": {
- "rows": 3,
- "placeholder": "请输入"
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node_ockntx4eo9v",
- "props": {
- "wrapperCol": {
- "offset": 6
- },
- "style": {
- "flexDirection": "row",
- "alignItems": "flex-end",
- "justifyContent": "center",
- "display": "flex"
- },
- "labelAlign": "right"
- },
- "children": [
- {
- "componentName": "Button",
- "id": "node_ockntx4eo9w",
- "props": {
- "type": "primary",
- "children": "提交",
- "htmlType": "submit"
- }
- },
- {
- "componentName": "Button",
- "id": "node_ockntx4eo9x",
- "props": {
- "style": {
- "marginLeft": 20
- },
- "children": "取消",
- "__events": {
- "eventDataList": [
- {
- "type": "componentEvent",
- "name": "onClick",
- "relatedEventName": "onCancelModal"
- }
- ],
- "eventList": [
- {
- "name": "onClick",
- "disabled": true
- }
- ]
- },
- "onClick": {
- "type": "JSFunction",
- "value": "function(){this.onCancelModal.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- }
- }
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "componentName": "AliAutoSearchTableDefault",
- "id": "node_ocknqx3esm1q",
- "props": {
- "rowKey": "key",
- "dataSource": {
- "type": "JSExpression",
- "value": "this.state.records"
- },
- "columns": [
- {
- "title": "发布名称",
- "dataIndex": "order_name",
- "key": "name"
- },
- {
- "title": "类型",
- "dataIndex": "order_type_desc",
- "key": "age"
- },
- {
- "title": "发布状态",
- "dataIndex": "order_status_desc",
- "key": "address"
- },
- {
- "title": "发布人",
- "dataIndex": "creator_name"
- },
- {
- "title": "当前批次/总批次",
- "dataIndex": "cur_batch_no"
- },
- {
- "title": "发布机器/总机器",
- "dataIndex": "pubblish_ip_finish_num"
- },
- {
- "title": "发布时间",
- "dataIndex": "publish_id"
- }
- ],
- "actions": {
- "type": "JSExpression",
- "value": "this.actions || []"
- },
- "getActions": {
- "type": "JSFunction",
- "value": "function(){ return this.getActions.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- }
- }
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "i18n": {}
-}
diff --git a/modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts b/modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts
deleted file mode 100644
index bbeba067ad..0000000000
--- a/modules/code-generator/tests/bugfix/strict-mode-context-1.test.ts
+++ /dev/null
@@ -1,57 +0,0 @@
-import CodeGenerator from '../../src';
-import * as fs from 'fs';
-import * as path from 'path';
-import { IPublicTypeProjectSchema } from '@felce/lowcode-types';
-import { createDiskPublisher } from '../helpers/solutionHelper';
-import { IceJsProjectBuilderOptions } from '../../src/solutions/icejs';
-
-const testCaseBaseName = path.basename(__filename, '.test.ts');
-const inputSchemaJsonFile = path.join(__dirname, `${testCaseBaseName}.schema.json`);
-const outputDir = path.join(__dirname, `${testCaseBaseName}.generated`);
-
-jest.setTimeout(60 * 60 * 1000);
-
-describe(testCaseBaseName, () => {
- test('methods will be set to context in constructor', async () => {
- await exportProject(inputSchemaJsonFile, outputDir, {}, { inStrictMode: true });
-
- const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx');
- expect(generatedPageFileContent).not.toContain('_context = this;');
- expect(generatedPageFileContent).toContain('_context = this._createContext();');
- expect(generatedPageFileContent).toContain(
- `
- this._context.onChange = this.onChange;
- this._context.getActions = this.getActions;
- this._context.onCreateOrder = this.onCreateOrder;
- this._context.onCancelModal = this.onCancelModal;
- this._context.onConfirmCreateOrder = this.onConfirmCreateOrder;
- `.trim(),
- );
- });
-});
-
-function exportProject(
- importPath: string,
- outputPath: string,
- mergeSchema?: Partial,
- options?: IceJsProjectBuilderOptions,
-) {
- const schemaJsonStr = fs.readFileSync(importPath, { encoding: 'utf8' });
- const schema = { ...JSON.parse(schemaJsonStr), ...mergeSchema };
- const builder = CodeGenerator.solutions.icejs(options);
-
- return builder.generateProject(schema).then(async (result) => {
- const publisher = createDiskPublisher();
- await publisher.publish({
- project: result,
- outputPath,
- projectSlug: 'demo-project',
- createProjectFolder: true,
- });
- return result;
- });
-}
-
-function readOutputTextFile(outputFilePath: string): string {
- return fs.readFileSync(path.resolve(outputDir, outputFilePath), 'utf-8');
-}
diff --git a/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.schema.json b/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.schema.json
deleted file mode 100644
index 347ef7d3e4..0000000000
--- a/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.schema.json
+++ /dev/null
@@ -1,58 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "package": "react-greetings",
- "version": "1.0.0",
- "componentName": "Greetings",
- "exportName": "Greetings",
- "destructuring": true
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node_ocl137q7oc1",
- "fileName": "test",
- "props": { "style": {} },
- "lifeCycles": {},
- "dataSource": { "list": [] },
- "state": {
- "name": "lowcode world",
- "users": null
- },
- "methods": {},
- "children": [
- {
- "componentName": "Greetings",
- "id": "node_ocl137q7oc4",
- "loop": {
- "type": "JSExpression",
- "value": "this.state.users"
- },
- "loopArgs": ["item", ""],
- "props": {
- "content": {
- "type": "i18n",
- "key": "greetings.hello",
- "params": {
- "name": {
- "type": "JSExpression",
- "value": "this.item"
- }
- }
- }
- }
- }
- ]
- }
- ],
- "i18n": {
- "zh-CN": {
- "greetings.hello": "${name}, 你好!"
- },
- "en-US": {
- "greetings.hello": "Hello, ${name}!"
- }
- }
-}
diff --git a/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts b/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts
deleted file mode 100644
index 5564a7f22b..0000000000
--- a/modules/code-generator/tests/bugfix/tolerate-eval-errors-1-loop.test.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import CodeGenerator from '../../src';
-import * as fs from 'fs';
-import * as path from 'path';
-import { IPublicTypeProjectSchema } from '@felce/lowcode-types';
-import { createDiskPublisher } from '../helpers/solutionHelper';
-import { IceJsProjectBuilderOptions } from '../../src/solutions/icejs';
-
-const testCaseBaseName = path.basename(__filename, '.test.ts');
-const inputSchemaJsonFile = path.join(__dirname, `${testCaseBaseName}.schema.json`);
-const outputDir = path.join(__dirname, `${testCaseBaseName}.generated`);
-
-jest.setTimeout(60 * 60 * 1000);
-
-test('loop should be generated link __$$evalArray(xxx).map', async () => {
- await exportProject(
- inputSchemaJsonFile,
- outputDir,
- {},
- { inStrictMode: true, tolerateEvalErrors: true },
- );
-
- const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx');
- expect(generatedPageFileContent).toContain(
- '{__$$evalArray(() => this.state.users).map((item, index) =>',
- );
-});
-
-function exportProject(
- importPath: string,
- outputPath: string,
- mergeSchema?: Partial,
- options?: IceJsProjectBuilderOptions,
-) {
- const schemaJsonStr = fs.readFileSync(importPath, { encoding: 'utf8' });
- const schema = { ...JSON.parse(schemaJsonStr), ...mergeSchema };
- const builder = CodeGenerator.solutions.icejs(options);
-
- return builder.generateProject(schema).then(async (result) => {
- const publisher = createDiskPublisher();
- await publisher.publish({
- project: result,
- outputPath,
- projectSlug: 'demo-project',
- createProjectFolder: true,
- });
- return result;
- });
-}
-
-function readOutputTextFile(outputFilePath: string): string {
- return fs.readFileSync(path.resolve(outputDir, outputFilePath), 'utf-8');
-}
diff --git a/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.schema.json b/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.schema.json
deleted file mode 100644
index 6b35a8db63..0000000000
--- a/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.schema.json
+++ /dev/null
@@ -1,70 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "package": "react-greetings",
- "version": "1.0.0",
- "componentName": "Greetings",
- "exportName": "Greetings",
- "destructuring": true
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node_ocl137q7oc1",
- "fileName": "test",
- "props": { "style": {} },
- "lifeCycles": {},
- "dataSource": { "list": [] },
- "state": {
- "name": "lowcode world",
- "users": null
- },
- "methods": {},
- "children": [
- {
- "componentName": "Greetings",
- "id": "node_ocl137q7oc4",
- "loop": {
- "type": "JSExpression",
- "value": "this.state.users"
- },
- "loopArgs": ["item", ""],
- "props": {
- "content": {
- "type": "i18n",
- "key": "greetings.hello",
- "params": { "name": { "type": "JSExpression", "value": "this.item" } }
- }
- },
- "children": [
- {
- "componentName": "Greetings",
- "id": "node_ocl137q7oc4",
- "loop": {
- "type": "JSExpression",
- "value": "this.state.messages"
- },
- "loopArgs": ["msg", ""],
- "props": {
- "content": {
- "type": "JSExpression",
- "value": "this.msg"
- }
- }
- }
- ]
- }
- ]
- }
- ],
- "i18n": {
- "zh-CN": {
- "greetings.hello": "${name}, 你好!"
- },
- "en-US": {
- "greetings.hello": "Hello, ${name}!"
- }
- }
-}
diff --git a/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts b/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts
deleted file mode 100644
index 90f21b590b..0000000000
--- a/modules/code-generator/tests/bugfix/tolerate-eval-errors-2-nested-loop.test.ts
+++ /dev/null
@@ -1,56 +0,0 @@
-import CodeGenerator from '../../src';
-import * as fs from 'fs';
-import * as path from 'path';
-import { IPublicTypeProjectSchema } from '@felce/lowcode-types';
-import { createDiskPublisher } from '../helpers/solutionHelper';
-import { IceJsProjectBuilderOptions } from '../../src/solutions/icejs';
-
-const testCaseBaseName = path.basename(__filename, '.test.ts');
-const inputSchemaJsonFile = path.join(__dirname, `${testCaseBaseName}.schema.json`);
-const outputDir = path.join(__dirname, `${testCaseBaseName}.generated`);
-
-jest.setTimeout(60 * 60 * 1000);
-
-test('loop should be generated link __$$evalArray(xxx).map', async () => {
- await exportProject(
- inputSchemaJsonFile,
- outputDir,
- {},
- { inStrictMode: true, tolerateEvalErrors: true },
- );
-
- const generatedPageFileContent = readOutputTextFile('demo-project/src/pages/Test/index.jsx');
- expect(generatedPageFileContent).toContain(
- '{__$$evalArray(() => this.state.users).map((item, index) =>',
- );
-
- expect(generatedPageFileContent).toContain(
- '{__$$evalArray(() => __$$context.state.messages).map(',
- );
-});
-
-function exportProject(
- importPath: string,
- outputPath: string,
- mergeSchema?: Partial,
- options?: IceJsProjectBuilderOptions,
-) {
- const schemaJsonStr = fs.readFileSync(importPath, { encoding: 'utf8' });
- const schema = { ...JSON.parse(schemaJsonStr), ...mergeSchema };
- const builder = CodeGenerator.solutions.icejs(options);
-
- return builder.generateProject(schema).then(async (result) => {
- const publisher = createDiskPublisher();
- await publisher.publish({
- project: result,
- outputPath,
- projectSlug: 'demo-project',
- createProjectFolder: true,
- });
- return result;
- });
-}
-
-function readOutputTextFile(outputFilePath: string): string {
- return fs.readFileSync(path.resolve(outputDir, outputFilePath), 'utf-8');
-}
diff --git a/modules/code-generator/tests/cli.test.ts b/modules/code-generator/tests/cli.test.ts
deleted file mode 100644
index 8e1598334c..0000000000
--- a/modules/code-generator/tests/cli.test.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import { run } from '../src/cli';
-
-describe('cli', () => {
- // standalone 模式下不需要测试 cli
- if (process.env.TEST_TARGET === 'standalone') {
- it('should ignore', () => {
- expect(true).toBe(true);
- });
- return;
- }
-
- it('should works for the default example-schema.json', async () => {
- const res = await run(['example-schema.json'], {
- solution: 'icejs',
- output: './demo',
- });
- expect(res).toBe(0);
- });
-
- it('should works for the default example-schema.json5', async () => {
- const res = await run(['example-schema.json5'], {
- solution: 'icejs',
- output: './demo',
- });
- expect(res).toBe(0);
- });
-
- it('should returns error for no schema file', async () => {
- const res = await run([], {
- solution: 'icejs',
- output: './demo',
- });
-
- expect(res).not.toBe(0);
- });
-
- it('should returns error for to many schema files', async () => {
- const res = await run(['example-schema.json', 'example-schema.json5'], {
- solution: 'icejs',
- });
- expect(res).not.toBe(0);
- });
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/.gitignore b/modules/code-generator/tests/fixtures/test-cases/.gitignore
deleted file mode 100644
index b369696468..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-actual/
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/package.json
deleted file mode 100644
index 38f24df0b1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.19.18",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-url-params-handler": "^1.0.0",
- "@alilc/lowcode-datasource-fetch-handler": "^1.0.0"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/constants.js
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' };
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/global.scss
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 794ad46a48..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,205 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Form, Input, NumberPicker, Select, Button } from '@alifd/next';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/button/style';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Test$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(window.location.search),
- fetch: __$$createFetchRequestHandler(),
- },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter' };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- isInit: function () {
- return undefined;
- }.bind(_this),
- options: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'user',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'orders',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/orders',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data.result;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- dataHandler: function (dataMap) {
- console.info('All datasources loaded:', dataMap);
- },
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
-
- console.log('componentDidMount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- {__$$evalArray(() => ['a', 'b', 'c']).map((item, index) =>
- ((__$$context) =>
- !!__$$eval(() => index >= 1) && (
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/schema.json5
deleted file mode 100644
index 76c52fb5e8..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo1/schema.json5
+++ /dev/null
@@ -1,276 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "componentName": "Button",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button"
- },
- {
- "componentName": "Button.Group",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button",
- "subName": "Group"
- },
- {
- "componentName": "Input",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Input"
- },
- {
- "componentName": "Form",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form"
- },
- {
- "componentName": "Form.Item",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form",
- "subName": "Item"
- },
- {
- "componentName": "NumberPicker",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "NumberPicker"
- },
- {
- "componentName": "Select",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Select"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node$1",
- "meta": {
- "title": "测试",
- "router": "/"
- },
- "props": {
- "ref": "outterView",
- "autoLoading": true
- },
- "fileName": "test",
- "state": {
- "text": "outter"
- },
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() { console.log('componentDidMount'); }"
- }
- },
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/user
- {
- id: 'user',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- },
- dataHandler: {
- type: 'JSExpression',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data;\n}',
- },
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/orders
- {
- id: 'orders',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: "https://shs.xxx.com/mock/1458/demo/orders",
- isSync: true,
- },
- dataHandler: {
- type: 'JSExpression',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data.result;\n}',
- },
- },
- ],
- dataHandler: {
- type: 'JSExpression',
- value: 'function (dataMap) {\n console.info("All datasources loaded:", dataMap);\n}',
- },
- },
- "children": [
- {
- "componentName": "Form",
- "id": "node$2",
- "props": {
- "labelCol": {
- "type": "JSExpression",
- "value": "this.state.colNum"
- },
- "style": {},
- "ref": "testForm"
- },
- "children": [
- {
- "componentName": "Form.Item",
- "id": "node$3",
- "props": {
- "label": "姓名:",
- "name": "name",
- "initValue": "李雷"
- },
- "children": [
- {
- "componentName": "Input",
- "id": "node$4",
- "props": {
- "placeholder": "请输入",
- "size": "medium",
- "style": {
- "width": 320
- }
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$5",
- "props": {
- "label": "年龄:",
- "name": "age",
- "initValue": "22"
- },
- "children": [
- {
- "componentName": "NumberPicker",
- "id": "node$6",
- "props": {
- "size": "medium",
- "type": "normal"
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$7",
- "props": {
- "label": "职业:",
- "name": "profession"
- },
- "children": [
- {
- "componentName": "Select",
- "id": "node$8",
- "props": {
- "dataSource": [
- {
- "label": "教师",
- "value": "t"
- },
- {
- "label": "医生",
- "value": "d"
- },
- {
- "label": "歌手",
- "value": "s"
- }
- ]
- }
- }
- ]
- },
- {
- "componentName": "Div",
- "id": "node$9",
- "props": {
- "style": {
- "textAlign": "center"
- }
- },
- "children": [
- {
- "componentName": "Button.Group",
- "id": "node$a",
- "props": {},
- "children": [
- {
- "componentName": "Button",
- "id": "node$b",
- "condition": {
- "type": "JSExpression",
- "value": "this.index >= 1"
- },
- "loop": ["a", "b", "c"],
- "props": {
- "type": "primary",
- "style": {
- "margin": "0 5px 0 5px"
- },
- },
- "children": [
- {
- "type": "JSExpression",
- "value": "this.item"
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "constants": {
- "ENV": "prod",
- "DOMAIN": "xxx.xxx.com"
- },
- "css": "body {font-size: 12px;} .table { width: 100px;}",
- "config": {
- "sdkVersion": "1.0.3",
- "historyMode": "hash",
- "targetRootID": "J_Container",
- "layout": {
- "componentName": "BasicLayout",
- "props": {
- "logo": "...",
- "name": "测试网站"
- }
- },
- "theme": {
- "package": "@alife/theme-fusion",
- "version": "^0.1.0",
- "primary": "#ff9966"
- }
- },
- "meta": {
- "name": "demo应用",
- "git_group": "appGroup",
- "project_name": "app_demo",
- "description": "这是一个测试应用",
- "spma": "spa23d",
- "creator": "月飞"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/package.json
deleted file mode 100644
index 3a0015c9bd..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.26.15",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-url-params-handler": "^1.0.0",
- "@alilc/b6-page": "^0.1.0",
- "@alilc/b6-text": "^0.1.0",
- "@alilc/b6-compact-legao-builtin": "1.x",
- "antd": "3.x",
- "@alilc/b6-util-mocks": "1.x"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
deleted file mode 100644
index 2945a9d8f5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
+++ /dev/null
@@ -1,118 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Page } from '@alilc/b6-page';
-
-import { Text } from '@alilc/b6-text';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Aaaa$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(window.location.search),
- },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- description: 'URL参数',
- options: function () {
- return {
- uri: '',
- };
- }.bind(_this),
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
- );
- }
-}
-
-export default Aaaa$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/utils.js
deleted file mode 100644
index 868d471106..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import legaoBuiltin from '@alilc/b6-compact-legao-builtin';
-
-import { message, Modal as modal } from 'antd';
-
-import { mocks } from '@alilc/b6-util-mocks';
-
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {
- legaoBuiltin,
-
- message,
-
- mocks,
-
- modal,
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/schema.json5
deleted file mode 100644
index 76e8248cbb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2-utils-name-alias/schema.json5
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/b6-page',
- version: '^0.1.0',
- componentName: 'Page',
- destructuring: true,
- exportName: 'Page',
- },
- {
- package: '@alilc/b6-text',
- version: '^0.1.0',
- componentName: 'Text',
- destructuring: true,
- exportName: 'Text',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_ockp6ci0hm1',
- props: {
- title: '',
- backgroundColor: '#fff',
- textColor: '#333',
- style: {},
- },
- fileName: 'aaaa',
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- description: 'URL参数',
- options: {
- uri: '',
- },
- },
- ],
- },
- children: [
- {
- componentName: 'Text',
- id: 'node_ockp6ci0hm2',
- props: {
- content: '欢迎使用 BuildSuccess!sadsad',
- style: {},
- fieldId: 'text_kp6ci11t',
- },
- },
- ],
- meta: {
- router: '/aaaa',
- },
- methodsModule: {
- type: 'JSModule',
- compiled: '"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nexports.helloPage = helloPage;\n\n/**\n * Private, and can be re-used functions\n * Actions panel help documentation:\n * @see https://yuque.antfin.com/docs/share/89ca7965-6387-4e3a-9964-81929ed48f1e\n */\nfunction printLog(obj) {\n console.info(obj);\n}\n/**\n * page function\n */\n\n\nfunction helloPage() {\n console.log(\'hello page\');\n}',
- source: "/**\n * Private, and can be re-used functions\n * Actions panel help documentation:\n * @see https://yuque.antfin.com/docs/share/89ca7965-6387-4e3a-9964-81929ed48f1e\n */\nfunction printLog(obj) {\n console.info(obj);\n}\n\n/**\n * page function\n */\nexport function helloPage() {\n console.log('hello page');\n}",
- },
- },
- ],
- i18n: {},
- utils: [
- {
- name: 'legaoBuiltin',
- type: 'npm',
- content: {
- exportName: 'legaoBuiltin',
- package: '@alilc/b6-compact-legao-builtin',
- version: '1.x',
- },
- },
- {
- name: 'message',
- type: 'npm',
- content: {
- package: 'antd',
- version: '3.x',
- destructuring: true,
- exportName: 'message',
- },
- },
- {
- name: 'mocks',
- type: 'npm',
- content: {
- package: '@alilc/b6-util-mocks',
- version: '1.x',
- exportName: 'mocks',
- destructuring: true,
- },
- },
- {
- name: 'modal',
- type: 'npm',
- content: {
- package: 'antd',
- version: '3.x',
- destructuring: true,
- exportName: 'Modal',
- },
- },
- ],
- constants: {},
- dataSource: {
- list: [],
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- miniAppBuildType: 'runtime',
- },
- meta: {
- name: 'jinyuan-test2',
- git_group: 'b6',
- project_name: 'jinyuan-test2',
- description: '瑾源测试',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/package.json
deleted file mode 100644
index 8f02ff1c7e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.19.18",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/constants.js
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' };
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/global.scss
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/i18n.js
deleted file mode 100644
index e8cb58e640..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,86 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'i18n-jwg27yo4': '你好',
- 'i18n-jwg27yo3': '中国',
- },
- 'en-US': {
- 'i18n-jwg27yo4': 'Hello',
- 'i18n-jwg27yo3': 'China',
- },
-};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 080c4245b6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,129 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Form, Input, NumberPicker, Select, Button } from '@alifd/next';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/button/style';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter' };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentDidMount() {
- console.log('componentDidMount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
this.i18n('i18n-jwg27yo4'))}
- name="name"
- initValue="李雷"
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/schema.json5
deleted file mode 100644
index 2228212067..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo2/schema.json5
+++ /dev/null
@@ -1,256 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "componentName": "Button",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button"
- },
- {
- "componentName": "Button.Group",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button",
- "subName": "Group"
- },
- {
- "componentName": "Input",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Input"
- },
- {
- "componentName": "Form",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form"
- },
- {
- "componentName": "Form.Item",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form",
- "subName": "Item"
- },
- {
- "componentName": "NumberPicker",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "NumberPicker"
- },
- {
- "componentName": "Select",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Select"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node$1",
- "meta": {
- "title": "测试",
- "router": "/"
- },
- "props": {
- "ref": "outterView",
- "autoLoading": true
- },
- "fileName": "test",
- "state": {
- "text": "outter"
- },
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() { console.log('componentDidMount'); }"
- }
- },
- "children": [
- {
- "componentName": "Form",
- "id": "node$2",
- "props": {
- "labelCol": {
- "type": "JSExpression",
- "value": "this.state.colNum"
- },
- "style": {},
- "ref": "testForm"
- },
- "children": [
- {
- "componentName": "Form.Item",
- "id": "node$3",
- "props": {
- "label": {
- type: 'JSExpression',
- value: 'this.i18n("i18n-jwg27yo4")',
- },
- "name": "name",
- "initValue": "李雷"
- },
- "children": [
- {
- "componentName": "Input",
- "id": "node$4",
- "props": {
- "placeholder": "请输入",
- "size": "medium",
- "style": {
- "width": 320
- }
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$5",
- "props": {
- "label": "年龄:",
- "name": "age",
- "initValue": "22"
- },
- "children": [
- {
- "componentName": "NumberPicker",
- "id": "node$6",
- "props": {
- "size": "medium",
- "type": "normal"
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$7",
- "props": {
- "label": "职业:",
- "name": "profession"
- },
- "children": [
- {
- "componentName": "Select",
- "id": "node$8",
- "props": {
- "dataSource": [
- {
- "label": "教师",
- "value": "t"
- },
- {
- "label": "医生",
- "value": "d"
- },
- {
- "label": "歌手",
- "value": "s"
- }
- ]
- }
- }
- ]
- },
- {
- "componentName": "Div",
- "id": "node$9",
- "props": {
- "style": {
- "textAlign": "center"
- }
- },
- "children": [
- {
- "componentName": "Button.Group",
- "id": "node$a",
- "props": {},
- "children": [
- {
- "componentName": "Button",
- "id": "node$b",
- "props": {
- "type": "primary",
- "style": {
- "margin": "0 5px 0 5px"
- },
- "htmlType": "submit"
- },
- "children": [
- "提交"
- ]
- },
- {
- "componentName": "Button",
- "id": "node$d",
- "props": {
- "type": "normal",
- "style": {
- "margin": "0 5px 0 5px"
- },
- "htmlType": "reset"
- },
- "children": [
- "重置"
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "constants": {
- "ENV": "prod",
- "DOMAIN": "xxx.xxx.com"
- },
- "i18n": {
- "zh-CN": {
- "i18n-jwg27yo4": "你好",
- "i18n-jwg27yo3": "中国"
- },
- "en-US": {
- "i18n-jwg27yo4": "Hello",
- "i18n-jwg27yo3": "China"
- }
- },
- "css": "body {font-size: 12px;} .table { width: 100px;}",
- "config": {
- "sdkVersion": "1.0.3",
- "historyMode": "hash",
- "targetRootID": "J_Container",
- "layout": {
- "componentName": "BasicLayout",
- "props": {
- "logo": "...",
- "name": "测试网站"
- }
- },
- "theme": {
- "package": "@alife/theme-fusion",
- "version": "^0.1.0",
- "primary": "#ff9966"
- }
- },
- "meta": {
- "name": "demo应用",
- "git_group": "appGroup",
- "project_name": "app_demo",
- "description": "这是一个测试应用",
- "spma": "spa23d",
- "creator": "月飞"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/package.json
deleted file mode 100644
index 8f02ff1c7e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/package.json
+++ /dev/null
@@ -1,42 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.19.18",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/constants.js
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' };
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/global.scss
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/i18n.js
deleted file mode 100644
index e8cb58e640..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,86 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'i18n-jwg27yo4': '你好',
- 'i18n-jwg27yo3': '中国',
- },
- 'en-US': {
- 'i18n-jwg27yo4': 'Hello',
- 'i18n-jwg27yo3': 'China',
- },
-};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 2f0a6efa9a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,107 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import Super, {
- Button,
- Input as CustomInput,
- Form,
- NumberPicker,
- Select,
- SearchTable as SearchTableExport,
-} from '@alifd/next';
-
-import SuperOther from '@alifd/next';
-
-import '@alifd/next/lib/super/style';
-
-import '@alifd/next/lib/button/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/search-table/style';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const SuperSub = Super.Sub;
-
-const SelectOption = Select.Option;
-
-const SearchTable = SearchTableExport.default;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- componentDidMount() {}
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
- this.state.title)} />
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/schema.json5
deleted file mode 100644
index 173b793e13..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo3/schema.json5
+++ /dev/null
@@ -1,159 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "componentName": "Super",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": false,
- "exportName": "Super"
- },
- {
- "componentName": "SuperOther",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": false,
- "exportName": "Super"
- },
- {
- "componentName": "SuperSub",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": false,
- "exportName": "Super",
- "subName": "Sub",
- },
- {
- "componentName": "Button",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button"
- },
- {
- "componentName": "SearchTable",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "SearchTable",
- "subName": "default",
- },
- {
- "componentName": "Button.Group",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button",
- "subName": "Group"
- },
- {
- "componentName": "CustomInput",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Input"
- },
- {
- "componentName": "Form",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form"
- },
- {
- "componentName": "Form.Item",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form",
- "subName": "Item"
- },
- {
- "componentName": "NumberPicker",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "NumberPicker"
- },
- {
- "componentName": "SelectOption",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Select",
- "subName": "Option"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node$1",
- "meta": {
- "title": "测试",
- "router": "/"
- },
- "fileName": "test",
- "children": [
- {
- "componentName": "Super",
- "props": {
- "title": {
- "type":"variable",
- "value":"标题",
- "variable":"this.state.title"
- }
- }
- },
- { "componentName": "SuperSub" },
- { "componentName": "SuperOther" },
- { "componentName": "Button" },
- { "componentName": "Button.Group" },
- { "componentName": "CustomInput" },
- { "componentName": "Form.Item" },
- { "componentName": "NumberPicker" },
- { "componentName": "SelectOption" },
- { "componentName": "SearchTable" },
- ]
- }
- ],
- "constants": {
- "ENV": "prod",
- "DOMAIN": "xxx.xxx.com"
- },
- "i18n": {
- "zh-CN": {
- "i18n-jwg27yo4": "你好",
- "i18n-jwg27yo3": "中国"
- },
- "en-US": {
- "i18n-jwg27yo4": "Hello",
- "i18n-jwg27yo3": "China"
- }
- },
- "css": "body {font-size: 12px;} .table { width: 100px;}",
- "config": {
- "sdkVersion": "1.0.3",
- "historyMode": "hash",
- "targetRootID": "J_Container",
- "layout": {
- "componentName": "BasicLayout",
- "props": {
- "logo": "...",
- "name": "测试网站"
- }
- },
- "theme": {
- "package": "@alife/theme-fusion",
- "version": "^0.1.0",
- "primary": "#ff9966"
- }
- },
- "meta": {
- "name": "demo应用",
- "git_group": "appGroup",
- "project_name": "app_demo",
- "description": "这是一个测试应用",
- "spma": "spa23d",
- "creator": "月飞"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/package.json
deleted file mode 100644
index 393be4663e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.26.15",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-fetch-handler": "^1.0.0",
- "@alife/container": "^1.0.0",
- "@alife/mc-assets-1935": "0.1.9"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 6400d7445b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,292 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
- Text as NextText,
-} from '@alife/container/lib/index.js';
-
-import { AliSearchTable as AliSearchTableExport } from '@alife/mc-assets-1935/build/lowcode/index.js';
-
-import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const NextBlockCell = NextBlock.Cell;
-
-const AliSearchTable = AliSearchTableExport.default;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: { fetch: __$$createFetchRequestHandler() },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter', isShowDialog: false };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- type: 'fetch',
- isInit: function () {
- return true;
- }.bind(_this),
- options: function () {
- return {
- params: {},
- method: 'GET',
- isCors: true,
- timeout: 5000,
- headers: {},
- uri: 'https://mocks.xxx.com/mock/jjpin/user/list',
- };
- }.bind(_this),
- id: 'users',
- },
- ],
- };
- }
-
- componentWillUnmount() {
- console.log('will umount');
- }
-
- componentDidUpdate(prevProps, prevState, snapshot) {
- console.log(this.state);
- }
-
- testFunc() {
- console.log('test func');
- }
-
- onClick() {
- this.setState({
- isShowDialog: true,
- });
- }
-
- closeDialog() {
- this.setState({
- isShowDialog: false,
- });
- }
-
- onSearch(values) {
- console.log('search form:', values);
- console.log(this.dataSourceMap);
- this.dataSourceMap['users'].load(values);
- }
-
- onClear() {
- console.log('form reset');
- this.setState({
- isShowDialog: true,
- });
- }
-
- onPageChange(page, pageSize) {
- console.log(`page: ${page}, pageSize: ${pageSize}`);
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
-
- console.log('did mount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
- 员工列表
-
- }
- headerTest={[]}
- headerProps={{ background: 'surface' }}
- footer={null}
- minHeight="100vh"
- >
-
-
-
- this.state.users.data)}
- rowKey="workid"
- columns={[
- { title: '花名', dataIndex: 'cname' },
- { title: 'user_id', dataIndex: 'workid' },
- { title: '部门', dataIndex: 'dep' },
- ]}
- searchItems={[
- { label: '姓名', name: 'cname' },
- { label: '部门', name: 'dep' },
- ]}
- onSearch={function () {
- return this.onSearch.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- onClear={function () {
- return this.onClear.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- pagination={{
- defaultPageSize: '',
- onPageChange: function () {
- return this.onPageChange.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- showSizeChanger: true,
- }}
- />
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/schema.json5
deleted file mode 100644
index ca97204e9c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo4/schema.json5
+++ /dev/null
@@ -1,353 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "package": "@alife/mc-assets-1935",
- "version": "0.1.9",
- "exportName": "AliSearchTable",
- "main": "build/lowcode/index.js",
- "subName": "default",
- "destructuring": true,
- "componentName": "AliSearchTable"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "P",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextP"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Block",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "Cell",
- "componentName": "NextBlockCell"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Block",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextBlock"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Text",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextText"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Page",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextPage"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node_dockcviv8fo1",
- "props": {
- "ref": "outterView",
- "style": {
- "height": "100%"
- }
- },
- "fileName": "test",
- "dataSource": {
- "list": [
- {
- "type": "fetch",
- "isInit": true,
- "options": {
- "params": {},
- "method": "GET",
- "isCors": true,
- "timeout": 5000,
- "headers": {},
- "uri": "https://mocks.xxx.com/mock/jjpin/user/list"
- },
- "id": "users"
- }
- ]
- },
- "css": "body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}",
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() {\n console.log('did mount');\n }"
- },
- "componentWillUnmount": {
- "type": "JSFunction",
- "value": "function() {\n console.log('will umount');\n }"
- },
- "componentDidUpdate": {
- "type": "JSFunction",
- "value": "function(prevProps, prevState, snapshot) {\n console.log(this.state);\n }"
- }
- },
- "methods": {
- "testFunc": {
- "type": "JSFunction",
- "value": "function() {\n console.log('test func');\n }"
- },
- "onClick": {
- "type": "JSFunction",
- "value": "function() {\n this.setState({\n isShowDialog: true\n })\n }"
- },
- "closeDialog": {
- "type": "JSFunction",
- "value": "function() {\n this.setState({\n isShowDialog: false\n })\n }"
- },
- "onSearch": {
- "type": "JSFunction",
- "value": "function(values) {\n console.log('search form:', values)\n console.log(this.dataSourceMap);\n this.dataSourceMap['users'].load(values)\n }"
- },
- "onClear": {
- "type": "JSFunction",
- "value": "function() {\n console.log('form reset')\n this.setState({\n isShowDialog: true\n })\n }"
- },
- "onPageChange": {
- "type": "JSFunction",
- "value": "function(page, pageSize) {\n console.log(`page: ${page}, pageSize: ${pageSize}`)\n }"
- }
- },
- "state": {
- "text": "outter",
- "isShowDialog": false
- },
- "children": [
- {
- "componentName": "NextPage",
- "id": "node_ockkgjwi8z1",
- "props": {
- "columns": 12,
- "placeholderStyle": {
- "gridRowEnd": "span 1",
- "gridColumnEnd": "span 12"
- },
- "placeholder": "页面主体内容:拖拽Block布局组件到这里",
- "header": {
- "type": "JSSlot",
- "value": [
- {
- "componentName": "NextP",
- "id": "node_ockkgjwi8zn",
- "props": {
- "wrap": true,
- "type": "body2",
- "verAlign": "middle",
- "textSpacing": true,
- "align": "left",
- "flex": true
- },
- "children": [
- {
- "componentName": "NextText",
- "id": "node_ockkgjwi8zo",
- "props": {
- "type": "h5",
- "children": "员工列表"
- }
- }
- ]
- }
- ],
- "title": "header"
- },
- "headerTest": {
- "type": "JSSlot",
- "value": [],
- "title": "header"
- },
- "headerProps": {
- "background": "surface"
- },
- "footer": {
- "type": "JSSlot",
- "title": "footer"
- },
- "minHeight": "100vh"
- },
- "children": [
- {
- "componentName": "NextBlock",
- "id": "node_ockkgjwi8z2",
- "props": {
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "noPadding": false,
- "noBorder": false,
- "background": "surface",
- "colSpan": 12,
- "rowSpan": 1,
- "childTotalColumns": "1fr"
- },
- "title": "分区",
- "children": [
- {
- "componentName": "NextBlockCell",
- "id": "node_ockkgjwi8z3",
- "props": {
- "title": "",
- "primaryKey": "732",
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "colSpan": 1,
- "rowSpan": 1
- },
- "children": [
- {
- "componentName": "NextP",
- "id": "node_ockkgjwi8zu",
- "props": {
- "wrap": true,
- "type": "body2",
- "textSpacing": true,
- "verAlign": "center",
- "align": "flex-start",
- "flex": true
- },
- "children": [
- {
- "componentName": "AliSearchTable",
- "id": "node_ockkgjwi8zv",
- "props": {
- "dataSource": {
- "type": "JSExpression",
- "value": "this.state.users.data"
- },
- "rowKey": "workid",
- "columns": [
- {
- "title": "花名",
- "dataIndex": "cname"
- },
- {
- "title": "user_id",
- "dataIndex": "workid"
- },
- {
- "title": "部门",
- "dataIndex": "dep"
- }
- ],
- "searchItems": [
- {
- "label": "姓名",
- "name": "cname"
- },
- {
- "label": "部门",
- "name": "dep"
- }
- ],
- "onSearch": {
- "type": "JSFunction",
- "value": "function(){ return this.onSearch.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "onClear": {
- "type": "JSFunction",
- "value": "function(){ return this.onClear.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "pagination": {
- "defaultPageSize": "",
- "onPageChange": {
- "type": "JSFunction",
- "value": "function(){ return this.onPageChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "showSizeChanger": true
- }
- }
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "componentName": "NextPage",
- "id": "node_ockm4jxd6313",
- "props": {
- "columns": 12,
- "headerDivider": true,
- "placeholderStyle": {
- "gridRowEnd": "span 1",
- "gridColumnEnd": "span 12"
- },
- "placeholder": "页面主体内容:拖拽Block布局组件到这里",
- "header": {
- "type": "JSSlot",
- "title": "header"
- },
- "headerProps": {
- "background": "surface"
- },
- "footer": {
- "type": "JSSlot",
- "title": "footer"
- },
- "minHeight": "100vh"
- },
- "title": "页面",
- "children": [
- {
- "componentName": "NextBlock",
- "id": "node_ockm4jxd6314",
- "props": {
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "noPadding": false,
- "noBorder": false,
- "background": "surface",
- "colSpan": 12,
- "rowSpan": 1,
- "childTotalColumns": 1
- },
- "title": "区块",
- "children": [
- {
- "componentName": "NextBlockCell",
- "id": "node_ockm4jxd6315",
- "props": {
- "title": "",
- "primaryKey": "472",
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "colSpan": 1,
- "rowSpan": 1
- }
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "i18n": {}
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/package.json
deleted file mode 100644
index d007025a60..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.26.15",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "undefined": "*",
- "@alife/container": "0.3.7",
- "@alilc/antd-lowcode": "0.5.4",
- "@alife/mc-assets-1935": "0.1.16"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 7427f164d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,389 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
-} from '@alife/container/lib/index.js';
-
-import {
- Card,
- Space,
- Typography,
- Select,
- Button,
- Modal,
- Form,
- InputNumber,
- Input,
-} from '@alilc/antd-lowcode/dist/antd-lowcode.esm.js';
-
-import { AliAutoSearchTable } from '@alife/mc-assets-1935/build/lowcode/index.js';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const NextBlockCell = NextBlock.Cell;
-
-const AliAutoSearchTableDefault = AliAutoSearchTable.default;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = {
- name: 'nongzhou',
- gateways: [],
- selectedGateway: null,
- records: [],
- modalVisible: false,
- };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentWillUnmount() {
- /* ... */
- }
-
- componentDidUpdate() {
- /* ... */
- }
-
- onChange() {
- /* ... */
- }
-
- getActions() {
- /* ... */
- }
-
- onCreateOrder() {
- /* ... */
- }
-
- onCancelModal() {
- /* ... */
- }
-
- onConfirmCreateOrder() {
- /* ... */
- }
-
- componentDidMount() {}
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
-
-
-
-
- 所在网关:
-
-
- this.state.modalVisible)}
- footer=""
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModal',
- },
- ],
- eventList: [
- { name: 'onCancel', disabled: true },
- { name: 'onOk', disabled: false },
- ],
- }}
- onCancel={function () {
- this.onCancelModal.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- zIndex={2000}
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this.state.records)}
- columns={[
- {
- title: '发布名称',
- dataIndex: 'order_name',
- key: 'name',
- },
- {
- title: '类型',
- dataIndex: 'order_type_desc',
- key: 'age',
- },
- {
- title: '发布状态',
- dataIndex: 'order_status_desc',
- key: 'address',
- },
- { title: '发布人', dataIndex: 'creator_name' },
- { title: '当前批次/总批次', dataIndex: 'cur_batch_no' },
- {
- title: '发布机器/总机器',
- dataIndex: 'pubblish_ip_finish_num',
- },
- { title: '发布时间', dataIndex: 'publish_id' },
- ]}
- actions={__$$eval(() => this.actions || [])}
- getActions={function () {
- return this.getActions.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- />
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/schema.json5
deleted file mode 100644
index b59b97e763..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo5/schema.json5
+++ /dev/null
@@ -1,677 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Typography',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Text',
- componentName: 'Typography.Text',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Select',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Select',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Space',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Space',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Button',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Button',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'InputNumber',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'InputNumber',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Item',
- componentName: 'Form.Item',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Input',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'TextArea',
- componentName: 'Input.TextArea',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Form',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Modal',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Modal',
- },
- {
- package: '@alife/mc-assets-1935',
- version: '0.1.16',
- exportName: 'AliAutoSearchTable',
- main: 'build/lowcode/index.js',
- destructuring: true,
- subName: 'default',
- componentName: 'AliAutoSearchTableDefault',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Card',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Card',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'P',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextP',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: 'Cell',
- componentName: 'NextBlockCell',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextBlock',
- },
- {
- devMode: 'lowcode',
- componentName: 'Slot',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Page',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextPage',
- },
- {
- devMode: 'lowcode',
- componentName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_dockcviv8fo1',
- props: {
- ref: 'outterView',
- style: {
- height: '100%',
- },
- },
- fileName: 'test',
- dataSource: {
- list: [],
- },
- css: 'body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}',
- lifeCycles: {
- componentDidMount: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- componentWillUnmount: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- componentDidUpdate: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- },
- methods: {
- onChange: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- getActions: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- onCreateOrder: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- onCancelModal: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- onConfirmCreateOrder: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- },
- state: {
- name: 'nongzhou',
- gateways: [],
- selectedGateway: null,
- records: [],
- modalVisible: false,
- },
- children: [
- {
- componentName: 'NextPage',
- id: 'node_ocknqx3esma',
- props: {
- columns: 12,
- headerDivider: true,
- placeholderStyle: {
- gridRowEnd: 'span 1',
- gridColumnEnd: 'span 12',
- },
- placeholder: '页面主体内容:拖拽Block布局组件到这里',
- header: {
- type: 'JSSlot',
- title: 'header',
- },
- headerProps: {
- background: 'surface',
- },
- footer: {
- type: 'JSSlot',
- title: 'footer',
- },
- minHeight: '100vh',
- style: {
- cursor: 'pointer',
- },
- },
- title: '页面',
- children: [
- {
- componentName: 'NextBlock',
- id: 'node_ocknqx3esmb',
- props: {
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- noPadding: false,
- noBorder: false,
- background: 'surface',
- layoutmode: 'O',
- colSpan: 12,
- rowSpan: 1,
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ocknqx3esmc',
- props: {
- title: '',
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- layoutmode: 'O',
- childTotalColumns: 12,
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- children: [
- {
- componentName: 'NextP',
- id: 'node_ocknqx3esm1j',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'Card',
- id: 'node_ocknqx3esm1k',
- props: {
- title: '',
- },
- children: [
- {
- componentName: 'Space',
- id: 'node_ocknqx3esm1n',
- props: {
- size: 0,
- align: 'center',
- direction: 'horizontal',
- },
- children: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocknqx3esm1l',
- props: {
- children: '所在网关:',
- },
- },
- {
- componentName: 'Select',
- id: 'node_ocknqx3esm1m',
- props: {
- style: {
- marginTop: '16px',
- marginRight: '16px',
- marginBottom: '16px',
- marginLeft: '16px',
- width: '400px',
- display: 'inline-block',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.gateways',
- },
- mode: 'single',
- defaultValue: ['auto-edd-uniproxy'],
- labelInValue: true,
- showSearch: true,
- allowClear: false,
- placeholder: '请选取网关',
- showArrow: true,
- loading: false,
- tokenSeparators: [],
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onChange',
- relatedEventName: 'onChange',
- },
- ],
- eventList: [
- {
- name: 'onBlur',
- disabled: false,
- },
- {
- name: 'onChange',
- disabled: true,
- },
- {
- name: 'onDeselect',
- disabled: false,
- },
- {
- name: 'onFocus',
- disabled: false,
- },
- {
- name: 'onInputKeyDown',
- disabled: false,
- },
- {
- name: 'onMouseEnter',
- disabled: false,
- },
- {
- name: 'onMouseLeave',
- disabled: false,
- },
- {
- name: 'onPopupScroll',
- disabled: false,
- },
- {
- name: 'onSearch',
- disabled: false,
- },
- {
- name: 'onSelect',
- disabled: false,
- },
- {
- name: 'onDropdownVisibleChange',
- disabled: false,
- },
- ],
- },
- onChange: {
- type: 'JSFunction',
- value: 'function(){this.onChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- {
- componentName: 'Button',
- id: 'node_ockntwgdsn7',
- props: {
- type: 'primary',
- children: '创建发布单',
- style: {
- display: 'block',
- marginTop: '20px',
- marginBottom: '20px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onCreateOrder',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onCreateOrder.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Modal',
- id: 'node_ockntx4eo9p',
- props: {
- title: '创建发布单',
- visible: {
- type: 'JSExpression',
- value: 'this.state.modalVisible',
- },
- footer: '',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModal',
- },
- ],
- eventList: [
- {
- name: 'onCancel',
- disabled: true,
- },
- {
- name: 'onOk',
- disabled: false,
- },
- ],
- },
- onCancel: {
- type: 'JSFunction',
- value: 'function(){this.onCancelModal.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- zIndex: 2000,
- },
- hidden: true,
- children: [
- {
- componentName: 'Form',
- id: 'node_ockntx4eo9s',
- props: {
- labelCol: {
- span: 6,
- },
- wrapperCol: {
- span: 14,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onConfirmCreateOrder.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onConfirmCreateOrder',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: false,
- },
- ],
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo91k',
- props: {
- label: '发布批次',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockntx4eo91l',
- props: {
- value: 3,
- min: 1,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo91r',
- props: {
- label: '批次间隔时间',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockntx4eo91s',
- props: {
- value: 3,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo91y',
- props: {
- label: '备注 ',
- },
- children: [
- {
- componentName: 'Input.TextArea',
- id: 'node_ockntx4eo91z',
- props: {
- rows: 3,
- placeholder: '请输入',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo9v',
- props: {
- wrapperCol: {
- offset: 6,
- },
- style: {
- flexDirection: 'row',
- alignItems: 'flex-end',
- justifyContent: 'center',
- display: 'flex',
- },
- labelAlign: 'right',
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockntx4eo9w',
- props: {
- type: 'primary',
- children: '提交',
- htmlType: 'submit',
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockntx4eo9x',
- props: {
- style: {
- marginLeft: 20,
- },
- children: '取消',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onCancelModal',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onCancelModal.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'AliAutoSearchTableDefault',
- id: 'node_ocknqx3esm1q',
- props: {
- rowKey: 'key',
- dataSource: {
- type: 'JSExpression',
- value: 'this.state.records',
- },
- columns: [
- {
- title: '发布名称',
- dataIndex: 'order_name',
- key: 'name',
- },
- {
- title: '类型',
- dataIndex: 'order_type_desc',
- key: 'age',
- },
- {
- title: '发布状态',
- dataIndex: 'order_status_desc',
- key: 'address',
- },
- {
- title: '发布人',
- dataIndex: 'creator_name',
- },
- {
- title: '当前批次/总批次',
- dataIndex: 'cur_batch_no',
- },
- {
- title: '发布机器/总机器',
- dataIndex: 'pubblish_ip_finish_num',
- },
- {
- title: '发布时间',
- dataIndex: 'publish_id',
- },
- ],
- actions: {
- type: 'JSExpression',
- value: 'this.actions || []',
- },
- getActions: {
- type: 'JSFunction',
- value: 'function(){ return this.getActions.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- i18n: {},
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/package.json
deleted file mode 100644
index 38f24df0b1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.19.18",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-url-params-handler": "^1.0.0",
- "@alilc/lowcode-datasource-fetch-handler": "^1.0.0"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/constants.js
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' };
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/global.scss
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 515940c334..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,205 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Form, Input, NumberPicker, Select, Button } from '@alifd/next';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/button/style';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Test$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(window.location.search),
- fetch: __$$createFetchRequestHandler(),
- },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter' };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- isInit: function () {
- return undefined;
- }.bind(_this),
- options: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'user',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'orders',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/orders',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data.result;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- dataHandler: function (dataMap) {
- console.info('All datasources loaded:', dataMap);
- },
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
-
- console.log('componentDidMount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- {__$$evalArray(() => ['a', 'b', 'c']).map((item, index) =>
- ((__$$context) =>
- !!false && (
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/schema.json5
deleted file mode 100644
index 5b6776c1ee..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo6-literal-condition/schema.json5
+++ /dev/null
@@ -1,273 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Button',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Button',
- },
- {
- componentName: 'Button.Group',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Button',
- subName: 'Group',
- },
- {
- componentName: 'Input',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Input',
- },
- {
- componentName: 'Form',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Form',
- },
- {
- componentName: 'Form.Item',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Form',
- subName: 'Item',
- },
- {
- componentName: 'NumberPicker',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'NumberPicker',
- },
- {
- componentName: 'Select',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Select',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node$1',
- meta: {
- title: '测试',
- router: '/',
- },
- props: {
- ref: 'outterView',
- autoLoading: true,
- },
- fileName: 'test',
- state: {
- text: 'outter',
- },
- lifeCycles: {
- componentDidMount: {
- type: 'JSFunction',
- value: "function() { console.log('componentDidMount'); }",
- },
- },
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/user
- {
- id: 'user',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- },
- dataHandler: {
- type: 'JSFunction',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data;\n}',
- },
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/orders
- {
- id: 'orders',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/orders',
- isSync: true,
- },
- dataHandler: {
- type: 'JSFunction',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data.result;\n}',
- },
- },
- ],
- dataHandler: {
- type: 'JSFunction',
- value: 'function (dataMap) {\n console.info("All datasources loaded:", dataMap);\n}',
- },
- },
- children: [
- {
- componentName: 'Form',
- id: 'node$2',
- props: {
- labelCol: {
- type: 'JSExpression',
- value: 'this.state.colNum',
- },
- style: {},
- ref: 'testForm',
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node$3',
- props: {
- label: '姓名:',
- name: 'name',
- initValue: '李雷',
- },
- children: [
- {
- componentName: 'Input',
- id: 'node$4',
- props: {
- placeholder: '请输入',
- size: 'medium',
- style: {
- width: 320,
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node$5',
- props: {
- label: '年龄:',
- name: 'age',
- initValue: '22',
- },
- children: [
- {
- componentName: 'NumberPicker',
- id: 'node$6',
- props: {
- size: 'medium',
- type: 'normal',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node$7',
- props: {
- label: '职业:',
- name: 'profession',
- },
- children: [
- {
- componentName: 'Select',
- id: 'node$8',
- props: {
- dataSource: [
- {
- label: '教师',
- value: 't',
- },
- {
- label: '医生',
- value: 'd',
- },
- {
- label: '歌手',
- value: 's',
- },
- ],
- },
- },
- ],
- },
- {
- componentName: 'Div',
- id: 'node$9',
- props: {
- style: {
- textAlign: 'center',
- },
- },
- children: [
- {
- componentName: 'Button.Group',
- id: 'node$a',
- props: {},
- children: [
- {
- componentName: 'Button',
- id: 'node$b',
- condition: false,
- loop: ['a', 'b', 'c'],
- props: {
- type: 'primary',
- style: {
- margin: '0 5px 0 5px',
- },
- },
- children: [
- {
- type: 'JSExpression',
- value: 'this.item',
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- constants: {
- ENV: 'prod',
- DOMAIN: 'xxx.xxx.com',
- },
- css: 'body {font-size: 12px;} .table { width: 100px;}',
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'J_Container',
- layout: {
- componentName: 'BasicLayout',
- props: {
- logo: '...',
- name: '测试网站',
- },
- },
- theme: {
- package: '@alife/theme-fusion',
- version: '^0.1.0',
- primary: '#ff9966',
- },
- },
- meta: {
- name: 'demo应用',
- git_group: 'appGroup',
- project_name: 'app_demo',
- description: '这是一个测试应用',
- spma: 'spa23d',
- creator: '月飞',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/package.json
deleted file mode 100644
index fcdfc7bd4b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/package.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.26.15",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "undefined": "*",
- "@alilc/antd-lowcode": "0.8.0",
- "@alife/container": "0.3.7"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 9e93a3ff6f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,1076 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Modal,
- Steps,
- Form,
- Input,
- Checkbox,
- Select,
- DatePicker,
- InputNumber,
- Button,
-} from '@alilc/antd-lowcode/dist/antd-lowcode.esm.js';
-
-import {
- Text as NextText,
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
-} from '@alife/container/lib/index.js';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const NextBlockCell = NextBlock.Cell;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = {
- books: [],
- currentStep: 0,
- isModifyDialogVisible: false,
- isModifyStatus: false,
- secondCommitText: '完成并提交',
- thirdAuditText: '审核中',
- thirdButtonText: '修改',
- customerProjectInfo: {
- id: null,
- systemProjectName: null,
- projectVersionTypeArray: null,
- projectVersionType: null,
- versionLine: 2,
- expectedTime: null,
- expectedNum: null,
- projectModal: null,
- displayWidth: null,
- displayHeight: null,
- displayInch: null,
- displayDpi: null,
- mainSoc: null,
- cpuCoreNum: null,
- instructions: null,
- osVersion: null,
- status: null,
- },
- versionLinesArray: [
- { label: 'AmapAuto 485', value: 1 },
- { label: 'AmapAuto 505', value: 2 },
- ],
- projectModalsArray: [
- { label: '车机', value: 1 },
- { label: '车镜', value: 2 },
- { label: '记录仪', value: 3 },
- { label: '其他', value: 4 },
- ],
- osVersionsArray: [
- { label: '安卓5', value: 1 },
- { label: '安卓6', value: 2 },
- { label: '安卓7', value: 3 },
- { label: '安卓8', value: 4 },
- { label: '安卓9', value: 5 },
- { label: '安卓10', value: 6 },
- ],
- instructionsArray: [
- { label: 'ARM64-V8', value: 'ARM64-V8' },
- { label: 'ARM32-V7', value: 'ARM32-V7' },
- { label: 'X86', value: 'X86' },
- { label: 'X64', value: 'X64' },
- ],
- };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentDidUpdate(prevProps, prevState, snapshot) {}
-
- componentWillUnmount() {}
-
- __jp__init() {
- /*...*/
- }
-
- __jp__initRouter() {
- /*...*/
- }
-
- __jp__initDataSource() {
- /*...*/
- }
-
- __jp__initEnv() {
- /*...*/
- }
-
- __jp__initUtils() {
- /*...*/
- }
-
- onFinishFirst() {
- /*...*/
- }
-
- onClickPreSecond() {
- /*...*/
- }
-
- onFinishSecond() {
- /*...*/
- }
-
- onClickModifyThird() {
- /*...*/
- }
-
- onOkModifyDialogThird() {
- //第三步 修改 对话框 确定
-
- this.setState({
- currentStep: 0,
- isModifyDialogVisible: false,
- });
- }
-
- onCancelModifyDialogThird() {
- //第三步 修改 对话框 取消
-
- this.setState({
- isModifyDialogVisible: false,
- });
- }
-
- onFinishFailed() {}
-
- onClickPreThird() {
- // 第三步 上一步
- this.setState({
- currentStep: 1,
- });
- }
-
- onClickFirstBack() {
- // 第一步 返回按钮
- this.$router.push('/myProjectList');
- }
-
- onClickSecondBack() {
- // 第二步 返回按钮
- this.$router.push('/myProjectList');
- }
-
- onClickThirdBack() {
- // 第三步 返回按钮
- this.$router.push('/myProjectList');
- }
-
- onValuesChange(_, values) {
- this.setState({
- customerProjectInfo: {
- ...this.state.customerProjectInfo,
- ...values,
- },
- });
- }
-
- componentDidMount() {}
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
- this.state.isModifyDialogVisible)}
- okText="确认"
- okType=""
- forceRender={false}
- cancelText="取消"
- zIndex={2000}
- destroyOnClose={false}
- confirmLoading={false}
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onOk',
- relatedEventName: 'onOkModifyDialogThird',
- },
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModifyDialogThird',
- },
- ],
- eventList: [
- { name: 'onCancel', disabled: true },
- { name: 'onOk', disabled: true },
- ],
- }}
- onOk={function () {
- this.onOkModifyDialogThird.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- onCancel={function () {
- this.onCancelModifyDialogThird.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- >
-
- 修改将撤回此前填写的信息
-
-
-
-
-
-
- this.state.currentStep)}>
-
-
-
-
-
- {!!__$$eval(() => this.state.currentStep === 0) && (
-
-
-
-
- )}
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- size="middle"
- />
-
-
-
-
-
-
-
- )}
- {!!__$$eval(() => this.state.currentStep === 1) && (
-
-
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- defaultValue=""
- min={0}
- />
-
-
-
-
-
-
-
-
-
-
-
-
- )}
- {!!__$$eval(() => this.state.currentStep === 2) && (
-
-
-
-
- this.state.thirdAuditText)}
- subTitle=""
- description=""
- style={{ width: '200px' }}
- />
-
-
-
-
-
- {!!__$$eval(
- () => this.state.customerProjectInfo.status > 2
- ) && (
-
- )}
-
-
-
- )}
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/schema.json5
deleted file mode 100644
index 4c829cfab1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo7-literal-condition2/schema.json5
+++ /dev/null
@@ -1,1703 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Text',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextText',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Modal',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Modal',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Steps',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Step',
- componentName: 'Steps.Step',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Steps',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Steps',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'P',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextP',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Input',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Input',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Item',
- componentName: 'Form.Item',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Checkbox',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Group',
- componentName: 'Checkbox.Group',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Select',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Select',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'DatePicker',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'DatePicker',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'InputNumber',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'InputNumber',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Button',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Button',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Form',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: 'Cell',
- componentName: 'NextBlockCell',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextBlock',
- },
- {
- devMode: 'lowcode',
- componentName: 'Slot',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Page',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextPage',
- },
- {
- devMode: 'lowcode',
- componentName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_dockcviv8fo1',
- props: {
- ref: 'outterView',
- style: {
- height: '100%',
- },
- },
- fileName: 'test',
- dataSource: {
- list: [],
- },
- css: 'body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}',
- lifeCycles: {
- constructor: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- componentDidMount: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- componentDidUpdate: {
- type: 'JSFunction',
- value: 'function(prevProps, prevState, snapshot) {}',
- },
- componentWillUnmount: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- },
- methods: {
- __jp__init: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initRouter: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initDataSource: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initEnv: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initUtils: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onFinishFirst: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onClickPreSecond: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onFinishSecond: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onClickModifyThird: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onOkModifyDialogThird: {
- type: 'JSFunction',
- value: 'function() {\n //第三步 修改 对话框 确定\n\n this.setState({\n currentStep: 0,\n isModifyDialogVisible: false,\n });\n }',
- },
- onCancelModifyDialogThird: {
- type: 'JSFunction',
- value: 'function() {\n //第三步 修改 对话框 取消\n\n this.setState({\n isModifyDialogVisible: false,\n });\n }',
- },
- onFinishFailed: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- onClickPreThird: {
- type: 'JSFunction',
- value: 'function() {\n // 第三步 上一步\n this.setState({\n currentStep: 1,\n });\n }',
- },
- onClickFirstBack: {
- type: 'JSFunction',
- value: "function() {\n // 第一步 返回按钮\n this.$router.push('/myProjectList');\n }",
- },
- onClickSecondBack: {
- type: 'JSFunction',
- value: "function() {\n // 第二步 返回按钮\n this.$router.push('/myProjectList');\n }",
- },
- onClickThirdBack: {
- type: 'JSFunction',
- value: "function() {\n // 第三步 返回按钮\n this.$router.push('/myProjectList');\n }",
- },
- onValuesChange: {
- type: 'JSFunction',
- value: 'function(_, values) {\n this.setState({\n customerProjectInfo: {\n ...this.state.customerProjectInfo,\n ...values,\n },\n });\n }',
- },
- },
- state: {
- books: [],
- currentStep: 0,
- isModifyDialogVisible: false,
- isModifyStatus: false,
- secondCommitText: '完成并提交',
- thirdAuditText: '审核中',
- thirdButtonText: '修改',
- customerProjectInfo: {
- id: null,
- systemProjectName: null,
- projectVersionTypeArray: null,
- projectVersionType: null,
- versionLine: 2,
- expectedTime: null,
- expectedNum: null,
- projectModal: null,
- displayWidth: null,
- displayHeight: null,
- displayInch: null,
- displayDpi: null,
- mainSoc: null,
- cpuCoreNum: null,
- instructions: null,
- osVersion: null,
- status: null,
- },
- versionLinesArray: [
- {
- label: 'AmapAuto 485',
- value: 1,
- },
- {
- label: 'AmapAuto 505',
- value: 2,
- },
- ],
- projectModalsArray: [
- {
- label: '车机',
- value: 1,
- },
- {
- label: '车镜',
- value: 2,
- },
- {
- label: '记录仪',
- value: 3,
- },
- {
- label: '其他',
- value: 4,
- },
- ],
- osVersionsArray: [
- {
- label: '安卓5',
- value: 1,
- },
- {
- label: '安卓6',
- value: 2,
- },
- {
- label: '安卓7',
- value: 3,
- },
- {
- label: '安卓8',
- value: 4,
- },
- {
- label: '安卓9',
- value: 5,
- },
- {
- label: '安卓10',
- value: 6,
- },
- ],
- instructionsArray: [
- {
- label: 'ARM64-V8',
- value: 'ARM64-V8',
- },
- {
- label: 'ARM32-V7',
- value: 'ARM32-V7',
- },
- {
- label: 'X86',
- value: 'X86',
- },
- {
- label: 'X64',
- value: 'X64',
- },
- ],
- },
- children: [
- {
- componentName: 'Modal',
- id: 'node_ockodngwu940',
- props: {
- title: '是否修改',
- visible: {
- type: 'JSExpression',
- value: 'this.state.isModifyDialogVisible',
- },
- okText: '确认',
- okType: '',
- forceRender: false,
- cancelText: '取消',
- zIndex: 2000,
- destroyOnClose: false,
- confirmLoading: false,
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onOk',
- relatedEventName: 'onOkModifyDialogThird',
- },
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModifyDialogThird',
- },
- ],
- eventList: [
- {
- name: 'onCancel',
- disabled: true,
- },
- {
- name: 'onOk',
- disabled: true,
- },
- ],
- },
- onOk: {
- type: 'JSFunction',
- value: 'function(){this.onOkModifyDialogThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- onCancel: {
- type: 'JSFunction',
- value: 'function(){this.onCancelModifyDialogThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- hidden: true,
- children: [
- {
- componentName: 'NextText',
- id: 'node_ockodngwu946',
- props: {
- type: 'inherit',
- children: '修改将撤回此前填写的信息',
- style: {
- fontStyle: 'normal',
- textAlign: 'left',
- display: 'block',
- fontFamily: 'arial, helvetica, microsoft yahei',
- fontWeight: 'normal',
- },
- },
- },
- ],
- },
- {
- componentName: 'NextPage',
- id: 'node_ocko19zplh1',
- props: {
- columns: 12,
- headerDivider: true,
- placeholderStyle: {
- gridRowEnd: 'span 1',
- gridColumnEnd: 'span 12',
- },
- placeholder: '页面主体内容:拖拽Block布局组件到这里',
- header: {
- type: 'JSSlot',
- title: 'header',
- },
- headerProps: {
- background: 'surface',
- },
- footer: {
- type: 'JSSlot',
- title: 'footer',
- },
- minHeight: '100vh',
- style: {},
- },
- title: '页面',
- children: [
- {
- componentName: 'NextBlock',
- id: 'node_ocko19zplh2',
- props: {
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- noPadding: false,
- noBorder: false,
- background: 'surface',
- layoutmode: 'O',
- colSpan: 12,
- rowSpan: 1,
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ocko19zplh3',
- props: {
- title: '',
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- layoutmode: 'O',
- childTotalColumns: 12,
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- children: [
- {
- componentName: 'NextP',
- id: 'node_ockoco6icv1w',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- flex: true,
- style: {
- marginBottom: '24px',
- },
- },
- title: '段落',
- children: [
- {
- componentName: 'Steps',
- id: 'node_ockoco6icv1x',
- props: {
- current: {
- type: 'JSExpression',
- value: 'this.state.currentStep',
- },
- },
- children: [
- {
- componentName: 'Steps.Step',
- id: 'node_ockoco6icv1y',
- props: {
- title: '版本申请',
- description: '',
- },
- },
- {
- componentName: 'Steps.Step',
- id: 'node_ockoco6icv1z',
- props: {
- title: '机器配置',
- subTitle: '',
- description: '',
- },
- },
- {
- componentName: 'Steps.Step',
- id: 'node_ockoco6icv20',
- props: {
- title: '项目审批',
- description: '',
- },
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextP',
- id: 'node_ockoco6icv12w',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- style: {
- display: 'flex',
- justifyContent: 'center',
- },
- },
- title: '段落',
- condition: {
- type: 'JSExpression',
- value: 'this.state.currentStep === 0',
- },
- children: [
- {
- componentName: 'Form',
- id: 'node_ockoco6icv12x',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 10,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onFinishFirst.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- style: {
- display: 'flex',
- flexDirection: 'column',
- width: '600px',
- justifyContent: 'center',
- },
- layout: 'vertical',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onFinishFirst',
- },
- {
- type: 'componentEvent',
- name: 'onValuesChange',
- relatedEventName: 'onValuesChange',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: true,
- },
- ],
- },
- initialValues: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo',
- },
- onValuesChange: {
- type: 'JSFunction',
- value: 'function(){this.onValuesChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockojhvrkn2u',
- props: {
- label: '',
- style: {
- width: '600px',
- },
- colon: false,
- name: 'id',
- },
- condition: false,
- children: [
- {
- componentName: 'Input',
- id: 'node_ockojhvrkn2v',
- props: {
- placeholder: '',
- style: {
- width: '600px',
- },
- bordered: false,
- disabled: true,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv12y',
- props: {
- label: '版本类型选择',
- name: 'projectVersionTypeArray',
- initialValue: '',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- flexDirection: 'column',
- width: '600px',
- },
- requiredobj: {
- required: true,
- message: '请选择版本类型',
- },
- },
- children: [
- {
- componentName: 'Checkbox.Group',
- id: 'node_ockoco6icv12z',
- props: {
- options: [
- {
- label: '基础版本',
- value: '3',
- },
- {
- label: 'AR导航',
- value: '1',
- },
- {
- label: '货车导航',
- value: '2',
- },
- {
- label: 'UI定制',
- value: '4',
- disabled: false,
- },
- ],
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv13a',
- props: {
- label: '版本线选择',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- width: '600px',
- },
- name: 'versionLine',
- requiredobj: {
- required: true,
- message: '请选择版本线',
- },
- extra: '',
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockoco6icv13b',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.versionLinesArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- placeholder: '请选择版本线',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv13o',
- props: {
- label: '项目名称',
- colon: false,
- required: true,
- style: {
- display: 'flex',
- },
- labelAlign: 'left',
- extra: '',
- name: 'systemProjectName',
- requiredobj: {
- required: true,
- message: '请按格式填写项目名称',
- },
- typeobj: {
- type: 'string',
- message: '请输入项目名称,格式:公司简称-产品名称-版本类型',
- },
- lenobj: {
- max: 100,
- message: '项目名称不能超过100个字符',
- },
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ockoco6icv13p',
- props: {
- placeholder: '公司简称-产品名称-版本类型',
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv13v',
- props: {
- label: '预期交付时间',
- style: {
- width: '600px',
- },
- colon: false,
- required: true,
- name: 'expectedTime',
- labelAlign: 'left',
- requiredobj: {
- required: true,
- message: '请填写预期交付时间',
- },
- },
- children: [
- {
- componentName: 'DatePicker',
- id: 'node_ockoco6icv13w',
- props: {
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bv8',
- props: {
- label: '预期出货量',
- style: {
- width: '600px',
- },
- required: true,
- requiredobj: {
- required: true,
- message: '请填写预期出货量',
- },
- name: 'expectedNum',
- labelAlign: 'left',
- colon: false,
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bv9',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '单位(台)使用该版本的机器数量+预计出货量,请如实填写',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- size: 'middle',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv130',
- props: {
- wrapperCol: {
- offset: '',
- },
- style: {
- flexDirection: 'row',
- alignItems: 'baseline',
- justifyContent: 'space-between',
- width: '600px',
- display: 'block',
- },
- labelAlign: 'left',
- colon: false,
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockoco6icv132',
- props: {
- style: {
- margin: '0px',
- },
- children: '返回',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickFirstBack',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickFirstBack.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockoco6icv131',
- props: {
- type: 'primary',
- children: '下一步',
- htmlType: 'submit',
- style: {
- boxShadow: 'rgba(31, 56, 88, 0.2) 0px 0px 0px 0px',
- float: 'right',
- },
- __events: {
- eventDataList: [],
- eventList: [
- {
- name: 'onClick',
- disabled: false,
- },
- ],
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextP',
- id: 'node_ockoco6icv1ue',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- style: {
- display: 'flex',
- justifyContent: 'center',
- },
- },
- title: '段落',
- condition: {
- type: 'JSExpression',
- value: 'this.state.currentStep === 1',
- },
- children: [
- {
- componentName: 'Form',
- id: 'node_ockoco6icv1uf',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 10,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onFinishSecond.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- style: {
- display: 'flex',
- flexDirection: 'column',
- width: '600px',
- justifyContent: 'center',
- height: '800px',
- },
- layout: 'vertical',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onFinishSecond',
- },
- {
- type: 'componentEvent',
- name: 'onValuesChange',
- relatedEventName: 'onValuesChange',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: true,
- },
- ],
- },
- initialValues: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo',
- },
- onValuesChange: {
- type: 'JSFunction',
- value: 'function(){this.onValuesChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv1ui',
- props: {
- label: '设备类型选择',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- width: '600px',
- },
- name: 'projectModal',
- requiredobj: {
- required: true,
- message: '请选择设备类型',
- },
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockoco6icv1uj',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.projectModalsArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- placeholder: '请选择设备类型',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bv17',
- props: {
- label: '屏幕分辨率宽',
- style: {
- width: '600px',
- },
- name: 'displayWidth',
- colon: false,
- required: true,
- requiredobj: {
- required: true,
- message: '请输入屏幕分辨率宽',
- },
- labelAlign: 'left',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bv18',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '例如1280',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bv10',
- props: {
- label: '屏幕分辨率高',
- style: {
- width: '600px',
- },
- labelAlign: 'left',
- colon: false,
- name: 'displayHeight',
- required: true,
- requiredobj: {
- required: true,
- message: '请输入屏幕分辨率高',
- },
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bv11',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '例如720',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bvt',
- props: {
- label: '屏幕尺寸(inch)',
- style: {
- width: '600px',
- },
- name: 'displayInch',
- labelAlign: 'left',
- required: true,
- colon: false,
- requiredobj: {
- required: true,
- message: '请输入屏幕尺寸',
- },
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bvu',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '请输入尺寸',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bvm',
- props: {
- label: '屏幕DPI',
- style: {
- width: '600px',
- },
- labelAlign: 'left',
- colon: false,
- required: false,
- name: 'displayDpi',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bvn',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: 'UI定制项目必填',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv1v3',
- props: {
- label: '芯片名称',
- colon: false,
- required: true,
- style: {
- display: 'flex',
- },
- labelAlign: 'left',
- extra: '',
- name: 'mainSoc',
- requiredobj: {
- required: true,
- message: '请输入芯片名称',
- },
- lenobj: {
- max: 50,
- message: '芯片名称不能超过50个字符',
- },
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ockoco6icv1v4',
- props: {
- placeholder: '请输入芯片名称',
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bvf',
- props: {
- label: '芯片核数',
- style: {
- width: '600px',
- },
- required: true,
- requiredobj: {
- required: true,
- message: '请输入芯片核数',
- },
- name: 'cpuCoreNum',
- labelAlign: 'left',
- colon: false,
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bvg',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '请输入芯片核数',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- defaultValue: '',
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpxba11aa',
- props: {
- label: '指令集',
- style: {
- width: '600px',
- },
- required: true,
- requiredobj: {
- required: true,
- message: '请选择指令集',
- },
- name: 'instructions',
- colon: false,
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockpxba11ab',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.instructionsArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockodz1kiqh',
- props: {
- label: '系统版本',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- width: '600px',
- },
- name: 'osVersion',
- requiredobj: {
- required: true,
- message: '请选择系统版本',
- },
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockodz1kiqi',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.osVersionsArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- placeholder: '请选择系统版本',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv1uq',
- props: {
- wrapperCol: {
- offset: '',
- },
- style: {
- flexDirection: 'row',
- width: '600px',
- display: 'flex',
- },
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockoco6icv1ur',
- props: {
- style: {
- marginLeft: '0',
- },
- children: '返回',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickSecondBack',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickSecondBack.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockoco6icv1vb',
- props: {
- type: 'primary',
- children: {
- type: 'JSExpression',
- value: 'this.state.secondCommitText',
- },
- htmlType: 'submit',
- style: {
- float: 'right',
- marginLeft: '20px',
- },
- loading: {
- type: 'JSExpression',
- value: 'this.state.LOADING_ADD_OR_UPDATE_CUSTOMER_PROJECT',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockoco6icv1us',
- props: {
- type: 'primary',
- children: '上一步',
- htmlType: 'submit',
- style: {
- marginLeft: '0px',
- float: 'right',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickPreSecond',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickPreSecond.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextP',
- id: 'node_ockodngwu9m',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- style: {
- display: 'flex',
- justifyContent: 'center',
- },
- },
- title: '段落',
- condition: {
- type: 'JSExpression',
- value: 'this.state.currentStep === 2',
- },
- children: [
- {
- componentName: 'Form',
- id: 'node_ockodngwu9n',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 10,
- },
- onFinishFailed: {
- type: 'JSFunction',
- value: 'function(){this.onFinishFailed.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- style: {
- display: 'flex',
- flexDirection: 'column',
- width: '600px',
- justifyContent: 'center',
- },
- layout: 'vertical',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinishFailed',
- relatedEventName: 'onFinishFailed',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: false,
- },
- {
- name: 'onFinishFailed',
- disabled: true,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: false,
- },
- ],
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockodngwu91m',
- props: {
- label: '',
- },
- children: [
- {
- componentName: 'Steps',
- id: 'node_ockodngwu91n',
- props: {
- current: 1,
- style: {
- width: '600px',
- display: 'flex',
- justifyContent: 'space-around',
- alignItems: 'center',
- height: '300px',
- },
- labelPlacement: 'horizontal',
- direction: 'vertical',
- },
- children: [
- {
- componentName: 'Steps.Step',
- id: 'node_ockodngwu91o',
- props: {
- title: '提交完成',
- description: '',
- style: {
- width: '200px',
- },
- },
- },
- {
- componentName: 'Steps.Step',
- id: 'node_ockodngwu91p',
- props: {
- title: {
- type: 'JSExpression',
- value: 'this.state.thirdAuditText',
- },
- subTitle: '',
- description: '',
- style: {
- width: '200px',
- },
- },
- },
- ],
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockodngwu914',
- props: {
- wrapperCol: {
- offset: '',
- },
- style: {
- flexDirection: 'row',
- width: '600px',
- display: 'flex',
- },
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockodngwu915',
- props: {
- style: {
- marginLeft: '0',
- },
- children: '返回',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickThirdBack',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickThirdBack.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockodngwu916',
- props: {
- type: 'primary',
- children: {
- type: 'JSExpression',
- value: 'this.state.thirdButtonText',
- },
- htmlType: 'submit',
- style: {
- float: 'right',
- marginLeft: '20px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickModifyThird',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickModifyThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockosjrkvr1d',
- props: {
- type: 'primary',
- children: '上一步',
- htmlType: 'submit',
- style: {
- marginLeft: '0px',
- float: 'right',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickPreThird',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickPreThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- condition: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.status > 2',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- i18n: {},
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/package.json
deleted file mode 100644
index 342a5a0774..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/package.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.26.15",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-http-handler": "^1.0.0",
- "@alilc/lowcode-components": "^1.0.0"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
deleted file mode 100644
index 9a661ad753..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
+++ /dev/null
@@ -1,116 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Page, Table } from '@alilc/lowcode-components';
-
-import { createHttpHandler as __$$createHttpRequestHandler } from '@alilc/lowcode-datasource-http-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Example$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: { http: __$$createHttpRequestHandler() },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'userList',
- type: 'http',
- description: '用户列表',
- options: function () {
- return {
- uri: 'https://api.example.com/user/list',
- };
- }.bind(_this),
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
this.dataSourceMap['userList'])}
- columns={[
- { dataIndex: 'name', title: '姓名' },
- { dataIndex: 'age', title: '年龄' },
- ]}
- />
-
- );
- }
-}
-
-export default Example$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/schema.json5
deleted file mode 100644
index 1e61996cf5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo8-datasource-prop/schema.json5
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/lowcode-components',
- version: '^1.0.0',
- componentName: 'Page',
- destructuring: true,
- exportName: 'Page',
- },
- {
- package: '@alilc/lowcode-components',
- version: '^1.0.0',
- componentName: 'Table',
- destructuring: true,
- exportName: 'Table',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_ockp6ci0hm1',
- props: {},
- fileName: 'example',
- dataSource: {
- list: [
- {
- id: 'userList',
- type: 'http',
- description: '用户列表',
- options: {
- uri: 'https://api.example.com/user/list',
- },
- },
- ],
- },
- children: [
- {
- componentName: 'Table',
- id: 'node_ockp6ci0hm22',
- props: {
- dataSource: {
- type: 'DataSource',
- id: 'userList',
- },
- columns: [
- {
- dataIndex: 'name',
- title: '姓名',
- },
- {
- dataIndex: 'age',
- title: '年龄',
- },
- ],
- },
- },
- ],
- },
- ],
- meta: {
- name: 'example',
- description: 'Example',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/package.json
deleted file mode 100644
index d7d07dc6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/package.json
+++ /dev/null
@@ -1,43 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.19.18",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-jsonp-handler": "^1.0.0"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx
deleted file mode 100644
index 799ca0d28f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx
+++ /dev/null
@@ -1,125 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Switch } from '@alifd/next';
-
-import { createJsonpHandler as __$$createJsonpRequestHandler } from '@alilc/lowcode-datasource-jsonp-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import '@alifd/next/lib/switch/style';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class $$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: { jsonp: __$$createJsonpRequestHandler() },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'todos',
- isInit: function () {
- return true;
- }.bind(_this),
- type: 'jsonp',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://a0ee9135-6a7f-4c0f-a215-f0f247ad907d.mock.pstmn.io',
- };
- }.bind(_this),
- dataHandler: function dataHandler(data) {
- return data.data;
- },
- },
- ],
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
- {__$$evalArray(() => this.dataSourceMap.todos.data).map((item, index) =>
- ((__$$context) => (
-
- item.done)}
- />
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
- );
- }
-}
-
-export default $$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/schema.json5
deleted file mode 100644
index f91f132ad2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo9-datasource-engine/schema.json5
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Switch',
- package: '@alifd/next',
- version: '1.19.18',
- exportName: 'Switch',
- destructuring: true,
- subName: '',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- children: [
- {
- componentName: 'Div',
- props: {},
- children: [
- {
- componentName: 'Switch',
- props: {
- checkedChildren: '开',
- unCheckedChildren: '关',
- checked: {
- type: 'JSExpression',
- value: 'this.item.done',
- },
- },
- },
- ],
- loop: {
- type: 'JSExpression',
- value: 'this.dataSourceMap.todos.data',
- },
- },
- ],
- dataSource: {
- list: [
- {
- id: 'todos',
- isInit: true,
- type: 'jsonp',
- options: {
- method: 'GET',
- uri: 'https://a0ee9135-6a7f-4c0f-a215-f0f247ad907d.mock.pstmn.io',
- },
- dataHandler: {
- type: 'JSFunction',
- value: 'function dataHandler(data) {return data.data;}',
- },
- },
- ],
- },
- },
- ],
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/package.json
deleted file mode 100644
index fb35f3cf46..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.26.15",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "undefined": "*",
- "@alilc/antd-lowcode-materials": "0.9.4",
- "@alife/mc-assets-1935": "0.1.42",
- "@alife/container": "0.3.7"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 922ad47ad8..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,822 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Modal,
- Button,
- Typography,
- Form,
- Select,
- Input,
- ConfigProvider,
- Tooltip,
- Empty,
-} from '@alilc/antd-lowcode-materials/dist/antd-lowcode.esm.js';
-
-import {
- AliAutoDiv,
- AliAutoSearchTable,
-} from '@alife/mc-assets-1935/build/lowcode/index.js';
-
-import {
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
-} from '@alife/container/lib/index.js';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const AliAutoDivDefault = AliAutoDiv.default;
-
-const AliAutoSearchTableDefault = AliAutoSearchTable.default;
-
-const NextBlockCell = NextBlock.Cell;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = {
- pkgs: [],
- total: 0,
- isSearch: false,
- projects: [],
- results: [],
- resultVisible: false,
- };
-
- this.__jp__init();
- this.statusDesc = {
- 0: '失败',
- 1: '成功',
- 2: '构建中',
- 3: '构建超时',
- };
- this.pageParams = {};
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentDidUpdate(prevProps, prevState, snapshot) {}
-
- componentWillUnmount() {}
-
- __jp__init() {
- /*...*/
- }
-
- __jp__initRouter() {
- if (window.arsenal) {
- this.$router = new window.jianpin.ArsenalRouter({
- app: this.props.microApp,
- });
- } else {
- this.$router = new window.jianpin.ArsenalRouter();
- }
- }
-
- __jp__initDataSource() {
- /*...*/
- }
-
- __jp__initEnv() {
- /*...*/
- }
-
- __jp__initConfig() {
- /*...*/
- }
-
- __jp__initUtils() {
- this.$utils = {
- message: window.jianpin.utils.message,
- axios: window.jianpin.utils.axios,
- moment: window.jianpin.utils.moment,
- };
- }
-
- fetchPkgs() {
- /*...*/
- }
-
- onPageChange(pageIndex, pageSize) {
- this.pageParams = {
- pageIndex,
- pageSize,
- };
- this.fetchPkgs();
- }
-
- renderTime(time) {
- return this.$utils.moment(time).format('YYYY-MM-DD HH:mm');
- }
-
- renderUserName(user) {
- return user.user_name;
- }
-
- reload() {
- /*...*/
- }
-
- handleResult() {
- /*...*/
- }
-
- handleDetail() {
- // 跳转详情页面 TODO
- }
-
- onResultCancel() {
- this.setState({
- resultVisible: false,
- });
- }
-
- formatResult(item) {
- if (!item) {
- return '暂无结果';
- }
- const { channel, plat, version, status } = item;
- return [channel, plat, version, status].join('-');
- }
-
- handleDownload() {
- /*...*/
- }
-
- onFinish() {
- /*...*/
- }
-
- componentDidMount() {
- this.$ds.resolve('PROJECTS', {
- params: {
- size: 5000,
- },
- });
- // if (this.state.init === false) {
- // this.setState({
- // init: true,
- // });
- // }
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
this.state.resultVisible)}
- footer={
-
- }
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onResultCancel',
- },
- ],
- eventList: [
- { name: 'onCancel', disabled: true },
- { name: 'onOk', disabled: false },
- ],
- }}
- onCancel={function () {
- this.onResultCancel.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- width="720px"
- centered={true}
- >
- {__$$evalArray(() => this.state.results).map((item, index) =>
- ((__$$context) => (
-
- {!!__$$eval(
- () =>
- __$$context.state.results &&
- __$$context.state.results.length > 0
- ) && (
-
-
-
- )}
-
- {__$$eval(() => __$$context.formatResult(item))}
-
- {!!__$$eval(() => item.download_link) && (
- item.download_link)}
- target="_blank"
- >
- {' '}
- - 点击下载
-
- )}
- {!!__$$eval(() => item.release_notes) && (
- item.release_notes)}
- target="_blank"
- >
- {' '}
- - 跳转发布节点
-
- )}
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {!!__$$eval(
- () =>
- !this.state.isSearch ||
- (this.state.isSearch && this.state.pkgs.length > 0)
- ) && (
- this.state.pkgs)}
- columns={[
- {
- title: 'ID',
- dataIndex: 'id',
- key: 'name',
- width: 80,
- },
- {
- title: '渠道号',
- dataIndex: 'channels',
- key: 'age',
- width: 142,
- render: (text, record, index) =>
- ((__$$context) =>
- __$$evalArray(() => text.split(',')).map(
- (item, index) =>
- ((__$$context) => (
-
- {__$$eval(() => item)}
-
- ))(
- __$$createChildContext(__$$context, {
- item,
- index,
- })
- )
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- },
- {
- title: '版本号',
- dataIndex: 'dic_version',
- key: 'address',
- render: (text, record, index) =>
- ((__$$context) => (
- text || []).map(
- (item, index) =>
- ((__$$context) => (
-
- {__$$eval(
- () =>
- item.channelId +
- ' / ' +
- item.version
- )}
-
- ))(
- __$$createChildContext(__$$context, {
- item,
- index,
- })
- )
- )}
- >
-
- {__$$eval(() => text[0].version)}
-
-
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 120,
- },
- { title: '构建Job', dataIndex: 'job_name', width: 180 },
- {
- title: '构建类型',
- dataIndex: 'packaging_type',
- width: 94,
- },
- {
- title: '构建状态',
- dataIndex: 'status',
- render: (text, record, index) =>
- ((__$$context) => [
-
- {__$$eval(() => __$$context.statusDesc[text])}
- ,
- !!__$$eval(() => text === 2) && (
-
- ),
- ])(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 100,
- },
- {
- title: '构建时间',
- dataIndex: 'start_time',
- render: function () {
- return this.renderTime.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- width: 148,
- },
- {
- title: '构建人',
- dataIndex: 'user',
- render: function () {
- return this.renderUserName.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- width: 80,
- },
- {
- title: 'Jenkins 链接',
- dataIndex: 'jenkins_link',
- render: (text, record, index) =>
- ((__$$context) => [
- !!__$$eval(() => text) && (
- text)}
- target="_blank"
- >
- 查看
-
- ),
- !!__$$eval(() => !text) && (
- 暂无
- ),
- ])(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 120,
- },
- {
- title: '测试平台链接',
- dataIndex: 'is_run_testing',
- width: 120,
- render: (text, record, index) =>
- ((__$$context) => [
- !!__$$eval(() => text) && (
-
- 查看
-
- ),
- !!__$$eval(() => !text) && (
- 暂无
- ),
- ])(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- },
- { title: '触发源', dataIndex: 'source', width: 120 },
- {
- title: '详情',
- dataIndex: 'id',
- render: (text, record, index) =>
- ((__$$context) => (
-
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 80,
- fixed: 'right',
- },
- {
- title: '结果',
- dataIndex: 'id',
- render: (text, record, index) =>
- ((__$$context) => (
-
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 80,
- fixed: 'right',
- },
- {
- title: '重新执行',
- dataIndex: 'id',
- width: 92,
- render: (text, record, index) =>
- ((__$$context) => (
-
- }
- shape="circle"
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'reload',
- },
- ],
- eventList: [
- { name: 'onClick', disabled: true },
- ],
- }}
- onClick={function () {
- this.reload.apply(
- this,
- Array.prototype.slice
- .call(arguments)
- .concat([])
- );
- }.bind(__$$context)}
- />
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- fixed: 'right',
- },
- ]}
- actions={[]}
- pagination={{
- total: __$$eval(() => this.state.total),
- defaultPageSize: 8,
- onPageChange: function () {
- return this.onPageChange.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- }}
- scrollX={1200}
- />
- )}
-
-
-
-
-
-
-
- {!!__$$eval(
- () => this.state.pkgs.length < 1 && this.state.isSearch
- ) && }
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/schema.json5
deleted file mode 100644
index a499dfc650..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_10-jsslot/schema.json5
+++ /dev/null
@@ -1,1206 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- devMode: 'lowcode',
- componentName: 'Slot',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Button',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Button',
- },
- {
- package: '@alife/mc-assets-1935',
- version: '0.1.42',
- exportName: 'AliAutoDiv',
- main: 'build/lowcode/index.js',
- destructuring: true,
- subName: 'default',
- componentName: 'AliAutoDivDefault',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Typography',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Text',
- componentName: 'Typography.Text',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Typography',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Link',
- componentName: 'Typography.Link',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Modal',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Modal',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Select',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Select',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Item',
- componentName: 'Form.Item',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Input',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Input',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Form',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'P',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextP',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: 'Cell',
- componentName: 'NextBlockCell',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextBlock',
- },
- {
- package: '@alife/mc-assets-1935',
- version: '0.1.42',
- exportName: 'AliAutoSearchTable',
- main: 'build/lowcode/index.js',
- destructuring: true,
- subName: 'default',
- componentName: 'AliAutoSearchTableDefault',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'ConfigProvider',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'ConfigProvider',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Empty',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Empty',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Page',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextPage',
- },
- {
- devMode: 'lowcode',
- componentName: 'Page',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.9.4',
- exportName: 'Tooltip',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Tooltip',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_dockcviv8fo1',
- props: {
- ref: 'outterView',
- style: {
- height: '100%',
- },
- },
- fileName: 'test',
- dataSource: {
- list: [],
- },
- css: 'body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}',
- lifeCycles: {
- constructor: {
- type: 'JSFunction',
- value: "function() {\n this.__jp__init();\n this.statusDesc = {\n 0: '失败',\n 1: '成功',\n 2: '构建中',\n 3: '构建超时',\n };\n this.pageParams = {};\n }",
- },
- componentDidMount: {
- type: 'JSFunction',
- value: "function() {\n this.$ds.resolve('PROJECTS', {\n params: {\n size: 5000,\n },\n });\n // if (this.state.init === false) {\n // this.setState({\n // init: true,\n // });\n // }\n }",
- },
- componentDidUpdate: {
- type: 'JSFunction',
- value: 'function(prevProps, prevState, snapshot) {}',
- },
- componentWillUnmount: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- },
- methods: {
- __jp__init: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initRouter: {
- type: 'JSFunction',
- value: 'function() {\n if (window.arsenal) {\n this.$router = new window.jianpin.ArsenalRouter({\n app: this.props.microApp,\n });\n } else {\n this.$router = new window.jianpin.ArsenalRouter();\n }\n}',
- },
- __jp__initDataSource: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initEnv: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initConfig: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initUtils: {
- type: 'JSFunction',
- value: 'function() {\n this.$utils = {\n message: window.jianpin.utils.message,\n axios: window.jianpin.utils.axios,\n moment: window.jianpin.utils.moment,\n };\n}',
- },
- fetchPkgs: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- onPageChange: {
- type: 'JSFunction',
- value: 'function(pageIndex, pageSize) {\n this.pageParams = {\n pageIndex,\n pageSize,\n };\n this.fetchPkgs();\n }',
- },
- renderTime: {
- type: 'JSFunction',
- value: "function(time) {\n return this.$utils.moment(time).format('YYYY-MM-DD HH:mm');\n }",
- },
- renderUserName: {
- type: 'JSFunction',
- value: 'function(user) {\n return user.user_name;\n }',
- },
- reload: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleResult: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleDetail: {
- type: 'JSFunction',
- value: 'function() {\n // 跳转详情页面 TODO\n }',
- },
- onResultCancel: {
- type: 'JSFunction',
- value: 'function() {\n this.setState({\n resultVisible: false,\n });\n }',
- },
- formatResult: {
- type: 'JSFunction',
- value: "function(item) {\n if (!item) {\n return '暂无结果';\n }\n const { channel, plat, version, status } = item;\n return [channel, plat, version, status].join('-');\n }",
- },
- handleDownload: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- },
- state: {
- pkgs: [],
- total: 0,
- isSearch: false,
- projects: [],
- results: [],
- resultVisible: false,
- },
- children: [
- {
- componentName: 'Modal',
- id: 'node_ocksh9yppxb',
- props: {
- title: '查看结果',
- visible: {
- type: 'JSExpression',
- value: 'this.state.resultVisible',
- },
- footer: {
- type: 'JSSlot',
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh9yppxf',
- props: {
- type: 'primary',
- children: '确定',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onResultCancel',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onResultCancel.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onResultCancel',
- },
- ],
- eventList: [
- {
- name: 'onCancel',
- disabled: true,
- },
- {
- name: 'onOk',
- disabled: false,
- },
- ],
- },
- onCancel: {
- type: 'JSFunction',
- value: 'function(){this.onResultCancel.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- width: '720px',
- centered: true,
- },
- hidden: true,
- children: [
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockshazuxa4',
- props: {
- style: {
- width: '100%',
- },
- },
- loop: {
- type: 'JSExpression',
- value: 'this.state.results',
- },
- children: [
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockshazuxai',
- props: {
- style: {
- width: '100%',
- textAlign: 'left',
- marginBottom: '10px',
- },
- },
- condition: {
- type: 'JSExpression',
- value: 'this.state.results && this.state.results.length > 0',
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockshazuxah',
- props: {
- type: 'primary',
- children: '下载全部',
- size: 'small',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'handleDownload',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.handleDownload.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- {
- componentName: 'Typography.Text',
- id: 'node_ockshazuxa5',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.formatResult(this.item)',
- },
- },
- },
- {
- componentName: 'Typography.Link',
- id: 'node_ockshazuxa6',
- props: {
- href: {
- type: 'JSExpression',
- value: 'this.item.download_link',
- },
- target: '_blank',
- children: ' - 点击下载',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.item.download_link',
- },
- },
- {
- componentName: 'Typography.Link',
- id: 'node_ockshazuxa7',
- props: {
- href: {
- type: 'JSExpression',
- value: 'this.item.release_notes',
- },
- target: '_blank',
- children: ' - 跳转发布节点',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.item.release_notes',
- },
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextPage',
- id: 'node_ocko19zplh1',
- props: {
- columns: 12,
- headerDivider: true,
- placeholderStyle: {
- gridRowEnd: 'span 1',
- gridColumnEnd: 'span 12',
- },
- placeholder: '页面主体内容:拖拽Block布局组件到这里',
- header: {
- type: 'JSSlot',
- title: 'header',
- },
- headerProps: {
- background: 'surface',
- },
- footer: {
- type: 'JSSlot',
- title: 'footer',
- },
- minHeight: '100vh',
- },
- title: '页面',
- children: [
- {
- componentName: 'NextBlock',
- id: 'node_ocko19zplh2',
- props: {
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- noPadding: false,
- noBorder: false,
- background: 'surface',
- layoutmode: 'O',
- colSpan: 12,
- rowSpan: 1,
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ocko19zplh3',
- props: {
- title: '',
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- layoutmode: 'O',
- childTotalColumns: 12,
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- children: [
- {
- componentName: 'NextP',
- id: 'node_ocks8dtt1ms',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'Form',
- id: 'node_ocks8dtt1mt',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 14,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onFinish.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- layout: 'inline',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onFinish',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: false,
- },
- ],
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1mz',
- props: {
- label: '项目名称/渠道号',
- name: 'channel_id',
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ocksfuhwhsd',
- props: {
- style: {
- width: '280px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.projects',
- },
- showArrow: true,
- tokenSeparators: [],
- showSearch: true,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1m12',
- props: {
- label: '版本号',
- name: 'buildId',
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ocksfuhwhs3',
- props: {
- placeholder: '请输入',
- style: {
- width: '280px',
- },
- size: 'middle',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1m18',
- props: {
- label: '构建人',
- name: 'user_id',
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ocksfuhwhsi',
- props: {
- style: {
- width: 200,
- },
- options: [
- {
- label: 'A',
- value: 'A',
- },
- {
- label: 'B',
- value: 'B',
- },
- {
- label: 'C',
- value: 'C',
- },
- ],
- showSearch: true,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1m19',
- props: {
- label: 'ID',
- name: 'id',
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ocksfuhwhs8',
- props: {
- placeholder: '请输入',
- style: {
- width: '160px',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1mw',
- props: {
- wrapperCol: {
- offset: 6,
- },
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ocks8dtt1mx',
- props: {
- type: 'primary',
- children: '查询',
- htmlType: 'submit',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextBlock',
- id: 'node_ockshc4ifn1b',
- props: {
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ockshc4ifn1c',
- props: {
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- title: '子区块',
- children: [
- {
- componentName: 'NextP',
- id: 'node_ockshc4ifn1d',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'ConfigProvider',
- id: 'node_ockshc4ifn1e',
- props: {
- locale: 'zh-CN',
- },
- children: [
- {
- componentName: 'AliAutoSearchTableDefault',
- id: 'node_ocksfuhwhsx',
- props: {
- rowKey: 'key',
- dataSource: {
- type: 'JSExpression',
- value: 'this.state.pkgs',
- },
- columns: [
- {
- title: 'ID',
- dataIndex: 'id',
- key: 'name',
- width: 80,
- },
- {
- title: '渠道号',
- dataIndex: 'channels',
- key: 'age',
- width: 142,
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh2bq0428',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.item',
- },
- style: {
- display: 'block',
- },
- },
- loop: {
- type: 'JSExpression',
- value: "this.text.split(',')",
- },
- },
- ],
- },
- },
- {
- title: '版本号',
- dataIndex: 'dic_version',
- key: 'address',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Tooltip',
- id: 'node_ocksso4xavj',
- props: {
- title: {
- type: 'JSSlot',
- value: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksso4xavn',
- props: {
- children: {
- type: 'JSExpression',
- value: "this.item. channelId + ' / ' + this.item.version",
- },
- style: {
- display: 'block',
- color: '#FFFFFF',
- },
- },
- loop: {
- type: 'JSExpression',
- value: 'this.text || []',
- },
- },
- ],
- },
- },
- children: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksso4xavm',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.text[0].version',
- },
- },
- },
- ],
- },
- ],
- },
- width: 120,
- },
- {
- title: '构建Job',
- dataIndex: 'job_name',
- width: 180,
- },
- {
- title: '构建类型',
- dataIndex: 'packaging_type',
- width: 94,
- },
- {
- title: '构建状态',
- dataIndex: 'status',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh3jkxzw',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.statusDesc[this.text]',
- },
- },
- },
- {
- componentName: 'Icon',
- id: 'node_ocksh3jkxzx',
- props: {
- type: 'SyncOutlined',
- size: 16,
- spin: true,
- style: {
- marginLeft: '10px',
- },
- },
- condition: {
- type: 'JSExpression',
- value: 'this.text === 2',
- },
- },
- ],
- },
- width: 100,
- },
- {
- title: '构建时间',
- dataIndex: 'start_time',
- render: {
- type: 'JSFunction',
- value: 'function(){ return this.renderTime.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- width: 148,
- },
- {
- title: '构建人',
- dataIndex: 'user',
- render: {
- type: 'JSFunction',
- value: 'function(){ return this.renderUserName.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- width: 80,
- },
- {
- title: 'Jenkins 链接',
- dataIndex: 'jenkins_link',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Link',
- id: 'node_ocksh64kbx21',
- props: {
- href: {
- type: 'JSExpression',
- value: 'this.text',
- },
- target: '_blank',
- children: '查看',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.text',
- },
- },
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh64kbx22',
- props: {
- children: '暂无',
- },
- condition: {
- type: 'JSExpression',
- value: '!this.text',
- },
- },
- ],
- },
- width: 120,
- },
- {
- title: '测试平台链接',
- dataIndex: 'is_run_testing',
- width: 120,
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Link',
- id: 'node_ocksh3jkxz3e',
- props: {
- href: 'http://rivermap.alibaba.net/dashboard/testExecute',
- target: '_blank',
- children: '查看',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.text',
- },
- },
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh3jkxz3f',
- props: {
- children: '暂无',
- },
- condition: {
- type: 'JSExpression',
- value: '!this.text',
- },
- },
- ],
- },
- },
- {
- title: '触发源',
- dataIndex: 'source',
- width: 120,
- },
- {
- title: '详情',
- dataIndex: 'id',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh8yryw7',
- props: {
- type: 'link',
- children: '查看',
- size: 'small',
- style: {
- padding: '0px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'handleDetail',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.handleDetail.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- width: 80,
- fixed: 'right',
- },
- {
- title: '结果',
- dataIndex: 'id',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh9v6jw7',
- props: {
- type: 'link',
- children: '查看',
- size: 'small',
- style: {
- padding: '0px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'handleResult',
- paramStr: 'this.text',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.handleResult.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- ghost: false,
- href: {
- type: 'JSExpression',
- value: 'this.text',
- },
- },
- },
- ],
- },
- width: 80,
- fixed: 'right',
- },
- {
- title: '重新执行',
- dataIndex: 'id',
- width: 92,
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh96rad1g',
- props: {
- type: 'text',
- children: '',
- icon: {
- type: 'JSSlot',
- value: [
- {
- componentName: 'Icon',
- id: 'node_ocksh96rad1j',
- props: {
- type: 'ReloadOutlined',
- size: 14,
- color: '#0593d3',
- style: {
- padding: '3px',
- border: '1px solid #0593d3',
- borderRadius: '14px',
- cursor: 'pointer',
- height: '22px',
- },
- spin: false,
- },
- },
- ],
- },
- shape: 'circle',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'reload',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.reload.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- fixed: 'right',
- },
- ],
- actions: [],
- pagination: {
- total: {
- type: 'JSExpression',
- value: 'this.state.total',
- },
- defaultPageSize: 8,
- onPageChange: {
- type: 'JSFunction',
- value: 'function(){ return this.onPageChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- scrollX: 1200,
- },
- condition: {
- type: 'JSExpression',
- value: '!this.state.isSearch || (this.state.isSearch && this.state.pkgs.length > 0)',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextBlock',
- id: 'node_ocksk6f8fa3b',
- props: {
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ocksk6f8fa3c',
- props: {
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- title: '子区块',
- children: [
- {
- componentName: 'NextP',
- id: 'node_ocksk6f8fa3d',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'Empty',
- id: 'node_ocksk6f8fa3e',
- props: {
- description: '暂无数据',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.state.pkgs.length < 1 && this.state.isSearch',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- i18n: {},
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.browserslistrc b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.browserslistrc
deleted file mode 100644
index 55a130413d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.browserslistrc
+++ /dev/null
@@ -1,3 +0,0 @@
-defaults
-ios_saf 9
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/README.md
deleted file mode 100644
index 6d9dd75215..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/README.md
+++ /dev/null
@@ -1 +0,0 @@
-This project is generated by lowcode-code-generator & lowcode-solution-icejs3.
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts
deleted file mode 100644
index 84a44ccd62..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/ice.config.mts
+++ /dev/null
@@ -1,89 +0,0 @@
-import { join } from 'path';
-import { defineConfig } from '@ice/app';
-import _ from 'lodash';
-import fusion from '@ice/plugin-fusion';
-import locales from '@ice/plugin-moment-locales';
-import type { Plugin } from '@ice/app/esm/types';
-
-interface PluginOptions {
- id: string;
-}
-
-const plugin: Plugin = (options) => ({
- // name 可选,插件名称
- name: 'plugin-name',
- // setup 必选,用于定制工程构建配置
- setup: ({ onGetConfig, modifyUserConfig }) => {
- modifyUserConfig('codeSplitting', 'page');
-
- onGetConfig((config) => {
- config.entry = {
- web: join(process.cwd(), '.ice/entry.client.tsx'),
- };
-
- config.cssFilename = '[name].css';
-
- config.configureWebpack = config.configureWebpack || [];
- config.configureWebpack?.push((webpackConfig) => {
- if (webpackConfig.output) {
- webpackConfig.output.filename = '[name].js';
- webpackConfig.output.chunkFilename = '[name].js';
- }
- return webpackConfig;
- });
-
- config.swcOptions = _.merge(config.swcOptions, {
- compilationConfig: {
- jsc: {
- transform: {
- react: {
- runtime: 'classic',
- },
- },
- },
- },
- });
-
- // 解决 webpack publicPath 问题
- config.transforms = config.transforms || [];
- config.transforms.push((source: string, id: string) => {
- if (id.includes('.ice/entry.client.tsx')) {
- let code = `
- if (!__webpack_public_path__?.startsWith('http') && document.currentScript) {
- // @ts-ignore
- __webpack_public_path__ = document.currentScript.src.replace(/^(.*\\/)[^/]+$/, '$1');
- window.__ICE_ASSETS_MANIFEST__ = window.__ICE_ASSETS_MANIFEST__ || {};
- window.__ICE_ASSETS_MANIFEST__.publicPath = __webpack_public_path__;
- }
- `;
- code += source;
- return { code };
- }
- });
- });
- },
-});
-
-// The project config, see https://v3.ice.work/docs/guide/basic/config
-const minify = process.env.NODE_ENV === 'production' ? 'swc' : false;
-export default defineConfig(() => ({
- ssr: false,
- ssg: false,
- minify,
-
- externals: {
- react: 'React',
- 'react-dom': 'ReactDOM',
- 'react-dom/client': 'ReactDOM',
- '@alifd/next': 'Next',
- lodash: 'var window._',
- '@felce/lowcode-engine': 'var window.AliLowCodeEngine',
- },
- plugins: [
- fusion({
- importStyle: 'sass',
- }),
- locales(),
- plugin(),
- ],
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/package.json
deleted file mode 100644
index 89f693efcb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "icejs3-demo-app",
- "version": "0.1.5",
- "description": "icejs 3 轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router": "^6.9.0",
- "react-router-dom": "^6.9.0",
- "intl-messageformat": "^9.3.6",
- "@alifd/next": "1.26.15",
- "@ice/runtime": "~1.1.0",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "undefined": "*",
- "@alilc/antd-lowcode-materials": "0.11.0",
- "@alife/mc-assets-1935": "0.1.43",
- "@alife/container": "0.3.7"
- },
- "devDependencies": {
- "@ice/app": "~3.1.0",
- "@types/react": "^18.0.0",
- "@types/react-dom": "^18.0.0",
- "@types/node": "^18.11.17",
- "@ice/plugin-fusion": "^1.0.1",
- "@ice/plugin-moment-locales": "^1.0.0",
- "eslint": "^6.0.1",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "ice start",
- "build": "ice build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "engines": {
- "node": ">=14.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/app.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/app.ts
deleted file mode 100644
index 6d5856292d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/app.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { defineAppConfig } from 'ice';
-
-// App config, see https://v3.ice.work/docs/guide/basic/app
-export default defineAppConfig(() => ({
- // Set your configs here.
- app: {
- rootId: 'App',
- },
- router: {
- type: 'browser',
- basename: '/',
- },
-}));
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/document.tsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/document.tsx
deleted file mode 100644
index aff0231d95..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/document.tsx
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react';
-import { Meta, Title, Links, Main, Scripts } from 'ice';
-
-export default function Document() {
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
-}
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index dad05a263f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: #FF7300;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: #FF7300;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index 911998b0d3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,68 +0,0 @@
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, useLocation } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const location = useLocation();
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-export default Navigation;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 5630342f37..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,976 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Modal,
- Button,
- Typography,
- Form,
- Select,
- Input,
- Tooltip,
- Icon,
- Empty,
-} from '@alilc/antd-lowcode-materials/dist/antd-lowcode.esm.js';
-
-import {
- AliAutoDiv,
- AliAutoSearchTable,
-} from '@alife/mc-assets-1935/build/lowcode/index.js';
-
-import {
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
-} from '@alife/container/lib/index.js';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const AliAutoDivDefault = AliAutoDiv.default;
-
-const AliAutoSearchTableDefault = AliAutoSearchTable.default;
-
-const NextBlockCell = NextBlock.Cell;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = {
- pkgs: [],
- total: 0,
- isSearch: false,
- projects: [],
- results: [],
- resultVisible: false,
- userOptions: [],
- searchValues: { user_id: '', channel_id: '' },
- };
-
- this.__jp__init();
- this.statusDesc = {
- 0: '失败',
- 1: '成功',
- 2: '构建中',
- 3: '构建超时',
- };
- this.pageParams = {};
- this.searchParams = {};
- this.userTimeout = null;
- this.currentUser = null;
- this.notFoundContent = null;
- this.projectTimeout = null;
- this.currentProject = null;
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentDidUpdate(prevProps, prevState, snapshot) {}
-
- componentWillUnmount() {}
-
- __jp__init() {
- /*...*/
- }
-
- __jp__initRouter() {
- /*...*/
- }
-
- __jp__initDataSource() {
- /*...*/
- }
-
- __jp__initEnv() {
- /*...*/
- }
-
- __jp__initConfig() {
- /*...*/
- }
-
- __jp__initUtils() {
- /*...*/
- }
-
- setSearchItem() {
- /*...*/
- }
-
- fetchProject() {
- /*...*/
- }
-
- handleProjectSearch() {
- /*...*/
- }
-
- handleProjectChange(id) {
- this.setSearchItem({
- channel_id: id,
- });
- }
-
- fetchUser() {
- /*...*/
- }
-
- handleUserSearch() {
- /*...*/
- }
-
- handleUserChange(user) {
- console.log('debug user', user);
- this.setSearchItem({
- user_id: user,
- });
- }
-
- fetchPkgs() {
- /*...*/
- }
-
- onPageChange(pageIndex, pageSize) {
- this.pageParams = {
- pageIndex,
- pageSize,
- };
- this.fetchPkgs();
- }
-
- renderTime(time) {
- return this.$utils.moment(time).format('YYYY-MM-DD HH:mm');
- }
-
- renderUserName(user) {
- return user.user_name;
- }
-
- reload() {
- /*...*/
- }
-
- handleResult() {
- /*...*/
- }
-
- handleDetail() {
- /*...*/
- }
-
- onResultCancel() {
- /*...*/
- }
-
- formatResult() {
- /*...*/
- }
-
- handleDownload() {
- /*...*/
- }
-
- onFinish() {
- /*...*/
- }
-
- componentDidMount() {
- this.$ds.resolve('PROJECTS');
- if (this.userTimeout) {
- clearTimeout(this.userTimeout);
- this.userTimeout = null;
- }
- if (this.projectTimeout) {
- clearTimeout(this.projectTimeout);
- this.projectTimeout = null;
- }
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
this.state.resultVisible)}
- footer={
-
- }
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onResultCancel',
- },
- ],
- eventList: [
- { name: 'onCancel', disabled: true },
- { name: 'onOk', disabled: false },
- ],
- }}
- onCancel={function () {
- this.onResultCancel.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- width="720px"
- centered={true}
- closable={true}
- keyboard={true}
- mask={true}
- maskClosable={true}
- >
-
- {!!__$$eval(
- () => this.state.results && this.state.results.length > 0
- ) && (
-
-
-
- )}
- {__$$evalArray(() => this.state.results).map((item, index) =>
- ((__$$context) => (
-
-
- {__$$eval(() => __$$context.formatResult(item))}
-
- {!!__$$eval(() => item.download_link) && (
- item.download_link)}
- target="_blank"
- >
- {' '}
- - 点击下载
-
- )}
- {!!__$$eval(() => item.release_notes) && (
- item.release_notes)}
- target="_blank"
- >
- {' '}
- - 跳转发布节点
-
- )}
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {!!__$$eval(
- () =>
- !this.state.isSearch ||
- (this.state.isSearch && this.state.pkgs.length > 0)
- ) && (
- this.state.pkgs)}
- columns={[
- { title: 'ID', dataIndex: 'id', key: 'name', width: 80 },
- {
- title: '渠道号',
- dataIndex: 'channels',
- key: 'age',
- width: 142,
- render: (text, record, index) =>
- ((__$$context) =>
- __$$evalArray(() => text.split(',')).map(
- (item, index) =>
- ((__$$context) => (
-
- {__$$eval(() => item)}
-
- ))(
- __$$createChildContext(__$$context, {
- item,
- index,
- })
- )
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- },
- {
- title: '版本号',
- dataIndex: 'dic_version',
- key: 'address',
- render: (text, record, index) =>
- ((__$$context) => (
- text || []).map(
- (item, index) =>
- ((__$$context) => (
-
- {__$$eval(
- () =>
- item.channelId + ' / ' + item.version
- )}
-
- ))(
- __$$createChildContext(__$$context, {
- item,
- index,
- })
- )
- )}
- >
-
- {__$$eval(() => text[0].version)}
-
-
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 120,
- },
- { title: '构建Job', dataIndex: 'job_name', width: 180 },
- {
- title: '构建类型',
- dataIndex: 'packaging_type',
- width: 94,
- },
- {
- title: '构建状态',
- dataIndex: 'status',
- render: (text, record, index) =>
- ((__$$context) => [
-
- {__$$eval(() => __$$context.statusDesc[text])}
- ,
- !!__$$eval(() => text === 2) && (
-
- ),
- ])(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 100,
- },
- {
- title: '构建时间',
- dataIndex: 'start_time',
- render: function () {
- return this.renderTime.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- width: 148,
- },
- {
- title: '构建人',
- dataIndex: 'user',
- render: function () {
- return this.renderUserName.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- width: 80,
- },
- {
- title: 'Jenkins 链接',
- dataIndex: 'jenkins_link',
- render: (text, record, index) =>
- ((__$$context) => [
- !!__$$eval(() => text) && (
- text)}
- target="_blank"
- >
- 查看
-
- ),
- !!__$$eval(() => !text) && (
- 暂无
- ),
- ])(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 120,
- },
- {
- title: '测试平台链接',
- dataIndex: 'is_run_testing',
- width: 120,
- render: (text, record, index) =>
- ((__$$context) => [
- !!__$$eval(() => text) && (
-
- 查看
-
- ),
- !!__$$eval(() => !text) && (
- 暂无
- ),
- ])(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- },
- { title: '触发源', dataIndex: 'source', width: 120 },
- {
- title: '详情',
- dataIndex: 'id',
- render: (text, record, index) =>
- ((__$$context) => (
-
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 80,
- fixed: 'right',
- },
- {
- title: '结果',
- dataIndex: 'id',
- render: (text, record, index) =>
- ((__$$context) => (
-
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- width: 80,
- fixed: 'right',
- },
- {
- title: '重新执行',
- dataIndex: 'id',
- width: 92,
- render: (text, record, index) =>
- ((__$$context) => (
-
- }
- shape="circle"
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'reload',
- },
- ],
- eventList: [
- { name: 'onClick', disabled: true },
- ],
- }}
- onClick={function () {
- this.reload.apply(
- this,
- Array.prototype.slice
- .call(arguments)
- .concat([])
- );
- }.bind(__$$context)}
- />
- ))(
- __$$createChildContext(__$$context, {
- text,
- record,
- index,
- })
- ),
- fixed: 'right',
- },
- ]}
- actions={[]}
- pagination={{
- total: __$$eval(() => this.state.total),
- defaultPageSize: 10,
- onPageChange: function () {
- return this.onPageChange.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- defaultPageIndex: 1,
- }}
- scrollX={1200}
- isPagination={true}
- />
- )}
-
-
-
-
-
-
- {!!__$$eval(
- () => this.state.pkgs.length < 1 && this.state.isSearch
- ) && }
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/layout.jsx b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/layout.jsx
deleted file mode 100644
index 50fbb2d1f1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/pages/layout.jsx
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Outlet } from 'ice';
-import BasicLayout from '@/layouts/BasicLayout';
-
-export default function Layout() {
- return (
-
-
-
- );
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/typings.d.ts b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/typings.d.ts
deleted file mode 100644
index a9f8de7ceb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/typings.d.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-///
-
-export {};
-declare global {
- interface Window {
- g_config: Record;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/schema.json5
deleted file mode 100644
index 2bd00adda3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/icejs3-app/demo_11-jsslot-2/schema.json5
+++ /dev/null
@@ -1,1457 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- devMode: 'lowcode',
- componentName: 'Slot',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Button',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Button',
- },
- {
- package: '@alife/mc-assets-1935',
- version: '0.1.43',
- exportName: 'AliAutoDiv',
- main: 'build/lowcode/index.js',
- destructuring: true,
- subName: 'default',
- componentName: 'AliAutoDivDefault',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Typography',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Text',
- componentName: 'Typography.Text',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Typography',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Link',
- componentName: 'Typography.Link',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Modal',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Modal',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Select',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Select',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Item',
- componentName: 'Form.Item',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Input',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Input',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Form',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'P',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextP',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: 'Cell',
- componentName: 'NextBlockCell',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextBlock',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Tooltip',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Tooltip',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Icon',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Icon',
- },
- {
- package: '@alife/mc-assets-1935',
- version: '0.1.43',
- exportName: 'AliAutoSearchTable',
- main: 'build/lowcode/index.js',
- destructuring: true,
- subName: 'default',
- componentName: 'AliAutoSearchTableDefault',
- },
- {
- package: '@alilc/antd-lowcode-materials',
- version: '0.11.0',
- exportName: 'Empty',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Empty',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Page',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextPage',
- },
- {
- devMode: 'lowcode',
- componentName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_dockcviv8fo1',
- props: {
- ref: 'outterView',
- style: {
- height: '100%',
- },
- },
- fileName: 'test',
- dataSource: {
- list: [],
- },
- css: 'body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}',
- lifeCycles: {
- constructor: {
- type: 'JSFunction',
- value: "function() {\n this.__jp__init();\n this.statusDesc = {\n 0: '失败',\n 1: '成功',\n 2: '构建中',\n 3: '构建超时',\n };\n this.pageParams = {};\n this.searchParams = {};\n this.userTimeout = null;\n this.currentUser = null;\n this.notFoundContent = null;\n this.projectTimeout = null;\n this.currentProject = null;\n }",
- },
- componentDidMount: {
- type: 'JSFunction',
- value: "function() {\n this.$ds.resolve('PROJECTS');\n if (this.userTimeout) {\n clearTimeout(this.userTimeout);\n this.userTimeout = null;\n }\n if (this.projectTimeout) {\n clearTimeout(this.projectTimeout);\n this.projectTimeout = null;\n }\n }",
- },
- componentDidUpdate: {
- type: 'JSFunction',
- value: 'function(prevProps, prevState, snapshot) {}',
- },
- componentWillUnmount: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- },
- methods: {
- __jp__init: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initRouter: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initDataSource: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initEnv: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initConfig: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- __jp__initUtils: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- setSearchItem: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- fetchProject: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleProjectSearch: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleProjectChange: {
- type: 'JSFunction',
- value: 'function(id) {\n this.setSearchItem({\n channel_id: id,\n });\n }',
- },
- fetchUser: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleUserSearch: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleUserChange: {
- type: 'JSFunction',
- value: "function(user) {\n console.log('debug user', user);\n this.setSearchItem({\n user_id: user,\n });\n }",
- },
- fetchPkgs: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- onPageChange: {
- type: 'JSFunction',
- value: 'function(pageIndex, pageSize) {\n this.pageParams = {\n pageIndex,\n pageSize,\n };\n this.fetchPkgs();\n }',
- },
- renderTime: {
- type: 'JSFunction',
- value: "function(time) {\n return this.$utils.moment(time).format('YYYY-MM-DD HH:mm');\n }",
- },
- renderUserName: {
- type: 'JSFunction',
- value: 'function(user) {\n return user.user_name;\n }',
- },
- reload: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleResult: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleDetail: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- onResultCancel: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- formatResult: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- handleDownload: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function() { /*...*/ }',
- },
- },
- state: {
- pkgs: [],
- total: 0,
- isSearch: false,
- projects: [],
- results: [],
- resultVisible: false,
- userOptions: [],
- searchValues: {
- user_id: '',
- channel_id: '',
- },
- },
- children: [
- {
- componentName: 'Modal',
- id: 'node_ocksh9yppxb',
- props: {
- title: '查看结果',
- visible: {
- type: 'JSExpression',
- value: 'this.state.resultVisible',
- },
- footer: {
- type: 'JSSlot',
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh9yppxf',
- props: {
- type: 'primary',
- children: '确定',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onResultCancel',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onResultCancel.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onResultCancel',
- },
- ],
- eventList: [
- {
- name: 'onCancel',
- disabled: true,
- },
- {
- name: 'onOk',
- disabled: false,
- },
- ],
- },
- onCancel: {
- type: 'JSFunction',
- value: 'function(){this.onResultCancel.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- width: '720px',
- centered: true,
- closable: true,
- keyboard: true,
- mask: true,
- maskClosable: true,
- },
- hidden: true,
- children: [
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockshazuxa4',
- props: {
- style: {
- width: '100%',
- },
- },
- children: [
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockshazuxai',
- props: {
- style: {
- width: '100%',
- textAlign: 'left',
- marginBottom: '16px',
- },
- },
- condition: {
- type: 'JSExpression',
- value: 'this.state.results && this.state.results.length > 0',
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockshazuxah',
- props: {
- type: 'primary',
- children: '下载全部',
- size: 'small',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'handleDownload',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.handleDownload.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockt2muyfi4',
- props: {
- style: {
- width: '100%',
- marginTop: '10px',
- },
- },
- loop: {
- type: 'JSExpression',
- value: 'this.state.results',
- },
- children: [
- {
- componentName: 'Typography.Text',
- id: 'node_ockshazuxa5',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.formatResult(this.item)',
- },
- },
- },
- {
- componentName: 'Typography.Link',
- id: 'node_ockshazuxa6',
- props: {
- href: {
- type: 'JSExpression',
- value: 'this.item.download_link',
- },
- target: '_blank',
- children: ' - 点击下载',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.item.download_link',
- },
- },
- {
- componentName: 'Typography.Link',
- id: 'node_ockshazuxa7',
- props: {
- href: {
- type: 'JSExpression',
- value: 'this.item.release_notes',
- },
- target: '_blank',
- children: ' - 跳转发布节点',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.item.release_notes',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextPage',
- id: 'node_ocko19zplh1',
- props: {
- columns: 12,
- headerDivider: true,
- placeholderStyle: {
- gridRowEnd: 'span 1',
- gridColumnEnd: 'span 12',
- },
- placeholder: '页面主体内容:拖拽Block布局组件到这里',
- header: {
- type: 'JSSlot',
- title: 'header',
- },
- headerProps: {
- background: 'surface',
- style: {
- padding: '',
- },
- },
- footer: {
- type: 'JSSlot',
- title: 'footer',
- },
- minHeight: '100vh',
- contentProps: {
- noPadding: false,
- background: 'transparent',
- },
- },
- title: '页面',
- children: [
- {
- componentName: 'NextBlock',
- id: 'node_ockt3t4q8565',
- props: {
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ockt3t4q8566',
- props: {
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- title: '子区块',
- children: [
- {
- componentName: 'NextP',
- id: 'node_ockt3t4q8567',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockt3t4q8568',
- props: {
- style: {
- width: '100%',
- display: 'flex',
- },
- },
- children: [
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockt3t4q857a',
- props: {
- style: {
- flex: '1',
- },
- },
- children: [
- {
- componentName: 'Form',
- id: 'node_ocks8dtt1mt',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 14,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onFinish.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- layout: 'inline',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onFinish',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: false,
- },
- ],
- },
- colon: true,
- labelAlign: 'right',
- preserve: true,
- scrollToFirstError: true,
- size: 'middle',
- values: {
- type: 'JSExpression',
- value: 'this.state.searchValues',
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1mz',
- props: {
- label: '项目名称/渠道号',
- name: 'channel_id',
- labelAlign: 'right',
- colon: true,
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ocksfuhwhsd',
- props: {
- style: {
- width: '320px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.projects',
- },
- showArrow: false,
- tokenSeparators: [],
- showSearch: true,
- defaultActiveFirstOption: true,
- size: 'middle',
- bordered: true,
- filterOption: true,
- optionFilterProp: 'label',
- allowClear: true,
- placeholder: '请输入项目名称/渠道号',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onChange',
- relatedEventName: 'handleProjectChange',
- },
- {
- type: 'componentEvent',
- name: 'onSearch',
- relatedEventName: 'handleProjectSearch',
- },
- ],
- eventList: [
- {
- name: 'onBlur',
- disabled: false,
- },
- {
- name: 'onChange',
- disabled: true,
- },
- {
- name: 'onDeselect',
- disabled: false,
- },
- {
- name: 'onFocus',
- disabled: false,
- },
- {
- name: 'onInputKeyDown',
- disabled: false,
- },
- {
- name: 'onMouseEnter',
- disabled: false,
- },
- {
- name: 'onMouseLeave',
- disabled: false,
- },
- {
- name: 'onPopupScroll',
- disabled: false,
- },
- {
- name: 'onSearch',
- disabled: true,
- },
- {
- name: 'onSelect',
- disabled: false,
- },
- {
- name: 'onDropdownVisibleChange',
- disabled: false,
- },
- ],
- },
- onChange: {
- type: 'JSFunction',
- value: 'function(){this.handleProjectChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- onSearch: {
- type: 'JSFunction',
- value: 'function(){this.handleProjectSearch.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1m12',
- props: {
- label: '版本号',
- name: 'buildId',
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ocksfuhwhs3',
- props: {
- placeholder: '请输入版本号',
- style: {
- width: '180px',
- },
- size: 'middle',
- bordered: true,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1m18',
- props: {
- label: '构建人',
- name: 'user_id',
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ocksfuhwhsi',
- props: {
- style: {
- width: '210px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.userOptions',
- },
- showSearch: true,
- defaultActiveFirstOption: false,
- size: 'middle',
- bordered: true,
- filterOption: true,
- optionFilterProp: 'label',
- notFoundContent: {
- type: 'JSExpression',
- value: 'this.userNotFoundContent',
- },
- showArrow: false,
- placeholder: '请输入构建人',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onChange',
- relatedEventName: 'handleUserChange',
- },
- {
- type: 'componentEvent',
- name: 'onSearch',
- relatedEventName: 'handleUserSearch',
- },
- ],
- eventList: [
- {
- name: 'onBlur',
- disabled: false,
- },
- {
- name: 'onChange',
- disabled: true,
- },
- {
- name: 'onDeselect',
- disabled: false,
- },
- {
- name: 'onFocus',
- disabled: false,
- },
- {
- name: 'onInputKeyDown',
- disabled: false,
- },
- {
- name: 'onMouseEnter',
- disabled: false,
- },
- {
- name: 'onMouseLeave',
- disabled: false,
- },
- {
- name: 'onPopupScroll',
- disabled: false,
- },
- {
- name: 'onSearch',
- disabled: true,
- },
- {
- name: 'onSelect',
- disabled: false,
- },
- {
- name: 'onDropdownVisibleChange',
- disabled: false,
- },
- ],
- },
- onChange: {
- type: 'JSFunction',
- value: 'function(){this.handleUserChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- onSearch: {
- type: 'JSFunction',
- value: 'function(){this.handleUserSearch.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- allowClear: true,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1m19',
- props: {
- label: 'ID',
- name: 'id',
- labelAlign: 'right',
- colon: true,
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ocksfuhwhs8',
- props: {
- placeholder: '请输入ID',
- style: {
- width: '180px',
- },
- bordered: true,
- size: 'middle',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ocks8dtt1mw',
- props: {
- wrapperCol: {
- offset: 6,
- },
- labelAlign: 'right',
- colon: true,
- style: {
- flex: '1',
- textAlign: 'right',
- },
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ocks8dtt1mx',
- props: {
- type: 'primary',
- children: '查询',
- htmlType: 'submit',
- shape: 'default',
- size: 'middle',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'AliAutoDivDefault',
- id: 'node_ockt3t4q856b',
- props: {
- style: {},
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockt3t4q85y',
- props: {
- type: 'link',
- children: '新增打包',
- htmlType: 'button',
- shape: 'default',
- size: 'middle',
- },
- condition: true,
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextBlock',
- id: 'node_ockshc4ifn1b',
- props: {
- childTotalColumns: 12,
- mode: 'inset',
- layoutmode: 'O',
- autolayout: '(12|1)',
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ockshc4ifn1c',
- props: {
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- title: '子区块',
- children: [
- {
- componentName: 'NextP',
- id: 'node_ockshc4ifn1d',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'AliAutoSearchTableDefault',
- id: 'node_ocksfuhwhsx',
- props: {
- rowKey: 'key',
- dataSource: {
- type: 'JSExpression',
- value: 'this.state.pkgs',
- },
- columns: [
- {
- title: 'ID',
- dataIndex: 'id',
- key: 'name',
- width: 80,
- },
- {
- title: '渠道号',
- dataIndex: 'channels',
- key: 'age',
- width: 142,
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh2bq0428',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.item',
- },
- style: {
- display: 'block',
- },
- },
- loop: {
- type: 'JSExpression',
- value: "this.text.split(',')",
- },
- },
- ],
- },
- },
- {
- title: '版本号',
- dataIndex: 'dic_version',
- key: 'address',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Tooltip',
- id: 'node_ocksts0jqgj',
- props: {
- title: {
- type: 'JSSlot',
- value: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksts0jqgn',
- props: {
- children: {
- type: 'JSExpression',
- value: "this.item. channelId + ' / ' + this.item.version",
- },
- style: {
- display: 'block',
- color: '#FFFFFF',
- },
- },
- loop: {
- type: 'JSExpression',
- value: 'this.text || []',
- },
- },
- ],
- },
- },
- children: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksts0jqgm',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.text[0].version',
- },
- },
- },
- ],
- },
- ],
- },
- width: 120,
- },
- {
- title: '构建Job',
- dataIndex: 'job_name',
- width: 180,
- },
- {
- title: '构建类型',
- dataIndex: 'packaging_type',
- width: 94,
- },
- {
- title: '构建状态',
- dataIndex: 'status',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh3jkxzw',
- props: {
- children: {
- type: 'JSExpression',
- value: 'this.statusDesc[this.text]',
- },
- },
- },
- {
- componentName: 'Icon',
- id: 'node_ocksh3jkxzx',
- props: {
- type: 'SyncOutlined',
- size: 16,
- spin: true,
- style: {
- marginLeft: '10px',
- },
- },
- condition: {
- type: 'JSExpression',
- value: 'this.text === 2',
- },
- },
- ],
- },
- width: 100,
- },
- {
- title: '构建时间',
- dataIndex: 'start_time',
- render: {
- type: 'JSFunction',
- value: 'function(){ return this.renderTime.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- width: 148,
- },
- {
- title: '构建人',
- dataIndex: 'user',
- render: {
- type: 'JSFunction',
- value: 'function(){ return this.renderUserName.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- width: 80,
- },
- {
- title: 'Jenkins 链接',
- dataIndex: 'jenkins_link',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Link',
- id: 'node_ocksh64kbx21',
- props: {
- href: {
- type: 'JSExpression',
- value: 'this.text',
- },
- target: '_blank',
- children: '查看',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.text',
- },
- },
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh64kbx22',
- props: {
- children: '暂无',
- },
- condition: {
- type: 'JSExpression',
- value: '!this.text',
- },
- },
- ],
- },
- width: 120,
- },
- {
- title: '测试平台链接',
- dataIndex: 'is_run_testing',
- width: 120,
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Typography.Link',
- id: 'node_ocksh3jkxz3e',
- props: {
- href: 'http://rivermap.alibaba.net/dashboard/testExecute',
- target: '_blank',
- children: '查看',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.text',
- },
- },
- {
- componentName: 'Typography.Text',
- id: 'node_ocksh3jkxz3f',
- props: {
- children: '暂无',
- },
- condition: {
- type: 'JSExpression',
- value: '!this.text',
- },
- },
- ],
- },
- },
- {
- title: '触发源',
- dataIndex: 'source',
- width: 120,
- },
- {
- title: '详情',
- dataIndex: 'id',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh8yryw7',
- props: {
- type: 'link',
- children: '查看',
- size: 'small',
- style: {
- padding: '0px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'handleDetail',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.handleDetail.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- width: 80,
- fixed: 'right',
- },
- {
- title: '结果',
- dataIndex: 'id',
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh9v6jw7',
- props: {
- type: 'link',
- children: '查看',
- size: 'small',
- style: {
- padding: '0px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'handleResult',
- paramStr: 'this.text',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.handleResult.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- ghost: false,
- href: {
- type: 'JSExpression',
- value: 'this.text',
- },
- },
- },
- ],
- },
- width: 80,
- fixed: 'right',
- },
- {
- title: '重新执行',
- dataIndex: 'id',
- width: 92,
- render: {
- type: 'JSSlot',
- params: ['text', 'record', 'index'],
- value: [
- {
- componentName: 'Button',
- id: 'node_ocksh96rad1g',
- props: {
- type: 'text',
- children: '',
- icon: {
- type: 'JSSlot',
- value: [
- {
- componentName: 'Icon',
- id: 'node_ocksh96rad1j',
- props: {
- type: 'ReloadOutlined',
- size: 14,
- color: '#0593d3',
- style: {
- padding: '3px',
- border: '1px solid #0593d3',
- borderRadius: '14px',
- cursor: 'pointer',
- height: '22px',
- },
- spin: false,
- },
- },
- ],
- },
- shape: 'circle',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'reload',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.reload.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- fixed: 'right',
- },
- ],
- actions: [],
- pagination: {
- total: {
- type: 'JSExpression',
- value: 'this.state.total',
- },
- defaultPageSize: 10,
- onPageChange: {
- type: 'JSFunction',
- value: 'function(){ return this.onPageChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- defaultPageIndex: 1,
- },
- scrollX: 1200,
- isPagination: true,
- },
- condition: {
- type: 'JSExpression',
- value: '!this.state.isSearch || (this.state.isSearch && this.state.pkgs.length > 0)',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextBlock',
- id: 'node_ocksk6f8fa3b',
- props: {
- childTotalColumns: 12,
- mode: 'inset',
- layoutmode: 'O',
- autolayout: '(12|1)',
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ocksk6f8fa3c',
- props: {
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- title: '子区块',
- children: [
- {
- componentName: 'NextP',
- id: 'node_ocksk6f8fa3d',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'Empty',
- id: 'node_ocksk6f8fa3e',
- props: {
- description: '暂无数据',
- },
- condition: {
- type: 'JSExpression',
- value: 'this.state.pkgs.length < 1 && this.state.isSearch',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- i18n: {},
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index fd03ed9bc5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/i18n.js
deleted file mode 100644
index a5dde6f77d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,68 +0,0 @@
-const i18nConfig = {};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index 41a2a143c4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,142 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
- Hello world!
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/schema.json5
deleted file mode 100644
index 94c3a2fb7b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo01/schema.json5
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- // 本例是一个非常简单的 Hello world 页面
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Text',
- props: {},
- children: 'Hello world!',
- },
- ],
- },
- ],
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index 4d9a779880..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/package.json
+++ /dev/null
@@ -1,35 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@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",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-text": "^1.0.0",
- "rax-image": "^1.0.0",
- "moment": "*",
- "lodash": "*",
- "universal-toast": "^1.2.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/global.css
deleted file mode 100644
index 2b98f37264..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,9 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-page,
-body {
- width: 750rpx;
- overflow-x: hidden;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/i18n.js
deleted file mode 100644
index a5dde6f77d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,68 +0,0 @@
-const i18nConfig = {};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
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
deleted file mode 100644
index 06e39454d0..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,347 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import View from 'rax-view';
-
-import Text from 'rax-text';
-
-import Image from 'rax-image';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {
- clickCount: 0,
- user: {
- name: '张三',
- age: 18,
- avatar: 'https://gw.alicdn.com/tfs/TB1Ui9BMkY2gK0jSZFgXXc5OFXa-50-50.png',
- },
- orders: [
- {
- title: '【小米智能生活】米家扫地机器人家用全自动扫拖一体机拖地吸尘器',
- price: 1799,
- coverUrl: 'https://gw.alicdn.com/tfs/TB1dGVlRfb2gK0jSZK9XXaEgFXa-258-130.png',
- },
- {
- title: '【限时下单立减】Apple/苹果 iPhone 11 4G全网通智能手机正品苏宁易购官方旗舰店苹果11',
- price: 4999,
- coverUrl: 'https://gw.alicdn.com/tfs/TB18gdJddTfau8jSZFwXXX1mVXa-1298-1202.png',
- },
- ],
- };
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(__$$getSearchParams()),
- fetch: __$$createFetchRequestHandler(),
- },
- });
-
- _utils = this._defineUtils();
-
- _lifeCycles = this._defineLifeCycles();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
-
- this._lifeCycles.didMount();
- } /* end of componentDidMount */
-
- componentWillUnmount() {
- this._lifeCycles.willUnmount();
- } /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- Demo data source logic
-
-
- === User Info: ===
-
- {!!__$$eval(() => __$$context.state.user) && (
-
- __$$context.state.user.avatar) }}
- style={{ width: '32px', height: '32px' }}
- />
-
- {__$$eval(() => __$$context.state.user.name)}
- {__$$eval(() => __$$context.state.user.age)}岁
-
-
- )}
-
- === Orders: ===
-
- {__$$evalArray(() => __$$eval(() => __$$context.state.orders)).map((order, index) =>
- ((__$$context) => (
- {
- if (__$$isMiniApp) {
- const __$$event = __$$args[0];
- const order = __$$event.target.dataset.order;
- return function () {
- __$$context.utils.recordEvent(`CLICK_ORDER`, order.title);
- }.apply(this, __$$args);
- } else {
- return function () {
- __$$context.utils.recordEvent(`CLICK_ORDER`, order.title);
- }.apply(this, __$$args);
- }
- }}
- >
-
- order.coverUrl) }} style={{ width: '80px', height: '60px' }} />
-
-
- {__$$eval(() => order.title)}
- {__$$eval(() => __$$context.utils.formatPrice(order.price, '元'))}
-
-
- ))(__$$createChildContext(__$$context, { order, index })),
- )}
-
- 点击次数:{__$$eval(() => __$$context.state.clickCount)}(点击加 1)
-
-
- 操作提示:
- 1. 点击会员名,可以弹出 Toast "Hello xxx!"
- 2. 点击订单,会记录点击的订单信息,并弹出 Toast 提示
- 3. 最下面的【点击次数】,点一次应该加 1
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return {
- list: [
- {
- errorHandler: function (err) {
- setTimeout(() => {
- __$$context.setState({
- __refresh: Date.now() + Math.random(),
- });
- }, 0);
- throw err;
- },
- id: 'urlParams',
- type: 'urlParams',
- isInit: true,
- options: function () {
- return undefined;
- },
- },
- {
- errorHandler: function (err) {
- setTimeout(() => {
- __$$context.setState({
- __refresh: Date.now() + Math.random(),
- });
- }, 0);
- throw err;
- },
- id: 'user',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- };
- },
- dataHandler: function (response) {
- if (!response.success) {
- throw new Error(response.message);
- }
- return response.data;
- },
- isInit: true,
- },
- {
- errorHandler: function (err) {
- setTimeout(() => {
- __$$context.setState({
- __refresh: Date.now() + Math.random(),
- });
- }, 0);
- throw err;
- },
- id: 'orders',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: __$$context.state.user.ordersApiUri,
- isSync: true,
- };
- },
- dataHandler: function (response) {
- if (!response.success) {
- throw new Error(response.message);
- }
- return response.data.result;
- },
- isInit: true,
- },
- ],
- dataHandler: function (dataMap) {
- console.info('All datasources loaded:', dataMap);
- },
- };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineLifeCycles() {
- const __$$lifeCycles = {
- didMount: function didMount() {
- this.utils.Toast.show(`Hello ${this.state.user.name}!`);
- },
-
- willUnmount: function didMount() {
- this.utils.Toast.show(`Bye, ${this.state.user.name}!`);
- },
- };
-
- // 为所有的方法绑定上下文
- Object.entries(__$$lifeCycles).forEach(([lifeCycleName, lifeCycleMethod]) => {
- if (typeof lifeCycleMethod === 'function') {
- __$$lifeCycles[lifeCycleName] = (...args) => {
- return lifeCycleMethod.apply(this._context, args);
- };
- }
- });
-
- return __$$lifeCycles;
- }
-
- _defineMethods() {
- return {
- hello: function hello() {
- this.utils.Toast.show(`Hello ${this.state.user.name}!`);
- console.log(`Hello ${this.state.user.name}!`);
- },
- };
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/utils.js
deleted file mode 100644
index 9092a2dbc8..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,70 +0,0 @@
-import moment from 'moment';
-
-import clone from 'lodash/clone';
-
-import Toast from 'universal-toast';
-
-import { createRef } from 'rax';
-
-const formatPrice = function formatPrice(price, unit) {
- return Number(price).toFixed(2) + unit;
-};
-
-const recordEvent = function recordEvent(eventName, eventDetail) {
- this.utils.Toast.show(`[EVENT]: ${eventName} ${eventDetail}`);
- console.log(`[EVENT]: ${eventName} (detail: %o) (user: %o)`, eventDetail, this.state.user);
-};
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {
- formatPrice,
-
- recordEvent,
-
- moment,
-
- clone,
-
- Toast,
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/schema.json5
deleted file mode 100644
index 59f1a8bbc2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo02/schema.json5
+++ /dev/null
@@ -1,374 +0,0 @@
-{
- // 本例是一个比较复杂的,带有循环和条件渲染的,以及有各种事件处理函数的页面
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'View',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'View',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- {
- componentName: 'Image',
- package: 'rax-image',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Image',
- },
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- fileName: 'home',
- meta: {
- router: '/',
- },
- state: {
- clickCount: 0,
- user: { name: '张三', age: 18, avatar: 'https://gw.alicdn.com/tfs/TB1Ui9BMkY2gK0jSZFgXXc5OFXa-50-50.png' },
- orders: [
- {
- title: '【小米智能生活】米家扫地机器人家用全自动扫拖一体机拖地吸尘器',
- price: 1799,
- coverUrl: 'https://gw.alicdn.com/tfs/TB1dGVlRfb2gK0jSZK9XXaEgFXa-258-130.png',
- },
- {
- title: '【限时下单立减】Apple/苹果 iPhone 11 4G全网通智能手机正品苏宁易购官方旗舰店苹果11',
- price: 4999,
- coverUrl: 'https://gw.alicdn.com/tfs/TB18gdJddTfau8jSZFwXXX1mVXa-1298-1202.png',
- },
- ],
- },
- props: {},
- lifeCycles: {
- didMount: {
- type: 'JSExpression',
- value: 'function didMount(){\n this.utils.Toast.show(`Hello ${this.state.user.name}!`);\n}',
- },
- willUnmount: {
- type: 'JSExpression',
- value: 'function didMount(){\n this.utils.Toast.show(`Bye, ${this.state.user.name}!`);\n}',
- },
- },
- methods: {
- hello: {
- type: 'JSExpression',
- value: 'function hello(){\n this.utils.Toast.show(`Hello ${this.state.user.name}!`);\n console.log(`Hello ${this.state.user.name}!`); }',
- },
- },
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/user
- {
- id: 'user',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- },
- dataHandler: {
- type: 'JSExpression',
- value: 'function (response) {\nif (!response.success){\n throw new Error(response.message);\n }\n return response.data;\n}',
- },
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/orders
- {
- id: 'orders',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: {
- type: 'JSExpression',
- value: 'this.state.user.ordersApiUri',
- },
- isSync: true,
- },
- dataHandler: {
- type: 'JSExpression',
- value: 'function (response) {\nif (!response.success){\n throw new Error(response.message);\n }\n return response.data.result;\n}',
- },
- },
- ],
- dataHandler: {
- type: 'JSExpression',
- value: 'function (dataMap) {\n console.info("All datasources loaded:", dataMap);\n}',
- },
- },
- children: [
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- props: {},
- children: 'Demo data source logic',
- },
- ],
- },
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- props: {},
- children: '=== User Info: ===',
- },
- ],
- },
- {
- componentName: 'View',
- condition: {
- type: 'JSExpression',
- value: 'this.state.user',
- },
- props: {
- style: { flexDirection: 'row' },
- },
- children: [
- {
- componentName: 'Image',
- props: {
- source: {
- uri: {
- type: 'JSExpression',
- value: 'this.state.user.avatar',
- },
- },
- style: {
- width: '32px',
- height: '32px',
- },
- },
- },
- {
- componentName: 'View',
- props: {
- onClick: {
- type: 'JSExpression',
- value: 'this.hello',
- },
- },
- children: [
- {
- componentName: 'Text',
- children: {
- type: 'JSExpression',
- value: 'this.state.user.name',
- },
- },
- {
- componentName: 'Text',
- children: [
- {
- type: 'JSExpression',
- value: 'this.state.user.age',
- },
- '岁',
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- props: {},
- children: '=== Orders: ===',
- },
- ],
- },
- {
- componentName: 'View',
- loop: {
- type: 'JSExpression',
- value: 'this.state.orders',
- },
- loopArgs: ['order', 'index'],
- props: {
- style: { flexDirection: 'row' },
- onClick: {
- type: 'JSExpression',
- value: 'function(){ this.utils.recordEvent(`CLICK_ORDER`, this.order.title) }',
- },
- },
- children: [
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Image',
- props: {
- source: {
- uri: {
- type: 'JSExpression',
- value: 'this.order.coverUrl',
- },
- },
- style: {
- width: '80px',
- height: '60px',
- },
- },
- },
- ],
- },
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- children: {
- type: 'JSExpression',
- value: 'this.order.title',
- },
- },
- {
- componentName: 'Text',
- children: {
- type: 'JSExpression',
- value: 'this.utils.formatPrice(this.order.price, "元")',
- },
- },
- ],
- },
- ],
- },
- {
- componentName: 'View',
- props: {
- onClick: {
- type: 'JSExpression',
- value: 'function (){ this.setState({ clickCount: this.state.clickCount + 1 }) }',
- },
- },
- children: [
- {
- componentName: 'Text',
- children: [
- '点击次数:',
- {
- type: 'JSExpression',
- value: 'this.state.clickCount',
- },
- '(点击加 1)',
- ],
- },
- ],
- },
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- props: {},
- children: '操作提示:',
- },
- {
- componentName: 'Text',
- props: {},
- children: '1. 点击会员名,可以弹出 Toast "Hello xxx!"',
- },
- {
- componentName: 'Text',
- props: {},
- children: '2. 点击订单,会记录点击的订单信息,并弹出 Toast 提示',
- },
- {
- componentName: 'Text',
- props: {},
- children: '3. 最下面的【点击次数】,点一次应该加 1',
- },
- ],
- },
- ],
- },
- ],
- utils: [
- // 可以直接定义一个函数
- {
- name: 'formatPrice',
- type: 'function',
- content: {
- type: 'JSExpression',
- value: 'function formatPrice(price, unit) { return Number(price).toFixed(2) + unit; }',
- },
- },
- // 在 utils 里面也可以用 this 访问当前上下文:
- {
- name: 'recordEvent',
- type: 'function',
- content: {
- type: 'JSExpression',
- value: 'function recordEvent(eventName, eventDetail) { \n this.utils.Toast.show(`[EVENT]: ${eventName} ${eventDetail}`);\n console.log(`[EVENT]: ${eventName} (detail: %o) (user: %o)`, eventDetail, this.state.user); }',
- },
- },
- // 也可以直接从 npm 包引入 (下例等价于 `import moment from 'moment';`)
- {
- name: 'moment',
- type: 'npm',
- content: {
- package: 'moment',
- version: '*',
- exportName: 'moment',
- },
- },
- // 可以引入子目录(下例等价于 `import clone from 'lodash/clone';`)
- {
- name: 'clone',
- type: 'npm',
- content: {
- package: 'lodash',
- version: '*',
- exportName: 'clone',
- destructuring: false,
- main: '/clone',
- },
- },
- {
- name: 'Toast',
- type: 'npm',
- content: {
- package: 'universal-toast',
- version: '^1.2.0',
- exportName: 'Toast', // TODO: 这个 exportName 是否可以省略?省略后默认是上一层的 name?
- },
- },
- ],
- css: 'page,body{\n width: 750rpx;\n overflow-x: hidden;\n}',
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index 58b97921b5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-text": "^1.0.0",
- "rax-link": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.json
deleted file mode 100644
index 5082c4f9d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- },
- {
- "path": "/list",
- "source": "pages/List/index"
- },
- {
- "path": "/detail",
- "source": "pages/Detail/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/global.css
deleted file mode 100644
index 2b98f37264..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,9 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-page,
-body {
- width: 750rpx;
- overflow-x: hidden;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/i18n.js
deleted file mode 100644
index a5dde6f77d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,68 +0,0 @@
-const i18nConfig = {};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.jsx
deleted file mode 100644
index 3d0f24e475..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Detail/index.jsx
+++ /dev/null
@@ -1,151 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import View from 'rax-view';
-
-import Text from 'rax-text';
-
-import Link from 'rax-link';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Detail$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- This is the Detail Page
-
-
- Go back
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Detail$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index 9fcbc0d9c3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,151 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import View from 'rax-view';
-
-import Text from 'rax-text';
-
-import Link from 'rax-link';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- This is the Home Page
-
-
- Go To The List Page
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.jsx
deleted file mode 100644
index bc49eceed3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/pages/List/index.jsx
+++ /dev/null
@@ -1,154 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import View from 'rax-view';
-
-import Text from 'rax-text';
-
-import Link from 'rax-link';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class List$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- This is the List Page
-
-
- Go To The Detail Page
-
-
- Go back
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default List$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/schema.json5
deleted file mode 100644
index bed7c8092f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo03/schema.json5
+++ /dev/null
@@ -1,175 +0,0 @@
-{
- // 本例是一个路由测试页面,里面有几个页面,相互之间有跳转关系的
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'View',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'View',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- {
- componentName: 'Link',
- package: 'rax-link',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Link',
- },
- {
- componentName: 'Image',
- package: 'rax-image',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Image',
- },
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- fileName: 'home',
- state: {},
- dataSource: {
- list: [],
- },
- meta: {
- router: '/',
- },
- children: [
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- children: 'This is the Home Page',
- },
- ],
- },
- {
- componentName: 'Link',
- props: {
- href: '#/list',
- miniappHref: 'navigate:/pages/List/index',
- },
- children: [
- {
- componentName: 'Text',
- children: 'Go To The List Page',
- },
- ],
- },
- ],
- },
- {
- componentName: 'Page',
- fileName: 'list',
- state: {},
- dataSource: {
- list: [],
- },
- meta: {
- router: '/list',
- },
- children: [
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- children: 'This is the List Page',
- },
- ],
- },
- {
- componentName: 'Link',
- props: {
- href: '#/detail',
- miniappHref: 'navigate:/pages/Detail/index',
- },
- children: [
- {
- componentName: 'Text',
- children: 'Go To The Detail Page',
- },
- ],
- },
- {
- componentName: 'Link',
- props: {
- href: 'javascript:history.back();',
- miniappHref: 'navigateBack:',
- },
- children: [
- {
- componentName: 'Text',
- children: 'Go back',
- },
- ],
- },
- ],
- },
- {
- componentName: 'Page',
- fileName: 'detail',
- state: {},
- dataSource: {
- list: [],
- },
- meta: {
- router: '/detail',
- },
- children: [
- {
- componentName: 'View',
- children: [
- {
- componentName: 'Text',
- children: 'This is the Detail Page',
- },
- ],
- },
- {
- componentName: 'Link',
- props: {
- href: 'javascript:history.back();',
- miniappHref: 'navigateBack:',
- },
- children: [
- {
- componentName: 'Text',
- children: 'Go back',
- },
- ],
- },
- ],
- },
- ],
- css: 'page,body{\n width: 750rpx;\n overflow-x: hidden;\n}',
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/README.md
deleted file mode 100644
index b6613c4d30..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# 这个 demo 是用来演示运行时的方案的。
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/build.json
deleted file mode 100644
index 6eb7010e65..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/build.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"],
- "miniapp": {
- "buildType": "runtime"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index 56dda7653a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "@alife/right-design-card": "*",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/global.css
deleted file mode 100644
index 2b98f37264..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,9 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-page,
-body {
- width: 750rpx;
- overflow-x: hidden;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/i18n.js
deleted file mode 100644
index a5dde6f77d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,68 +0,0 @@
-const i18nConfig = {};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index 674b7f5ce9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,146 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Card from '@alife/right-design-card';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- This is a demo card.
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/schema.json5
deleted file mode 100644
index efa43c8409..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo04/schema.json5
+++ /dev/null
@@ -1,85 +0,0 @@
-{
- // 本例是为了测试一下小程序的 runtime 模式
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Card',
- package: '@alife/right-design-card',
- version: '*',
- destructuring: false,
- exportName: 'Card',
- },
- {
- componentName: 'View',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'View',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- {
- componentName: 'Image',
- package: 'rax-image',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Image',
- },
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- fileName: 'home',
- meta: {
- router: '/',
- },
- state: {},
- props: {},
- lifeCycles: {},
- methods: {},
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Card',
- children: [
- {
- componentName: 'Text',
- props: {},
- children: 'This is a demo card.',
- },
- ],
- },
- ],
- },
- ],
- utils: [],
- css: 'page,body{\n width: 750rpx;\n overflow-x: hidden;\n}',
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- miniAppBuildType: 'runtime',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index fd03ed9bc5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1ebb554860..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,75 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
-};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index 2deb7a9cb1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,148 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- {__$$eval(() => __$$context.i18n['hello-world'])}
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/schema.json5
deleted file mode 100644
index 483e527319..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo05/schema.json5
+++ /dev/null
@@ -1,72 +0,0 @@
-{
- // 这是一个关于国际化的 schema 示例
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Text',
- props: {
- onClick: {
- type: 'JSFunction',
- value: "function () {\n this.setLocale(this.getLocale() === 'en-US' ? 'zh-CN' : 'en-US');\n}",
- },
- },
- children: [
- {
- type: 'JSExpression',
- value: 'this.i18n["hello-world"]',
- },
- ],
- },
- ],
- },
- ],
- i18n: {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index dc00ba429f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-table": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1ebb554860..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,75 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
-};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index b557fce863..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,154 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Table from 'rax-table';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- ((__$$context) => rowData.name)} />)(
- __$$createChildContext(__$$context, {
- cellData,
- rowData,
- rowIndex,
- }),
- )
- }
- />
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/schema.json5
deleted file mode 100644
index 797f73692c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo06-jsslot/schema.json5
+++ /dev/null
@@ -1,84 +0,0 @@
-{
- // 这是一个关于 JSSlot 的 schema 示例
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- {
- componentName: 'Table',
- package: 'rax-table',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Table',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Table',
- props: {
- renderCell: {
- type: 'JSSlot',
- params: ['cellData', 'rowData', 'rowIndex'],
- value: [
- {
- componentName: 'Text',
- props: {
- content: {
- type: 'JSExpression',
- value: 'this.rowData.name',
- },
- },
- },
- ],
- },
- },
- },
- ],
- },
- ],
- i18n: {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index fd03ed9bc5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1ebb554860..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,75 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
-};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index e61d7b7487..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,148 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
-
- this is a line.
this is another line.
...
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/schema.json5
deleted file mode 100644
index f9c0249388..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo07-newline-in-props/schema.json5
+++ /dev/null
@@ -1,78 +0,0 @@
-{
- // 这是一个关于 JSSlot 的 schema 示例
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Text',
- props: {
- content: 'this is a line.\nthis is another line.\n...'
- },
- },
- {
- componentName: 'Text',
- props: {
- content: {
- type: "JSExpression",
- value: '"this is a line.\\nthis is another line.\\n..."'
- }
- },
- },
- {
- componentName: 'Text',
- props: {
- },
- children: "this is a line.\nthis is another line.\n..."
- },
- ],
- },
- ],
- i18n: {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index dc00ba429f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-table": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1ebb554860..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,75 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
-};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index 59b2d16fd0..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,154 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Table from 'rax-table';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- ((__$$context) => [, rowData.name)} />])(
- __$$createChildContext(__$$context, {
- cellData,
- rowData,
- rowIndex,
- }),
- )
- }
- />
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/schema.json5
deleted file mode 100644
index 662fe32870..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo08-jsslot-with-multiple-children/schema.json5
+++ /dev/null
@@ -1,90 +0,0 @@
-{
- // 这是一个关于 JSSlot 的 schema 示例
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- {
- componentName: 'Table',
- package: 'rax-table',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Table',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Table',
- props: {
- renderCell: {
- type: 'JSSlot',
- params: ['cellData', 'rowData', 'rowIndex'],
- value: [
- {
- componentName: 'Text',
- props: {
- content: 'Hello world',
- },
- },
- {
- componentName: 'Text',
- props: {
- content: {
- type: 'JSExpression',
- value: 'this.rowData.name',
- },
- },
- },
- ],
- },
- },
- },
- ],
- },
- ],
- i18n: {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index dc00ba429f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-table": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1ebb554860..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,75 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
-};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index e2828e5ccf..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,157 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Table from 'rax-table';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- ((__$$context) => [
- ,
- !!__$$eval(() => __$$context.state.isNameVisible) && rowData.name)} />,
- ])(
- __$$createChildContext(__$$context, {
- cellData,
- rowData,
- rowIndex,
- }),
- )
- }
- />
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/schema.json5
deleted file mode 100644
index 60c456bd4d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo09-jsslot-with-conditional-children/schema.json5
+++ /dev/null
@@ -1,94 +0,0 @@
-{
- // 这是一个关于 JSSlot 的 schema 示例
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- {
- componentName: 'Table',
- package: 'rax-table',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Table',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Table',
- props: {
- renderCell: {
- type: 'JSSlot',
- params: ['cellData', 'rowData', 'rowIndex'],
- value: [
- {
- componentName: 'Text',
- props: {
- content: 'Hello world',
- },
- },
- {
- componentName: 'Text',
- condition: {
- type: 'JSExpression',
- value: 'this.state.isNameVisible',
- },
- props: {
- content: {
- type: 'JSExpression',
- value: 'this.rowData.name',
- },
- },
- },
- ],
- },
- },
- },
- ],
- },
- ],
- i18n: {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index dc00ba429f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/package.json
+++ /dev/null
@@ -1,30 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-table": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1ebb554860..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,75 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
-};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index bedeed0240..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,159 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Table from 'rax-table';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- ((__$$context) =>
- __$$evalArray(() => __$$eval(() => __$$context.state.orders)).map((order, index) =>
- ((__$$context) => rowData.name)} />)(
- __$$createChildContext(__$$context, { order, index }),
- ),
- ))(
- __$$createChildContext(__$$context, {
- cellData,
- rowData,
- rowIndex,
- }),
- )
- }
- />
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/schema.json5
deleted file mode 100644
index 03ade3181b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo10-jsslot-with-loop-children/schema.json5
+++ /dev/null
@@ -1,89 +0,0 @@
-{
- // 这是一个关于 JSSlot 的 schema 示例
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- {
- componentName: 'Table',
- package: 'rax-table',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Table',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Table',
- props: {
- renderCell: {
- type: 'JSSlot',
- params: ['cellData', 'rowData', 'rowIndex'],
- value: [
- {
- componentName: 'Text',
- loop: {
- type: 'JSExpression',
- value: 'this.state.orders',
- },
- loopArgs: ['order', 'index'],
- props: {
- content: {
- type: 'JSExpression',
- value: 'this.rowData.name',
- },
- },
- },
- ],
- },
- },
- },
- ],
- },
- ],
- i18n: {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/build.json
deleted file mode 100644
index 6eb7010e65..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/build.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"],
- "miniapp": {
- "buildType": "runtime"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index 067cc161d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/package.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@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",
- "rax-document": "^0.1.6",
- "@alilc/b6-page": "^0.1.0",
- "@alilc/b6-text": "^0.1.0",
- "@alilc/b6-compact-legao-builtin": "1.x",
- "antd": "3.x",
- "@alilc/b6-util-mocks": "1.x"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.json
deleted file mode 100644
index cee0754433..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/aaaa",
- "source": "pages/Aaaa/index"
- }
- ],
- "window": {
- "title": "jinyuan-test2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 67ca8d9500..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- jinyuan-test2
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/i18n.js
deleted file mode 100644
index a5dde6f77d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,68 +0,0 @@
-const i18nConfig = {};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
deleted file mode 100644
index 27149fefe5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
+++ /dev/null
@@ -1,171 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import { Page } from '@alilc/b6-page';
-
-import { Text } from '@alilc/b6-text';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Aaaa$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(__$$getSearchParams()),
- },
- });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return {
- list: [
- {
- errorHandler: function (err) {
- setTimeout(() => {
- __$$context.setState({
- __refresh: Date.now() + Math.random(),
- });
- }, 0);
- throw err;
- },
- id: 'urlParams',
- type: 'urlParams',
- description: 'URL参数',
- options: function () {
- return {
- uri: '',
- };
- },
- isInit: true,
- },
- ],
- };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Aaaa$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/utils.js
deleted file mode 100644
index e35d59c37d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import legaoBuiltin from '@alilc/b6-compact-legao-builtin';
-
-import { message, Notification as notification, Modal as modal } from 'antd';
-
-import { mocks } from '@alilc/b6-util-mocks';
-
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {
- legaoBuiltin,
-
- message,
-
- notification,
-
- mocks,
-
- modal,
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/schema.json5
deleted file mode 100644
index 1d0f64fbe7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo11-utils-name-alias/schema.json5
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/b6-page',
- version: '^0.1.0',
- componentName: 'Page',
- destructuring: true,
- exportName: 'Page',
- },
- {
- package: '@alilc/b6-text',
- version: '^0.1.0',
- componentName: 'Text',
- destructuring: true,
- exportName: 'Text',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_ockp6ci0hm1',
- props: {
- title: '',
- backgroundColor: '#fff',
- textColor: '#333',
- style: {},
- },
- fileName: 'aaaa',
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- description: 'URL参数',
- options: {
- uri: '',
- },
- },
- ],
- },
- children: [
- {
- componentName: 'Text',
- id: 'node_ockp6ci0hm2',
- props: {
- content: '欢迎使用 BuildSuccess!sadsad',
- style: {},
- fieldId: 'text_kp6ci11t',
- },
- },
- ],
- meta: {
- router: '/aaaa',
- },
- methodsModule: {
- type: 'JSModule',
- compiled: '"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nexports.helloPage = helloPage;\n\n/**\n * Private, and can be re-used functions\n * Actions panel help documentation:\n * @see https://yuque.antfin.com/docs/share/89ca7965-6387-4e3a-9964-81929ed48f1e\n */\nfunction printLog(obj) {\n console.info(obj);\n}\n/**\n * page function\n */\n\n\nfunction helloPage() {\n console.log(\'hello page\');\n}',
- source: "/**\n * Private, and can be re-used functions\n * Actions panel help documentation:\n * @see https://yuque.antfin.com/docs/share/89ca7965-6387-4e3a-9964-81929ed48f1e\n */\nfunction printLog(obj) {\n console.info(obj);\n}\n\n/**\n * page function\n */\nexport function helloPage() {\n console.log('hello page');\n}",
- },
- },
- ],
- i18n: {},
- utils: [
- {
- name: 'legaoBuiltin',
- type: 'npm',
- content: {
- exportName: 'legaoBuiltin',
- package: '@alilc/b6-compact-legao-builtin',
- version: '1.x',
- },
- },
- // 不带 componentName 的:
- {
- name: 'message',
- type: 'npm',
- content: {
- package: 'antd',
- version: '3.x',
- destructuring: true,
- exportName: 'message',
- },
- },
- // 带有 componentName:
- {
- name: 'notification',
- type: 'npm',
- content: {
- package: 'antd',
- version: '3.x',
- destructuring: true,
- exportName: 'Notification',
- componentName: 'notification',
- },
- },
- {
- name: 'mocks',
- type: 'npm',
- content: {
- package: '@alilc/b6-util-mocks',
- version: '1.x',
- exportName: 'mocks',
- destructuring: true,
- },
- },
- {
- name: 'modal',
- type: 'npm',
- content: {
- package: 'antd',
- version: '3.x',
- destructuring: true,
- exportName: 'Modal',
- },
- },
- ],
- constants: {},
- dataSource: {
- list: [],
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- miniAppBuildType: 'runtime',
- },
- meta: {
- name: 'jinyuan-test2',
- git_group: 'b6',
- project_name: 'jinyuan-test2',
- description: '瑾源测试',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index fd03ed9bc5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "universal-env": "^3.2.0",
- "intl-messageformat": "^9.3.6",
- "rax": "^1.1.0",
- "rax-document": "^0.1.6",
- "rax-view": "^1.0.0",
- "rax-text": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.json
deleted file mode 100644
index 63dec4d7d1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "/",
- "source": "pages/Home/index"
- }
- ],
- "window": {
- "title": "Rax App Demo"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index 50569a9b6e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- Rax App Demo
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1ebb554860..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,75 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
-};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.jsx
deleted file mode 100644
index 5d6f4d1e07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/pages/Home/index.jsx
+++ /dev/null
@@ -1,162 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import Page from 'rax-view';
-
-import Text from 'rax-text';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils, { RefsManager } from '../../utils';
-
-import './index.css';
-
-class Home$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, { runtimeConfig: true });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
-
- {__$$eval(() => __$$context.i18n['hello-world'])}
-
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- $(refName) {
- return self._refsManager.get(refName);
- },
- $$(refName) {
- return self._refsManager.getAll(refName);
- },
- get _refsManager() {
- if (!self._refsManager) {
- self._refsManager = new RefsManager();
- }
- return self._refsManager;
- },
-
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return { list: [] };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Home$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/schema.json5
deleted file mode 100644
index 9a89838a12..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo12-refs/schema.json5
+++ /dev/null
@@ -1,73 +0,0 @@
-{
- // 这是一个关于国际化的 schema 示例
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Page',
- package: 'rax-view',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Page',
- },
- {
- componentName: 'Text',
- package: 'rax-text',
- version: '^1.0.0',
- destructuring: false,
- exportName: 'Text',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- lifeCycles: {},
- fileName: 'home',
- meta: {
- router: '/',
- },
- dataSource: {
- list: [],
- },
- children: [
- {
- componentName: 'Text',
- props: {
- ref: 'helloText',
- onClick: {
- type: 'JSFunction',
- value: "function () {\n this.setLocale(this.getLocale() === 'en-US' ? 'zh-CN' : 'en-US');\n}",
- },
- },
- children: [
- {
- type: 'JSExpression',
- value: 'this.i18n["hello-world"]',
- },
- ],
- },
- ],
- },
- ],
- i18n: {
- 'zh-CN': {
- 'hello-world': '你好,世界!',
- },
- 'en-US': {
- 'hello-world': 'Hello world!',
- },
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- },
- meta: {
- name: 'Rax App Demo',
- git_group: 'demo-group',
- project_name: 'demo-project',
- description: '这是一个示例应用',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintrc.js
deleted file mode 100644
index d42c71979a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,15 +0,0 @@
-const { getESLintConfig } = require('@iceworks/spec');
-
-// https://www.npmjs.com/package/@iceworks/spec
-module.exports = {
- ...getESLintConfig('rax'),
- rules: {
- 'max-len': ['error', { code: 200 }],
- 'function-paren-newline': 'off',
- '@typescript-eslint/indent': 'off',
- 'prettier/prettier': 'off',
- 'no-empty': 'off',
- 'no-unused-vars': 'off',
- '@iceworks/best-practices/recommend-functional-component': 'off',
- },
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.gitignore
deleted file mode 100644
index 2faedd3c31..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,18 +0,0 @@
-# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.
-
-*~
-*.swp
-*.log
-
-.DS_Store
-.idea/
-.temp/
-
-build/
-dist/
-lib/
-coverage/
-node_modules/
-.rax/
-
-template.yml
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 23c8ce5a47..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getPrettierConfig } = require('@iceworks/spec');
-
-module.exports = getPrettierConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintignore
deleted file mode 100644
index 357fc60c5d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,8 +0,0 @@
-node_modules/
-lib/
-dist/
-build/
-coverage/
-demo/
-es/
-.rax/
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 2805e3924c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const { getStylelintConfig } = require('@iceworks/spec');
-
-module.exports = getStylelintConfig('rax');
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/README.md
deleted file mode 100644
index 8d9945a6ed..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/README.md
+++ /dev/null
@@ -1,15 +0,0 @@
-# rax-materials-basic-app
-
-## Getting Started
-
-### `npm run start`
-
-Runs the app in development mode.
-
-Open [http://localhost:3333](http://localhost:3333) to view it in the browser.
-
-The page will reload if you make edits.
-
-### `npm run build`
-
-Builds the app for production to the `build` folder.
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/build.json
deleted file mode 100644
index e5ec9367dc..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/build.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "inlineStyle": false,
- "plugins": [],
- "targets": ["web"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/jsconfig.json
deleted file mode 100644
index 46c61895ca..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- }
-}
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
deleted file mode 100644
index afadad8785..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/package.json
+++ /dev/null
@@ -1,29 +0,0 @@
-{
- "name": "rax-demo-app",
- "private": true,
- "version": "1.0.0",
- "scripts": {
- "start": "rax-app start",
- "build": "rax-app build",
- "eslint": "eslint --ext .js,.jsx ./",
- "stylelint": "stylelint \"**/*.{css,scss,less}\"",
- "prettier": "prettier **/* --write",
- "lint": "npm run eslint && npm run stylelint"
- },
- "dependencies": {
- "@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",
- "rax-document": "^0.1.6",
- "@alilc/lowcode-components": "^1.0.0"
- },
- "devDependencies": {
- "@iceworks/spec": "^1.0.0",
- "rax-app": "^3.0.0",
- "eslint": "^6.8.0",
- "prettier": "^2.1.2",
- "stylelint": "^13.7.2"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.js
deleted file mode 100644
index 4e74cc1a26..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import { runApp } from 'rax-app';
-
-import './global.css';
-
-runApp({
- router: {
- mode: 'hash',
- },
-});
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.json
deleted file mode 100644
index b782c4d154..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/app.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "routes": [
- {
- "path": "",
- "source": "pages/Example/index"
- }
- ],
- "window": {
- "title": "example"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/document/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/document/index.jsx
deleted file mode 100644
index d63c371e0c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/document/index.jsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import { createElement } from 'rax';
-import { Root, Style, Script } from 'rax-document';
-
-function Document() {
- return (
-
-
-
-
- example
-
-
-
- {/* root container */}
-
-
-
-
- );
-}
-
-export default Document;
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/global.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/global.css
deleted file mode 100644
index 0d203c62a5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/global.css
+++ /dev/null
@@ -1,3 +0,0 @@
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/i18n.js
deleted file mode 100644
index a5dde6f77d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,68 +0,0 @@
-const i18nConfig = {};
-
-let locale = typeof navigator === 'object' && typeof navigator.language === 'string' ? navigator.language : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' && (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ?? defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.css b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.jsx b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
deleted file mode 100644
index f601c582d7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
+++ /dev/null
@@ -1,173 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:rax 框架的导出名和各种组件名除外。
-import { createElement, Component } from 'rax';
-import { getSearchParams as __$$getSearchParams } from 'rax-app';
-
-import { Page, Table } from '@alilc/lowcode-components';
-
-import { createHttpHandler as __$$createHttpRequestHandler } from '@alilc/lowcode-datasource-http-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import { isMiniApp as __$$isMiniApp } from 'universal-env';
-
-import __$$constants from '../../constants';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$projectUtils from '../../utils';
-
-import './index.css';
-
-class Example$$Page extends Component {
- state = {};
-
- _methods = this._defineMethods();
-
- _context = this._createContext();
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this._context, {
- runtimeConfig: true,
- requestHandlersMap: { http: __$$createHttpRequestHandler() },
- });
-
- _utils = this._defineUtils();
-
- constructor(props, context) {
- super(props);
-
- __$$i18n._inject2(this);
- } /* end of constructor */
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- } /* end of componentDidMount */
-
- componentWillUnmount() {} /* end of componentWillUnmount */
-
- render() {
- const __$$context = this._context;
- const {
- state,
- setState,
- dataSourceMap,
- reloadDataSource,
- utils,
- constants,
- i18n,
- i18nFormat,
- getLocale,
- setLocale,
- } = __$$context;
-
- return (
-
- __$$context.dataSourceMap['userList'])}
- columns={[
- { dataIndex: 'name', title: '姓名' },
- { dataIndex: 'age', title: '年龄' },
- ]}
- />
-
- );
- } /* end of render */
-
- _createContext() {
- const self = this;
- const context = {
- get state() {
- return self.state;
- },
- setState(newState, callback) {
- self.setState(newState, callback);
- },
- get dataSourceMap() {
- return self._dataSourceEngine.dataSourceMap || {};
- },
- async reloadDataSource() {
- await self._dataSourceEngine.reloadDataSource();
- },
- get utils() {
- return self._utils;
- },
- get page() {
- return context;
- },
- get component() {
- return context;
- },
- get props() {
- return self.props;
- },
- get constants() {
- return __$$constants;
- },
- i18n: __$$i18n.i18n,
- i18nFormat: __$$i18n.i18nFormat,
- getLocale: __$$i18n.getLocale,
- setLocale(locale) {
- __$$i18n.setLocale(locale);
- self.forceUpdate();
- },
- ...this._methods,
- };
-
- return context;
- }
-
- _defineDataSourceConfig() {
- const __$$context = this._context;
- return {
- list: [
- {
- errorHandler: function (err) {
- setTimeout(() => {
- __$$context.setState({
- __refresh: Date.now() + Math.random(),
- });
- }, 0);
- throw err;
- },
- id: 'userList',
- type: 'http',
- description: '用户列表',
- options: function () {
- return {
- uri: 'https://api.example.com/user/list',
- };
- },
- isInit: true,
- },
- ],
- };
- }
-
- _defineUtils() {
- return {
- ...__$$projectUtils,
- };
- }
-
- _defineMethods() {
- return {};
- }
-}
-
-export default Example$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- return Object.assign({}, oldContext, ext);
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/utils.js
deleted file mode 100644
index a4fa7ace96..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import { createRef } from 'rax';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter((insRef) => !!insRef.current);
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/tsconfig.json
deleted file mode 100644
index 2fad2a09fe..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,33 +0,0 @@
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "preserve",
- "jsxFactory": "createElement",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "rax-app": [".rax/index.ts"]
- }
- },
- "include": ["src", ".rax"],
- "exclude": ["node_modules", "build", "public"]
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/schema.json5
deleted file mode 100644
index 1e61996cf5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/rax-app/demo13-datasource-prop/schema.json5
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/lowcode-components',
- version: '^1.0.0',
- componentName: 'Page',
- destructuring: true,
- exportName: 'Page',
- },
- {
- package: '@alilc/lowcode-components',
- version: '^1.0.0',
- componentName: 'Table',
- destructuring: true,
- exportName: 'Table',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_ockp6ci0hm1',
- props: {},
- fileName: 'example',
- dataSource: {
- list: [
- {
- id: 'userList',
- type: 'http',
- description: '用户列表',
- options: {
- uri: 'https://api.example.com/user/list',
- },
- },
- ],
- },
- children: [
- {
- componentName: 'Table',
- id: 'node_ockp6ci0hm22',
- props: {
- dataSource: {
- type: 'DataSource',
- id: 'userList',
- },
- columns: [
- {
- dataIndex: 'name',
- title: '姓名',
- },
- {
- dataIndex: 'age',
- title: '年龄',
- },
- ],
- },
- },
- ],
- },
- ],
- meta: {
- name: 'example',
- description: 'Example',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
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
deleted file mode 100644
index d18604922d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@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": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/public/index.html
deleted file mode 100644
index 7ec4d88cde..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- demo应用
-
-
-
-
-
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
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- 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
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-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
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
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
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
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
deleted file mode 100644
index 794ad46a48..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,205 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Form, Input, NumberPicker, Select, Button } from '@alifd/next';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/button/style';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Test$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(window.location.search),
- fetch: __$$createFetchRequestHandler(),
- },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter' };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- isInit: function () {
- return undefined;
- }.bind(_this),
- options: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'user',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'orders',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/orders',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data.result;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- dataHandler: function (dataMap) {
- console.info('All datasources loaded:', dataMap);
- },
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
-
- console.log('componentDidMount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- {__$$evalArray(() => ['a', 'b', 'c']).map((item, index) =>
- ((__$$context) =>
- !!__$$eval(() => index >= 1) && (
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/routes.js
deleted file mode 100644
index 47a0f2d417..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Test from '@/pages/Test';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '/',
- component: Test,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/schema.json5
deleted file mode 100644
index 76c52fb5e8..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo1/schema.json5
+++ /dev/null
@@ -1,276 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "componentName": "Button",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button"
- },
- {
- "componentName": "Button.Group",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button",
- "subName": "Group"
- },
- {
- "componentName": "Input",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Input"
- },
- {
- "componentName": "Form",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form"
- },
- {
- "componentName": "Form.Item",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form",
- "subName": "Item"
- },
- {
- "componentName": "NumberPicker",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "NumberPicker"
- },
- {
- "componentName": "Select",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Select"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node$1",
- "meta": {
- "title": "测试",
- "router": "/"
- },
- "props": {
- "ref": "outterView",
- "autoLoading": true
- },
- "fileName": "test",
- "state": {
- "text": "outter"
- },
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() { console.log('componentDidMount'); }"
- }
- },
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/user
- {
- id: 'user',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- },
- dataHandler: {
- type: 'JSExpression',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data;\n}',
- },
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/orders
- {
- id: 'orders',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: "https://shs.xxx.com/mock/1458/demo/orders",
- isSync: true,
- },
- dataHandler: {
- type: 'JSExpression',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data.result;\n}',
- },
- },
- ],
- dataHandler: {
- type: 'JSExpression',
- value: 'function (dataMap) {\n console.info("All datasources loaded:", dataMap);\n}',
- },
- },
- "children": [
- {
- "componentName": "Form",
- "id": "node$2",
- "props": {
- "labelCol": {
- "type": "JSExpression",
- "value": "this.state.colNum"
- },
- "style": {},
- "ref": "testForm"
- },
- "children": [
- {
- "componentName": "Form.Item",
- "id": "node$3",
- "props": {
- "label": "姓名:",
- "name": "name",
- "initValue": "李雷"
- },
- "children": [
- {
- "componentName": "Input",
- "id": "node$4",
- "props": {
- "placeholder": "请输入",
- "size": "medium",
- "style": {
- "width": 320
- }
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$5",
- "props": {
- "label": "年龄:",
- "name": "age",
- "initValue": "22"
- },
- "children": [
- {
- "componentName": "NumberPicker",
- "id": "node$6",
- "props": {
- "size": "medium",
- "type": "normal"
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$7",
- "props": {
- "label": "职业:",
- "name": "profession"
- },
- "children": [
- {
- "componentName": "Select",
- "id": "node$8",
- "props": {
- "dataSource": [
- {
- "label": "教师",
- "value": "t"
- },
- {
- "label": "医生",
- "value": "d"
- },
- {
- "label": "歌手",
- "value": "s"
- }
- ]
- }
- }
- ]
- },
- {
- "componentName": "Div",
- "id": "node$9",
- "props": {
- "style": {
- "textAlign": "center"
- }
- },
- "children": [
- {
- "componentName": "Button.Group",
- "id": "node$a",
- "props": {},
- "children": [
- {
- "componentName": "Button",
- "id": "node$b",
- "condition": {
- "type": "JSExpression",
- "value": "this.index >= 1"
- },
- "loop": ["a", "b", "c"],
- "props": {
- "type": "primary",
- "style": {
- "margin": "0 5px 0 5px"
- },
- },
- "children": [
- {
- "type": "JSExpression",
- "value": "this.item"
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "constants": {
- "ENV": "prod",
- "DOMAIN": "xxx.xxx.com"
- },
- "css": "body {font-size: 12px;} .table { width: 100px;}",
- "config": {
- "sdkVersion": "1.0.3",
- "historyMode": "hash",
- "targetRootID": "J_Container",
- "layout": {
- "componentName": "BasicLayout",
- "props": {
- "logo": "...",
- "name": "测试网站"
- }
- },
- "theme": {
- "package": "@alife/theme-fusion",
- "version": "^0.1.0",
- "primary": "#ff9966"
- }
- },
- "meta": {
- "name": "demo应用",
- "git_group": "appGroup",
- "project_name": "app_demo",
- "description": "这是一个测试应用",
- "spma": "spa23d",
- "creator": "月飞"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/package.json
deleted file mode 100644
index d83d45e324..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/package.json
+++ /dev/null
@@ -1,53 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-url-params-handler": "^1.0.0",
- "@alilc/b6-page": "^0.1.0",
- "@alilc/b6-text": "^0.1.0",
- "@alilc/b6-compact-legao-builtin": "1.x",
- "antd": "3.x",
- "@alilc/b6-util-mocks": "1.x"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/public/index.html
deleted file mode 100644
index 959812dcc0..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- jinyuan-test2
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
deleted file mode 100644
index 2945a9d8f5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/pages/Aaaa/index.jsx
+++ /dev/null
@@ -1,118 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Page } from '@alilc/b6-page';
-
-import { Text } from '@alilc/b6-text';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Aaaa$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(window.location.search),
- },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- description: 'URL参数',
- options: function () {
- return {
- uri: '',
- };
- }.bind(_this),
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
- );
- }
-}
-
-export default Aaaa$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/routes.js
deleted file mode 100644
index 76643a07f3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Aaaa from '@/pages/Aaaa';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '/aaaa',
- component: Aaaa,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/utils.js
deleted file mode 100644
index 868d471106..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,61 +0,0 @@
-import legaoBuiltin from '@alilc/b6-compact-legao-builtin';
-
-import { message, Modal as modal } from 'antd';
-
-import { mocks } from '@alilc/b6-util-mocks';
-
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {
- legaoBuiltin,
-
- message,
-
- mocks,
-
- modal,
-};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/schema.json5
deleted file mode 100644
index 76e8248cbb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2-utils-name-alias/schema.json5
+++ /dev/null
@@ -1,123 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/b6-page',
- version: '^0.1.0',
- componentName: 'Page',
- destructuring: true,
- exportName: 'Page',
- },
- {
- package: '@alilc/b6-text',
- version: '^0.1.0',
- componentName: 'Text',
- destructuring: true,
- exportName: 'Text',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_ockp6ci0hm1',
- props: {
- title: '',
- backgroundColor: '#fff',
- textColor: '#333',
- style: {},
- },
- fileName: 'aaaa',
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- description: 'URL参数',
- options: {
- uri: '',
- },
- },
- ],
- },
- children: [
- {
- componentName: 'Text',
- id: 'node_ockp6ci0hm2',
- props: {
- content: '欢迎使用 BuildSuccess!sadsad',
- style: {},
- fieldId: 'text_kp6ci11t',
- },
- },
- ],
- meta: {
- router: '/aaaa',
- },
- methodsModule: {
- type: 'JSModule',
- compiled: '"use strict";\n\nObject.defineProperty(exports, "__esModule", {\n value: true\n});\nexports.helloPage = helloPage;\n\n/**\n * Private, and can be re-used functions\n * Actions panel help documentation:\n * @see https://yuque.antfin.com/docs/share/89ca7965-6387-4e3a-9964-81929ed48f1e\n */\nfunction printLog(obj) {\n console.info(obj);\n}\n/**\n * page function\n */\n\n\nfunction helloPage() {\n console.log(\'hello page\');\n}',
- source: "/**\n * Private, and can be re-used functions\n * Actions panel help documentation:\n * @see https://yuque.antfin.com/docs/share/89ca7965-6387-4e3a-9964-81929ed48f1e\n */\nfunction printLog(obj) {\n console.info(obj);\n}\n\n/**\n * page function\n */\nexport function helloPage() {\n console.log('hello page');\n}",
- },
- },
- ],
- i18n: {},
- utils: [
- {
- name: 'legaoBuiltin',
- type: 'npm',
- content: {
- exportName: 'legaoBuiltin',
- package: '@alilc/b6-compact-legao-builtin',
- version: '1.x',
- },
- },
- {
- name: 'message',
- type: 'npm',
- content: {
- package: 'antd',
- version: '3.x',
- destructuring: true,
- exportName: 'message',
- },
- },
- {
- name: 'mocks',
- type: 'npm',
- content: {
- package: '@alilc/b6-util-mocks',
- version: '1.x',
- exportName: 'mocks',
- destructuring: true,
- },
- },
- {
- name: 'modal',
- type: 'npm',
- content: {
- package: 'antd',
- version: '3.x',
- destructuring: true,
- exportName: 'Modal',
- },
- },
- ],
- constants: {},
- dataSource: {
- list: [],
- },
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'root',
- miniAppBuildType: 'runtime',
- },
- meta: {
- name: 'jinyuan-test2',
- git_group: 'b6',
- project_name: 'jinyuan-test2',
- description: '瑾源测试',
- spma: 'spmademo',
- creator: '张三',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/package.json
deleted file mode 100644
index 03820c1574..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alifd/next": "1.19.18"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/public/index.html
deleted file mode 100644
index 7ec4d88cde..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- demo应用
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/constants.js
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' };
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/global.scss
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/i18n.js
deleted file mode 100644
index e8cb58e640..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,86 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'i18n-jwg27yo4': '你好',
- 'i18n-jwg27yo3': '中国',
- },
- 'en-US': {
- 'i18n-jwg27yo4': 'Hello',
- 'i18n-jwg27yo3': 'China',
- },
-};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 080c4245b6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,129 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Form, Input, NumberPicker, Select, Button } from '@alifd/next';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/button/style';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter' };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentDidMount() {
- console.log('componentDidMount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
this.i18n('i18n-jwg27yo4'))}
- name="name"
- initValue="李雷"
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/routes.js
deleted file mode 100644
index 47a0f2d417..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Test from '@/pages/Test';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '/',
- component: Test,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/schema.json5
deleted file mode 100644
index 2228212067..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo2/schema.json5
+++ /dev/null
@@ -1,256 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "componentName": "Button",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button"
- },
- {
- "componentName": "Button.Group",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button",
- "subName": "Group"
- },
- {
- "componentName": "Input",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Input"
- },
- {
- "componentName": "Form",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form"
- },
- {
- "componentName": "Form.Item",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form",
- "subName": "Item"
- },
- {
- "componentName": "NumberPicker",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "NumberPicker"
- },
- {
- "componentName": "Select",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Select"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node$1",
- "meta": {
- "title": "测试",
- "router": "/"
- },
- "props": {
- "ref": "outterView",
- "autoLoading": true
- },
- "fileName": "test",
- "state": {
- "text": "outter"
- },
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() { console.log('componentDidMount'); }"
- }
- },
- "children": [
- {
- "componentName": "Form",
- "id": "node$2",
- "props": {
- "labelCol": {
- "type": "JSExpression",
- "value": "this.state.colNum"
- },
- "style": {},
- "ref": "testForm"
- },
- "children": [
- {
- "componentName": "Form.Item",
- "id": "node$3",
- "props": {
- "label": {
- type: 'JSExpression',
- value: 'this.i18n("i18n-jwg27yo4")',
- },
- "name": "name",
- "initValue": "李雷"
- },
- "children": [
- {
- "componentName": "Input",
- "id": "node$4",
- "props": {
- "placeholder": "请输入",
- "size": "medium",
- "style": {
- "width": 320
- }
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$5",
- "props": {
- "label": "年龄:",
- "name": "age",
- "initValue": "22"
- },
- "children": [
- {
- "componentName": "NumberPicker",
- "id": "node$6",
- "props": {
- "size": "medium",
- "type": "normal"
- }
- }
- ]
- },
- {
- "componentName": "Form.Item",
- "id": "node$7",
- "props": {
- "label": "职业:",
- "name": "profession"
- },
- "children": [
- {
- "componentName": "Select",
- "id": "node$8",
- "props": {
- "dataSource": [
- {
- "label": "教师",
- "value": "t"
- },
- {
- "label": "医生",
- "value": "d"
- },
- {
- "label": "歌手",
- "value": "s"
- }
- ]
- }
- }
- ]
- },
- {
- "componentName": "Div",
- "id": "node$9",
- "props": {
- "style": {
- "textAlign": "center"
- }
- },
- "children": [
- {
- "componentName": "Button.Group",
- "id": "node$a",
- "props": {},
- "children": [
- {
- "componentName": "Button",
- "id": "node$b",
- "props": {
- "type": "primary",
- "style": {
- "margin": "0 5px 0 5px"
- },
- "htmlType": "submit"
- },
- "children": [
- "提交"
- ]
- },
- {
- "componentName": "Button",
- "id": "node$d",
- "props": {
- "type": "normal",
- "style": {
- "margin": "0 5px 0 5px"
- },
- "htmlType": "reset"
- },
- "children": [
- "重置"
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "constants": {
- "ENV": "prod",
- "DOMAIN": "xxx.xxx.com"
- },
- "i18n": {
- "zh-CN": {
- "i18n-jwg27yo4": "你好",
- "i18n-jwg27yo3": "中国"
- },
- "en-US": {
- "i18n-jwg27yo4": "Hello",
- "i18n-jwg27yo3": "China"
- }
- },
- "css": "body {font-size: 12px;} .table { width: 100px;}",
- "config": {
- "sdkVersion": "1.0.3",
- "historyMode": "hash",
- "targetRootID": "J_Container",
- "layout": {
- "componentName": "BasicLayout",
- "props": {
- "logo": "...",
- "name": "测试网站"
- }
- },
- "theme": {
- "package": "@alife/theme-fusion",
- "version": "^0.1.0",
- "primary": "#ff9966"
- }
- },
- "meta": {
- "name": "demo应用",
- "git_group": "appGroup",
- "project_name": "app_demo",
- "description": "这是一个测试应用",
- "spma": "spa23d",
- "creator": "月飞"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/package.json
deleted file mode 100644
index 03820c1574..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/package.json
+++ /dev/null
@@ -1,48 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alifd/next": "1.19.18"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/public/index.html
deleted file mode 100644
index 7ec4d88cde..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- demo应用
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/constants.js
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' };
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/global.scss
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/i18n.js
deleted file mode 100644
index e8cb58e640..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,86 +0,0 @@
-const i18nConfig = {
- 'zh-CN': {
- 'i18n-jwg27yo4': '你好',
- 'i18n-jwg27yo3': '中国',
- },
- 'en-US': {
- 'i18n-jwg27yo4': 'Hello',
- 'i18n-jwg27yo3': 'China',
- },
-};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 2f0a6efa9a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,107 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import Super, {
- Button,
- Input as CustomInput,
- Form,
- NumberPicker,
- Select,
- SearchTable as SearchTableExport,
-} from '@alifd/next';
-
-import SuperOther from '@alifd/next';
-
-import '@alifd/next/lib/super/style';
-
-import '@alifd/next/lib/button/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/search-table/style';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const SuperSub = Super.Sub;
-
-const SelectOption = Select.Option;
-
-const SearchTable = SearchTableExport.default;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- componentDidMount() {}
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
- this.state.title)} />
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/routes.js
deleted file mode 100644
index 47a0f2d417..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Test from '@/pages/Test';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '/',
- component: Test,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/schema.json5
deleted file mode 100644
index 173b793e13..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo3/schema.json5
+++ /dev/null
@@ -1,159 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "componentName": "Super",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": false,
- "exportName": "Super"
- },
- {
- "componentName": "SuperOther",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": false,
- "exportName": "Super"
- },
- {
- "componentName": "SuperSub",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": false,
- "exportName": "Super",
- "subName": "Sub",
- },
- {
- "componentName": "Button",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button"
- },
- {
- "componentName": "SearchTable",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "SearchTable",
- "subName": "default",
- },
- {
- "componentName": "Button.Group",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Button",
- "subName": "Group"
- },
- {
- "componentName": "CustomInput",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Input"
- },
- {
- "componentName": "Form",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form"
- },
- {
- "componentName": "Form.Item",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Form",
- "subName": "Item"
- },
- {
- "componentName": "NumberPicker",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "NumberPicker"
- },
- {
- "componentName": "SelectOption",
- "package": "@alifd/next",
- "version": "1.19.18",
- "destructuring": true,
- "exportName": "Select",
- "subName": "Option"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node$1",
- "meta": {
- "title": "测试",
- "router": "/"
- },
- "fileName": "test",
- "children": [
- {
- "componentName": "Super",
- "props": {
- "title": {
- "type":"variable",
- "value":"标题",
- "variable":"this.state.title"
- }
- }
- },
- { "componentName": "SuperSub" },
- { "componentName": "SuperOther" },
- { "componentName": "Button" },
- { "componentName": "Button.Group" },
- { "componentName": "CustomInput" },
- { "componentName": "Form.Item" },
- { "componentName": "NumberPicker" },
- { "componentName": "SelectOption" },
- { "componentName": "SearchTable" },
- ]
- }
- ],
- "constants": {
- "ENV": "prod",
- "DOMAIN": "xxx.xxx.com"
- },
- "i18n": {
- "zh-CN": {
- "i18n-jwg27yo4": "你好",
- "i18n-jwg27yo3": "中国"
- },
- "en-US": {
- "i18n-jwg27yo4": "Hello",
- "i18n-jwg27yo3": "China"
- }
- },
- "css": "body {font-size: 12px;} .table { width: 100px;}",
- "config": {
- "sdkVersion": "1.0.3",
- "historyMode": "hash",
- "targetRootID": "J_Container",
- "layout": {
- "componentName": "BasicLayout",
- "props": {
- "logo": "...",
- "name": "测试网站"
- }
- },
- "theme": {
- "package": "@alife/theme-fusion",
- "version": "^0.1.0",
- "primary": "#ff9966"
- }
- },
- "meta": {
- "name": "demo应用",
- "git_group": "appGroup",
- "project_name": "app_demo",
- "description": "这是一个测试应用",
- "spma": "spa23d",
- "creator": "月飞"
- }
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/package.json
deleted file mode 100644
index 6190fc0238..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-fetch-handler": "^1.0.0",
- "@alife/container": "^1.0.0",
- "@alife/mc-assets-1935": "0.1.9"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/public/index.html
deleted file mode 100644
index 3d36c47b83..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Ice App
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 6400d7445b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,292 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
- Text as NextText,
-} from '@alife/container/lib/index.js';
-
-import { AliSearchTable as AliSearchTableExport } from '@alife/mc-assets-1935/build/lowcode/index.js';
-
-import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const NextBlockCell = NextBlock.Cell;
-
-const AliSearchTable = AliSearchTableExport.default;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: { fetch: __$$createFetchRequestHandler() },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter', isShowDialog: false };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- type: 'fetch',
- isInit: function () {
- return true;
- }.bind(_this),
- options: function () {
- return {
- params: {},
- method: 'GET',
- isCors: true,
- timeout: 5000,
- headers: {},
- uri: 'https://mocks.xxx.com/mock/jjpin/user/list',
- };
- }.bind(_this),
- id: 'users',
- },
- ],
- };
- }
-
- componentWillUnmount() {
- console.log('will umount');
- }
-
- componentDidUpdate(prevProps, prevState, snapshot) {
- console.log(this.state);
- }
-
- testFunc() {
- console.log('test func');
- }
-
- onClick() {
- this.setState({
- isShowDialog: true,
- });
- }
-
- closeDialog() {
- this.setState({
- isShowDialog: false,
- });
- }
-
- onSearch(values) {
- console.log('search form:', values);
- console.log(this.dataSourceMap);
- this.dataSourceMap['users'].load(values);
- }
-
- onClear() {
- console.log('form reset');
- this.setState({
- isShowDialog: true,
- });
- }
-
- onPageChange(page, pageSize) {
- console.log(`page: ${page}, pageSize: ${pageSize}`);
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
-
- console.log('did mount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
- 员工列表
-
- }
- headerTest={[]}
- headerProps={{ background: 'surface' }}
- footer={null}
- minHeight="100vh"
- >
-
-
-
- this.state.users.data)}
- rowKey="workid"
- columns={[
- { title: '花名', dataIndex: 'cname' },
- { title: 'user_id', dataIndex: 'workid' },
- { title: '部门', dataIndex: 'dep' },
- ]}
- searchItems={[
- { label: '姓名', name: 'cname' },
- { label: '部门', name: 'dep' },
- ]}
- onSearch={function () {
- return this.onSearch.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- onClear={function () {
- return this.onClear.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- pagination={{
- defaultPageSize: '',
- onPageChange: function () {
- return this.onPageChange.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this),
- showSizeChanger: true,
- }}
- />
-
-
-
-
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/routes.js
deleted file mode 100644
index 6832d13682..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Test from '@/pages/Test';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '',
- component: Test,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/schema.json5
deleted file mode 100644
index ca97204e9c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo4/schema.json5
+++ /dev/null
@@ -1,353 +0,0 @@
-{
- "version": "1.0.0",
- "componentsMap": [
- {
- "package": "@alife/mc-assets-1935",
- "version": "0.1.9",
- "exportName": "AliSearchTable",
- "main": "build/lowcode/index.js",
- "subName": "default",
- "destructuring": true,
- "componentName": "AliSearchTable"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "P",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextP"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Block",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "Cell",
- "componentName": "NextBlockCell"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Block",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextBlock"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Text",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextText"
- },
- {
- "package": "@alife/container",
- "version": "^1.0.0",
- "exportName": "Page",
- "main": "lib/index.js",
- "destructuring": true,
- "subName": "",
- "componentName": "NextPage"
- }
- ],
- "componentsTree": [
- {
- "componentName": "Page",
- "id": "node_dockcviv8fo1",
- "props": {
- "ref": "outterView",
- "style": {
- "height": "100%"
- }
- },
- "fileName": "test",
- "dataSource": {
- "list": [
- {
- "type": "fetch",
- "isInit": true,
- "options": {
- "params": {},
- "method": "GET",
- "isCors": true,
- "timeout": 5000,
- "headers": {},
- "uri": "https://mocks.xxx.com/mock/jjpin/user/list"
- },
- "id": "users"
- }
- ]
- },
- "css": "body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}",
- "lifeCycles": {
- "componentDidMount": {
- "type": "JSFunction",
- "value": "function() {\n console.log('did mount');\n }"
- },
- "componentWillUnmount": {
- "type": "JSFunction",
- "value": "function() {\n console.log('will umount');\n }"
- },
- "componentDidUpdate": {
- "type": "JSFunction",
- "value": "function(prevProps, prevState, snapshot) {\n console.log(this.state);\n }"
- }
- },
- "methods": {
- "testFunc": {
- "type": "JSFunction",
- "value": "function() {\n console.log('test func');\n }"
- },
- "onClick": {
- "type": "JSFunction",
- "value": "function() {\n this.setState({\n isShowDialog: true\n })\n }"
- },
- "closeDialog": {
- "type": "JSFunction",
- "value": "function() {\n this.setState({\n isShowDialog: false\n })\n }"
- },
- "onSearch": {
- "type": "JSFunction",
- "value": "function(values) {\n console.log('search form:', values)\n console.log(this.dataSourceMap);\n this.dataSourceMap['users'].load(values)\n }"
- },
- "onClear": {
- "type": "JSFunction",
- "value": "function() {\n console.log('form reset')\n this.setState({\n isShowDialog: true\n })\n }"
- },
- "onPageChange": {
- "type": "JSFunction",
- "value": "function(page, pageSize) {\n console.log(`page: ${page}, pageSize: ${pageSize}`)\n }"
- }
- },
- "state": {
- "text": "outter",
- "isShowDialog": false
- },
- "children": [
- {
- "componentName": "NextPage",
- "id": "node_ockkgjwi8z1",
- "props": {
- "columns": 12,
- "placeholderStyle": {
- "gridRowEnd": "span 1",
- "gridColumnEnd": "span 12"
- },
- "placeholder": "页面主体内容:拖拽Block布局组件到这里",
- "header": {
- "type": "JSSlot",
- "value": [
- {
- "componentName": "NextP",
- "id": "node_ockkgjwi8zn",
- "props": {
- "wrap": true,
- "type": "body2",
- "verAlign": "middle",
- "textSpacing": true,
- "align": "left",
- "flex": true
- },
- "children": [
- {
- "componentName": "NextText",
- "id": "node_ockkgjwi8zo",
- "props": {
- "type": "h5",
- "children": "员工列表"
- }
- }
- ]
- }
- ],
- "title": "header"
- },
- "headerTest": {
- "type": "JSSlot",
- "value": [],
- "title": "header"
- },
- "headerProps": {
- "background": "surface"
- },
- "footer": {
- "type": "JSSlot",
- "title": "footer"
- },
- "minHeight": "100vh"
- },
- "children": [
- {
- "componentName": "NextBlock",
- "id": "node_ockkgjwi8z2",
- "props": {
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "noPadding": false,
- "noBorder": false,
- "background": "surface",
- "colSpan": 12,
- "rowSpan": 1,
- "childTotalColumns": "1fr"
- },
- "title": "分区",
- "children": [
- {
- "componentName": "NextBlockCell",
- "id": "node_ockkgjwi8z3",
- "props": {
- "title": "",
- "primaryKey": "732",
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "colSpan": 1,
- "rowSpan": 1
- },
- "children": [
- {
- "componentName": "NextP",
- "id": "node_ockkgjwi8zu",
- "props": {
- "wrap": true,
- "type": "body2",
- "textSpacing": true,
- "verAlign": "center",
- "align": "flex-start",
- "flex": true
- },
- "children": [
- {
- "componentName": "AliSearchTable",
- "id": "node_ockkgjwi8zv",
- "props": {
- "dataSource": {
- "type": "JSExpression",
- "value": "this.state.users.data"
- },
- "rowKey": "workid",
- "columns": [
- {
- "title": "花名",
- "dataIndex": "cname"
- },
- {
- "title": "user_id",
- "dataIndex": "workid"
- },
- {
- "title": "部门",
- "dataIndex": "dep"
- }
- ],
- "searchItems": [
- {
- "label": "姓名",
- "name": "cname"
- },
- {
- "label": "部门",
- "name": "dep"
- }
- ],
- "onSearch": {
- "type": "JSFunction",
- "value": "function(){ return this.onSearch.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "onClear": {
- "type": "JSFunction",
- "value": "function(){ return this.onClear.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "pagination": {
- "defaultPageSize": "",
- "onPageChange": {
- "type": "JSFunction",
- "value": "function(){ return this.onPageChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }"
- },
- "showSizeChanger": true
- }
- }
- }
- ]
- }
- ]
- }
- ]
- }
- ]
- },
- {
- "componentName": "NextPage",
- "id": "node_ockm4jxd6313",
- "props": {
- "columns": 12,
- "headerDivider": true,
- "placeholderStyle": {
- "gridRowEnd": "span 1",
- "gridColumnEnd": "span 12"
- },
- "placeholder": "页面主体内容:拖拽Block布局组件到这里",
- "header": {
- "type": "JSSlot",
- "title": "header"
- },
- "headerProps": {
- "background": "surface"
- },
- "footer": {
- "type": "JSSlot",
- "title": "footer"
- },
- "minHeight": "100vh"
- },
- "title": "页面",
- "children": [
- {
- "componentName": "NextBlock",
- "id": "node_ockm4jxd6314",
- "props": {
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "noPadding": false,
- "noBorder": false,
- "background": "surface",
- "colSpan": 12,
- "rowSpan": 1,
- "childTotalColumns": 1
- },
- "title": "区块",
- "children": [
- {
- "componentName": "NextBlockCell",
- "id": "node_ockm4jxd6315",
- "props": {
- "title": "",
- "primaryKey": "472",
- "prefix": "next-",
- "placeholderStyle": {
- "height": "100%"
- },
- "colSpan": 1,
- "rowSpan": 1
- }
- }
- ]
- }
- ]
- }
- ]
- }
- ],
- "i18n": {}
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/package.json
deleted file mode 100644
index b31603b3a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "undefined": "*",
- "@alife/container": "0.3.7",
- "@alilc/antd-lowcode": "0.5.4",
- "@alife/mc-assets-1935": "0.1.16"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/public/index.html
deleted file mode 100644
index 3d36c47b83..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Ice App
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 7427f164d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,389 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
-} from '@alife/container/lib/index.js';
-
-import {
- Card,
- Space,
- Typography,
- Select,
- Button,
- Modal,
- Form,
- InputNumber,
- Input,
-} from '@alilc/antd-lowcode/dist/antd-lowcode.esm.js';
-
-import { AliAutoSearchTable } from '@alife/mc-assets-1935/build/lowcode/index.js';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const NextBlockCell = NextBlock.Cell;
-
-const AliAutoSearchTableDefault = AliAutoSearchTable.default;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = {
- name: 'nongzhou',
- gateways: [],
- selectedGateway: null,
- records: [],
- modalVisible: false,
- };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentWillUnmount() {
- /* ... */
- }
-
- componentDidUpdate() {
- /* ... */
- }
-
- onChange() {
- /* ... */
- }
-
- getActions() {
- /* ... */
- }
-
- onCreateOrder() {
- /* ... */
- }
-
- onCancelModal() {
- /* ... */
- }
-
- onConfirmCreateOrder() {
- /* ... */
- }
-
- componentDidMount() {}
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
-
-
-
-
- 所在网关:
-
-
- this.state.modalVisible)}
- footer=""
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModal',
- },
- ],
- eventList: [
- { name: 'onCancel', disabled: true },
- { name: 'onOk', disabled: false },
- ],
- }}
- onCancel={function () {
- this.onCancelModal.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- zIndex={2000}
- >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- this.state.records)}
- columns={[
- {
- title: '发布名称',
- dataIndex: 'order_name',
- key: 'name',
- },
- {
- title: '类型',
- dataIndex: 'order_type_desc',
- key: 'age',
- },
- {
- title: '发布状态',
- dataIndex: 'order_status_desc',
- key: 'address',
- },
- { title: '发布人', dataIndex: 'creator_name' },
- { title: '当前批次/总批次', dataIndex: 'cur_batch_no' },
- {
- title: '发布机器/总机器',
- dataIndex: 'pubblish_ip_finish_num',
- },
- { title: '发布时间', dataIndex: 'publish_id' },
- ]}
- actions={__$$eval(() => this.actions || [])}
- getActions={function () {
- return this.getActions.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- />
-
-
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/routes.js
deleted file mode 100644
index 6832d13682..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Test from '@/pages/Test';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '',
- component: Test,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/schema.json5
deleted file mode 100644
index b59b97e763..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo5/schema.json5
+++ /dev/null
@@ -1,677 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Typography',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Text',
- componentName: 'Typography.Text',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Select',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Select',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Space',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Space',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Button',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Button',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'InputNumber',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'InputNumber',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Item',
- componentName: 'Form.Item',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Input',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'TextArea',
- componentName: 'Input.TextArea',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Form',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Modal',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Modal',
- },
- {
- package: '@alife/mc-assets-1935',
- version: '0.1.16',
- exportName: 'AliAutoSearchTable',
- main: 'build/lowcode/index.js',
- destructuring: true,
- subName: 'default',
- componentName: 'AliAutoSearchTableDefault',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.5.4',
- exportName: 'Card',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Card',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'P',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextP',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: 'Cell',
- componentName: 'NextBlockCell',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextBlock',
- },
- {
- devMode: 'lowcode',
- componentName: 'Slot',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Page',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextPage',
- },
- {
- devMode: 'lowcode',
- componentName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_dockcviv8fo1',
- props: {
- ref: 'outterView',
- style: {
- height: '100%',
- },
- },
- fileName: 'test',
- dataSource: {
- list: [],
- },
- css: 'body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}',
- lifeCycles: {
- componentDidMount: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- componentWillUnmount: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- componentDidUpdate: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- },
- methods: {
- onChange: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- getActions: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- onCreateOrder: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- onCancelModal: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- onConfirmCreateOrder: {
- type: 'JSFunction',
- value: 'function() { /* ... */ }',
- },
- },
- state: {
- name: 'nongzhou',
- gateways: [],
- selectedGateway: null,
- records: [],
- modalVisible: false,
- },
- children: [
- {
- componentName: 'NextPage',
- id: 'node_ocknqx3esma',
- props: {
- columns: 12,
- headerDivider: true,
- placeholderStyle: {
- gridRowEnd: 'span 1',
- gridColumnEnd: 'span 12',
- },
- placeholder: '页面主体内容:拖拽Block布局组件到这里',
- header: {
- type: 'JSSlot',
- title: 'header',
- },
- headerProps: {
- background: 'surface',
- },
- footer: {
- type: 'JSSlot',
- title: 'footer',
- },
- minHeight: '100vh',
- style: {
- cursor: 'pointer',
- },
- },
- title: '页面',
- children: [
- {
- componentName: 'NextBlock',
- id: 'node_ocknqx3esmb',
- props: {
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- noPadding: false,
- noBorder: false,
- background: 'surface',
- layoutmode: 'O',
- colSpan: 12,
- rowSpan: 1,
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ocknqx3esmc',
- props: {
- title: '',
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- layoutmode: 'O',
- childTotalColumns: 12,
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- children: [
- {
- componentName: 'NextP',
- id: 'node_ocknqx3esm1j',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- },
- title: '段落',
- children: [
- {
- componentName: 'Card',
- id: 'node_ocknqx3esm1k',
- props: {
- title: '',
- },
- children: [
- {
- componentName: 'Space',
- id: 'node_ocknqx3esm1n',
- props: {
- size: 0,
- align: 'center',
- direction: 'horizontal',
- },
- children: [
- {
- componentName: 'Typography.Text',
- id: 'node_ocknqx3esm1l',
- props: {
- children: '所在网关:',
- },
- },
- {
- componentName: 'Select',
- id: 'node_ocknqx3esm1m',
- props: {
- style: {
- marginTop: '16px',
- marginRight: '16px',
- marginBottom: '16px',
- marginLeft: '16px',
- width: '400px',
- display: 'inline-block',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.gateways',
- },
- mode: 'single',
- defaultValue: ['auto-edd-uniproxy'],
- labelInValue: true,
- showSearch: true,
- allowClear: false,
- placeholder: '请选取网关',
- showArrow: true,
- loading: false,
- tokenSeparators: [],
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onChange',
- relatedEventName: 'onChange',
- },
- ],
- eventList: [
- {
- name: 'onBlur',
- disabled: false,
- },
- {
- name: 'onChange',
- disabled: true,
- },
- {
- name: 'onDeselect',
- disabled: false,
- },
- {
- name: 'onFocus',
- disabled: false,
- },
- {
- name: 'onInputKeyDown',
- disabled: false,
- },
- {
- name: 'onMouseEnter',
- disabled: false,
- },
- {
- name: 'onMouseLeave',
- disabled: false,
- },
- {
- name: 'onPopupScroll',
- disabled: false,
- },
- {
- name: 'onSearch',
- disabled: false,
- },
- {
- name: 'onSelect',
- disabled: false,
- },
- {
- name: 'onDropdownVisibleChange',
- disabled: false,
- },
- ],
- },
- onChange: {
- type: 'JSFunction',
- value: 'function(){this.onChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- {
- componentName: 'Button',
- id: 'node_ockntwgdsn7',
- props: {
- type: 'primary',
- children: '创建发布单',
- style: {
- display: 'block',
- marginTop: '20px',
- marginBottom: '20px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onCreateOrder',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onCreateOrder.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Modal',
- id: 'node_ockntx4eo9p',
- props: {
- title: '创建发布单',
- visible: {
- type: 'JSExpression',
- value: 'this.state.modalVisible',
- },
- footer: '',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModal',
- },
- ],
- eventList: [
- {
- name: 'onCancel',
- disabled: true,
- },
- {
- name: 'onOk',
- disabled: false,
- },
- ],
- },
- onCancel: {
- type: 'JSFunction',
- value: 'function(){this.onCancelModal.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- zIndex: 2000,
- },
- hidden: true,
- children: [
- {
- componentName: 'Form',
- id: 'node_ockntx4eo9s',
- props: {
- labelCol: {
- span: 6,
- },
- wrapperCol: {
- span: 14,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onConfirmCreateOrder.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onConfirmCreateOrder',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: false,
- },
- ],
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo91k',
- props: {
- label: '发布批次',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockntx4eo91l',
- props: {
- value: 3,
- min: 1,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo91r',
- props: {
- label: '批次间隔时间',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockntx4eo91s',
- props: {
- value: 3,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo91y',
- props: {
- label: '备注 ',
- },
- children: [
- {
- componentName: 'Input.TextArea',
- id: 'node_ockntx4eo91z',
- props: {
- rows: 3,
- placeholder: '请输入',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockntx4eo9v',
- props: {
- wrapperCol: {
- offset: 6,
- },
- style: {
- flexDirection: 'row',
- alignItems: 'flex-end',
- justifyContent: 'center',
- display: 'flex',
- },
- labelAlign: 'right',
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockntx4eo9w',
- props: {
- type: 'primary',
- children: '提交',
- htmlType: 'submit',
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockntx4eo9x',
- props: {
- style: {
- marginLeft: 20,
- },
- children: '取消',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onCancelModal',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onCancelModal.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'AliAutoSearchTableDefault',
- id: 'node_ocknqx3esm1q',
- props: {
- rowKey: 'key',
- dataSource: {
- type: 'JSExpression',
- value: 'this.state.records',
- },
- columns: [
- {
- title: '发布名称',
- dataIndex: 'order_name',
- key: 'name',
- },
- {
- title: '类型',
- dataIndex: 'order_type_desc',
- key: 'age',
- },
- {
- title: '发布状态',
- dataIndex: 'order_status_desc',
- key: 'address',
- },
- {
- title: '发布人',
- dataIndex: 'creator_name',
- },
- {
- title: '当前批次/总批次',
- dataIndex: 'cur_batch_no',
- },
- {
- title: '发布机器/总机器',
- dataIndex: 'pubblish_ip_finish_num',
- },
- {
- title: '发布时间',
- dataIndex: 'publish_id',
- },
- ],
- actions: {
- type: 'JSExpression',
- value: 'this.actions || []',
- },
- getActions: {
- type: 'JSFunction',
- value: 'function(){ return this.getActions.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- i18n: {},
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/package.json
deleted file mode 100644
index d18604922d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@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": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/public/index.html
deleted file mode 100644
index 7ec4d88cde..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- demo应用
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/constants.js
deleted file mode 100644
index 91198f9044..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = { ENV: 'prod', DOMAIN: 'xxx.xxx.com' };
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/global.scss
deleted file mode 100644
index ed7204b4a3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,13 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
-
-body {
- font-size: 12px;
-}
-.table {
- width: 100px;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 515940c334..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,205 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Form, Input, NumberPicker, Select, Button } from '@alifd/next';
-
-import { createUrlParamsHandler as __$$createUrlParamsRequestHandler } from '@alilc/lowcode-datasource-url-params-handler';
-
-import { createFetchHandler as __$$createFetchRequestHandler } from '@alilc/lowcode-datasource-fetch-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import '@alifd/next/lib/form/style';
-
-import '@alifd/next/lib/input/style';
-
-import '@alifd/next/lib/number-picker/style';
-
-import '@alifd/next/lib/select/style';
-
-import '@alifd/next/lib/button/style';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Test$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: {
- urlParams: __$$createUrlParamsRequestHandler(window.location.search),
- fetch: __$$createFetchRequestHandler(),
- },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = { text: 'outter' };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- isInit: function () {
- return undefined;
- }.bind(_this),
- options: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'user',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- {
- id: 'orders',
- type: 'fetch',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/orders',
- isSync: true,
- };
- }.bind(_this),
- dataHandler: function (response) {
- if (!response.data.success) {
- throw new Error(response.data.message);
- }
- return response.data.data.result;
- },
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- dataHandler: function (dataMap) {
- console.info('All datasources loaded:', dataMap);
- },
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
-
- console.log('componentDidMount');
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
-
-
-
-
-
-
-
-
-
-
- {__$$evalArray(() => ['a', 'b', 'c']).map((item, index) =>
- ((__$$context) =>
- !!false && (
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/routes.js
deleted file mode 100644
index 47a0f2d417..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Test from '@/pages/Test';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '/',
- component: Test,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/schema.json5
deleted file mode 100644
index 5b6776c1ee..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo6-literal-condition/schema.json5
+++ /dev/null
@@ -1,273 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Button',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Button',
- },
- {
- componentName: 'Button.Group',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Button',
- subName: 'Group',
- },
- {
- componentName: 'Input',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Input',
- },
- {
- componentName: 'Form',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Form',
- },
- {
- componentName: 'Form.Item',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Form',
- subName: 'Item',
- },
- {
- componentName: 'NumberPicker',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'NumberPicker',
- },
- {
- componentName: 'Select',
- package: '@alifd/next',
- version: '1.19.18',
- destructuring: true,
- exportName: 'Select',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node$1',
- meta: {
- title: '测试',
- router: '/',
- },
- props: {
- ref: 'outterView',
- autoLoading: true,
- },
- fileName: 'test',
- state: {
- text: 'outter',
- },
- lifeCycles: {
- componentDidMount: {
- type: 'JSFunction',
- value: "function() { console.log('componentDidMount'); }",
- },
- },
- dataSource: {
- list: [
- {
- id: 'urlParams',
- type: 'urlParams',
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/user
- {
- id: 'user',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/user',
- isSync: true,
- },
- dataHandler: {
- type: 'JSFunction',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data;\n}',
- },
- },
- // 示例数据源:https://shs.xxx.com/mock/1458/demo/orders
- {
- id: 'orders',
- type: 'fetch',
- options: {
- method: 'GET',
- uri: 'https://shs.xxx.com/mock/1458/demo/orders',
- isSync: true,
- },
- dataHandler: {
- type: 'JSFunction',
- value: 'function (response) {\nif (!response.data.success){\n throw new Error(response.data.message);\n }\n return response.data.data.result;\n}',
- },
- },
- ],
- dataHandler: {
- type: 'JSFunction',
- value: 'function (dataMap) {\n console.info("All datasources loaded:", dataMap);\n}',
- },
- },
- children: [
- {
- componentName: 'Form',
- id: 'node$2',
- props: {
- labelCol: {
- type: 'JSExpression',
- value: 'this.state.colNum',
- },
- style: {},
- ref: 'testForm',
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node$3',
- props: {
- label: '姓名:',
- name: 'name',
- initValue: '李雷',
- },
- children: [
- {
- componentName: 'Input',
- id: 'node$4',
- props: {
- placeholder: '请输入',
- size: 'medium',
- style: {
- width: 320,
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node$5',
- props: {
- label: '年龄:',
- name: 'age',
- initValue: '22',
- },
- children: [
- {
- componentName: 'NumberPicker',
- id: 'node$6',
- props: {
- size: 'medium',
- type: 'normal',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node$7',
- props: {
- label: '职业:',
- name: 'profession',
- },
- children: [
- {
- componentName: 'Select',
- id: 'node$8',
- props: {
- dataSource: [
- {
- label: '教师',
- value: 't',
- },
- {
- label: '医生',
- value: 'd',
- },
- {
- label: '歌手',
- value: 's',
- },
- ],
- },
- },
- ],
- },
- {
- componentName: 'Div',
- id: 'node$9',
- props: {
- style: {
- textAlign: 'center',
- },
- },
- children: [
- {
- componentName: 'Button.Group',
- id: 'node$a',
- props: {},
- children: [
- {
- componentName: 'Button',
- id: 'node$b',
- condition: false,
- loop: ['a', 'b', 'c'],
- props: {
- type: 'primary',
- style: {
- margin: '0 5px 0 5px',
- },
- },
- children: [
- {
- type: 'JSExpression',
- value: 'this.item',
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- constants: {
- ENV: 'prod',
- DOMAIN: 'xxx.xxx.com',
- },
- css: 'body {font-size: 12px;} .table { width: 100px;}',
- config: {
- sdkVersion: '1.0.3',
- historyMode: 'hash',
- targetRootID: 'J_Container',
- layout: {
- componentName: 'BasicLayout',
- props: {
- logo: '...',
- name: '测试网站',
- },
- },
- theme: {
- package: '@alife/theme-fusion',
- version: '^0.1.0',
- primary: '#ff9966',
- },
- },
- meta: {
- name: 'demo应用',
- git_group: 'appGroup',
- project_name: 'app_demo',
- description: '这是一个测试应用',
- spma: 'spa23d',
- creator: '月飞',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/package.json
deleted file mode 100644
index 84141875ec..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/package.json
+++ /dev/null
@@ -1,50 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "undefined": "*",
- "@alilc/antd-lowcode": "0.8.0",
- "@alife/container": "0.3.7"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/public/index.html
deleted file mode 100644
index 3d36c47b83..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Ice App
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 9e93a3ff6f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,1076 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Modal,
- Steps,
- Form,
- Input,
- Checkbox,
- Select,
- DatePicker,
- InputNumber,
- Button,
-} from '@alilc/antd-lowcode/dist/antd-lowcode.esm.js';
-
-import {
- Text as NextText,
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
-} from '@alife/container/lib/index.js';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const NextBlockCell = NextBlock.Cell;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = {
- books: [],
- currentStep: 0,
- isModifyDialogVisible: false,
- isModifyStatus: false,
- secondCommitText: '完成并提交',
- thirdAuditText: '审核中',
- thirdButtonText: '修改',
- customerProjectInfo: {
- id: null,
- systemProjectName: null,
- projectVersionTypeArray: null,
- projectVersionType: null,
- versionLine: 2,
- expectedTime: null,
- expectedNum: null,
- projectModal: null,
- displayWidth: null,
- displayHeight: null,
- displayInch: null,
- displayDpi: null,
- mainSoc: null,
- cpuCoreNum: null,
- instructions: null,
- osVersion: null,
- status: null,
- },
- versionLinesArray: [
- { label: 'AmapAuto 485', value: 1 },
- { label: 'AmapAuto 505', value: 2 },
- ],
- projectModalsArray: [
- { label: '车机', value: 1 },
- { label: '车镜', value: 2 },
- { label: '记录仪', value: 3 },
- { label: '其他', value: 4 },
- ],
- osVersionsArray: [
- { label: '安卓5', value: 1 },
- { label: '安卓6', value: 2 },
- { label: '安卓7', value: 3 },
- { label: '安卓8', value: 4 },
- { label: '安卓9', value: 5 },
- { label: '安卓10', value: 6 },
- ],
- instructionsArray: [
- { label: 'ARM64-V8', value: 'ARM64-V8' },
- { label: 'ARM32-V7', value: 'ARM32-V7' },
- { label: 'X86', value: 'X86' },
- { label: 'X64', value: 'X64' },
- ],
- };
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentDidUpdate(prevProps, prevState, snapshot) {}
-
- componentWillUnmount() {}
-
- __jp__init() {
- /*...*/
- }
-
- __jp__initRouter() {
- /*...*/
- }
-
- __jp__initDataSource() {
- /*...*/
- }
-
- __jp__initEnv() {
- /*...*/
- }
-
- __jp__initUtils() {
- /*...*/
- }
-
- onFinishFirst() {
- /*...*/
- }
-
- onClickPreSecond() {
- /*...*/
- }
-
- onFinishSecond() {
- /*...*/
- }
-
- onClickModifyThird() {
- /*...*/
- }
-
- onOkModifyDialogThird() {
- //第三步 修改 对话框 确定
-
- this.setState({
- currentStep: 0,
- isModifyDialogVisible: false,
- });
- }
-
- onCancelModifyDialogThird() {
- //第三步 修改 对话框 取消
-
- this.setState({
- isModifyDialogVisible: false,
- });
- }
-
- onFinishFailed() {}
-
- onClickPreThird() {
- // 第三步 上一步
- this.setState({
- currentStep: 1,
- });
- }
-
- onClickFirstBack() {
- // 第一步 返回按钮
- this.$router.push('/myProjectList');
- }
-
- onClickSecondBack() {
- // 第二步 返回按钮
- this.$router.push('/myProjectList');
- }
-
- onClickThirdBack() {
- // 第三步 返回按钮
- this.$router.push('/myProjectList');
- }
-
- onValuesChange(_, values) {
- this.setState({
- customerProjectInfo: {
- ...this.state.customerProjectInfo,
- ...values,
- },
- });
- }
-
- componentDidMount() {}
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
- this.state.isModifyDialogVisible)}
- okText="确认"
- okType=""
- forceRender={false}
- cancelText="取消"
- zIndex={2000}
- destroyOnClose={false}
- confirmLoading={false}
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onOk',
- relatedEventName: 'onOkModifyDialogThird',
- },
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModifyDialogThird',
- },
- ],
- eventList: [
- { name: 'onCancel', disabled: true },
- { name: 'onOk', disabled: true },
- ],
- }}
- onOk={function () {
- this.onOkModifyDialogThird.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- onCancel={function () {
- this.onCancelModifyDialogThird.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- >
-
- 修改将撤回此前填写的信息
-
-
-
-
-
-
- this.state.currentStep)}>
-
-
-
-
-
- {!!__$$eval(() => this.state.currentStep === 0) && (
-
-
-
-
- )}
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- size="middle"
- />
-
-
-
-
-
-
-
- )}
- {!!__$$eval(() => this.state.currentStep === 1) && (
-
-
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- min={0}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- />
-
-
-
- this.state.customerProjectInfo.id > 0 &&
- !this.state.isModifyStatus
- )}
- defaultValue=""
- min={0}
- />
-
-
-
-
-
-
-
-
-
-
-
-
- )}
- {!!__$$eval(() => this.state.currentStep === 2) && (
-
-
-
-
- this.state.thirdAuditText)}
- subTitle=""
- description=""
- style={{ width: '200px' }}
- />
-
-
-
-
-
- {!!__$$eval(
- () => this.state.customerProjectInfo.status > 2
- ) && (
-
- )}
-
-
-
- )}
-
-
-
-
- );
- }
-}
-
-export default Test$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/routes.js
deleted file mode 100644
index 6832d13682..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Test from '@/pages/Test';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '',
- component: Test,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/schema.json5
deleted file mode 100644
index 4c829cfab1..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo7-literal-condition2/schema.json5
+++ /dev/null
@@ -1,1703 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Text',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextText',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Modal',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Modal',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Steps',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Step',
- componentName: 'Steps.Step',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Steps',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Steps',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'P',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextP',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Input',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Input',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Item',
- componentName: 'Form.Item',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Checkbox',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- subName: 'Group',
- componentName: 'Checkbox.Group',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Select',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Select',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'DatePicker',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'DatePicker',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'InputNumber',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'InputNumber',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Button',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Button',
- },
- {
- package: '@alilc/antd-lowcode',
- version: '0.8.0',
- exportName: 'Form',
- main: 'dist/antd-lowcode.esm.js',
- destructuring: true,
- componentName: 'Form',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: 'Cell',
- componentName: 'NextBlockCell',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Block',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextBlock',
- },
- {
- devMode: 'lowcode',
- componentName: 'Slot',
- },
- {
- package: '@alife/container',
- version: '0.3.7',
- exportName: 'Page',
- main: 'lib/index.js',
- destructuring: true,
- subName: '',
- componentName: 'NextPage',
- },
- {
- devMode: 'lowcode',
- componentName: 'Page',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_dockcviv8fo1',
- props: {
- ref: 'outterView',
- style: {
- height: '100%',
- },
- },
- fileName: 'test',
- dataSource: {
- list: [],
- },
- css: 'body {\n font-size: 12px;\n}\n\n.botton {\n width: 100px;\n color: #ff00ff\n}',
- lifeCycles: {
- constructor: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- componentDidMount: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- componentDidUpdate: {
- type: 'JSFunction',
- value: 'function(prevProps, prevState, snapshot) {}',
- },
- componentWillUnmount: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- },
- methods: {
- __jp__init: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initRouter: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initDataSource: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initEnv: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- __jp__initUtils: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onFinishFirst: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onClickPreSecond: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onFinishSecond: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onClickModifyThird: {
- type: 'JSFunction',
- value: "function() { /*...*/ }",
- },
- onOkModifyDialogThird: {
- type: 'JSFunction',
- value: 'function() {\n //第三步 修改 对话框 确定\n\n this.setState({\n currentStep: 0,\n isModifyDialogVisible: false,\n });\n }',
- },
- onCancelModifyDialogThird: {
- type: 'JSFunction',
- value: 'function() {\n //第三步 修改 对话框 取消\n\n this.setState({\n isModifyDialogVisible: false,\n });\n }',
- },
- onFinishFailed: {
- type: 'JSFunction',
- value: 'function() {}',
- },
- onClickPreThird: {
- type: 'JSFunction',
- value: 'function() {\n // 第三步 上一步\n this.setState({\n currentStep: 1,\n });\n }',
- },
- onClickFirstBack: {
- type: 'JSFunction',
- value: "function() {\n // 第一步 返回按钮\n this.$router.push('/myProjectList');\n }",
- },
- onClickSecondBack: {
- type: 'JSFunction',
- value: "function() {\n // 第二步 返回按钮\n this.$router.push('/myProjectList');\n }",
- },
- onClickThirdBack: {
- type: 'JSFunction',
- value: "function() {\n // 第三步 返回按钮\n this.$router.push('/myProjectList');\n }",
- },
- onValuesChange: {
- type: 'JSFunction',
- value: 'function(_, values) {\n this.setState({\n customerProjectInfo: {\n ...this.state.customerProjectInfo,\n ...values,\n },\n });\n }',
- },
- },
- state: {
- books: [],
- currentStep: 0,
- isModifyDialogVisible: false,
- isModifyStatus: false,
- secondCommitText: '完成并提交',
- thirdAuditText: '审核中',
- thirdButtonText: '修改',
- customerProjectInfo: {
- id: null,
- systemProjectName: null,
- projectVersionTypeArray: null,
- projectVersionType: null,
- versionLine: 2,
- expectedTime: null,
- expectedNum: null,
- projectModal: null,
- displayWidth: null,
- displayHeight: null,
- displayInch: null,
- displayDpi: null,
- mainSoc: null,
- cpuCoreNum: null,
- instructions: null,
- osVersion: null,
- status: null,
- },
- versionLinesArray: [
- {
- label: 'AmapAuto 485',
- value: 1,
- },
- {
- label: 'AmapAuto 505',
- value: 2,
- },
- ],
- projectModalsArray: [
- {
- label: '车机',
- value: 1,
- },
- {
- label: '车镜',
- value: 2,
- },
- {
- label: '记录仪',
- value: 3,
- },
- {
- label: '其他',
- value: 4,
- },
- ],
- osVersionsArray: [
- {
- label: '安卓5',
- value: 1,
- },
- {
- label: '安卓6',
- value: 2,
- },
- {
- label: '安卓7',
- value: 3,
- },
- {
- label: '安卓8',
- value: 4,
- },
- {
- label: '安卓9',
- value: 5,
- },
- {
- label: '安卓10',
- value: 6,
- },
- ],
- instructionsArray: [
- {
- label: 'ARM64-V8',
- value: 'ARM64-V8',
- },
- {
- label: 'ARM32-V7',
- value: 'ARM32-V7',
- },
- {
- label: 'X86',
- value: 'X86',
- },
- {
- label: 'X64',
- value: 'X64',
- },
- ],
- },
- children: [
- {
- componentName: 'Modal',
- id: 'node_ockodngwu940',
- props: {
- title: '是否修改',
- visible: {
- type: 'JSExpression',
- value: 'this.state.isModifyDialogVisible',
- },
- okText: '确认',
- okType: '',
- forceRender: false,
- cancelText: '取消',
- zIndex: 2000,
- destroyOnClose: false,
- confirmLoading: false,
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onOk',
- relatedEventName: 'onOkModifyDialogThird',
- },
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onCancelModifyDialogThird',
- },
- ],
- eventList: [
- {
- name: 'onCancel',
- disabled: true,
- },
- {
- name: 'onOk',
- disabled: true,
- },
- ],
- },
- onOk: {
- type: 'JSFunction',
- value: 'function(){this.onOkModifyDialogThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- onCancel: {
- type: 'JSFunction',
- value: 'function(){this.onCancelModifyDialogThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- hidden: true,
- children: [
- {
- componentName: 'NextText',
- id: 'node_ockodngwu946',
- props: {
- type: 'inherit',
- children: '修改将撤回此前填写的信息',
- style: {
- fontStyle: 'normal',
- textAlign: 'left',
- display: 'block',
- fontFamily: 'arial, helvetica, microsoft yahei',
- fontWeight: 'normal',
- },
- },
- },
- ],
- },
- {
- componentName: 'NextPage',
- id: 'node_ocko19zplh1',
- props: {
- columns: 12,
- headerDivider: true,
- placeholderStyle: {
- gridRowEnd: 'span 1',
- gridColumnEnd: 'span 12',
- },
- placeholder: '页面主体内容:拖拽Block布局组件到这里',
- header: {
- type: 'JSSlot',
- title: 'header',
- },
- headerProps: {
- background: 'surface',
- },
- footer: {
- type: 'JSSlot',
- title: 'footer',
- },
- minHeight: '100vh',
- style: {},
- },
- title: '页面',
- children: [
- {
- componentName: 'NextBlock',
- id: 'node_ocko19zplh2',
- props: {
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- noPadding: false,
- noBorder: false,
- background: 'surface',
- layoutmode: 'O',
- colSpan: 12,
- rowSpan: 1,
- childTotalColumns: 12,
- },
- title: '区块',
- children: [
- {
- componentName: 'NextBlockCell',
- id: 'node_ocko19zplh3',
- props: {
- title: '',
- prefix: 'next-',
- placeholderStyle: {
- height: '100%',
- },
- layoutmode: 'O',
- childTotalColumns: 12,
- isAutoContainer: true,
- colSpan: 12,
- rowSpan: 1,
- },
- children: [
- {
- componentName: 'NextP',
- id: 'node_ockoco6icv1w',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- flex: true,
- style: {
- marginBottom: '24px',
- },
- },
- title: '段落',
- children: [
- {
- componentName: 'Steps',
- id: 'node_ockoco6icv1x',
- props: {
- current: {
- type: 'JSExpression',
- value: 'this.state.currentStep',
- },
- },
- children: [
- {
- componentName: 'Steps.Step',
- id: 'node_ockoco6icv1y',
- props: {
- title: '版本申请',
- description: '',
- },
- },
- {
- componentName: 'Steps.Step',
- id: 'node_ockoco6icv1z',
- props: {
- title: '机器配置',
- subTitle: '',
- description: '',
- },
- },
- {
- componentName: 'Steps.Step',
- id: 'node_ockoco6icv20',
- props: {
- title: '项目审批',
- description: '',
- },
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextP',
- id: 'node_ockoco6icv12w',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- style: {
- display: 'flex',
- justifyContent: 'center',
- },
- },
- title: '段落',
- condition: {
- type: 'JSExpression',
- value: 'this.state.currentStep === 0',
- },
- children: [
- {
- componentName: 'Form',
- id: 'node_ockoco6icv12x',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 10,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onFinishFirst.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- style: {
- display: 'flex',
- flexDirection: 'column',
- width: '600px',
- justifyContent: 'center',
- },
- layout: 'vertical',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onFinishFirst',
- },
- {
- type: 'componentEvent',
- name: 'onValuesChange',
- relatedEventName: 'onValuesChange',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: true,
- },
- ],
- },
- initialValues: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo',
- },
- onValuesChange: {
- type: 'JSFunction',
- value: 'function(){this.onValuesChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockojhvrkn2u',
- props: {
- label: '',
- style: {
- width: '600px',
- },
- colon: false,
- name: 'id',
- },
- condition: false,
- children: [
- {
- componentName: 'Input',
- id: 'node_ockojhvrkn2v',
- props: {
- placeholder: '',
- style: {
- width: '600px',
- },
- bordered: false,
- disabled: true,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv12y',
- props: {
- label: '版本类型选择',
- name: 'projectVersionTypeArray',
- initialValue: '',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- flexDirection: 'column',
- width: '600px',
- },
- requiredobj: {
- required: true,
- message: '请选择版本类型',
- },
- },
- children: [
- {
- componentName: 'Checkbox.Group',
- id: 'node_ockoco6icv12z',
- props: {
- options: [
- {
- label: '基础版本',
- value: '3',
- },
- {
- label: 'AR导航',
- value: '1',
- },
- {
- label: '货车导航',
- value: '2',
- },
- {
- label: 'UI定制',
- value: '4',
- disabled: false,
- },
- ],
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv13a',
- props: {
- label: '版本线选择',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- width: '600px',
- },
- name: 'versionLine',
- requiredobj: {
- required: true,
- message: '请选择版本线',
- },
- extra: '',
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockoco6icv13b',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.versionLinesArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- placeholder: '请选择版本线',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv13o',
- props: {
- label: '项目名称',
- colon: false,
- required: true,
- style: {
- display: 'flex',
- },
- labelAlign: 'left',
- extra: '',
- name: 'systemProjectName',
- requiredobj: {
- required: true,
- message: '请按格式填写项目名称',
- },
- typeobj: {
- type: 'string',
- message: '请输入项目名称,格式:公司简称-产品名称-版本类型',
- },
- lenobj: {
- max: 100,
- message: '项目名称不能超过100个字符',
- },
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ockoco6icv13p',
- props: {
- placeholder: '公司简称-产品名称-版本类型',
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv13v',
- props: {
- label: '预期交付时间',
- style: {
- width: '600px',
- },
- colon: false,
- required: true,
- name: 'expectedTime',
- labelAlign: 'left',
- requiredobj: {
- required: true,
- message: '请填写预期交付时间',
- },
- },
- children: [
- {
- componentName: 'DatePicker',
- id: 'node_ockoco6icv13w',
- props: {
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bv8',
- props: {
- label: '预期出货量',
- style: {
- width: '600px',
- },
- required: true,
- requiredobj: {
- required: true,
- message: '请填写预期出货量',
- },
- name: 'expectedNum',
- labelAlign: 'left',
- colon: false,
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bv9',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '单位(台)使用该版本的机器数量+预计出货量,请如实填写',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- size: 'middle',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv130',
- props: {
- wrapperCol: {
- offset: '',
- },
- style: {
- flexDirection: 'row',
- alignItems: 'baseline',
- justifyContent: 'space-between',
- width: '600px',
- display: 'block',
- },
- labelAlign: 'left',
- colon: false,
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockoco6icv132',
- props: {
- style: {
- margin: '0px',
- },
- children: '返回',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickFirstBack',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickFirstBack.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockoco6icv131',
- props: {
- type: 'primary',
- children: '下一步',
- htmlType: 'submit',
- style: {
- boxShadow: 'rgba(31, 56, 88, 0.2) 0px 0px 0px 0px',
- float: 'right',
- },
- __events: {
- eventDataList: [],
- eventList: [
- {
- name: 'onClick',
- disabled: false,
- },
- ],
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextP',
- id: 'node_ockoco6icv1ue',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- style: {
- display: 'flex',
- justifyContent: 'center',
- },
- },
- title: '段落',
- condition: {
- type: 'JSExpression',
- value: 'this.state.currentStep === 1',
- },
- children: [
- {
- componentName: 'Form',
- id: 'node_ockoco6icv1uf',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 10,
- },
- onFinish: {
- type: 'JSFunction',
- value: 'function(){this.onFinishSecond.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- style: {
- display: 'flex',
- flexDirection: 'column',
- width: '600px',
- justifyContent: 'center',
- height: '800px',
- },
- layout: 'vertical',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinish',
- relatedEventName: 'onFinishSecond',
- },
- {
- type: 'componentEvent',
- name: 'onValuesChange',
- relatedEventName: 'onValuesChange',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: true,
- },
- {
- name: 'onFinishFailed',
- disabled: false,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: true,
- },
- ],
- },
- initialValues: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo',
- },
- onValuesChange: {
- type: 'JSFunction',
- value: 'function(){this.onValuesChange.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv1ui',
- props: {
- label: '设备类型选择',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- width: '600px',
- },
- name: 'projectModal',
- requiredobj: {
- required: true,
- message: '请选择设备类型',
- },
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockoco6icv1uj',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.projectModalsArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- placeholder: '请选择设备类型',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bv17',
- props: {
- label: '屏幕分辨率宽',
- style: {
- width: '600px',
- },
- name: 'displayWidth',
- colon: false,
- required: true,
- requiredobj: {
- required: true,
- message: '请输入屏幕分辨率宽',
- },
- labelAlign: 'left',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bv18',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '例如1280',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bv10',
- props: {
- label: '屏幕分辨率高',
- style: {
- width: '600px',
- },
- labelAlign: 'left',
- colon: false,
- name: 'displayHeight',
- required: true,
- requiredobj: {
- required: true,
- message: '请输入屏幕分辨率高',
- },
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bv11',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '例如720',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bvt',
- props: {
- label: '屏幕尺寸(inch)',
- style: {
- width: '600px',
- },
- name: 'displayInch',
- labelAlign: 'left',
- required: true,
- colon: false,
- requiredobj: {
- required: true,
- message: '请输入屏幕尺寸',
- },
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bvu',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '请输入尺寸',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bvm',
- props: {
- label: '屏幕DPI',
- style: {
- width: '600px',
- },
- labelAlign: 'left',
- colon: false,
- required: false,
- name: 'displayDpi',
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bvn',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: 'UI定制项目必填',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv1v3',
- props: {
- label: '芯片名称',
- colon: false,
- required: true,
- style: {
- display: 'flex',
- },
- labelAlign: 'left',
- extra: '',
- name: 'mainSoc',
- requiredobj: {
- required: true,
- message: '请输入芯片名称',
- },
- lenobj: {
- max: 50,
- message: '芯片名称不能超过50个字符',
- },
- },
- children: [
- {
- componentName: 'Input',
- id: 'node_ockoco6icv1v4',
- props: {
- placeholder: '请输入芯片名称',
- style: {
- width: '600px',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpmbs0bvf',
- props: {
- label: '芯片核数',
- style: {
- width: '600px',
- },
- required: true,
- requiredobj: {
- required: true,
- message: '请输入芯片核数',
- },
- name: 'cpuCoreNum',
- labelAlign: 'left',
- colon: false,
- },
- children: [
- {
- componentName: 'InputNumber',
- id: 'node_ockpmbs0bvg',
- props: {
- value: 3,
- style: {
- width: '600px',
- },
- placeholder: '请输入芯片核数',
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- defaultValue: '',
- min: 0,
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockpxba11aa',
- props: {
- label: '指令集',
- style: {
- width: '600px',
- },
- required: true,
- requiredobj: {
- required: true,
- message: '请选择指令集',
- },
- name: 'instructions',
- colon: false,
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockpxba11ab',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.instructionsArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockodz1kiqh',
- props: {
- label: '系统版本',
- labelAlign: 'left',
- colon: false,
- required: true,
- style: {
- width: '600px',
- },
- name: 'osVersion',
- requiredobj: {
- required: true,
- message: '请选择系统版本',
- },
- },
- children: [
- {
- componentName: 'Select',
- id: 'node_ockodz1kiqi',
- props: {
- style: {
- width: '600px',
- },
- options: {
- type: 'JSExpression',
- value: 'this.state.osVersionsArray',
- },
- disabled: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.id > 0 && ! this.state.isModifyStatus',
- },
- placeholder: '请选择系统版本',
- },
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockoco6icv1uq',
- props: {
- wrapperCol: {
- offset: '',
- },
- style: {
- flexDirection: 'row',
- width: '600px',
- display: 'flex',
- },
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockoco6icv1ur',
- props: {
- style: {
- marginLeft: '0',
- },
- children: '返回',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickSecondBack',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickSecondBack.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockoco6icv1vb',
- props: {
- type: 'primary',
- children: {
- type: 'JSExpression',
- value: 'this.state.secondCommitText',
- },
- htmlType: 'submit',
- style: {
- float: 'right',
- marginLeft: '20px',
- },
- loading: {
- type: 'JSExpression',
- value: 'this.state.LOADING_ADD_OR_UPDATE_CUSTOMER_PROJECT',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockoco6icv1us',
- props: {
- type: 'primary',
- children: '上一步',
- htmlType: 'submit',
- style: {
- marginLeft: '0px',
- float: 'right',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickPreSecond',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickPreSecond.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- ],
- },
- ],
- },
- ],
- },
- {
- componentName: 'NextP',
- id: 'node_ockodngwu9m',
- props: {
- wrap: false,
- type: 'body2',
- verAlign: 'middle',
- textSpacing: true,
- align: 'left',
- full: true,
- flex: true,
- style: {
- display: 'flex',
- justifyContent: 'center',
- },
- },
- title: '段落',
- condition: {
- type: 'JSExpression',
- value: 'this.state.currentStep === 2',
- },
- children: [
- {
- componentName: 'Form',
- id: 'node_ockodngwu9n',
- props: {
- labelCol: {
- span: 10,
- },
- wrapperCol: {
- span: 10,
- },
- onFinishFailed: {
- type: 'JSFunction',
- value: 'function(){this.onFinishFailed.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- name: 'basic',
- style: {
- display: 'flex',
- flexDirection: 'column',
- width: '600px',
- justifyContent: 'center',
- },
- layout: 'vertical',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onFinishFailed',
- relatedEventName: 'onFinishFailed',
- },
- ],
- eventList: [
- {
- name: 'onFinish',
- disabled: false,
- },
- {
- name: 'onFinishFailed',
- disabled: true,
- },
- {
- name: 'onFieldsChange',
- disabled: false,
- },
- {
- name: 'onValuesChange',
- disabled: false,
- },
- ],
- },
- },
- children: [
- {
- componentName: 'Form.Item',
- id: 'node_ockodngwu91m',
- props: {
- label: '',
- },
- children: [
- {
- componentName: 'Steps',
- id: 'node_ockodngwu91n',
- props: {
- current: 1,
- style: {
- width: '600px',
- display: 'flex',
- justifyContent: 'space-around',
- alignItems: 'center',
- height: '300px',
- },
- labelPlacement: 'horizontal',
- direction: 'vertical',
- },
- children: [
- {
- componentName: 'Steps.Step',
- id: 'node_ockodngwu91o',
- props: {
- title: '提交完成',
- description: '',
- style: {
- width: '200px',
- },
- },
- },
- {
- componentName: 'Steps.Step',
- id: 'node_ockodngwu91p',
- props: {
- title: {
- type: 'JSExpression',
- value: 'this.state.thirdAuditText',
- },
- subTitle: '',
- description: '',
- style: {
- width: '200px',
- },
- },
- },
- ],
- },
- ],
- },
- {
- componentName: 'Form.Item',
- id: 'node_ockodngwu914',
- props: {
- wrapperCol: {
- offset: '',
- },
- style: {
- flexDirection: 'row',
- width: '600px',
- display: 'flex',
- },
- },
- children: [
- {
- componentName: 'Button',
- id: 'node_ockodngwu915',
- props: {
- style: {
- marginLeft: '0',
- },
- children: '返回',
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickThirdBack',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickThirdBack.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockodngwu916',
- props: {
- type: 'primary',
- children: {
- type: 'JSExpression',
- value: 'this.state.thirdButtonText',
- },
- htmlType: 'submit',
- style: {
- float: 'right',
- marginLeft: '20px',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickModifyThird',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickModifyThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- },
- {
- componentName: 'Button',
- id: 'node_ockosjrkvr1d',
- props: {
- type: 'primary',
- children: '上一步',
- htmlType: 'submit',
- style: {
- marginLeft: '0px',
- float: 'right',
- },
- __events: {
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onClick',
- relatedEventName: 'onClickPreThird',
- },
- ],
- eventList: [
- {
- name: 'onClick',
- disabled: true,
- },
- ],
- },
- onClick: {
- type: 'JSFunction',
- value: 'function(){this.onClickPreThird.apply(this,Array.prototype.slice.call(arguments).concat([])) }',
- },
- },
- condition: {
- type: 'JSExpression',
- value: 'this.state.customerProjectInfo.status > 2',
- },
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- },
- ],
- i18n: {},
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/package.json
deleted file mode 100644
index 91da69eef2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-http-handler": "^1.0.0",
- "@alilc/lowcode-components": "^1.0.0"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/public/index.html
deleted file mode 100644
index 8ebe0c9e85..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- example
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
deleted file mode 100644
index 9a661ad753..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/pages/Example/index.jsx
+++ /dev/null
@@ -1,116 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Page, Table } from '@alilc/lowcode-components';
-
-import { createHttpHandler as __$$createHttpRequestHandler } from '@alilc/lowcode-datasource-http-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class Example$$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: { http: __$$createHttpRequestHandler() },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'userList',
- type: 'http',
- description: '用户列表',
- options: function () {
- return {
- uri: 'https://api.example.com/user/list',
- };
- }.bind(_this),
- isInit: function () {
- return undefined;
- }.bind(_this),
- },
- ],
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
this.dataSourceMap['userList'])}
- columns={[
- { dataIndex: 'name', title: '姓名' },
- { dataIndex: 'age', title: '年龄' },
- ]}
- />
-
- );
- }
-}
-
-export default Example$$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/routes.js
deleted file mode 100644
index 27e35dd605..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import Example from '@/pages/Example';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '',
- component: Example,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/schema.json5
deleted file mode 100644
index 1e61996cf5..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo8-datasource-prop/schema.json5
+++ /dev/null
@@ -1,65 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- package: '@alilc/lowcode-components',
- version: '^1.0.0',
- componentName: 'Page',
- destructuring: true,
- exportName: 'Page',
- },
- {
- package: '@alilc/lowcode-components',
- version: '^1.0.0',
- componentName: 'Table',
- destructuring: true,
- exportName: 'Table',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- id: 'node_ockp6ci0hm1',
- props: {},
- fileName: 'example',
- dataSource: {
- list: [
- {
- id: 'userList',
- type: 'http',
- description: '用户列表',
- options: {
- uri: 'https://api.example.com/user/list',
- },
- },
- ],
- },
- children: [
- {
- componentName: 'Table',
- id: 'node_ockp6ci0hm22',
- props: {
- dataSource: {
- type: 'DataSource',
- id: 'userList',
- },
- columns: [
- {
- dataIndex: 'name',
- title: '姓名',
- },
- {
- dataIndex: 'age',
- title: '年龄',
- },
- ],
- },
- },
- ],
- },
- ],
- meta: {
- name: 'example',
- description: 'Example',
- },
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/package.json
deleted file mode 100644
index 939adb7791..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/package.json
+++ /dev/null
@@ -1,49 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "@alilc/lowcode-datasource-jsonp-handler": "^1.0.0",
- "@alifd/next": "1.19.18"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/public/index.html
deleted file mode 100644
index 3d36c47b83..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Ice App
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx
deleted file mode 100644
index 799ca0d28f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/pages/$/index.jsx
+++ /dev/null
@@ -1,125 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import { Switch } from '@alifd/next';
-
-import { createJsonpHandler as __$$createJsonpRequestHandler } from '@alilc/lowcode-datasource-jsonp-handler';
-
-import { create as __$$createDataSourceEngine } from '@alilc/lowcode-datasource-engine/runtime';
-
-import '@alifd/next/lib/switch/style';
-
-import utils from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-class $$Page extends React.Component {
- _context = this;
-
- _dataSourceConfig = this._defineDataSourceConfig();
- _dataSourceEngine = __$$createDataSourceEngine(this._dataSourceConfig, this, {
- runtimeConfig: true,
- requestHandlersMap: { jsonp: __$$createJsonpRequestHandler() },
- });
-
- get dataSourceMap() {
- return this._dataSourceEngine.dataSourceMap || {};
- }
-
- reloadDataSource = async () => {
- await this._dataSourceEngine.reloadDataSource();
- };
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- __$$i18n._inject2(this);
-
- this.state = {};
- }
-
- $ = () => null;
-
- $$ = () => [];
-
- _defineDataSourceConfig() {
- const _this = this;
- return {
- list: [
- {
- id: 'todos',
- isInit: function () {
- return true;
- }.bind(_this),
- type: 'jsonp',
- options: function () {
- return {
- method: 'GET',
- uri: 'https://a0ee9135-6a7f-4c0f-a215-f0f247ad907d.mock.pstmn.io',
- };
- }.bind(_this),
- dataHandler: function dataHandler(data) {
- return data.data;
- },
- },
- ],
- };
- }
-
- componentDidMount() {
- this._dataSourceEngine.reloadDataSource();
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
- {__$$evalArray(() => this.dataSourceMap.todos.data).map((item, index) =>
- ((__$$context) => (
-
- item.done)}
- />
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
- );
- }
-}
-
-export default $$Page;
-
-function __$$eval(expr) {
- try {
- return expr();
- } catch (error) {}
-}
-
-function __$$evalArray(expr) {
- const res = __$$eval(expr);
- return Array.isArray(res) ? res : [];
-}
-
-function __$$createChildContext(oldContext, ext) {
- const childContext = {
- ...oldContext,
- ...ext,
- };
- childContext.__proto__ = oldContext;
- return childContext;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/routes.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/routes.js
deleted file mode 100644
index 218549c42f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/routes.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import $ from '@/pages/$';
-
-import BasicLayout from '@/layouts/BasicLayout';
-
-const routerConfig = [
- {
- path: '/',
- component: BasicLayout,
- children: [
- {
- path: '',
- component: $,
- },
- ],
- },
-];
-
-export default routerConfig;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/utils.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/utils.js
deleted file mode 100644
index 1190717924..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/src/utils.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import { createRef } from 'react';
-
-export class RefsManager {
- constructor() {
- this.refInsStore = {};
- }
-
- clearNullRefs() {
- Object.keys(this.refInsStore).forEach((refName) => {
- const filteredInsList = this.refInsStore[refName].filter(
- (insRef) => !!insRef.current
- );
- if (filteredInsList.length > 0) {
- this.refInsStore[refName] = filteredInsList;
- } else {
- delete this.refInsStore[refName];
- }
- });
- }
-
- get(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName][0].current;
- }
-
- return null;
- }
-
- getAll(refName) {
- this.clearNullRefs();
- if (this.refInsStore[refName] && this.refInsStore[refName].length > 0) {
- return this.refInsStore[refName].map((i) => i.current);
- }
-
- return [];
- }
-
- linkRef(refName) {
- const refIns = createRef();
- this.refInsStore[refName] = this.refInsStore[refName] || [];
- this.refInsStore[refName].push(refIns);
- return refIns;
- }
-}
-
-export default {};
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/tsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/tsconfig.json
deleted file mode 100644
index 859dafda97..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/expected/demo-project/tsconfig.json
+++ /dev/null
@@ -1,35 +0,0 @@
-
-{
- "compileOnSave": false,
- "buildOnSave": false,
- "compilerOptions": {
- "baseUrl": ".",
- "outDir": "build",
- "module": "esnext",
- "target": "es6",
- "jsx": "react",
- "moduleResolution": "node",
- "allowSyntheticDefaultImports": true,
- "lib": ["es6", "dom"],
- "sourceMap": true,
- "allowJs": true,
- "rootDir": "./",
- "forceConsistentCasingInFileNames": true,
- "noImplicitReturns": true,
- "noImplicitThis": true,
- "noImplicitAny": false,
- "importHelpers": true,
- "strictNullChecks": true,
- "suppressImplicitAnyIndexErrors": true,
- "noUnusedLocals": true,
- "skipLibCheck": true,
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- },
- "include": ["src/*", ".ice"],
- "exclude": ["node_modules", "build", "public"]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/schema.json5 b/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/schema.json5
deleted file mode 100644
index f91f132ad2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo9-datasource-engine/schema.json5
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- version: '1.0.0',
- componentsMap: [
- {
- componentName: 'Switch',
- package: '@alifd/next',
- version: '1.19.18',
- exportName: 'Switch',
- destructuring: true,
- subName: '',
- },
- ],
- componentsTree: [
- {
- componentName: 'Page',
- props: {},
- children: [
- {
- componentName: 'Div',
- props: {},
- children: [
- {
- componentName: 'Switch',
- props: {
- checkedChildren: '开',
- unCheckedChildren: '关',
- checked: {
- type: 'JSExpression',
- value: 'this.item.done',
- },
- },
- },
- ],
- loop: {
- type: 'JSExpression',
- value: 'this.dataSourceMap.todos.data',
- },
- },
- ],
- dataSource: {
- list: [
- {
- id: 'todos',
- isInit: true,
- type: 'jsonp',
- options: {
- method: 'GET',
- uri: 'https://a0ee9135-6a7f-4c0f-a215-f0f247ad907d.mock.pstmn.io',
- },
- dataHandler: {
- type: 'JSFunction',
- value: 'function dataHandler(data) {return data.data;}',
- },
- },
- ],
- },
- },
- ],
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.editorconfig b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.editorconfig
deleted file mode 100644
index 3ea41d64d9..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.editorconfig
+++ /dev/null
@@ -1,14 +0,0 @@
-
-# http://editorconfig.org
-root = true
-
-[*]
-indent_style = space
-indent_size = 2
-charset = utf-8
-trim_trailing_whitespace = true
-insert_final_newline = true
-
-[*.md]
-trim_trailing_whitespace = false
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintignore
deleted file mode 100644
index f23ef4e4e6..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintignore
+++ /dev/null
@@ -1,17 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-.ice/
-
-# node 覆盖率文件
-coverage/
-
-# 忽略文件
-**/*-min.js
-**/*.min.js
-
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintrc.js
deleted file mode 100644
index c6011eb8e2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.eslintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { eslint } = require('@ice/spec');
-
-module.exports = eslint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.gitignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.gitignore
deleted file mode 100644
index 4ec178818e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.gitignore
+++ /dev/null
@@ -1,25 +0,0 @@
-
-# See https://help.github.com/ignore-files/ for more about ignoring files.
-
-# dependencies
-node_modules/
-
-# production
-build/
-dist/
-tmp/
-lib/
-
-# misc
-.idea/
-.happypack
-.DS_Store
-*.swp
-*.dia~
-.ice
-
-npm-debug.log*
-yarn-debug.log*
-yarn-error.log*
-index.module.scss.d.ts
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierignore
deleted file mode 100644
index 0ae499209a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierignore
+++ /dev/null
@@ -1,11 +0,0 @@
-
-build/
-tests/
-demo/
-.ice/
-coverage/
-**/*-min.js
-**/*.min.js
-package-lock.json
-yarn.lock
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierrc.js
deleted file mode 100644
index 38ac56a77a..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.prettierrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { prettier } = require('@ice/spec');
-
-module.exports = prettier;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintignore b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintignore
deleted file mode 100644
index e8dccaf6a2..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintignore
+++ /dev/null
@@ -1,9 +0,0 @@
-
-# 忽略目录
-build/
-tests/
-demo/
-
-# node 覆盖率文件
-coverage/
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintrc.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintrc.js
deleted file mode 100644
index 9df5d45419..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/.stylelintrc.js
+++ /dev/null
@@ -1,5 +0,0 @@
-
-const { stylelint } = require('@ice/spec');
-
-module.exports = stylelint;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/README.md b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/README.md
deleted file mode 100644
index 1e28b2465c..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/README.md
+++ /dev/null
@@ -1,62 +0,0 @@
-
-## Scaffold Lite
-
-> 轻量级模板,使用 JavaScript,仅包含基础的 Layout。
-
-## 使用
-
-```bash
-# 安装依赖
-$ npm install
-
-# 启动服务
-$ npm start # visit http://localhost:3333
-```
-
-[More docs](https://ice.work/docs/guide/about).
-
-## 目录
-
-```md
-├── build/ # 构建产物
-├── mock/ # 本地模拟数据
-│ ├── index.[j,t]s
-├── public/
-│ ├── index.html # 应用入口 HTML
-│ └── favicon.png # Favicon
-├── src/ # 源码路径
-│ ├── components/ # 自定义业务组件
-│ │ └── Guide/
-│ │ ├── index.[j,t]sx
-│ │ ├── index.module.scss
-│ ├── layouts/ # 布局组件
-│ │ └── BasicLayout/
-│ │ ├── index.[j,t]sx
-│ │ └── index.module.scss
-│ ├── pages/ # 页面
-│ │ └── Home/ # home 页面,约定路由转成小写
-│ │ ├── components/ # 页面级自定义业务组件
-│ │ ├── models.[j,t]sx # 页面级数据状态
-│ │ ├── index.[j,t]sx # 页面入口
-│ │ └── index.module.scss # 页面样式文件
-│ ├── configs/ # [可选] 配置文件
-│ │ └── menu.[j,t]s # [可选] 菜单配置
-│ ├── models/ # [可选] 应用级数据状态
-│ │ └── user.[j,t]s
-│ ├── utils/ # [可选] 工具库
-│ ├── global.scss # 全局样式
-│ ├── routes.[j,t]s # 路由配置
-│ └── app.[j,t]s[x] # 应用入口脚本
-├── build.json # 工程配置
-├── README.md
-├── package.json
-├── .editorconfig
-├── .eslintignore
-├── .eslintrc.[j,t]s
-├── .gitignore
-├── .stylelintignore
-├── .stylelintrc.[j,t]s
-├── .gitignore
-└── [j,t]sconfig.json
-```
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/abc.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/abc.json
deleted file mode 100644
index dec202aaf7..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/abc.json
+++ /dev/null
@@ -1,6 +0,0 @@
-
-{
- "type": "ice-app",
- "builder": "@ali/builder-ice-app"
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/build.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/build.json
deleted file mode 100644
index d78dfe9192..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/build.json
+++ /dev/null
@@ -1,21 +0,0 @@
-
-{
- "entry": "src/app.js",
- "plugins": [
- [
- "build-plugin-fusion",
- {
- "themePackage": "@alifd/theme-design-pro"
- }
- ],
- [
- "build-plugin-moment-locales",
- {
- "locales": [
- "zh-cn"
- ]
- }
- ]
- ]
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/jsconfig.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/jsconfig.json
deleted file mode 100644
index c12e175308..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/jsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-
-{
- "compilerOptions": {
- "baseUrl": ".",
- "jsx": "react",
- "paths": {
- "@/*": ["./src/*"],
- "ice": [".ice/index.ts"],
- "ice/*": [".ice/pages/*"]
- }
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/package.json b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/package.json
deleted file mode 100644
index 41f379d7a0..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/package.json
+++ /dev/null
@@ -1,51 +0,0 @@
-{
- "name": "icejs-demo-app",
- "version": "0.1.5",
- "description": "轻量级模板,使用 JavaScript,仅包含基础的 Layout。",
- "dependencies": {
- "moment": "^2.24.0",
- "react": "^16.4.1",
- "react-dom": "^16.4.1",
- "react-router": "^5.2.1",
- "@alifd/theme-design-pro": "^0.x",
- "intl-messageformat": "^9.3.6",
- "@ice/store": "^1.4.3",
- "@loadable/component": "^5.15.2",
- "@alilc/lowcode-datasource-engine": "^1.0.0",
- "undefined": "*",
- "@alilc/antd-lowcode-materials": "0.9.4",
- "@alife/mc-assets-1935": "0.1.42",
- "@alife/container": "0.3.7"
- },
- "devDependencies": {
- "@ice/spec": "^1.0.0",
- "build-plugin-fusion": "^0.1.0",
- "build-plugin-moment-locales": "^0.1.0",
- "eslint": "^6.0.1",
- "ice.js": "^1.0.0",
- "stylelint": "^13.2.0"
- },
- "scripts": {
- "start": "icejs start",
- "build": "icejs build",
- "lint": "npm run eslint && npm run stylelint",
- "eslint": "eslint --cache --ext .js,.jsx ./",
- "stylelint": "stylelint ./**/*.scss"
- },
- "ideMode": {
- "name": "ice-react"
- },
- "iceworks": {
- "type": "react",
- "adapter": "adapter-react-v3"
- },
- "engines": {
- "node": ">=8.0.0"
- },
- "repository": {
- "type": "git",
- "url": "http://gitlab.xxx.com/msd/leak-scan/tree/master"
- },
- "private": true,
- "originTemplate": "@alifd/scaffold-lite-js"
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/public/index.html b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/public/index.html
deleted file mode 100644
index 3d36c47b83..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/public/index.html
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
- Ice App
-
-
-
-
-
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/app.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/app.js
deleted file mode 100644
index 266d8ef71d..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/app.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { createApp } from 'ice';
-
-const appConfig = {
- app: {
- rootId: 'app',
- },
- router: {
- type: 'hash',
- },
-};
-createApp(appConfig);
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/constants.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/constants.js
deleted file mode 100644
index ea766c9da3..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/constants.js
+++ /dev/null
@@ -1,3 +0,0 @@
-const __$$constants = {};
-
-export default __$$constants;
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/global.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/global.scss
deleted file mode 100644
index 82ca3eac73..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/global.scss
+++ /dev/null
@@ -1,6 +0,0 @@
-// 引入默认全局样式
-@import '@alifd/next/reset.scss';
-
-body {
- -webkit-font-smoothing: antialiased;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/i18n.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/i18n.js
deleted file mode 100644
index 1334d2502b..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/i18n.js
+++ /dev/null
@@ -1,77 +0,0 @@
-const i18nConfig = {};
-
-let locale =
- typeof navigator === 'object' && typeof navigator.language === 'string'
- ? navigator.language
- : 'zh-CN';
-
-const getLocale = () => locale;
-
-const setLocale = (target) => {
- locale = target;
-};
-
-const isEmptyVariables = (variables) =>
- (Array.isArray(variables) && variables.length === 0) ||
- (typeof variables === 'object' &&
- (!variables || Object.keys(variables).length === 0));
-
-// 按低代码规范里面的要求进行变量替换
-const format = (msg, variables) =>
- 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] ??
- defaultMessage;
- if (msg == null) {
- console.warn('[i18n]: unknown message id: %o (locale=%o)', id, locale);
- return fallback === undefined ? `${id}` : fallback;
- }
-
- return format(msg, variables);
-};
-
-const i18n = (id, params) => {
- return i18nFormat({ id }, params);
-};
-
-// 将国际化的一些方法注入到目标对象&上下文中
-const _inject2 = (target) => {
- target.i18n = i18n;
- target.getLocale = getLocale;
- target.setLocale = (locale) => {
- setLocale(locale);
- target.forceUpdate();
- };
- target._i18nText = (t) => {
- // 优先取直接传过来的语料
- const localMsg = t[locale] ?? t[String(locale).replace('-', '_')];
- if (localMsg != null) {
- return format(localMsg, t.params);
- }
-
- // 其次用项目级别的
- const projectMsg = i18nFormat({ id: t.key, fallback: null }, t.params);
- if (projectMsg != null) {
- return projectMsg;
- }
-
- // 兜底用 use 指定的或默认语言的
- return format(t[t.use || 'zh-CN'] ?? t.en_US, t.params);
- };
-
- // 注入到上下文中去
- if (target._context && target._context !== target) {
- Object.assign(target._context, {
- i18n,
- getLocale,
- setLocale: target.setLocale,
- });
- }
-};
-
-export { getLocale, setLocale, i18n, i18nFormat, _inject2 };
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
deleted file mode 100644
index cc70d53bea..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.jsx
+++ /dev/null
@@ -1,14 +0,0 @@
-
-import React from 'react';
-import styles from './index.module.scss';
-
-export default function Footer() {
- return (
-
- Alibaba Fusion
-
- © 2019-现在 Alibaba Fusion & ICE
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
deleted file mode 100644
index 81e77fda5f..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Footer/index.module.scss
+++ /dev/null
@@ -1,15 +0,0 @@
-
-.footer {
- line-height: 20px;
- text-align: center;
-}
-
-.logo {
- font-weight: bold;
- font-size: 16px;
-}
-
-.copyright {
- font-size: 12px;
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
deleted file mode 100644
index 265bfdaa07..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.jsx
+++ /dev/null
@@ -1,16 +0,0 @@
-
-import React from 'react';
-import { Link } from 'ice';
-import styles from './index.module.scss';
-
-export default function Logo({ image, text, url }) {
- return (
-
-
- {image &&

}
-
{text}
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
deleted file mode 100644
index 1ab56d3945..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/Logo/index.module.scss
+++ /dev/null
@@ -1,20 +0,0 @@
-
-.logo{
- display: flex;
- align-items: center;
- justify-content: center;
- color: $color-text1-1;
- font-weight: bold;
- font-size: 14px;
- line-height: 22px;
-
- &:visited, &:link {
- color: $color-text1-1;
- }
-
- img {
- height: 24px;
- margin-right: 10px;
- }
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
deleted file mode 100644
index ea77e33589..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/components/PageNav/index.jsx
+++ /dev/null
@@ -1,70 +0,0 @@
-
-import React from 'react';
-import PropTypes from 'prop-types';
-import { Link, withRouter } from 'ice';
-import { Nav } from '@alifd/next';
-import { asideMenuConfig } from '../../menuConfig';
-
-const { SubNav } = Nav;
-const NavItem = Nav.Item;
-
-function getNavMenuItems(menusData) {
- if (!menusData) {
- return [];
- }
-
- return menusData
- .filter(item => item.name && !item.hideInMenu)
- .map((item, index) => getSubMenuOrItem(item, index));
-}
-
-function getSubMenuOrItem(item, index) {
- if (item.children && item.children.some(child => child.name)) {
- const childrenItems = getNavMenuItems(item.children);
-
- if (childrenItems && childrenItems.length > 0) {
- const subNav = (
-
- {childrenItems}
-
- );
- return subNav;
- }
-
- return null;
- }
-
- const navItem = (
-
- {item.name}
-
- );
- return navItem;
-}
-
-const Navigation = (props, context) => {
- const { location } = props;
- const { pathname } = location;
- const { isCollapse } = context;
- return (
-
- );
-};
-
-Navigation.contextTypes = {
- isCollapse: PropTypes.bool,
-};
-const PageNav = withRouter(Navigation);
-export default PageNav;
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx
deleted file mode 100644
index 18db44df5e..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/index.jsx
+++ /dev/null
@@ -1,81 +0,0 @@
-
-import React, { useState } from 'react';
-import { Shell, ConfigProvider } from '@alifd/next';
-import PageNav from './components/PageNav';
-import Logo from './components/Logo';
-import Footer from './components/Footer';
-
-(function() {
- const throttle = function(type, name, obj = window) {
- let running = false;
-
- const func = () => {
- if (running) {
- return;
- }
-
- running = true;
- requestAnimationFrame(() => {
- obj.dispatchEvent(new CustomEvent(name));
- running = false;
- });
- };
-
- obj.addEventListener(type, func);
- };
-
- throttle('resize', 'optimizedResize');
-})();
-
-export default function BasicLayout({ children }) {
- const getDevice = width => {
- const isPhone =
- typeof navigator !== 'undefined' && navigator && navigator.userAgent.match(/phone/gi);
-
- if (width < 680 || isPhone) {
- return 'phone';
- }
- if (width < 1280 && width > 680) {
- return 'tablet';
- }
- return 'desktop';
- };
-
- const [device, setDevice] = useState(getDevice(NaN));
- window.addEventListener('optimizedResize', e => {
- setDevice(getDevice(e && e.target && e.target.innerWidth));
- });
- return (
-
-
-
-
-
-
-
-
-
-
-
- {children}
-
-
-
-
-
- );
-}
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
deleted file mode 100644
index 5332202be4..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/layouts/BasicLayout/menuConfig.js
+++ /dev/null
@@ -1,11 +0,0 @@
-
-const headerMenuConfig = [];
-const asideMenuConfig = [
- {
- name: 'Dashboard',
- path: '/',
- icon: 'smile',
- },
-];
-export { headerMenuConfig, asideMenuConfig };
-
\ No newline at end of file
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css
deleted file mode 100644
index 066114aeeb..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.css
+++ /dev/null
@@ -1,8 +0,0 @@
-body {
- font-size: 12px;
-}
-
-.botton {
- width: 100px;
- color: #ff00ff;
-}
diff --git a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx b/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx
deleted file mode 100644
index 922ad47ad8..0000000000
--- a/modules/code-generator/tests/fixtures/test-cases/react-app/demo_10-jsslot/expected/demo-project/src/pages/Test/index.jsx
+++ /dev/null
@@ -1,822 +0,0 @@
-// 注意: 出码引擎注入的临时变量默认都以 "__$$" 开头,禁止在搭建的代码中直接访问。
-// 例外:react 框架的导出名和各种组件名除外。
-import React from 'react';
-
-import {
- Modal,
- Button,
- Typography,
- Form,
- Select,
- Input,
- ConfigProvider,
- Tooltip,
- Empty,
-} from '@alilc/antd-lowcode-materials/dist/antd-lowcode.esm.js';
-
-import {
- AliAutoDiv,
- AliAutoSearchTable,
-} from '@alife/mc-assets-1935/build/lowcode/index.js';
-
-import {
- Page as NextPage,
- Block as NextBlock,
- P as NextP,
-} from '@alife/container/lib/index.js';
-
-import utils, { RefsManager } from '../../utils';
-
-import * as __$$i18n from '../../i18n';
-
-import __$$constants from '../../constants';
-
-import './index.css';
-
-const AliAutoDivDefault = AliAutoDiv.default;
-
-const AliAutoSearchTableDefault = AliAutoSearchTable.default;
-
-const NextBlockCell = NextBlock.Cell;
-
-class Test$$Page extends React.Component {
- _context = this;
-
- get constants() {
- return __$$constants || {};
- }
-
- constructor(props, context) {
- super(props);
-
- this.utils = utils;
-
- this._refsManager = new RefsManager();
-
- __$$i18n._inject2(this);
-
- this.state = {
- pkgs: [],
- total: 0,
- isSearch: false,
- projects: [],
- results: [],
- resultVisible: false,
- };
-
- this.__jp__init();
- this.statusDesc = {
- 0: '失败',
- 1: '成功',
- 2: '构建中',
- 3: '构建超时',
- };
- this.pageParams = {};
- }
-
- $ = (refName) => {
- return this._refsManager.get(refName);
- };
-
- $$ = (refName) => {
- return this._refsManager.getAll(refName);
- };
-
- componentDidUpdate(prevProps, prevState, snapshot) {}
-
- componentWillUnmount() {}
-
- __jp__init() {
- /*...*/
- }
-
- __jp__initRouter() {
- if (window.arsenal) {
- this.$router = new window.jianpin.ArsenalRouter({
- app: this.props.microApp,
- });
- } else {
- this.$router = new window.jianpin.ArsenalRouter();
- }
- }
-
- __jp__initDataSource() {
- /*...*/
- }
-
- __jp__initEnv() {
- /*...*/
- }
-
- __jp__initConfig() {
- /*...*/
- }
-
- __jp__initUtils() {
- this.$utils = {
- message: window.jianpin.utils.message,
- axios: window.jianpin.utils.axios,
- moment: window.jianpin.utils.moment,
- };
- }
-
- fetchPkgs() {
- /*...*/
- }
-
- onPageChange(pageIndex, pageSize) {
- this.pageParams = {
- pageIndex,
- pageSize,
- };
- this.fetchPkgs();
- }
-
- renderTime(time) {
- return this.$utils.moment(time).format('YYYY-MM-DD HH:mm');
- }
-
- renderUserName(user) {
- return user.user_name;
- }
-
- reload() {
- /*...*/
- }
-
- handleResult() {
- /*...*/
- }
-
- handleDetail() {
- // 跳转详情页面 TODO
- }
-
- onResultCancel() {
- this.setState({
- resultVisible: false,
- });
- }
-
- formatResult(item) {
- if (!item) {
- return '暂无结果';
- }
- const { channel, plat, version, status } = item;
- return [channel, plat, version, status].join('-');
- }
-
- handleDownload() {
- /*...*/
- }
-
- onFinish() {
- /*...*/
- }
-
- componentDidMount() {
- this.$ds.resolve('PROJECTS', {
- params: {
- size: 5000,
- },
- });
- // if (this.state.init === false) {
- // this.setState({
- // init: true,
- // });
- // }
- }
-
- render() {
- const __$$context = this._context || this;
- const { state } = __$$context;
- return (
-
-
this.state.resultVisible)}
- footer={
-
- }
- __events={{
- eventDataList: [
- {
- type: 'componentEvent',
- name: 'onCancel',
- relatedEventName: 'onResultCancel',
- },
- ],
- eventList: [
- { name: 'onCancel', disabled: true },
- { name: 'onOk', disabled: false },
- ],
- }}
- onCancel={function () {
- this.onResultCancel.apply(
- this,
- Array.prototype.slice.call(arguments).concat([])
- );
- }.bind(this)}
- width="720px"
- centered={true}
- >
- {__$$evalArray(() => this.state.results).map((item, index) =>
- ((__$$context) => (
-
- {!!__$$eval(
- () =>
- __$$context.state.results &&
- __$$context.state.results.length > 0
- ) && (
-
-
-
- )}
-
- {__$$eval(() => __$$context.formatResult(item))}
-
- {!!__$$eval(() => item.download_link) && (
- item.download_link)}
- target="_blank"
- >
- {' '}
- - 点击下载
-
- )}
- {!!__$$eval(() => item.release_notes) && (
- item.release_notes)}
- target="_blank"
- >
- {' '}
- - 跳转发布节点
-
- )}
-
- ))(__$$createChildContext(__$$context, { item, index }))
- )}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {!!__$$eval(
- () =>
- !this.state.isSearch ||
- (this.state.isSearch && this.state.pkgs.length > 0)
- ) && (
- this.state.pkgs)}
- columns={[
- {
- title: 'ID',
- dataIndex: 'id',
- key: 'name',
- width: 80,
- },
- {
- title: '渠道号',
- dataIndex: 'channels',
- key: 'age',
- width: 142,
- render: (text, record, index) =>
- ((__$$context) =>
- __$$evalArray(() => text.split(',')).map(
- (item, index) =>
- ((__$$context) => (
-