diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml
new file mode 100644
index 000000000..f2d8a6254
--- /dev/null
+++ b/.github/workflows/stale.yml
@@ -0,0 +1,19 @@
+name: 'Close stale issues and PRs'
+on:
+ schedule:
+ - cron: '30 1 * * *'
+
+jobs:
+ stale:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/stale@v4
+ with:
+ stale-issue-message: 'This issue is stale because it has been open 10 days with no activity. Remove stale label or comment or this will be closed in 2 days.'
+ stale-pr-message: 'This PR is stale because it has been open 10 days with no activity. Remove stale label or comment or this will be closed in 2 days.'
+ close-issue-message: 'This issue was closed because it has been stalled for 10 days with no activity.'
+ close-pr-message: 'This PR was closed because it has been stalled for 10 days with no activity.'
+ days-before-issue-stale: 10
+ days-before-issue-close: 2
+ days-before-pr-stale: 10
+ days-before-pr-close: 2
\ No newline at end of file
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
new file mode 100644
index 000000000..aec4d9a5d
--- /dev/null
+++ b/.github/workflows/test.yml
@@ -0,0 +1,36 @@
+name: lint & test
+
+on: [push, pull_request]
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - uses: actions/setup-node@v2
+ with:
+ node-version: '14'
+
+ - name: install
+ run: npm i && npm run setup:skip-build
+
+ - name: lint
+ run: npm run lint
+
+ test-designer:
+ runs-on: ubuntu-latest
+ steps:
+ - name: checkout
+ uses: actions/checkout@v2
+
+ - uses: actions/setup-node@v2
+ with:
+ node-version: '14'
+
+ - name: install
+ run: npm i && npm run setup:skip-build
+
+ - name: test
+ run: cd packages/designer && npm test
\ No newline at end of file
diff --git a/CONTRIBUTOR.md b/CONTRIBUTOR.md
index bcadf2343..8ca48abd0 100644
--- a/CONTRIBUTOR.md
+++ b/CONTRIBUTOR.md
@@ -2,6 +2,8 @@
- [albertxiao1994](https://github.com/albertxiao1994)
- [alex-mm](https://github.com/alex-mm)
- [alvarto](https://github.com/alvarto)
+- [alvinhui](https://github.com/alvinhui)
+- [boycgit](https://github.com/boycgit)
- [chenmingjia](https://github.com/chenmingjia)
- [Clarence-pan](https://github.com/Clarence-pan)
- [hujiulong](https://github.com/hujiulong)
@@ -18,6 +20,7 @@
- [mochen666](https://github.com/mochen666)
- [tsy77](https://github.com/tsy77)
- [Ychangqing](https://github.com/Ychangqing)
+- [yize](https://github.com/yize)
- [youluna](https://github.com/youluna)
-如果您贡献过低代码引擎,但是没有看到您的名字,为我们的疏忽感到抱歉。欢迎您通过 PR 补充上自己的名字。
\ No newline at end of file
+如果您贡献过低代码引擎,但是没有看到您的名字,为我们的疏忽感到抱歉。欢迎您通过 PR 补充上自己的名字。
diff --git a/README.md b/README.md
deleted file mode 100644
index 9d54aec0c..000000000
--- a/README.md
+++ /dev/null
@@ -1,145 +0,0 @@
-
-
-
-
-
-
-LowCodeEngine
-
-
-
-一套面向扩展设计的企业级低代码技术体系
-
-[![NPM version][npm-image]][npm-url] [![NPM downloads][download-image]][download-url]
-
-[![Discussions][discussions-image]][discussions-url] [![][issues-helper-image]][issues-helper-url] [![Issues need help][help-wanted-image]][help-wanted-url]
-
-[npm-image]: https://img.shields.io/npm/v/@alilc/lowcode-engine.svg?style=flat-square
-[npm-url]: http://npmjs.org/package/@alilc/lowcode-engine
-
-[download-image]: https://img.shields.io/npm/dm/@alilc/lowcode-engine.svg?style=flat-square
-[download-url]: https://npmjs.org/package/@alilc/lowcode-engine
-[help-wanted-image]: https://flat.badgen.net/github/label-issues/alibaba/lowcode-engine/help%20wanted/open
-[help-wanted-url]: https://github.com/alibaba/lowcode-engine/issues?q=is%3Aopen+is%3Aissue+label%3A%22help+wanted%22
-[discussions-image]: https://img.shields.io/badge/discussions-on%20github-blue?style=flat-square
-[discussions-url]: https://github.com/alibaba/lowcode-engine/discussions
-
-[issues-helper-image]: https://img.shields.io/badge/using-issues--helper-orange?style=flat-square
-[issues-helper-url]: https://github.com/actions-cool/issues-helper
-
-
-
-[](http://lowcode-engine.cn)
-
-## ✨ 特性
-
-- 🌈 提炼自企业级低代码平台的面向扩展开发的内核引擎,奉行最小内核,最强生态的设计理念
-- 📦 开箱即用的高质量生态元素,包括 物料体系、设置器、插件 等
-- ⚙️ 完善的工具链,支持 物料体系、设置器、插件 等生态元素的全链路研发周期
-- 🔌 强大的扩展能力,已支撑近 100 个各种垂直类低代码平台
-- 🛡 使用 TypeScript 开发,提供完整的类型定义文件
-
-## 🎯 兼容环境
-
-- 现代浏览器(Chrome >= 80, Edge >= 80, last 2 safari versions, last 2 firefox versions)
-
-## 📚 引擎协议
-
-引擎完整实现了《阿里巴巴中后台前端基础搭建协议规范》和《阿里巴巴中后台前端物料协议规范》,协议栈是低代码领域的物料能否流通的关键部分。
-
-
-
-## 🌰 使用示例
-
-```bash
-npm install @alilc/lowcode-engine --save-dev
-```
-
-> **TIPS:仅支持 cdn 方式引入,npm 包用于提供 typings 等代码提示能力**
-
-```ts
-import { init, skeleton } from '@alilc/lowcode-engine';
-
-skeleton.add({
- area: 'topArea',
- type: 'Widget',
- name: 'logo',
- content: YourFantaticLogo,
- contentProps: {
- logo:
- 'https://img.alicdn.com/tfs/TB1_SocGkT2gK0jSZFkXXcIQFXa-66-66.png',
- href: '/',
- },
- props: {
- align: 'left',
- width: 100,
- },
-});
-
-init(document.getElementById('lce'));
-```
-
-### 工程化配置:
-```json
-{
- "externals": {
- "@alilc/lowcode-engine": "var window.AliLowCodeEngine",
- "@alilc/lowcode-engine-ext": "var window.AliLowCodeEngineExt"
- }
-}
-```
-
-### cdn 可选方式:
-#### 方式 1:alifd cdn
-```html
-https://alifd.alicdn.com/npm/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js
-
-https://alifd.alicdn.com/npm/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js
-```
-
-#### 方式 2:unpkg
-```html
-https://unpkg.com/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js
-
-https://unpkg.com/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js
-```
-
-#### 方式 3:jsdelivr
-```html
-https://cdn.jsdelivr.net/npm/@alilc/lowcode-engine@1.0.0/dist/js/engine-core.js
-
-https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/js/react-simulator-renderer.js
-```
-
-#### 方式 3:使用自有 cdn
-将源码中 packages/engine/dist 和 packages/(react|rax)-simulator-renderer/dist 下的文件传至你的 cdn 提供商
-
-## 🔗 链接
-
-- [官网首页 WIP](http://lowcode-engine.cn/)
-- [官方物料 WIP](http://lowcode-engine.cn/)
-- [官方设置器(setter)WIP](http://lowcode-engine.cn/)
-- [官方插件(plugin)WIP](http://lowcode-engine.cn/)
-- [用户文档 WIP](http://lowcode-engine.cn/)
-- [贡献指南 WIP](http://lowcode-engine.cn/)
-- [更新日志](CHANGELOG..md)
-
-## 💻 本地调试
-
-```bash
-$ git clone git@github.com:alibaba/lowcode-engine.git
-$ cd lowcode-engine
-$ npm install
-$ npm run setup
-$ npm start
-```
-
-> 📢 npm 访问速度较慢,阿里员工可以使用 tnpm,其他同学建议使用 cnpm 或者指定镜像 registry。
-
-lowcode-engine 启动后,提供了几个 umd 文件,可以结合 [lowcode-demo](https://github.com/alibaba/lowcode-demo) 项目做调试,文件代理规则参考这里。
-
-## 🤝 参与共建
-
-请先阅读 [贡献指南 WIP](http://lowcode-engine.cn/?docs#/doc?url=contributing).
-
-> 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 120000
index 000000000..2fcba628f
--- /dev/null
+++ b/README.md
@@ -0,0 +1 @@
+packages/engine/README.md
\ No newline at end of file
diff --git a/modules/code-generator/CHANGELOG.md b/modules/code-generator/CHANGELOG.md
index 67b89d676..dc960f958 100644
--- a/modules/code-generator/CHANGELOG.md
+++ b/modules/code-generator/CHANGELOG.md
@@ -2,104 +2,9 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
-## [1.0.0-beta.20](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/compare/@alilc/lowcode-code-generator@1.0.0-beta.19...@alilc/lowcode-code-generator@1.0.0-beta.20) (2022-02-14)
-
-
-### Bug Fixes
-
-* 🐛 解决 standalone 入口的类型定义找不到的问题 ([ea735b0](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/ea735b0422f26f4fdde4989478b308c22bae8f07))
-
-## [1.0.0-beta.19](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/compare/@alilc/lowcode-code-generator@1.0.0-beta.18...@alilc/lowcode-code-generator@1.0.0-beta.19) (2022-02-14)
-
-
-### Bug Fixes
-
-* 🐛 补充自定义出码方案中缺失的示例插件文件 ([b583421](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/b5834214482ba73dc33753aed9e1166bca4b7374))
-* 🐛 解决 init-solution 命令生成的 demo-schema.json 格式非法的问题 ([b090732](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/b090732cb750aa60dfe9c7e34dd6709bfd537642))
-
-## [1.0.0-beta.18](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/compare/@alilc/lowcode-code-generator@1.0.0-beta.16...@alilc/lowcode-code-generator@1.0.0-beta.18) (2022-02-14)
+## 1.0.0 (2022-02-17)
### Features
-* 插件版本号校验 ([b22ae6a](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/b22ae6a75065e0c4dfa290c7b8c4ec4c7e661b53))
-* 插件版本号校验,调整判断条件 ([2cf2182](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/2cf218245812825aa729657a9b1ac4b574d75cb5))
-* 增加 setKey / rerender 几个 API, shell node 单例化 ([e7999fa](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/e7999faf78ec22395f218aab22e7accc18ad9b53))
-* add contributor list ([9368ea4](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/9368ea46bd4b1eaae0848d51780d8a0896384875))
-
-
-### Bug Fixes
-
-* 🐛 解决通过命令行初始化自定义出码方案的时候报错的问题 ([ca6daff](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/ca6daff89498056b0248e3996edfee75379881ac))
-* 🐛 解决通过命令行方式使用出码模块的时候报错的问题 ([da3f301](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/da3f3011d3ea34f59f0f3d6bd230fcfa436be103))
-* 处理遗留下来的 todo ([67c20a9](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/67c20a993d44d6b2353eec6aab94636c1b2328b6))
-* 单测问题修复 ([b940fc2](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/b940fc215737936267d2a3a202c7269695293060))
-* 调整 slot 默认关闭逻辑 ([0c0cd84](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/0c0cd8452cef94afc3afe025b9ce54a18274f5a4))
-* cr问题修复 ([a27f5aa](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/a27f5aaf73dd884051714a98d85644a9a0b6d69b))
-
-## [1.0.0-beta.17](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/compare/@alilc/lowcode-code-generator@1.0.0-beta.16...@alilc/lowcode-code-generator@1.0.0-beta.17) (2022-02-14)
-
-
-### Features
-
-* 插件版本号校验 ([b22ae6a](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/b22ae6a75065e0c4dfa290c7b8c4ec4c7e661b53))
-* 插件版本号校验,调整判断条件 ([2cf2182](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/2cf218245812825aa729657a9b1ac4b574d75cb5))
-* 增加 setKey / rerender 几个 API, shell node 单例化 ([e7999fa](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/e7999faf78ec22395f218aab22e7accc18ad9b53))
-* add contributor list ([9368ea4](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/9368ea46bd4b1eaae0848d51780d8a0896384875))
-
-
-### Bug Fixes
-
-* 🐛 解决通过命令行初始化自定义出码方案的时候报错的问题 ([ca6daff](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/ca6daff89498056b0248e3996edfee75379881ac))
-* 🐛 解决通过命令行方式使用出码模块的时候报错的问题 ([da3f301](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/da3f3011d3ea34f59f0f3d6bd230fcfa436be103))
-* 处理遗留下来的 todo ([67c20a9](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/67c20a993d44d6b2353eec6aab94636c1b2328b6))
-* 单测问题修复 ([b940fc2](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/b940fc215737936267d2a3a202c7269695293060))
-* 调整 slot 默认关闭逻辑 ([0c0cd84](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/0c0cd8452cef94afc3afe025b9ce54a18274f5a4))
-* cr问题修复 ([a27f5aa](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/a27f5aaf73dd884051714a98d85644a9a0b6d69b))
-
-## [1.0.0-beta.16](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/compare/@alilc/lowcode-code-generator@1.0.0-beta.15...@alilc/lowcode-code-generator@1.0.0-beta.16) (2022-02-07)
-
-
-### Features
-
-* 🎸 升级 @alilc/lowcode-types ([71f9c6c](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/71f9c6c88f55f3e176e5bd40ddf4593a24ad3aea))
-* 补充 node#isEmpty ([e8229b8](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/e8229b89dbdf1b93d529f2534ec9bf1fd25c2566))
-* 调整插件依赖配置位置 ([655b597](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/655b5976ac2a310bb679a06f418a154ccefd9d56))
-* 增加 setting-prop-entry#getDefaultValue ([3e43cd3](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/3e43cd3af9c213b2b7694b6204b509850e786749))
-* 增设计模式作为是否使用循环判断的条件 & NotFoundComponent 组件新增 __componentName 属性 ([06f86de](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/06f86deef7bb88249c54731df9f2deb374443d21))
-* add preference declaration control to plugin ([2256156](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/22561563451dc565a2aea930d0679fe528520513))
-
-
-### Bug Fixes
-
-* 🐛 解决出码模块在 node 环境中使用时 zip publisher 不能正确识别为 node 环境的问题 ([ffa9908](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/ffa9908365fbe6fa5230c6f890cebf4fb44a7188))
-* 🐛 解决通过 npm 安装并测试的时候一堆报错问题 ([7245617](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/7245617da2bae55e67e4dff5eeda6c14981fdd4b))
-* 🐛 修正 icejs 模板中的 abc.json 的 builder ([e63cf7a](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/e63cf7affb0bf7f072d965bda3c8dd90cf015e2d))
-* 根据新的插件 pluginName 修改代码 ([1faed05](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/1faed05dab26674b84ab0f065263b9ad9aeade46))
-* 兼容 arraysetter 场景 ([f462f3d](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/f462f3de172d3d05db38234db982c58f5e6321ee))
-* 修复 getResizingHandlers 回调参数没有转换的问题 ([2e6c51d](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/2e6c51d9cb0835791889656b3b9709a9a6cd630d))
-
-## [1.0.0-beta.15](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/compare/@alilc/lowcode-code-generator@1.0.0-beta.14...@alilc/lowcode-code-generator@1.0.0-beta.15) (2022-01-19)
-
-
-### Bug Fixes
-
-* 🐛 修正 standalone-worker 的默认地址 ([f477372](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/f477372f8c2432d6300b39b82e73cdfe4cf25f8d))
-
-## 1.0.0-beta.14 (2022-01-19)
-
-
-### Features
-
-* 补充 dragon 以及部分代码优化 ([595478a](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/595478a7cb2d1288450920404bd79bf0b7fa4424))
-* 补充 setting-prop-entry#getPropValue 值 ([224acbf](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/224acbff2c8a949d4cda01f2371d6a7ba0b8df4d))
-* 补充几个 API 以及调整为 umd 导出 AliLowCodeEngine ([b56debc](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/b56debc9b7cb78a5a049291d9079292a32e85d20))
-* 出码模块支持 standalone 模式 ([f1fb35a](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/f1fb35a1c39ebff3d1ddb28262ac556dbd249df3))
-* 第一版 readme ([db42cb5](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/db42cb529a27f58a42cda4f9c33107f4d24abc23))
-* setting-prop-entry 增加一个 API ([6c1fdc3](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/6c1fdc35828cdf0133846454c0a33708dc606d9a))
-
-
-### Bug Fixes
-
-* 修正命令行的位置 ([eb046c0](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/eb046c0fd5983105e2d93fbc1c53b6b08935f66f))
-* less-variables ([15cccd6](https://gitlab.alibaba-inc.com/ali-lowcode/ali-lowcode-engine-2.x/commit/15cccd6892e375c7d83719aed416e3a320bcd931))
+* first commit - genesis ([4f4ac51](https://github.com/alibaba/lowcode-engine/commit/4f4ac5115d18357a7399632860808f6cffc33fad))
diff --git a/modules/code-generator/package.json b/modules/code-generator/package.json
index e4d040c15..e79d359e8 100644
--- a/modules/code-generator/package.json
+++ b/modules/code-generator/package.json
@@ -1,6 +1,6 @@
{
"name": "@alilc/lowcode-code-generator",
- "version": "1.0.0-beta.20",
+ "version": "1.0.0",
"description": "出码引擎 for LowCode Engine",
"license": "MIT",
"main": "lib/index.js",
@@ -56,7 +56,7 @@
"**/*.{js,jsx,ts,tsx}": "eslint"
},
"dependencies": {
- "@alilc/lowcode-types": "^1.0.0-beta.19",
+ "@alilc/lowcode-types": "^1.0.0",
"@babel/generator": "^7.12.11",
"@babel/parser": "^7.12.11",
"@babel/runtime": "^7.12.5",
diff --git a/modules/code-generator/src/utils/resultHelper.ts b/modules/code-generator/src/utils/resultHelper.ts
index 6539f5167..627004656 100644
--- a/modules/code-generator/src/utils/resultHelper.ts
+++ b/modules/code-generator/src/utils/resultHelper.ts
@@ -53,7 +53,6 @@ export function flattenResult(dir: ResultDir, cwd = ''): FlattenFile[] {
),
].concat(
...dir.dirs.map((subDir) =>
- flattenResult(subDir, [cwd, subDir.name].filter((x) => x !== '' && x !== '.').join('/')),
- ),
+ flattenResult(subDir, [cwd, subDir.name].filter((x) => x !== '' && x !== '.').join('/'))),
);
}
diff --git a/modules/material-parser/README.md b/modules/material-parser/README.md
index 99786b2e4..a217dc16f 100644
--- a/modules/material-parser/README.md
+++ b/modules/material-parser/README.md
@@ -2,7 +2,7 @@
> 入料模块
-本模块负责物料接入,能自动扫描、解析源码组件,并最终产出一份符合 **[《中后台搭建组件描述协议》](https://yuque.antfin-inc.com/rt656r/spec/pbeaqx)** 的 **JSON Schema**。
+本模块负责物料接入,能自动扫描、解析源码组件,并最终产出一份符合《中后台搭建组件描述协议》的 **JSON Schema**。
详见[文档](https://yuque.antfin-inc.com/ali-lowcode/docs/tyktrt)。
diff --git a/modules/material-parser/package.json b/modules/material-parser/package.json
index dbdfd676b..f52efc1bc 100644
--- a/modules/material-parser/package.json
+++ b/modules/material-parser/package.json
@@ -1,6 +1,6 @@
{
"name": "@alilc/lowcode-material-parser",
- "version": "1.0.0-beta.15",
+ "version": "1.0.0",
"description": "material parser for Ali lowCode engine",
"main": "lib/index.js",
"module": "es/index.js",
@@ -8,7 +8,6 @@
"lib",
"schemas"
],
- "private": true,
"devDependencies": {
"@babel/runtime": "^7.11.2",
"@types/debug": "^4.1.5",
diff --git a/modules/material-parser/scripts/transform.js b/modules/material-parser/scripts/transform.js
index 4e9c127f1..ae6853cca 100644
--- a/modules/material-parser/scripts/transform.js
+++ b/modules/material-parser/scripts/transform.js
@@ -3,8 +3,10 @@ const fs = require('fs');
const path = require('path');
const Ajv = require('ajv');
const { compile } = require('json-schema-to-typescript');
+const { ESLint } = require('eslint');
const ajv = new Ajv();
+const eslint = new ESLint({ fix: true });
const YamlPath = path.resolve(__dirname, '../schemas/schema.yml');
const JsonPath = path.resolve(__dirname, '../src/validate/schema.json');
@@ -19,9 +21,15 @@ const tsPath = path.resolve(__dirname, '../src/core/schema/types.ts');
console.log('yaml file is successfully transformed into json');
const ts = await compile(schema, 'ComponentMeta');
fs.writeFileSync(tsPath, ts);
- console.log('schema.d.ts is successfully generated');
+ // Lint files. This doesn't modify target files.
+ const results = await eslint.lintFiles([tsPath]);
+
+ // Modify the files with the fixed code.
+ await ESLint.outputFixes(results);
+
+ console.log('schema/types.d.ts is successfully generated');
} catch (e) {
console.log(e);
process.exit(1);
}
-})();
+})();
\ No newline at end of file
diff --git a/modules/material-parser/src/parse/js/resolver/resolveImport.ts b/modules/material-parser/src/parse/js/resolver/resolveImport.ts
index 2acefff6f..501b7c009 100644
--- a/modules/material-parser/src/parse/js/resolver/resolveImport.ts
+++ b/modules/material-parser/src/parse/js/resolver/resolveImport.ts
@@ -50,6 +50,7 @@ export function resolveToImport(initialPath) {
}
pathBuffer.unshift(...paths);
}
+ // eslint-disable-next-line no-fallthrough
case 'Identifier':
case 'JSXIdentifier': {
const valuePath = resolveToValue(path);
diff --git a/modules/material-parser/src/parse/js/utils/getComposedPath.ts b/modules/material-parser/src/parse/js/utils/getComposedPath.ts
index 471af46a4..106aa42e1 100644
--- a/modules/material-parser/src/parse/js/utils/getComposedPath.ts
+++ b/modules/material-parser/src/parse/js/utils/getComposedPath.ts
@@ -25,6 +25,7 @@ export default function getComposedPropTypesPath(documentation, propName, p) {
const ast = parser.parse(fileContent);
visit(ast, {
+ // eslint-disable-next-line no-loop-func
visitAssignmentExpression(path: any) {
// Ignore anything that is not `exports.X = ...;` or
// `module.exports = ...;`
diff --git a/modules/material-parser/src/parse/ts/index.ts b/modules/material-parser/src/parse/ts/index.ts
index 059d9fb90..10bd6f66c 100644
--- a/modules/material-parser/src/parse/ts/index.ts
+++ b/modules/material-parser/src/parse/ts/index.ts
@@ -299,8 +299,7 @@ function getDocgenTypeHelper(
name: 'union',
// @ts-ignore
value: type.types.map((t) =>
- getDocgenTypeHelper(checker, t, true, getNextParentIds(parentIds, type)),
- ),
+ getDocgenTypeHelper(checker, t, true, getNextParentIds(parentIds, type))),
});
} else if (isComplexType(type)) {
return makeResult({
@@ -494,8 +493,7 @@ export default function parseTS(filePath: string, args: IParseArgs): ComponentDo
log('ts config path is', tsConfigPath);
const { config, error } = ts.readConfigFile(tsConfigPath, (filename) =>
- readFileSync(filename, 'utf8'),
- );
+ readFileSync(filename, 'utf8'));
if (error !== undefined) {
const errorText = `Cannot load custom tsconfig.json from provided path: ${tsConfigPath}, with error code: ${error.code}, message: ${error.messageText}`;
diff --git a/packages/designer/jest.config.js b/packages/designer/jest.config.js
index f602b9754..47c4472c5 100644
--- a/packages/designer/jest.config.js
+++ b/packages/designer/jest.config.js
@@ -1,13 +1,16 @@
-const esModules = ['@recore/obx-react'].join('|');
+const fs = require('fs');
+const { join } = require('path');
+const esModules = ['zen-logger'].join('|');
+const pkgNames = fs.readdirSync(join('..')).filter(pkgName => !pkgName.startsWith('.'));
-module.exports = {
+const jestConfig = {
// transform: {
// '^.+\\.[jt]sx?$': 'babel-jest',
// // '^.+\\.(ts|tsx)$': 'ts-jest',
// // '^.+\\.(js|jsx)$': 'babel-jest',
// },
// testMatch: ['**/document/node/node.test.ts'],
- // testMatch: ['**/designer/bultin-hotkey.test.ts'],
+ // testMatch: ['**/designer/builtin-hotkey.test.ts'],
// testMatch: ['**/plugin/plugin-manager.test.ts'],
// testMatch: ['(/tests?/.*(test))\\.[jt]s$'],
transformIgnorePatterns: [
@@ -32,3 +35,9 @@ module.exports = {
'!**/vendor/**',
],
};
+
+// 只对本仓库内的 pkg 做 mapping
+jestConfig.moduleNameMapper = {};
+jestConfig.moduleNameMapper[`^@alilc/lowcode\\-(${pkgNames.join('|')})$`] = '/../$1/src';
+
+module.exports = jestConfig;
\ No newline at end of file
diff --git a/packages/designer/tests/designer/active-tracker.test.ts b/packages/designer/tests/designer/active-tracker.test.ts
index 860a03d08..cea47a08a 100644
--- a/packages/designer/tests/designer/active-tracker.test.ts
+++ b/packages/designer/tests/designer/active-tracker.test.ts
@@ -1,3 +1,4 @@
+import '../fixtures/window';
import { ActiveTracker } from '../../src/designer/active-tracker';
it('ActiveTracker 测试,Node', () => {
diff --git a/packages/designer/tests/designer/builtin-hotkey.test.ts b/packages/designer/tests/designer/builtin-hotkey.test.ts
index 31f178531..dafeeb612 100644
--- a/packages/designer/tests/designer/builtin-hotkey.test.ts
+++ b/packages/designer/tests/designer/builtin-hotkey.test.ts
@@ -2,6 +2,7 @@ import '../fixtures/window';
import { Editor, globalContext } from '@alilc/lowcode-editor-core';
import { Designer } from '../../src/designer/designer';
import formSchema from '../fixtures/schema/form';
+import '../../src/designer/builtin-hotkey';
import { fireEvent } from '@testing-library/react';
const editor = new Editor();
@@ -242,49 +243,50 @@ describe('快捷键测试', () => {
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
});
it('isFormEvent: true', () => {
+ const inputDOMNode = document.createElement('INPUT');
designer.currentDocument?.selection.select('page');
// nothing happened
- fireEvent.keyDown(document, { keyCode: 39 });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 39 });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 37 });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 37 });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 40 });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 40 });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 38 });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 38 });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 39, altKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 39, altKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 37, altKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 37, altKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 40, altKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 40, altKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 38, altKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 38, altKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 90, metaKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 90, metaKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 89, metaKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 89, metaKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 67, metaKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 67, metaKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 86, metaKey: true });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 86, metaKey: true });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 27 });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 27 });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
- fireEvent.keyDown(document, { keyCode: 46 });
+ fireEvent.keyDown(inputDOMNode, { keyCode: 46 });
expect(designer.currentDocument?.selection.selected[0]).toBe('page');
});
});
diff --git a/packages/designer/tests/designer/setting/setting-prop-entry.test.ts b/packages/designer/tests/designer/setting/setting-prop-entry.test.ts
index 7dbc2805d..72b394035 100644
--- a/packages/designer/tests/designer/setting/setting-prop-entry.test.ts
+++ b/packages/designer/tests/designer/setting/setting-prop-entry.test.ts
@@ -75,7 +75,8 @@ describe('setting-prop-entry 测试', () => {
const prop1 = mockTopEntry.getProp('a');
prop1.extraProps = {
getValue: (prop, val) => `prefix ${val}`,
- setValue: (prop, val) => { prop.setValue(`modified ${val}`, false, false, { disableMutator: true }) },
+ // prop 是 shell prop entry
+ setValue: (prop, val) => { prop.setValue(`modified ${val}`, { disableMutator: true }) },
defaultValue: 'default',
};
diff --git a/packages/designer/tests/fixtures/window.ts b/packages/designer/tests/fixtures/window.ts
index fa28ee588..86d1787b7 100644
--- a/packages/designer/tests/fixtures/window.ts
+++ b/packages/designer/tests/fixtures/window.ts
@@ -18,5 +18,5 @@ Object.defineProperty(window, 'React', {
});
window.scrollTo = () => {};
-
window.console.warn = () => {};
+window.React = window.React || {};
diff --git a/packages/editor-core/src/editor.ts b/packages/editor-core/src/editor.ts
index a71ce31d5..7e9101d96 100644
--- a/packages/editor-core/src/editor.ts
+++ b/packages/editor-core/src/editor.ts
@@ -37,6 +37,7 @@ export declare interface Editor extends StrictEventEmitter any) => {
};
// 关闭浏览器前提醒,只有产生过交互才会生效
-window.onbeforeunload = function (e: Event): string | void {
+window.onbeforeunload = function (e: Event): string {
const ev = e || window.event;
// 本地调试不生效
if (location.href.indexOf('localhost') > 0) {
- return;
+ return '';
}
const msg = '您确定要离开此页面吗?';
ev.cancelBubble = true;
diff --git a/packages/editor-core/src/utils/logger.ts b/packages/editor-core/src/utils/logger.ts
index 21ff230a6..47ec22c6f 100644
--- a/packages/editor-core/src/utils/logger.ts
+++ b/packages/editor-core/src/utils/logger.ts
@@ -2,6 +2,6 @@ import Logger, { Level } from 'zen-logger';
export { Logger };
-export function getLogger(config: { level: Level, bizName: string }): Logger {
+export function getLogger(config: { level: Level; bizName: string }): Logger {
return new Logger(config);
}
diff --git a/packages/editor-core/src/utils/preference.ts b/packages/editor-core/src/utils/preference.ts
index e26f92e80..cc23092ae 100644
--- a/packages/editor-core/src/utils/preference.ts
+++ b/packages/editor-core/src/utils/preference.ts
@@ -16,7 +16,7 @@ export default class Preference {
return `${STORAGE_KEY_PREFIX}_${moduleKey}.${key}`;
}
- set(key: string, value:any, module?: string) {
+ set(key: string, value: any, module?: string) {
if (!key || typeof key !== 'string' || key.length === 0) {
logger.error('Invalid key when setting preference', key);
return;
@@ -26,7 +26,7 @@ export default class Preference {
store.set(storageKey, value);
}
- get(key: string, module: string) : any {
+ get(key: string, module: string): any {
if (!key || typeof key !== 'string' || key.length === 0) {
logger.error('Invalid key when getting from preference', key);
return;
@@ -44,7 +44,7 @@ export default class Preference {
* @returns {boolean}
* @memberof Preference
*/
- contains(key: string, module: string) : boolean {
+ contains(key: string, module: string): boolean {
if (!key || typeof key !== 'string' || key.length === 0) {
logger.error('Invalid key when getting from preference', key);
return false;
diff --git a/packages/engine/README.md b/packages/engine/README.md
index 9d54aec0c..6947a7d22 100644
--- a/packages/engine/README.md
+++ b/packages/engine/README.md
@@ -120,9 +120,8 @@ https://cdn.jsdelivr.net/npm/@alilc/lowcode-react-simulator-renderer@1.0.0/dist/
- [官方物料 WIP](http://lowcode-engine.cn/)
- [官方设置器(setter)WIP](http://lowcode-engine.cn/)
- [官方插件(plugin)WIP](http://lowcode-engine.cn/)
-- [用户文档 WIP](http://lowcode-engine.cn/)
-- [贡献指南 WIP](http://lowcode-engine.cn/)
-- [更新日志](CHANGELOG..md)
+- [用户文档 WIP](http://lowcode-engine.cn/#/doc)
+- [更新日志](http://lowcode-engine.cn/#/doc?url=engine-changelog)
## 💻 本地调试
@@ -135,11 +134,18 @@ $ npm start
```
> 📢 npm 访问速度较慢,阿里员工可以使用 tnpm,其他同学建议使用 cnpm 或者指定镜像 registry。
+>
+> ❕node 版本限制在 14
+>
+> ❕windows 环境尽量使用 [WSL](https://docs.microsoft.com/zh-cn/windows/wsl/install)
lowcode-engine 启动后,提供了几个 umd 文件,可以结合 [lowcode-demo](https://github.com/alibaba/lowcode-demo) 项目做调试,文件代理规则参考这里。
## 🤝 参与共建
-请先阅读 [贡献指南 WIP](http://lowcode-engine.cn/?docs#/doc?url=contributing).
+请先阅读:
+1. [如何配置引擎调试环境?](https://www.yuque.com/lce/doc/glz0fx)
+2. [关于引擎的研发协作流程](https://www.yuque.com/lce/doc/contributing)
+3. [引擎的工程化配置](https://www.yuque.com/lce/doc/gxwqg6)
-> 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。
\ No newline at end of file
+> 强烈推荐阅读 [《提问的智慧》](https://github.com/ryanhanwu/How-To-Ask-Questions-The-Smart-Way)、[《如何向开源社区提问题》](https://github.com/seajs/seajs/issues/545) 和 [《如何有效地报告 Bug》](http://www.chiark.greenend.org.uk/%7Esgtatham/bugs-cn.html)、[《如何向开源项目提交无法解答的问题》](https://zhuanlan.zhihu.com/p/25795393),更好的问题更容易获得帮助。(此段参考 [antd](https://github.com/ant-design/ant-design))
\ No newline at end of file
diff --git a/packages/react-simulator-renderer/src/utils/misc.ts b/packages/react-simulator-renderer/src/utils/misc.ts
index e121420a1..e53ac6ec1 100644
--- a/packages/react-simulator-renderer/src/utils/misc.ts
+++ b/packages/react-simulator-renderer/src/utils/misc.ts
@@ -7,7 +7,7 @@ interface UtilsMetadata {
subName?: string;
destructuring?: boolean;
main?: string;
- }
+ };
}
interface LibrayMap {
diff --git a/packages/shell/src/setting-prop-entry.ts b/packages/shell/src/setting-prop-entry.ts
index e97560a14..57b4c8a36 100644
--- a/packages/shell/src/setting-prop-entry.ts
+++ b/packages/shell/src/setting-prop-entry.ts
@@ -1,4 +1,4 @@
-import { SettingField } from '@alilc/lowcode-designer';
+import { SettingField, ISetValueOptions } from '@alilc/lowcode-designer';
import { CompositeValue, FieldConfig } from '@alilc/lowcode-types';
import { settingPropEntrySymbol } from './symbols';
import Node from './node';
@@ -111,8 +111,8 @@ export default class SettingPropEntry {
* 设置值
* @param val 值
*/
- setValue(val: CompositeValue) {
- this[settingPropEntrySymbol].setValue(val);
+ setValue(val: CompositeValue, extraOptions?: ISetValueOptions) {
+ this[settingPropEntrySymbol].setValue(val, false, false, extraOptions);
}
/**
diff --git a/packages/utils/src/css-helper.ts b/packages/utils/src/css-helper.ts
index 690149d58..9858d0d54 100644
--- a/packages/utils/src/css-helper.ts
+++ b/packages/utils/src/css-helper.ts
@@ -126,7 +126,8 @@ function toCss(runtime) {
css.push(
`:root${pseudo === 'default' ? '' : `${prefix}${pseudo}`} {
${runtimeToCss(normalizeStyle(runtime[pseudo]))}
-}\n`);
+}\n`,
+);
});
return css.join('\n');
}
diff --git a/packages/utils/src/set-prototype-of.ts b/packages/utils/src/set-prototype-of.ts
index 5759f88c5..484ea7819 100644
--- a/packages/utils/src/set-prototype-of.ts
+++ b/packages/utils/src/set-prototype-of.ts
@@ -1,7 +1,6 @@
export function setPrototypeOf(target: any, proto: any) {
- // tslint:disable-next-line
if (typeof Object.setPrototypeOf !== 'undefined') {
- Object.setPrototypeOf(target, proto); // tslint:disable-line
+ Object.setPrototypeOf(target, proto);
} else {
// eslint-disable-next-line no-proto
target.__proto__ = proto;