diff --git a/.DS_Store b/.DS_Store index f44179a17a..a15e3d5558 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.github/workflows/publish-lowcoder-cli.yml b/.github/workflows/publish-lowcoder-cli.yml new file mode 100644 index 0000000000..17eafa909c --- /dev/null +++ b/.github/workflows/publish-lowcoder-cli.yml @@ -0,0 +1,47 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Publish Lowcoder CLI + +on: + push: + branches: [ "dev" ] + +jobs: + publish-package: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Check version changes + uses: EndBug/version-check@v1 + id: check + with: + diff-search: true + file-name: client/packages/lowcoder-cli/package.json + + - name: Version update detected + if: steps.check.outputs.changed == 'true' + run: 'echo "Version change found! New version: ${{ steps.check.outputs.version }} (${{ steps.check.outputs.type }})"' + + - name: Set up Node.js for NPM + if: steps.check.outputs.changed == 'true' + uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: https://registry.npmjs.org/ + + - name: Install dependencies + if: steps.check.outputs.changed == 'true' + uses: borales/actions-yarn@v4.2.0 + with: + cmd: install + dir: client/packages/lowcoder-cli + + - name: Publish package to NPM + if: steps.check.outputs.changed == 'true' + run: npm publish + working-directory: client/packages/lowcoder-cli + env: + NODE_AUTH_TOKEN: ${{ secrets.LOWCODERNPMBOT }} \ No newline at end of file diff --git a/.github/workflows/publish-lowcoder-comps.yml b/.github/workflows/publish-lowcoder-comps.yml new file mode 100644 index 0000000000..40eb567e01 --- /dev/null +++ b/.github/workflows/publish-lowcoder-comps.yml @@ -0,0 +1,49 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Publish Lowcoder Comps + +on: + push: + branches: [ "dev" ] + +jobs: + publish-package: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Check version changes + uses: EndBug/version-check@v1 + id: check + with: + diff-search: true + file-name: client/packages/lowcoder-comps/package.json + + - name: Version update detected + if: steps.check.outputs.changed == 'true' + run: 'echo "Version change found! New version: ${{ steps.check.outputs.version }} (${{ steps.check.outputs.type }})"' + + - name: Set up Node.js for NPM + if: steps.check.outputs.changed == 'true' + uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: https://registry.npmjs.org/ + + - name: Install dependencies + if: steps.check.outputs.changed == 'true' + uses: borales/actions-yarn@v4.2.0 + with: + cmd: install + dir: client/packages/lowcoder-comps + + - name: Publish + if: steps.check.outputs.changed == 'true' + uses: borales/actions-yarn@v4.2.0 + with: + cmd: build_publish + dir: client/packages/lowcoder-comps + env: + NODE_AUTH_TOKEN: ${{ secrets.LOWCODERNPMBOT }} \ No newline at end of file diff --git a/.github/workflows/publish-lowcoder-core.yml b/.github/workflows/publish-lowcoder-core.yml new file mode 100644 index 0000000000..5d36c46c7a --- /dev/null +++ b/.github/workflows/publish-lowcoder-core.yml @@ -0,0 +1,47 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Publish Lowcoder Core + +on: + push: + branches: [ "dev" ] + +jobs: + publish-package: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Check version changes + uses: EndBug/version-check@v1 + id: check + with: + diff-search: true + file-name: client/packages/lowcoder-core/package.json + + - name: Version update detected + if: steps.check.outputs.changed == 'true' + run: 'echo "Version change found! New version: ${{ steps.check.outputs.version }} (${{ steps.check.outputs.type }})"' + + - name: Set up Node.js for NPM + if: steps.check.outputs.changed == 'true' + uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: https://registry.npmjs.org/ + + - name: Install dependencies + if: steps.check.outputs.changed == 'true' + uses: borales/actions-yarn@v4.2.0 + with: + cmd: install + dir: client/packages/lowcoder-core + + - name: Publish package to NPM + if: steps.check.outputs.changed == 'true' + run: npm publish + working-directory: client/packages/lowcoder-core + env: + NODE_AUTH_TOKEN: ${{ secrets.LOWCODERNPMBOT }} \ No newline at end of file diff --git a/.github/workflows/publish-lowcoder-sdk.yml b/.github/workflows/publish-lowcoder-sdk.yml new file mode 100644 index 0000000000..40d93e71a7 --- /dev/null +++ b/.github/workflows/publish-lowcoder-sdk.yml @@ -0,0 +1,54 @@ +# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created +# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages + +name: Publish Lowcoder SDK + +on: + push: + branches: [ "dev" ] + +jobs: + publish-package: + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + - name: Check version changes + uses: EndBug/version-check@v1 + id: check + with: + diff-search: true + file-name: client/packages/lowcoder-sdk/package.json + + - name: Version update detected + if: steps.check.outputs.changed == 'true' + run: 'echo "Version change found! New version: ${{ steps.check.outputs.version }} (${{ steps.check.outputs.type }})"' + + - name: Set up Node.js for NPM + if: steps.check.outputs.changed == 'true' + uses: actions/setup-node@v3 + with: + node-version: 16 + registry-url: https://registry.npmjs.org/ + + - name: Install dependencies + if: steps.check.outputs.changed == 'true' + uses: borales/actions-yarn@v4.2.0 + with: + cmd: install + dir: client/packages/lowcoder-sdk + + - name: Build Package + if: steps.check.outputs.changed == 'true' + uses: borales/actions-yarn@v4.2.0 + with: + cmd: build + dir: client/packages/lowcoder-sdk + + - name: Publish package to NPM + if: steps.check.outputs.changed == 'true' + run: npm publish + working-directory: client/packages/lowcoder-sdk + env: + NODE_AUTH_TOKEN: ${{ secrets.LOWCODERNPMBOT }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 2e1b56cd59..86b0cc02da 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ client/node_modules/ client/packages/lowcoder-plugin-demo/.yarn/install-state.gz client/packages/lowcoder-plugin-demo/yarn.lock client/packages/lowcoder-plugin-demo/.yarn/cache/@types-node-npm-16.18.68-56f72825c0-094ae9ed80.zip +.DS_Store diff --git a/README.md b/README.md index 91c71b72f3..19e28e3784 100644 --- a/README.md +++ b/README.md @@ -96,4 +96,4 @@ You can access Lowcoder from [cloud-hosted version](https://app.lowcoder.cloud/) Accelerate the growth of Lowcoder and unleash its potential with your Sponsorship – together, we're shaping the future of Lowcode for everyone! [Be a Sponsor](https://github.com/sponsors/lowcoder-org) -Like ... @CHSchuepfer. Thank you very much! \ No newline at end of file +Like ... @CHSchuepfer & @spacegoats-io. Thank you very much!! \ No newline at end of file diff --git a/client/config/test/jest.config.js b/client/config/test/jest.config.js index 958f1d2538..90fb745727 100644 --- a/client/config/test/jest.config.js +++ b/client/config/test/jest.config.js @@ -36,7 +36,7 @@ export default { path.resolve(currentDir, "../../packages/lowcoder-design/src"), ], setupFiles: [path.resolve(currentDir, "./jest.setup.js")], - setupFilesAfterEnv: [path.resolve(currentDir, "./jest.setup-after-env.js")], + setupFilesAfterEnv: [path.resolve(currentDir, "./jest.setup-after-env.js"), 'jest-canvas-mock'], transform: { "^.+\\.(js|jsx|mjs|cjs|ts|tsx)$": path.resolve(currentDir, "./transform/babelTransform.js"), "^.+\\.css$": path.resolve(currentDir, "./transform/cssTransform.js"), diff --git a/client/config/test/jest.setup-after-env.js b/client/config/test/jest.setup-after-env.js index b031316de2..f332f518b9 100644 --- a/client/config/test/jest.setup-after-env.js +++ b/client/config/test/jest.setup-after-env.js @@ -21,3 +21,36 @@ window.ResizeObserver = function () { disconnect: () => {}, }; }; + +Object.defineProperty(window, 'ImageData', { value: 'yourValue' }); +Object.defineProperty(window, 'MediaStreamTrack', { value: 'yourValue' }); +Object.defineProperty(window, 'URL', { + writable: true, + value: { + createObjectURL: jest.fn(), + } +}); +Object.defineProperty(window, "navigator", { + writable: true, + value: { + mediaDevices: { + enumerateDevices: jest.fn(), + }, + userAgent: '', + language: '', + browserLanguage: '', + }, +}); + +class Worker { + constructor(stringUrl) { + this.url = stringUrl; + this.onmessage = () => {}; + } + + postMessage(msg) { + this.onmessage(msg); + } +} + +window.Worker = Worker; \ No newline at end of file diff --git a/client/package.json b/client/package.json index 3798025a0b..2f49baf8c4 100644 --- a/client/package.json +++ b/client/package.json @@ -25,9 +25,6 @@ "@babel/preset-typescript": "^7.18.6", "@rollup/plugin-typescript": "^8.5.0", "@testing-library/jest-dom": "^5.16.5", - "@testing-library/react": "^12.0.0", - "@testing-library/user-event": "^13.2.1", - "@types/ali-oss": "^6.16.4", "@types/file-saver": "^2.0.5", "@types/jest": "^29.2.2", "@types/mime": "^2.0.3", @@ -37,10 +34,8 @@ "@types/react-resizable": "^3.0.5", "@types/react-router-dom": "^5.3.2", "@types/shelljs": "^0.8.11", - "@types/styled-components": "^5.1.19", "@types/stylis": "^4.0.2", "@types/tern": "0.23.4", - "@types/toposort": "^2.0.3", "@types/ua-parser-js": "^0.7.36", "@welldone-software/why-did-you-render": "^6.2.3", "add": "^2.0.6", @@ -48,6 +43,7 @@ "babel-preset-react-app": "^10.0.1", "husky": "^8.0.1", "jest": "^29.5.0", + "jest-canvas-mock": "^2.5.2", "jest-environment-jsdom": "^29.5.0", "lint-staged": "^13.0.1", "lowcoder-cli": "workspace:^", @@ -66,7 +62,7 @@ }, "packageManager": "yarn@3.6.4", "resolutions": { - "@types/react": "^17", + "@types/react": "^18", "moment": "2.29.2", "canvas": "https://registry.yarnpkg.com/@favware/skip-dependency/-/skip-dependency-1.2.1.tgz", "react-virtualized@^9.22.3": "patch:react-virtualized@npm%3A9.22.3#./.yarn/patches/react-virtualized-npm-9.22.3-0fff3cbf64.patch", @@ -74,6 +70,9 @@ }, "dependencies": { "@lottiefiles/react-lottie-player": "^3.5.3", + "@testing-library/react": "^14.1.2", + "@testing-library/user-event": "^14.5.1", + "@types/styled-components": "^5.1.34", "antd-mobile": "^5.28.0", "chalk": "4", "number-precision": "^1.6.0", diff --git a/client/packages/lowcoder-cli-template-typescript/.gitignore b/client/packages/lowcoder-cli-template-typescript/.gitignore index e732f2271e..7dc34c5d97 100644 --- a/client/packages/lowcoder-cli-template-typescript/.gitignore +++ b/client/packages/lowcoder-cli-template-typescript/.gitignore @@ -1,2 +1,4 @@ *.tgz -/node_modules \ No newline at end of file +.DS_Store +node_modules +*.zip \ No newline at end of file diff --git a/client/packages/lowcoder-cli-template-typescript/README.md b/client/packages/lowcoder-cli-template-typescript/README.md index e95b8830e8..e11110bd63 100644 --- a/client/packages/lowcoder-cli-template-typescript/README.md +++ b/client/packages/lowcoder-cli-template-typescript/README.md @@ -1,5 +1,27 @@ -# lowcoder-cli-template-typescript +# Lowcoder Demonstrator Plugin Sourcecode -This is the official typescript template of lowcoder-cli. +## Overview -This template will be used by default. +This repository contains the demonstrator code for a Component Plugin in Lowcoder. It serves as a practical example and a reference for developers looking to build their own Component Plugins within the Lowcoder framework. + +This repository is not about to integrate the Plugin like other NPM repositories. However, for the Lowcoder Component Plugin Creator we wanted to publish the Demonstrator Plugin code sources. + +### The Lowcoder App Editor + +

+ Lowcoder App Editor +

+ +### Purpose + +The primary goal of this repository is to showcase best practices, demonstrate the structure, and provide a clear example of how to develop Component Plugins for Lowcoder. It is intended to be a learning resource rather than a production-ready solution. + +## Getting Started + +To explore this demonstrator plugin, install and test it in action you can use the "Lowcoder Component Plugin Builder". https://www.npmjs.com/package/create-lowcoder-plugin + +### The Lowcoder Component Plugin Builder and Preivew + +

+ Lowcoder Plugin Preview +

\ No newline at end of file diff --git a/client/packages/lowcoder-cli-template-typescript/icons/hills.svg b/client/packages/lowcoder-cli-template-typescript/icons/hills.svg new file mode 100644 index 0000000000..95eb1fb19d --- /dev/null +++ b/client/packages/lowcoder-cli-template-typescript/icons/hills.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + diff --git a/client/packages/lowcoder-cli-template-typescript/index.html b/client/packages/lowcoder-cli-template-typescript/index.html index 12f0761f4c..6f14c9ea27 100644 --- a/client/packages/lowcoder-cli-template-typescript/index.html +++ b/client/packages/lowcoder-cli-template-typescript/index.html @@ -4,7 +4,7 @@ - Lowcoder Comp Playground + Lowcoder Component Plugin Preview