From 29c48bd9951c9a79070e8a7295c8614d76fb457e Mon Sep 17 00:00:00 2001 From: inoongt Date: Fri, 22 Mar 2024 22:47:22 +0800 Subject: [PATCH 1/2] chore: update esbuild version --- packages/taro-components/package.json | 2 +- packages/taro-helper/package.json | 2 +- packages/taro-plugin-react/package.json | 2 +- packages/taro-webpack5-runner/package.json | 2 +- pnpm-lock.yaml | 260 ++++++++++----------- 5 files changed, 134 insertions(+), 134 deletions(-) diff --git a/packages/taro-components/package.json b/packages/taro-components/package.json index ef3d67f256cc..d99f91a83c88 100644 --- a/packages/taro-components/package.json +++ b/packages/taro-components/package.json @@ -69,7 +69,7 @@ "@types/node": "^14.14.31", "change-case": "^4.1.2", "csstype": "^3.1.1", - "esbuild": "~0.19.5", + "esbuild": "~0.20.2", "jquery": "^3.4.1", "lightningcss": "^1.22.1", "lodash": "^4.17.21", diff --git a/packages/taro-helper/package.json b/packages/taro-helper/package.json index 6158cedefa61..3ce6eddae020 100644 --- a/packages/taro-helper/package.json +++ b/packages/taro-helper/package.json @@ -54,7 +54,7 @@ "debug": "4.3.4", "dotenv": "^16.0.3", "dotenv-expand": "^9.0.0", - "esbuild": "~0.19.5", + "esbuild": "~0.20.2", "find-yarn-workspace-root": "2.0.0", "fs-extra": "^8.0.1", "lodash": "^4.17.21", diff --git a/packages/taro-plugin-react/package.json b/packages/taro-plugin-react/package.json index b3c37654cd0f..c04095e071fa 100644 --- a/packages/taro-plugin-react/package.json +++ b/packages/taro-plugin-react/package.json @@ -40,7 +40,7 @@ "@tarojs/runtime": "workspace:*", "@tarojs/shared": "workspace:*", "@tarojs/taro": "workspace:*", - "esbuild": "~0.19.5", + "esbuild": "~0.20.2", "preact": "^10.10.0", "react": "^18.2.0", "react-dom": "^18.2.0", diff --git a/packages/taro-webpack5-runner/package.json b/packages/taro-webpack5-runner/package.json index 51bf1cc3fe06..24301feede9f 100644 --- a/packages/taro-webpack5-runner/package.json +++ b/packages/taro-webpack5-runner/package.json @@ -52,7 +52,7 @@ "css-minimizer-webpack-plugin": "3.4.1", "csso": "^5.0.2", "detect-port": "^1.3.0", - "esbuild": "~0.19.5", + "esbuild": "~0.20.2", "esbuild-loader": "2.18.0", "file-loader": "6.0.0", "html-minifier": "^4.0.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32b9fd84ae6c..fe5d41919198 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1014,7 +1014,7 @@ importers: version: registry.npmjs.org/csstype@3.1.2 esbuild: specifier: ~0.19.5 - version: registry.npmjs.org/esbuild@0.19.7 + version: registry.npmjs.org/esbuild@0.20.2 jquery: specifier: ^3.4.1 version: registry.npmjs.org/jquery@3.6.4 @@ -1640,7 +1640,7 @@ importers: version: registry.npmjs.org/dotenv-expand@9.0.0 esbuild: specifier: ~0.19.5 - version: registry.npmjs.org/esbuild@0.19.7 + version: registry.npmjs.org/esbuild@0.20.2 find-yarn-workspace-root: specifier: 2.0.0 version: registry.npmjs.org/find-yarn-workspace-root@2.0.0 @@ -1677,7 +1677,7 @@ importers: version: registry.npmjs.org/jest-environment-node@29.5.0 ts-jest: specifier: ^29.0.5 - version: registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(babel-jest@29.5.0)(esbuild@0.19.7)(jest@29.5.0)(typescript@4.9.5) + version: registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(babel-jest@29.5.0)(esbuild@0.20.2)(jest@29.5.0)(typescript@4.9.5) typescript: specifier: ^4.7.4 version: registry.npmjs.org/typescript@4.9.5 @@ -2278,7 +2278,7 @@ importers: version: link:../taro esbuild: specifier: ~0.19.5 - version: registry.npmjs.org/esbuild@0.19.7 + version: registry.npmjs.org/esbuild@0.20.2 preact: specifier: ^10.10.0 version: registry.npmjs.org/preact@10.13.2 @@ -2305,7 +2305,7 @@ importers: version: registry.npmjs.org/typescript@4.9.5 webpack: specifier: 5.78.0 - version: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + version: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) packages/taro-plugin-react-devtools: dependencies: @@ -3710,7 +3710,7 @@ importers: version: registry.npmjs.org/css-loader@6.7.3(webpack@5.78.0) css-minimizer-webpack-plugin: specifier: 3.4.1 - version: registry.npmjs.org/css-minimizer-webpack-plugin@3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.19.7)(webpack@5.78.0) + version: registry.npmjs.org/css-minimizer-webpack-plugin@3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.20.2)(webpack@5.78.0) csso: specifier: ^5.0.2 version: registry.npmjs.org/csso@5.0.5 @@ -3719,7 +3719,7 @@ importers: version: registry.npmjs.org/detect-port@1.5.1 esbuild: specifier: ~0.19.5 - version: registry.npmjs.org/esbuild@0.19.7 + version: registry.npmjs.org/esbuild@0.20.2 esbuild-loader: specifier: 2.18.0 version: registry.npmjs.org/esbuild-loader@2.18.0(webpack@5.78.0) @@ -3812,7 +3812,7 @@ importers: version: registry.npmjs.org/stylus-loader@6.2.0(stylus@0.55.0)(webpack@5.78.0) terser-webpack-plugin: specifier: ^5.1.3 - version: registry.npmjs.org/terser-webpack-plugin@5.3.8(esbuild@0.19.7)(webpack@5.78.0) + version: registry.npmjs.org/terser-webpack-plugin@5.3.8(esbuild@0.20.2)(webpack@5.78.0) url-loader: specifier: 4.1.0 version: registry.npmjs.org/url-loader@4.1.0(file-loader@6.0.0)(webpack@5.78.0) @@ -3882,7 +3882,7 @@ importers: version: registry.npmjs.org/postcss@8.4.23 ts-jest: specifier: ^29.0.5 - version: registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(esbuild@0.19.7)(jest@29.5.0)(typescript@4.9.5) + version: registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(esbuild@0.20.2)(jest@29.5.0)(typescript@4.9.5) ts-node: specifier: ^10.9.1 version: registry.npmjs.org/ts-node@10.9.1(@types/node@14.18.45)(typescript@4.9.5) @@ -3891,7 +3891,7 @@ importers: version: registry.npmjs.org/typescript@4.9.5 webpack: specifier: 5.78.0 - version: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + version: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) webpack-merge: specifier: ^4.2.2 version: registry.npmjs.org/webpack-merge@4.2.2 @@ -10475,100 +10475,100 @@ packages: - supports-color dev: false - registry.npmjs.org/@esbuild/android-arm64@0.19.7: - resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.7.tgz} + registry.npmjs.org/@esbuild/android-arm64@0.20.2: + resolution: {integrity: sha512-YEDcw5IT7hW3sFKZBkCAQaOCJQLONVcD4bOyTXMZz5fr66pTHnAet46XAtbXAkJRfIn2YVhdC6R9g4xa27jQ1w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.20.2.tgz} name: '@esbuild/android-arm64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [arm64] os: [android] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/android-arm@0.19.7: - resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.7.tgz} + registry.npmjs.org/@esbuild/android-arm@0.20.2: + resolution: {integrity: sha512-YGSPnndkcLo4PmVl2tKatEn+0mlVMr3yEpOOT0BeMria87PhvoJb5dg5f5Ft9fbCVgtAz4pWMzZVgSEGpDAlww==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.20.2.tgz} name: '@esbuild/android-arm' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [arm] os: [android] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/android-x64@0.19.7: - resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/android-x64@0.20.2: + resolution: {integrity: sha512-jhINx8DEjz68cChFvM72YzrqfwJuFbfvSxZAk4bebpngGfNNRm+zRl4rtT9oAX6N9b6gBcFaJHFew5Blf6CvUw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.20.2.tgz} name: '@esbuild/android-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [android] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/darwin-arm64@0.19.7: - resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.7.tgz} + registry.npmjs.org/@esbuild/darwin-arm64@0.20.2: + resolution: {integrity: sha512-dr81gbmWN//3ZnBIm6YNCl4p3pjnabg1/ZVOgz2fJoUO1a3mq9WQ/1iuEluMs7mCL+Zwv7AY5e3g1hjXqQZ9Iw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.20.2.tgz} name: '@esbuild/darwin-arm64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [arm64] os: [darwin] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/darwin-x64@0.19.7: - resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/darwin-x64@0.20.2: + resolution: {integrity: sha512-Lc0q5HouGlzQEwLkgEKnWcSazqr9l9OdV2HhVasWJzLKeOt0PLhHaUHuzb8s/UIya38DJDoUm74GToZ6Wc7NGQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.20.2.tgz} name: '@esbuild/darwin-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [darwin] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/freebsd-arm64@0.19.7: - resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.7.tgz} + registry.npmjs.org/@esbuild/freebsd-arm64@0.20.2: + resolution: {integrity: sha512-+y2YsUr0CxDFF7GWiegWjGtTUF6gac2zFasfFkRJPkMAuMy9O7+2EH550VlqVdpEEchWMynkdhC9ZjtnMiHImQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.20.2.tgz} name: '@esbuild/freebsd-arm64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [arm64] os: [freebsd] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/freebsd-x64@0.19.7: - resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/freebsd-x64@0.20.2: + resolution: {integrity: sha512-CdXOxIbIzPJmJhrpmJTLx+o35NoiKBIgOvmvT+jeSadYiWJn0vFKsl+0bSG/5lwjNHoIDEyMYc/GAPR9jxusTA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.20.2.tgz} name: '@esbuild/freebsd-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [freebsd] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-arm64@0.19.7: - resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-arm64@0.20.2: + resolution: {integrity: sha512-inHqdOVCkUhHNvuQPT1oCB7cWz9qQ/Cz46xmVe0b7UXcuIJU3166aqSunsqkgSGMtUCWOZw3+KMwI6otINuC9g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.20.2.tgz} name: '@esbuild/linux-arm64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [arm64] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-arm@0.19.7: - resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-arm@0.20.2: + resolution: {integrity: sha512-Y+SCmWxsJOdQtjcBxoacn/pGW9HDZpwsoof0ttL+2vGcHokFlfqV666JpfLCSP2xLxFpF1lj7T3Ox3sr95YXww==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.20.2.tgz} name: '@esbuild/linux-arm' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [arm] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-ia32@0.19.7: - resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-ia32@0.20.2: + resolution: {integrity: sha512-2BbiL7nLS5ZO96bxTQkdO0euGZIUQEUXMTrqLxKUmk/Y5pmrWU84f+CMJpM8+EHaBPfFSPnomEaQiG/+Gmh61g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.20.2.tgz} name: '@esbuild/linux-ia32' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [ia32] os: [linux] @@ -10586,120 +10586,120 @@ packages: dev: false optional: true - registry.npmjs.org/@esbuild/linux-loong64@0.19.7: - resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-loong64@0.20.2: + resolution: {integrity: sha512-BVFQla72KXv3yyTFCQXF7MORvpTo4uTA8FVFgmwVrqbB/4DsBFWilUm1i2Oq6zN36DOZKSVUTb16jbjedhfSHw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.20.2.tgz} name: '@esbuild/linux-loong64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [loong64] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-mips64el@0.19.7: - resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-mips64el@0.20.2: + resolution: {integrity: sha512-DzAYckIaK+pS31Q/rGpvUKu7M+5/t+jI+cdleDgUwbU7KdG2eC3SUbZHlo6Q4P1CfVKZ1lUERRFP8+q0ob9i2w==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.20.2.tgz} name: '@esbuild/linux-mips64el' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [mips64el] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-ppc64@0.19.7: - resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-ppc64@0.20.2: + resolution: {integrity: sha512-JQ1p0SmUteNdUaaiRtyS59GkkfTW0Edo+e0O2sihnY4FoZLz5glpWUQEKMSzMhA430ctkylkS7+vn8ziuhUugQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.20.2.tgz} name: '@esbuild/linux-ppc64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [ppc64] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-riscv64@0.19.7: - resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-riscv64@0.20.2: + resolution: {integrity: sha512-xGwVJ7eGhkprY/nB7L7MXysHduqjpzUl40+XoYDGC4UPLbnG+gsyS1wQPJ9lFPcxYAaDXbdRXd1ACs9AE9lxuw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.20.2.tgz} name: '@esbuild/linux-riscv64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [riscv64] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-s390x@0.19.7: - resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-s390x@0.20.2: + resolution: {integrity: sha512-U8Rhki5PVU0L0nvk+E8FjkV8r4Lh4hVEb9duR6Zl21eIEYEwXz8RScj4LZWA2i3V70V4UHVgiqMpszXvG0Yqhg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.20.2.tgz} name: '@esbuild/linux-s390x' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [s390x] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/linux-x64@0.19.7: - resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/linux-x64@0.20.2: + resolution: {integrity: sha512-ZYZopyLhm4mcoZXjFt25itRlocKlcazDVkB4AhioiL9hOWhDldU9n38g62fhOI4Pth6vp+Mrd5rFKxD0/S+7aQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.20.2.tgz} name: '@esbuild/linux-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [linux] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/netbsd-x64@0.19.7: - resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/netbsd-x64@0.20.2: + resolution: {integrity: sha512-/yfjlsYmT1O3cum3J6cmGG16Fd5tqKMcg5D+sBYLaOQExheAJhqr8xOAEIuLo8JYkevmjM5zFD9rVs3VBcsjtQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.20.2.tgz} name: '@esbuild/netbsd-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [netbsd] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/openbsd-x64@0.19.7: - resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/openbsd-x64@0.20.2: + resolution: {integrity: sha512-MYDFyV0EW1cTP46IgUJ38OnEY5TaXxjoDmwiTXPjezahQgZd+j3T55Ht8/Q9YXBM0+T9HJygrSRGV5QNF/YVDQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.20.2.tgz} name: '@esbuild/openbsd-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [openbsd] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/sunos-x64@0.19.7: - resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/sunos-x64@0.20.2: + resolution: {integrity: sha512-JcPvgzf2NN/y6X3UUSqP6jSS06V0DZAV/8q0PjsZyGSXsIGcG110XsdmuWiHM+pno7/mJF6fjH5/vhUz/vA9fw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.20.2.tgz} name: '@esbuild/sunos-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [sunos] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/win32-arm64@0.19.7: - resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.7.tgz} + registry.npmjs.org/@esbuild/win32-arm64@0.20.2: + resolution: {integrity: sha512-ZA0KSYti5w5toax5FpmfcAgu3ZNJxYSRm0AW/Dao5up0YV1hDVof1NvwLomjEN+3/GMtaWDI+CIyJOMTRSTdMw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.20.2.tgz} name: '@esbuild/win32-arm64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [arm64] os: [win32] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/win32-ia32@0.19.7: - resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.7.tgz} + registry.npmjs.org/@esbuild/win32-ia32@0.20.2: + resolution: {integrity: sha512-CTOnijBKc5Jpk6/W9hQMMvJnsSYRYgveN6O75DTACCY18RA2nqka8dTZR+x/JqXCRiKk84+5+bRKXUSbbwsS0A==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.20.2.tgz} name: '@esbuild/win32-ia32' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [ia32] os: [win32] requiresBuild: true optional: true - registry.npmjs.org/@esbuild/win32-x64@0.19.7: - resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.7.tgz} + registry.npmjs.org/@esbuild/win32-x64@0.20.2: + resolution: {integrity: sha512-gRaP2sk6hc98N734luX4VpF318l3w+ofrtTu9j5L8EQXF+FzQKV6alCOHMVoJJHvVK/mGbwBXfOL1HETQu9IGQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.20.2.tgz} name: '@esbuild/win32-x64' - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} cpu: [x64] os: [win32] @@ -13495,7 +13495,7 @@ packages: react-refresh: registry.npmjs.org/react-refresh@0.11.0 schema-utils: registry.npmjs.org/schema-utils@3.1.2 source-map: registry.npmjs.org/source-map@0.7.4 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: true registry.npmjs.org/@prefresh/babel-plugin@0.4.4: @@ -13535,7 +13535,7 @@ packages: '@prefresh/core': registry.npmjs.org/@prefresh/core@1.4.1(preact@10.13.2) '@prefresh/utils': registry.npmjs.org/@prefresh/utils@1.1.3 preact: registry.npmjs.org/preact@10.13.2 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: true registry.npmjs.org/@puppeteer/browsers@0.5.0(typescript@5.3.3): @@ -18237,7 +18237,7 @@ packages: make-dir: registry.npmjs.org/make-dir@2.1.0 pify: registry.npmjs.org/pify@4.0.1 schema-utils: registry.npmjs.org/schema-utils@2.7.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/babel-macros@1.2.0: @@ -21598,7 +21598,7 @@ packages: normalize-path: registry.npmjs.org/normalize-path@3.0.0 schema-utils: registry.npmjs.org/schema-utils@4.0.1 serialize-javascript: registry.npmjs.org/serialize-javascript@6.0.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/copy-webpack-plugin@5.1.2(webpack@4.46.0): @@ -22021,7 +22021,7 @@ packages: postcss-modules-values: registry.npmjs.org/postcss-modules-values@4.0.0(postcss@8.4.23) postcss-value-parser: registry.npmjs.org/postcss-value-parser@4.2.0 semver: registry.npmjs.org/semver@7.5.0 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/css-mediaquery@0.1.2: @@ -22030,7 +22030,7 @@ packages: version: 0.1.2 dev: false - registry.npmjs.org/css-minimizer-webpack-plugin@3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.19.7)(webpack@5.78.0): + registry.npmjs.org/css-minimizer-webpack-plugin@3.4.1(@parcel/css@1.14.0)(csso@5.0.5)(esbuild@0.20.2)(webpack@5.78.0): resolution: {integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/css-minimizer-webpack-plugin/-/css-minimizer-webpack-plugin-3.4.1.tgz} id: registry.npmjs.org/css-minimizer-webpack-plugin/3.4.1 name: css-minimizer-webpack-plugin @@ -22055,13 +22055,13 @@ packages: '@parcel/css': registry.npmjs.org/@parcel/css@1.14.0 cssnano: registry.npmjs.org/cssnano@5.1.15(postcss@8.4.23) csso: registry.npmjs.org/csso@5.0.5 - esbuild: registry.npmjs.org/esbuild@0.19.7 + esbuild: registry.npmjs.org/esbuild@0.20.2 jest-worker: registry.npmjs.org/jest-worker@27.5.1 postcss: registry.npmjs.org/postcss@8.4.23 schema-utils: registry.npmjs.org/schema-utils@4.0.1 serialize-javascript: registry.npmjs.org/serialize-javascript@6.0.1 source-map: registry.npmjs.org/source-map@0.6.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/css-select-base-adapter@0.1.1: @@ -24011,7 +24011,7 @@ packages: json5: registry.npmjs.org/json5@2.2.3 loader-utils: registry.npmjs.org/loader-utils@2.0.4 tapable: registry.npmjs.org/tapable@2.2.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) webpack-sources: registry.npmjs.org/webpack-sources@2.3.1 dev: false @@ -24112,36 +24112,36 @@ packages: esbuild-windows-arm64: registry.npmjs.org/esbuild-windows-arm64@0.14.54 dev: false - registry.npmjs.org/esbuild@0.19.7: - resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.19.7.tgz} + registry.npmjs.org/esbuild@0.20.2: + resolution: {integrity: sha512-6brbTZVqxhqgbpqBR5MzErImcpA0SQdoKOkcWK/U30HtQxnokIpG3TX2r0IJqbFUzqLjhU/zC1S5ndgakObVCQ==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz} name: esbuild - version: 0.19.7 + version: 0.20.2 engines: {node: '>=12'} hasBin: true requiresBuild: true optionalDependencies: - '@esbuild/android-arm': registry.npmjs.org/@esbuild/android-arm@0.19.7 - '@esbuild/android-arm64': registry.npmjs.org/@esbuild/android-arm64@0.19.7 - '@esbuild/android-x64': registry.npmjs.org/@esbuild/android-x64@0.19.7 - '@esbuild/darwin-arm64': registry.npmjs.org/@esbuild/darwin-arm64@0.19.7 - '@esbuild/darwin-x64': registry.npmjs.org/@esbuild/darwin-x64@0.19.7 - '@esbuild/freebsd-arm64': registry.npmjs.org/@esbuild/freebsd-arm64@0.19.7 - '@esbuild/freebsd-x64': registry.npmjs.org/@esbuild/freebsd-x64@0.19.7 - '@esbuild/linux-arm': registry.npmjs.org/@esbuild/linux-arm@0.19.7 - '@esbuild/linux-arm64': registry.npmjs.org/@esbuild/linux-arm64@0.19.7 - '@esbuild/linux-ia32': registry.npmjs.org/@esbuild/linux-ia32@0.19.7 - '@esbuild/linux-loong64': registry.npmjs.org/@esbuild/linux-loong64@0.19.7 - '@esbuild/linux-mips64el': registry.npmjs.org/@esbuild/linux-mips64el@0.19.7 - '@esbuild/linux-ppc64': registry.npmjs.org/@esbuild/linux-ppc64@0.19.7 - '@esbuild/linux-riscv64': registry.npmjs.org/@esbuild/linux-riscv64@0.19.7 - '@esbuild/linux-s390x': registry.npmjs.org/@esbuild/linux-s390x@0.19.7 - '@esbuild/linux-x64': registry.npmjs.org/@esbuild/linux-x64@0.19.7 - '@esbuild/netbsd-x64': registry.npmjs.org/@esbuild/netbsd-x64@0.19.7 - '@esbuild/openbsd-x64': registry.npmjs.org/@esbuild/openbsd-x64@0.19.7 - '@esbuild/sunos-x64': registry.npmjs.org/@esbuild/sunos-x64@0.19.7 - '@esbuild/win32-arm64': registry.npmjs.org/@esbuild/win32-arm64@0.19.7 - '@esbuild/win32-ia32': registry.npmjs.org/@esbuild/win32-ia32@0.19.7 - '@esbuild/win32-x64': registry.npmjs.org/@esbuild/win32-x64@0.19.7 + '@esbuild/android-arm': registry.npmjs.org/@esbuild/android-arm@0.20.2 + '@esbuild/android-arm64': registry.npmjs.org/@esbuild/android-arm64@0.20.2 + '@esbuild/android-x64': registry.npmjs.org/@esbuild/android-x64@0.20.2 + '@esbuild/darwin-arm64': registry.npmjs.org/@esbuild/darwin-arm64@0.20.2 + '@esbuild/darwin-x64': registry.npmjs.org/@esbuild/darwin-x64@0.20.2 + '@esbuild/freebsd-arm64': registry.npmjs.org/@esbuild/freebsd-arm64@0.20.2 + '@esbuild/freebsd-x64': registry.npmjs.org/@esbuild/freebsd-x64@0.20.2 + '@esbuild/linux-arm': registry.npmjs.org/@esbuild/linux-arm@0.20.2 + '@esbuild/linux-arm64': registry.npmjs.org/@esbuild/linux-arm64@0.20.2 + '@esbuild/linux-ia32': registry.npmjs.org/@esbuild/linux-ia32@0.20.2 + '@esbuild/linux-loong64': registry.npmjs.org/@esbuild/linux-loong64@0.20.2 + '@esbuild/linux-mips64el': registry.npmjs.org/@esbuild/linux-mips64el@0.20.2 + '@esbuild/linux-ppc64': registry.npmjs.org/@esbuild/linux-ppc64@0.20.2 + '@esbuild/linux-riscv64': registry.npmjs.org/@esbuild/linux-riscv64@0.20.2 + '@esbuild/linux-s390x': registry.npmjs.org/@esbuild/linux-s390x@0.20.2 + '@esbuild/linux-x64': registry.npmjs.org/@esbuild/linux-x64@0.20.2 + '@esbuild/netbsd-x64': registry.npmjs.org/@esbuild/netbsd-x64@0.20.2 + '@esbuild/openbsd-x64': registry.npmjs.org/@esbuild/openbsd-x64@0.20.2 + '@esbuild/sunos-x64': registry.npmjs.org/@esbuild/sunos-x64@0.20.2 + '@esbuild/win32-arm64': registry.npmjs.org/@esbuild/win32-arm64@0.20.2 + '@esbuild/win32-ia32': registry.npmjs.org/@esbuild/win32-ia32@0.20.2 + '@esbuild/win32-x64': registry.npmjs.org/@esbuild/win32-x64@0.20.2 registry.npmjs.org/escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz} @@ -25701,7 +25701,7 @@ packages: dependencies: loader-utils: registry.npmjs.org/loader-utils@2.0.4 schema-utils: registry.npmjs.org/schema-utils@2.7.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/file-type@16.5.4: @@ -27400,7 +27400,7 @@ packages: lodash: registry.npmjs.org/lodash@4.17.21 pretty-error: registry.npmjs.org/pretty-error@4.0.0 tapable: registry.npmjs.org/tapable@2.2.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/html@1.0.0: @@ -32012,7 +32012,7 @@ packages: dependencies: klona: registry.npmjs.org/klona@2.0.6 less: registry.npmjs.org/less@4.1.3 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/less-loader@7.3.0(less@4.1.3)(webpack@4.46.0): @@ -33475,7 +33475,7 @@ packages: webpack: ^5.0.0 dependencies: schema-utils: registry.npmjs.org/schema-utils@4.0.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/miniapp-types@1.6.0: @@ -35836,7 +35836,7 @@ packages: klona: registry.npmjs.org/klona@2.0.6 postcss: registry.npmjs.org/postcss@8.4.23 semver: registry.npmjs.org/semver@7.5.0 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/postcss-media-query-parser@0.2.3: @@ -38986,7 +38986,7 @@ packages: klona: registry.npmjs.org/klona@2.0.6 neo-async: registry.npmjs.org/neo-async@2.6.2 sass: registry.npmjs.org/sass@1.50.0 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/sass@1.37.5: @@ -40527,7 +40527,7 @@ packages: peerDependencies: webpack: ^5.0.0 dependencies: - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/style-search@0.1.0: @@ -40706,7 +40706,7 @@ packages: klona: registry.npmjs.org/klona@2.0.6 normalize-path: registry.npmjs.org/normalize-path@3.0.0 stylus: registry.npmjs.org/stylus@0.55.0 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/stylus@0.55.0: @@ -41116,7 +41116,7 @@ packages: - bluebird dev: false - registry.npmjs.org/terser-webpack-plugin@5.3.8(esbuild@0.19.7)(webpack@5.78.0): + registry.npmjs.org/terser-webpack-plugin@5.3.8(esbuild@0.20.2)(webpack@5.78.0): resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz} id: registry.npmjs.org/terser-webpack-plugin/5.3.8 name: terser-webpack-plugin @@ -41136,12 +41136,12 @@ packages: optional: true dependencies: '@jridgewell/trace-mapping': registry.npmjs.org/@jridgewell/trace-mapping@0.3.18 - esbuild: registry.npmjs.org/esbuild@0.19.7 + esbuild: registry.npmjs.org/esbuild@0.20.2 jest-worker: registry.npmjs.org/jest-worker@27.5.1 schema-utils: registry.npmjs.org/schema-utils@3.1.2 serialize-javascript: registry.npmjs.org/serialize-javascript@6.0.1 terser: registry.npmjs.org/terser@5.17.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) registry.npmjs.org/terser-webpack-plugin@5.3.8(webpack@5.78.0): resolution: {integrity: sha512-WiHL3ElchZMsK27P8uIUh4604IgJyAW47LVXGbEoB21DbQcZ+OuMpGjVYnEUaqcWM6dO8uS2qUbA7LSCWqvsbg==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.8.tgz} @@ -41569,7 +41569,7 @@ packages: name: ts-interface-checker version: 0.1.13 - registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(babel-jest@29.5.0)(esbuild@0.19.7)(jest@29.5.0)(typescript@4.9.5): + registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(babel-jest@29.5.0)(esbuild@0.20.2)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz} id: registry.npmjs.org/ts-jest/29.1.0 name: ts-jest @@ -41596,7 +41596,7 @@ packages: '@babel/core': registry.npmjs.org/@babel/core@7.21.8 babel-jest: registry.npmjs.org/babel-jest@29.5.0(@babel/core@7.21.8) bs-logger: registry.npmjs.org/bs-logger@0.2.6 - esbuild: registry.npmjs.org/esbuild@0.19.7 + esbuild: registry.npmjs.org/esbuild@0.20.2 fast-json-stable-stringify: registry.npmjs.org/fast-json-stable-stringify@2.1.0 jest: registry.npmjs.org/jest@29.5.0 jest-util: registry.npmjs.org/jest-util@29.5.0 @@ -41684,7 +41684,7 @@ packages: yargs-parser: registry.npmjs.org/yargs-parser@21.1.1 dev: true - registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(esbuild@0.19.7)(jest@29.5.0)(typescript@4.9.5): + registry.npmjs.org/ts-jest@29.1.0(@babel/core@7.21.8)(esbuild@0.20.2)(jest@29.5.0)(typescript@4.9.5): resolution: {integrity: sha512-ZhNr7Z4PcYa+JjMl62ir+zPiNJfXJN6E8hSLnaUKhOgqcn8vb3e537cpkd0FuAfRK3sR1LSqM1MOhliXNgOFPA==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.0.tgz} id: registry.npmjs.org/ts-jest/29.1.0 name: ts-jest @@ -41710,7 +41710,7 @@ packages: dependencies: '@babel/core': registry.npmjs.org/@babel/core@7.21.8 bs-logger: registry.npmjs.org/bs-logger@0.2.6 - esbuild: registry.npmjs.org/esbuild@0.19.7 + esbuild: registry.npmjs.org/esbuild@0.20.2 fast-json-stable-stringify: registry.npmjs.org/fast-json-stable-stringify@2.1.0 jest: registry.npmjs.org/jest@29.5.0(@types/node@14.18.45)(ts-node@10.9.1) jest-util: registry.npmjs.org/jest-util@29.5.0 @@ -42625,7 +42625,7 @@ packages: loader-utils: registry.npmjs.org/loader-utils@2.0.4 mime-types: registry.npmjs.org/mime-types@2.1.35 schema-utils: registry.npmjs.org/schema-utils@2.7.1 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/url-parse-lax@1.0.0: @@ -43052,7 +43052,7 @@ packages: loader-utils: registry.npmjs.org/loader-utils@1.4.2 vue-hot-reload-api: registry.npmjs.org/vue-hot-reload-api@2.3.4 vue-style-loader: registry.npmjs.org/vue-style-loader@4.1.3 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) transitivePeerDependencies: - arc-templates - atpl @@ -43576,7 +43576,7 @@ packages: - esbuild - uglify-js - registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7): + registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2): resolution: {integrity: sha512-gT5DP72KInmE/3azEaQrISjTvLYlSM0j1Ezhht/KLVkrqtv10JoP/RXhwmX/frrutOPuSq3o5Vq0ehR/4Vmd1g==, registry: https://registry.yarnpkg.com/, tarball: https://registry.npmjs.org/webpack/-/webpack-5.78.0.tgz} id: registry.npmjs.org/webpack/5.78.0 name: webpack @@ -43610,7 +43610,7 @@ packages: neo-async: registry.npmjs.org/neo-async@2.6.2 schema-utils: registry.npmjs.org/schema-utils@3.1.2 tapable: registry.npmjs.org/tapable@2.2.1 - terser-webpack-plugin: registry.npmjs.org/terser-webpack-plugin@5.3.8(esbuild@0.19.7)(webpack@5.78.0) + terser-webpack-plugin: registry.npmjs.org/terser-webpack-plugin@5.3.8(esbuild@0.20.2)(webpack@5.78.0) watchpack: registry.npmjs.org/watchpack@2.4.0 webpack-sources: registry.npmjs.org/webpack-sources@3.2.3 transitivePeerDependencies: @@ -43631,7 +43631,7 @@ packages: consola: registry.npmjs.org/consola@2.15.3 pretty-time: registry.npmjs.org/pretty-time@1.1.0 std-env: registry.npmjs.org/std-env@3.3.3 - webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.19.7) + webpack: registry.npmjs.org/webpack@5.78.0(esbuild@0.20.2) dev: false registry.npmjs.org/websocket-driver@0.7.4: From 7e32faa82d591c7e9dd515ab0229a324badb9e23 Mon Sep 17 00:00:00 2001 From: inooNgt Date: Sun, 12 May 2024 16:18:59 +0800 Subject: [PATCH 2/2] Merge branch 'main' into pr/15391 --- .eslintrc.js | 8 +- .github/workflows/build-rust-binding.yml | 2 +- .github/workflows/nodejs.yml | 12 +- .github/workflows/publish.yml | 2 +- .github/workflows/sync-components-types.yml | 2 +- .gitignore | 3 +- .vscode/settings.json | 12 - crates/native_binding/package.json | 2 +- .../src/tests/attributes.rs | 2 +- .../swc_plugin_compile_mode/src/transform.rs | 4 +- .../attributes.rs/should_handle_events.js | 2 +- .../should_turn_dynamic_attrs.js | 4 +- .../h5/package.json | 2 +- .../taro-project/package.json | 2 +- examples/mini-program-example/.editorconfig | 12 + examples/mini-program-example/.eslintrc | 13 + examples/mini-program-example/.gitignore | 7 + examples/mini-program-example/.prettierrc | 14 + examples/mini-program-example/babel.config.js | 10 + examples/mini-program-example/config/dev.js | 9 + examples/mini-program-example/config/index.js | 96 + examples/mini-program-example/config/prod.js | 37 + examples/mini-program-example/package.json | 86 + .../mini-program-example/project.config.json | 32 + .../project.private.config.json | 7 + examples/mini-program-example/project.tt.json | 9 + .../mini-program-example/src/app.config.ts | 185 + examples/mini-program-example/src/app.scss | 37 + examples/mini-program-example/src/app.ts | 55 + .../src/assets/api/AI.png | Bin 0 -> 2333 bytes .../src/assets/api/advertising.png | Bin 0 -> 1702 bytes .../src/assets/api/alipay.png | Bin 0 -> 2302 bytes .../src/assets/api/analysis.png | Bin 0 -> 1596 bytes .../src/assets/api/cache.png | Bin 0 -> 2733 bytes .../src/assets/api/canvas.png | Bin 0 -> 1035 bytes .../src/assets/api/cloud.png | Bin 0 -> 1922 bytes .../src/assets/api/devices.png | Bin 0 -> 807 bytes .../src/assets/api/file.png | Bin 0 -> 745 bytes .../src/assets/api/forward.png | Bin 0 -> 932 bytes .../src/assets/api/frame.png | Bin 0 -> 412 bytes .../src/assets/api/interface.png | Bin 0 -> 2549 bytes .../src/assets/api/iphone.png | Bin 0 -> 812 bytes .../src/assets/api/local.png | Bin 0 -> 4015 bytes .../src/assets/api/logo.png | Bin 0 -> 6118 bytes .../src/assets/api/media.png | Bin 0 -> 1577 bytes .../src/assets/api/network.png | Bin 0 -> 3559 bytes .../src/assets/api/openapi.png | Bin 0 -> 2411 bytes .../src/assets/api/payment.png | Bin 0 -> 913 bytes .../src/assets/api/qq.png | Bin 0 -> 2568 bytes .../src/assets/api/redirection.png | Bin 0 -> 2276 bytes .../src/assets/api/routing.png | Bin 0 -> 1613 bytes .../src/assets/api/swan.png | Bin 0 -> 1823 bytes .../src/assets/api/taro.png | Bin 0 -> 373 bytes .../src/assets/api/thirdparty.png | Bin 0 -> 948 bytes .../src/assets/api/worker.png | Bin 0 -> 1215 bytes .../src/assets/api/wxml.png | Bin 0 -> 2881 bytes .../src/assets/component/canvas.png | Bin 0 -> 1480 bytes .../src/assets/component/content.png | Bin 0 -> 423 bytes .../src/assets/component/form.png | Bin 0 -> 226 bytes .../src/assets/component/logo.png | Bin 0 -> 1065 bytes .../src/assets/component/map.png | Bin 0 -> 2408 bytes .../src/assets/component/media.png | Bin 0 -> 1145 bytes .../src/assets/component/nav.png | Bin 0 -> 1233 bytes .../src/assets/component/nav_red.png | Bin 0 -> 1659 bytes .../src/assets/component/view.png | Bin 0 -> 653 bytes .../src/assets/component/view_red.png | Bin 0 -> 1279 bytes .../src/assets/tab/api.png | Bin 0 -> 4454 bytes .../src/assets/tab/api_select.png | Bin 0 -> 4305 bytes .../src/assets/tab/component.png | Bin 0 -> 10129 bytes .../src/assets/tab/component_select.png | Bin 0 -> 9569 bytes .../src/assets/tab/home.png | Bin 0 -> 5246 bytes .../src/assets/tab/home_select.png | Bin 0 -> 5114 bytes .../src/components/buttonList/index.scss | 127 + .../src/components/buttonList/index.tsx | 178 + .../components/callbackContents/index.scss | 3 + .../src/components/callbackContents/index.tsx | 49 + .../component_state/component_state.js | 19 + .../component_state/component_state.scss | 11 + .../src/components/head/head.js | 18 + examples/mini-program-example/src/index.html | 17 + .../src/pages/api/advertising/index.config.ts | 3 + .../src/pages/api/advertising/index.scss | 6 + .../src/pages/api/advertising/index.tsx | 70 + .../api/ai/faceRecognition/index.config.ts | 3 + .../pages/api/ai/faceRecognition/index.scss | 6 + .../pages/api/ai/faceRecognition/index.tsx | 49 + .../pages/api/ai/inference/index.config.ts | 3 + .../src/pages/api/ai/inference/index.scss | 6 + .../src/pages/api/ai/inference/index.tsx | 37 + .../api/ai/visionAlgorithms/index.config.ts | 3 + .../pages/api/ai/visionAlgorithms/index.scss | 6 + .../pages/api/ai/visionAlgorithms/index.tsx | 49 + .../src/pages/api/alipay/index.config.ts | 3 + .../src/pages/api/alipay/index.scss | 6 + .../src/pages/api/alipay/index.tsx | 29 + .../src/pages/api/analysis/index.config.ts | 3 + .../src/pages/api/analysis/index.scss | 6 + .../src/pages/api/analysis/index.tsx | 55 + .../pages/api/basics/basics/index.config.ts | 3 + .../src/pages/api/basics/basics/index.scss | 6 + .../src/pages/api/basics/basics/index.tsx | 147 + .../api/basics/encryption/index.config.ts | 3 + .../pages/api/basics/encryption/index.scss | 6 + .../src/pages/api/basics/encryption/index.tsx | 37 + .../applicationLevelEvents/index.tsx | 217 ++ .../api/basics/miniProgram/index.config.ts | 3 + .../pages/api/basics/miniProgram/index.scss | 6 + .../pages/api/basics/miniProgram/index.tsx | 51 + .../basics/miniProgram/lifeCycle/index.tsx | 41 + .../api/basics/nativeDebug/index.config.ts | 3 + .../pages/api/basics/nativeDebug/index.scss | 6 + .../pages/api/basics/nativeDebug/index.tsx | 146 + .../api/basics/performance/index.config.ts | 3 + .../pages/api/basics/performance/index.scss | 6 + .../pages/api/basics/performance/index.tsx | 54 + .../pages/api/basics/system/index.config.ts | 3 + .../src/pages/api/basics/system/index.scss | 6 + .../src/pages/api/basics/system/index.tsx | 141 + .../pages/api/basics/update/index.config.ts | 3 + .../src/pages/api/basics/update/index.scss | 6 + .../src/pages/api/basics/update/index.tsx | 72 + .../src/pages/api/cache/index.config.ts | 3 + .../src/pages/api/cache/index.scss | 6 + .../src/pages/api/cache/index.tsx | 246 ++ .../src/pages/api/canvas/index.config.ts | 3 + .../src/pages/api/canvas/index.scss | 28 + .../src/pages/api/canvas/index.tsx | 907 +++++ .../pages/api/cloudServices/index.config.ts | 3 + .../src/pages/api/cloudServices/index.scss | 6 + .../src/pages/api/cloudServices/index.tsx | 41 + .../api/device/accelerometer/index.config.ts | 3 + .../pages/api/device/accelerometer/index.scss | 6 + .../pages/api/device/accelerometer/index.tsx | 114 + .../api/device/accessibility/index.config.ts | 3 + .../pages/api/device/accessibility/index.scss | 6 + .../pages/api/device/accessibility/index.tsx | 29 + .../pages/api/device/bettery/index.config.ts | 3 + .../src/pages/api/device/bettery/index.scss | 6 + .../src/pages/api/device/bettery/index.tsx | 59 + .../device/bluetoothBeacon/index.config.ts | 3 + .../api/device/bluetoothBeacon/index.scss | 6 + .../api/device/bluetoothBeacon/index.tsx | 57 + .../device/bluetoothGeneral/index.config.ts | 3 + .../api/device/bluetoothGeneral/index.scss | 29 + .../api/device/bluetoothGeneral/index.tsx | 466 +++ .../device/bluetoothLowCenter/index.config.ts | 3 + .../api/device/bluetoothLowCenter/index.scss | 6 + .../api/device/bluetoothLowCenter/index.tsx | 291 ++ .../bluetoothLowPerpherals/index.config.ts | 3 + .../device/bluetoothLowPerpherals/index.scss | 6 + .../device/bluetoothLowPerpherals/index.tsx | 41 + .../pages/api/device/calendar/index.config.ts | 3 + .../src/pages/api/device/calendar/index.scss | 6 + .../src/pages/api/device/calendar/index.tsx | 82 + .../api/device/clipBoard/index.config.ts | 3 + .../src/pages/api/device/clipBoard/index.scss | 6 + .../src/pages/api/device/clipBoard/index.tsx | 83 + .../pages/api/device/compass/index.config.ts | 3 + .../src/pages/api/device/compass/index.scss | 6 + .../src/pages/api/device/compass/index.tsx | 105 + .../pages/api/device/contact/index.config.ts | 3 + .../src/pages/api/device/contact/index.scss | 6 + .../src/pages/api/device/contact/index.tsx | 61 + .../device/deviceOrientation/index.config.ts | 3 + .../api/device/deviceOrientation/index.scss | 6 + .../api/device/deviceOrientation/index.tsx | 41 + .../api/device/gyroscope/index.config.ts | 3 + .../src/pages/api/device/gyroscope/index.scss | 6 + .../src/pages/api/device/gyroscope/index.tsx | 81 + .../pages/api/device/keyboard/index.config.ts | 3 + .../src/pages/api/device/keyboard/index.scss | 6 + .../src/pages/api/device/keyboard/index.tsx | 93 + .../pages/api/device/memory/index.config.ts | 3 + .../src/pages/api/device/memory/index.scss | 6 + .../src/pages/api/device/memory/index.tsx | 43 + .../pages/api/device/network/index.config.ts | 3 + .../src/pages/api/device/network/index.scss | 6 + .../src/pages/api/device/network/index.tsx | 124 + .../src/pages/api/device/nfc/index.config.ts | 3 + .../src/pages/api/device/nfc/index.scss | 6 + .../src/pages/api/device/nfc/index.tsx | 89 + .../api/device/phoneCall/index.config.ts | 3 + .../src/pages/api/device/phoneCall/index.scss | 6 + .../src/pages/api/device/phoneCall/index.tsx | 50 + .../src/pages/api/device/scan/index.config.ts | 3 + .../src/pages/api/device/scan/index.scss | 6 + .../src/pages/api/device/scan/index.tsx | 74 + .../pages/api/device/screen/index.config.ts | 3 + .../src/pages/api/device/screen/index.scss | 12 + .../src/pages/api/device/screen/index.tsx | 123 + .../src/pages/api/device/sms/index.config.ts | 3 + .../src/pages/api/device/sms/index.scss | 6 + .../src/pages/api/device/sms/index.tsx | 29 + .../api/device/vibration/index.config.ts | 3 + .../src/pages/api/device/vibration/index.scss | 6 + .../src/pages/api/device/vibration/index.tsx | 65 + .../src/pages/api/device/wifi/index.config.ts | 3 + .../src/pages/api/device/wifi/index.scss | 87 + .../src/pages/api/device/wifi/index.tsx | 211 ++ .../src/pages/api/file/index.config.ts | 3 + .../src/pages/api/file/index.scss | 6 + .../src/pages/api/file/index.tsx | 529 +++ .../src/pages/api/forward/index.config.ts | 3 + .../src/pages/api/forward/index.scss | 6 + .../src/pages/api/forward/index.tsx | 123 + .../src/pages/api/framework/index.config.ts | 7 + .../src/pages/api/framework/index.scss | 10 + .../src/pages/api/framework/index.tsx | 181 + .../src/pages/api/index/index.config.js | 3 + .../src/pages/api/index/index.scss | 8 + .../src/pages/api/index/index.tsx | 528 +++ .../src/pages/api/index/module.js | 88 + .../api/interface/animation/index.config.ts | 3 + .../pages/api/interface/animation/index.scss | 6 + .../pages/api/interface/animation/index.tsx | 301 ++ .../api/interface/background/index.config.ts | 3 + .../pages/api/interface/background/index.scss | 6 + .../pages/api/interface/background/index.tsx | 33 + .../customizedComponents/index.config.ts | 3 + .../interface/customizedComponents/index.scss | 6 + .../interface/customizedComponents/index.tsx | 40 + .../pages/api/interface/font/index.config.ts | 3 + .../src/pages/api/interface/font/index.scss | 6 + .../src/pages/api/interface/font/index.tsx | 123 + .../api/interface/interaction/index.config.ts | 3 + .../api/interface/interaction/index.scss | 6 + .../pages/api/interface/interaction/index.tsx | 212 ++ .../pages/api/interface/menu/index.config.ts | 4 + .../src/pages/api/interface/menu/index.scss | 15 + .../src/pages/api/interface/menu/index.tsx | 64 + .../interface/navigationBar/index.config.ts | 5 + .../api/interface/navigationBar/index.scss | 6 + .../api/interface/navigationBar/index.tsx | 127 + .../interface/pullDownRefresh/index.config.ts | 5 + .../api/interface/pullDownRefresh/index.scss | 6 + .../api/interface/pullDownRefresh/index.tsx | 68 + .../api/interface/scroll/index.config.ts | 3 + .../src/pages/api/interface/scroll/index.scss | 15 + .../src/pages/api/interface/scroll/index.tsx | 72 + .../api/interface/setTop/index.config.ts | 3 + .../src/pages/api/interface/setTop/index.scss | 6 + .../src/pages/api/interface/setTop/index.tsx | 47 + .../api/interface/tabBar/index.config.ts | 3 + .../src/pages/api/interface/tabBar/index.scss | 25 + .../src/pages/api/interface/tabBar/index.tsx | 333 ++ .../api/interface/windows/index.config.ts | 3 + .../pages/api/interface/windows/index.scss | 6 + .../src/pages/api/interface/windows/index.tsx | 67 + .../src/pages/api/location/index.config.ts | 4 + .../src/pages/api/location/index.scss | 6 + .../src/pages/api/location/index.tsx | 267 ++ .../src/pages/api/media/audio/index.config.ts | 3 + .../src/pages/api/media/audio/index.scss | 6 + .../src/pages/api/media/audio/index.tsx | 570 +++ .../media/audioOrVideoCompose/index.config.ts | 3 + .../api/media/audioOrVideoCompose/index.scss | 6 + .../api/media/audioOrVideoCompose/index.tsx | 37 + .../api/media/backgroundAudio/index.config.ts | 3 + .../api/media/backgroundAudio/index.scss | 6 + .../pages/api/media/backgroundAudio/index.tsx | 180 + .../pages/api/media/camera/index.config.ts | 3 + .../src/pages/api/media/camera/index.scss | 6 + .../src/pages/api/media/camera/index.tsx | 132 + .../src/pages/api/media/image/index.config.ts | 3 + .../src/pages/api/media/image/index.scss | 6 + .../src/pages/api/media/image/index.tsx | 325 ++ .../src/pages/api/media/map/index.config.ts | 3 + .../src/pages/api/media/map/index.scss | 15 + .../src/pages/api/media/map/index.tsx | 838 +++++ .../realtimeAudioAndVideo/index.config.ts | 3 + .../media/realtimeAudioAndVideo/index.scss | 21 + .../api/media/realtimeAudioAndVideo/index.tsx | 296 ++ .../api/media/realtimeVoice/index.config.ts | 3 + .../pages/api/media/realtimeVoice/index.scss | 6 + .../pages/api/media/realtimeVoice/index.tsx | 81 + .../pages/api/media/recording/index.config.ts | 3 + .../src/pages/api/media/recording/index.scss | 9 + .../src/pages/api/media/recording/index.tsx | 244 ++ .../pages/api/media/richText/index.config.ts | 3 + .../src/pages/api/media/richText/index.scss | 6 + .../src/pages/api/media/richText/index.tsx | 275 ++ .../api/media/screenRecorder/index.config.ts | 3 + .../pages/api/media/screenRecorder/index.scss | 6 + .../pages/api/media/screenRecorder/index.tsx | 33 + .../src/pages/api/media/video/index.config.ts | 3 + .../src/pages/api/media/video/index.scss | 6 + .../src/pages/api/media/video/index.tsx | 402 +++ .../api/media/videoDecoder/index.config.ts | 3 + .../pages/api/media/videoDecoder/index.scss | 6 + .../pages/api/media/videoDecoder/index.tsx | 33 + .../navigationBarApis/navigationBarApis.scss | 13 + .../navigationBarApis/navigationBarApis.tsx | 95 + .../network/TCPCommunications/index.config.ts | 3 + .../api/network/TCPCommunications/index.scss | 6 + .../api/network/TCPCommunications/index.tsx | 33 + .../network/UDPCommunications/index.config.ts | 3 + .../api/network/UDPCommunications/index.scss | 6 + .../api/network/UDPCommunications/index.tsx | 33 + .../api/network/download/index.config.ts | 3 + .../src/pages/api/network/download/index.scss | 6 + .../src/pages/api/network/download/index.tsx | 125 + .../pages/api/network/mDNS/index.config.ts | 3 + .../src/pages/api/network/mDNS/index.scss | 6 + .../src/pages/api/network/mDNS/index.tsx | 65 + .../pages/api/network/request/index.config.ts | 3 + .../src/pages/api/network/request/index.scss | 6 + .../src/pages/api/network/request/index.tsx | 101 + .../pages/api/network/upload/index.config.ts | 3 + .../src/pages/api/network/upload/index.scss | 6 + .../src/pages/api/network/upload/index.tsx | 128 + .../api/network/webSocket/index.config.ts | 3 + .../pages/api/network/webSocket/index.scss | 6 + .../src/pages/api/network/webSocket/index.tsx | 238 ++ .../accountInfomation/index.config.ts | 3 + .../api/openAPIS/accountInfomation/index.scss | 6 + .../api/openAPIS/accountInfomation/index.tsx | 33 + .../openAPIS/authorization/index.config.ts | 3 + .../api/openAPIS/authorization/index.scss | 6 + .../api/openAPIS/authorization/index.tsx | 51 + .../biometricAuthorization/index.config.ts | 3 + .../biometricAuthorization/index.scss | 6 + .../openAPIS/biometricAuthorization/index.tsx | 87 + .../openAPIS/cardsAndOffers/index.config.ts | 3 + .../api/openAPIS/cardsAndOffers/index.scss | 6 + .../api/openAPIS/cardsAndOffers/index.tsx | 33 + .../api/openAPIS/collection/index.config.ts | 3 + .../pages/api/openAPIS/collection/index.scss | 6 + .../pages/api/openAPIS/collection/index.tsx | 33 + .../api/openAPIS/deviceVoip/index.config.ts | 3 + .../pages/api/openAPIS/deviceVoip/index.scss | 6 + .../pages/api/openAPIS/deviceVoip/index.tsx | 33 + .../api/openAPIS/invoice/index.config.ts | 3 + .../src/pages/api/openAPIS/invoice/index.scss | 6 + .../src/pages/api/openAPIS/invoice/index.tsx | 33 + .../api/openAPIS/licensePlate/index.config.ts | 3 + .../api/openAPIS/licensePlate/index.scss | 21 + .../pages/api/openAPIS/licensePlate/index.tsx | 29 + .../pages/api/openAPIS/login/index.config.ts | 3 + .../src/pages/api/openAPIS/login/index.scss | 6 + .../src/pages/api/openAPIS/login/index.tsx | 51 + .../openAPIS/mineMiniProgram/index.config.ts | 3 + .../api/openAPIS/mineMiniProgram/index.scss | 6 + .../api/openAPIS/mineMiniProgram/index.tsx | 29 + .../openAPIS/recipientAddress/index.config.ts | 3 + .../api/openAPIS/recipientAddress/index.scss | 6 + .../api/openAPIS/recipientAddress/index.tsx | 29 + .../api/openAPIS/setting/index.config.ts | 3 + .../src/pages/api/openAPIS/setting/index.scss | 6 + .../src/pages/api/openAPIS/setting/index.tsx | 76 + .../openAPIS/subscribeNews/index.config.ts | 3 + .../api/openAPIS/subscribeNews/index.scss | 6 + .../api/openAPIS/subscribeNews/index.tsx | 50 + .../openAPIS/userInfomation/index.config.ts | 3 + .../api/openAPIS/userInfomation/index.scss | 6 + .../api/openAPIS/userInfomation/index.tsx | 75 + .../pages/api/openAPIS/weRun/index.config.ts | 3 + .../src/pages/api/openAPIS/weRun/index.scss | 6 + .../src/pages/api/openAPIS/weRun/index.tsx | 33 + .../wechatCustomerService/index.config.ts | 3 + .../openAPIS/wechatCustomerService/index.scss | 6 + .../openAPIS/wechatCustomerService/index.tsx | 29 + .../api/openAPIS/wechatGroup/index.config.ts | 3 + .../pages/api/openAPIS/wechatGroup/index.scss | 6 + .../pages/api/openAPIS/wechatGroup/index.tsx | 29 + .../openAPIS/wechatRedRacket/index.config.ts | 3 + .../api/openAPIS/wechatRedRacket/index.scss | 6 + .../api/openAPIS/wechatRedRacket/index.tsx | 29 + .../wechatVideoChannel/index.config.ts | 3 + .../openAPIS/wechatVideoChannel/index.scss | 6 + .../api/openAPIS/wechatVideoChannel/index.tsx | 71 + .../src/pages/api/payment/index.config.ts | 3 + .../src/pages/api/payment/index.scss | 6 + .../src/pages/api/payment/index.tsx | 61 + .../src/pages/api/qq/index.config.ts | 3 + .../src/pages/api/qq/index.scss | 6 + .../src/pages/api/qq/index.tsx | 29 + .../src/pages/api/redirection/index.config.ts | 3 + .../src/pages/api/redirection/index.scss | 6 + .../src/pages/api/redirection/index.tsx | 68 + .../src/pages/api/routing/index.config.ts | 3 + .../src/pages/api/routing/index.scss | 6 + .../src/pages/api/routing/index.tsx | 145 + .../pages/api/routing/routeA/index.config.ts | 3 + .../src/pages/api/routing/routeA/index.tsx | 48 + .../src/pages/api/swan/index.config.ts | 3 + .../src/pages/api/swan/index.scss | 6 + .../src/pages/api/swan/index.tsx | 29 + .../src/pages/api/tabBarApis/tabBarApis.scss | 13 + .../src/pages/api/tabBarApis/tabBarApis.tsx | 189 + .../src/pages/api/taro/expand/index.config.ts | 3 + .../src/pages/api/taro/expand/index.scss | 6 + .../src/pages/api/taro/expand/index.tsx | 76 + .../src/pages/api/taro/hooks/index.config.ts | 3 + .../src/pages/api/taro/hooks/index.scss | 6 + .../src/pages/api/taro/hooks/index.tsx | 113 + .../src/pages/api/thirdParty/index.config.ts | 3 + .../src/pages/api/thirdParty/index.scss | 6 + .../src/pages/api/thirdParty/index.tsx | 33 + .../src/pages/api/worker/index.config.ts | 3 + .../src/pages/api/worker/index.scss | 6 + .../src/pages/api/worker/index.tsx | 33 + .../src/pages/api/wxml/index.config.ts | 3 + .../src/pages/api/wxml/index.scss | 40 + .../src/pages/api/wxml/index.tsx | 433 +++ .../src/pages/component/audio/audio.config.js | 3 + .../src/pages/component/audio/audio.js | 37 + .../src/pages/component/audio/audio.scss | 6 + .../pages/component/button/button.config.js | 3 + .../src/pages/component/button/button.js | 102 + .../src/pages/component/button/button.scss | 6 + .../pages/component/camera/camera.config.js | 3 + .../src/pages/component/camera/camera.js | 59 + .../src/pages/component/camera/camera.scss | 4 + .../pages/component/canvas/canvas.config.js | 3 + .../src/pages/component/canvas/canvas.js | 65 + .../src/pages/component/canvas/canvas.scss | 10 + .../checkbox-group/checkbox-group.config.ts | 3 + .../checkbox-group/checkbox-group.scss | 46 + .../checkbox-group/checkbox-group.tsx | 60 + .../component/checkbox/checkbox.config.js | 3 + .../src/pages/component/checkbox/checkbox.js | 107 + .../pages/component/checkbox/checkbox.scss | 55 + .../cover-image/cover-image.config.js | 3 + .../component/cover-image/cover-image.js | 64 + .../component/cover-image/cover-image.scss | 3 + .../pages/component/cover-image/nerv_logo.png | Bin 0 -> 78347 bytes .../component/cover-view/cover-view.config.js | 3 + .../pages/component/cover-view/cover-view.js | 82 + .../component/cover-view/cover-view.scss | 32 + .../pages/component/cover-view/nerv_logo.png | Bin 0 -> 78347 bytes .../pages/component/editor/editor.config.ts | 3 + .../src/pages/component/editor/editor.scss | 0 .../src/pages/component/editor/editor.tsx | 583 +++ .../src/pages/component/form/form.config.js | 3 + .../src/pages/component/form/form.js | 171 + .../src/pages/component/form/form.scss | 24 + .../src/pages/component/grid-view/demo1.tsx | 26 + .../src/pages/component/grid-view/demo2.tsx | 26 + .../pages/component/grid-view/grid-tile.scss | 9 + .../pages/component/grid-view/grid-tile.tsx | 21 + .../component/grid-view/grid-view.config.ts | 3 + .../pages/component/grid-view/grid-view.scss | 27 + .../pages/component/grid-view/grid-view.tsx | 56 + .../src/pages/component/grid-view/utils.js | 14 + .../src/pages/component/icon/icon.config.js | 3 + .../src/pages/component/icon/icon.js | 108 + .../src/pages/component/icon/icon.scss | 25 + .../src/pages/component/image/image.config.js | 3 + .../src/pages/component/image/image.js | 45 + .../src/pages/component/image/image.scss | 3 + .../src/pages/component/image/nerv_logo.png | Bin 0 -> 78347 bytes .../src/pages/component/index/index.config.js | 3 + .../src/pages/component/index/index.scss | 8 + .../src/pages/component/index/index.tsx | 245 ++ .../src/pages/component/input/input.config.js | 3 + .../src/pages/component/input/input.js | 90 + .../src/pages/component/input/input.scss | 10 + .../src/pages/component/label/label.config.js | 3 + .../src/pages/component/label/label.js | 76 + .../src/pages/component/label/label.scss | 14 + .../component/list-view/list-view.config.ts | 3 + .../pages/component/list-view/list-view.scss | 19 + .../pages/component/list-view/list-view.tsx | 30 + .../live-player/live-player.config.js | 3 + .../component/live-player/live-player.js | 201 ++ .../component/live-player/live-player.scss | 3 + .../src/pages/component/map/map.config.js | 3 + .../src/pages/component/map/map.js | 809 +++++ .../src/pages/component/map/map.scss | 27 + .../match-media/match-media.config.ts | 3 + .../component/match-media/match-media.scss | 19 + .../component/match-media/match-media.tsx | 28 + .../movable-view/movable-view.config.js | 3 + .../component/movable-view/movable-view.js | 133 + .../component/movable-view/movable-view.scss | 46 + .../component/navigator/navigator.config.js | 3 + .../pages/component/navigator/navigator.js | 51 + .../pages/component/navigator/navigator.scss | 11 + .../page-container/page-container.config.ts | 3 + .../page-container/page-container.scss | 19 + .../page-container/page-container.tsx | 153 + .../picker-view/picker-view.config.js | 3 + .../component/picker-view/picker-view.js | 82 + .../pages/component/picker/picker.config.js | 3 + .../src/pages/component/picker/picker.js | 125 + .../src/pages/component/picker/picker.scss | 5 + .../component/progress/progress.config.js | 3 + .../src/pages/component/progress/progress.js | 84 + .../pages/component/progress/progress.scss | 5 + .../radio-group/radio-group.config.ts | 3 + .../component/radio-group/radio-group.scss | 46 + .../component/radio-group/radio-group.tsx | 59 + .../src/pages/component/radio/radio.config.js | 3 + .../src/pages/component/radio/radio.js | 106 + .../src/pages/component/radio/radio.scss | 54 + .../root-portal/root-portal.config.ts | 3 + .../component/root-portal/root-portal.scss | 19 + .../component/root-portal/root-portal.tsx | 39 + .../scroll-view/scroll-view.config.js | 3 + .../component/scroll-view/scroll-view.js | 52 + .../component/scroll-view/scroll-view.scss | 24 + .../share-element/share-element.config.ts | 3 + .../share-element/share-element.scss | 19 + .../component/share-element/share-element.tsx | 32 + .../pages/component/slider/slider.config.js | 3 + .../src/pages/component/slider/slider.js | 98 + .../sticky-header/sticky-header.config.ts | 3 + .../sticky-header/sticky-header.scss | 19 + .../component/sticky-header/sticky-header.tsx | 46 + .../pages/component/swiper/swiper.config.js | 3 + .../src/pages/component/swiper/swiper.js | 217 ++ .../src/pages/component/swiper/swiper.scss | 62 + .../pages/component/switch/switch.config.js | 3 + .../src/pages/component/switch/switch.js | 66 + .../src/pages/component/switch/switch.scss | 28 + .../src/pages/component/text/text.config.js | 3 + .../src/pages/component/text/text.js | 62 + .../src/pages/component/text/text.scss | 7 + .../component/textarea/textarea.config.js | 3 + .../src/pages/component/textarea/textarea.js | 78 + .../pages/component/textarea/textarea.scss | 6 + .../src/pages/component/video/video.config.js | 3 + .../src/pages/component/video/video.js | 37 + .../src/pages/component/video/video.scss | 3 + .../src/pages/component/view/view.config.js | 3 + .../src/pages/component/view/view.js | 48 + .../src/pages/component/view/view.scss | 23 + .../src/pages/error/index.config.ts | 3 + .../src/pages/error/index.scss | 7 + .../src/pages/error/index.tsx | 14 + .../src/pages/index/index.config.ts | 3 + .../src/pages/index/index.scss | 24 + .../src/pages/index/index.tsx | 70 + .../pages/performance/index/index.config.ts | 7 + .../src/pages/performance/index/index.scss | 15 + .../src/pages/performance/index/index.tsx | 548 +++ .../src/styles/mixins.scss | 60 + .../src/styles/tabPage.scss | 85 + .../src/styles/variables.scss | 98 + .../src/util/nativeApi.ts | 14 + .../mini-program-example/src/util/util.ts | 77 + examples/mini-program-example/tsconfig.json | 31 + .../mini-program-example/types/global.d.ts | 19 + npm/darwin-arm64/package.json | 2 +- npm/darwin-x64/package.json | 2 +- npm/linux-x64-gnu/package.json | 2 +- npm/linux-x64-musl/package.json | 2 +- npm/win32-x64-msvc/package.json | 2 +- package.json | 6 +- .../package.json | 2 +- .../package.json | 2 +- packages/babel-preset-taro/package.json | 2 +- packages/create-app/package.json | 2 +- packages/css-to-react-native/package.json | 2 +- packages/eslint-config-taro/package.json | 2 +- packages/postcss-html-transform/package.json | 2 +- .../postcss-plugin-constparse/package.json | 2 +- packages/postcss-pxtransform/package.json | 2 +- packages/postcss-unit-transform/package.json | 2 +- packages/rollup-plugin-copy/.gitignore | 1 + packages/shared/package.json | 2 +- packages/shared/src/template.ts | 1 - .../stylelint-config-taro-rn/package.json | 2 +- packages/stylelint-taro-rn/package.json | 2 +- packages/taro-alipay/package.json | 2 +- packages/taro-alipay/src/template.ts | 2 +- .../taro-api/__tests__/interceptorify.test.ts | 1 - .../taro-api/__tests__/pxTransform.test.ts | 1 - packages/taro-api/package.json | 2 +- packages/taro-api/src/tools.ts | 4 +- .../__tests__/__mocks__/fs-extra.js | 126 +- .../__tests__/__mocks__/path.js | 12 +- .../__tests__/config.test.ts | 107 +- .../__tests__/data/fileData.ts | 138 +- .../__tests__/index.test.ts | 22 +- .../__tests__/script.test.ts | 1 - .../taro-cli-convertor/__tests__/wxss.test.ts | 17 +- packages/taro-cli-convertor/package.json | 2 +- packages/taro-cli-convertor/src/index.ts | 67 +- .../taro-cli-convertor/src/util/global.ts | 10 +- packages/taro-cli-convertor/src/util/index.ts | 145 +- packages/taro-cli/package.json | 2 +- .../src/__tests__/dotenv-parse.spec.ts | 1 - .../taro-cli/src/__tests__/update.spec.ts | 2 +- packages/taro-cli/src/cli.ts | 24 +- packages/taro-cli/src/create/page.ts | 6 +- packages/taro-cli/src/create/project.ts | 2 +- packages/taro-cli/src/doctor/index.ts | 3 +- packages/taro-cli/src/index.ts | 3 +- .../taro-cli/src/presets/commands/build.ts | 8 + .../src/presets/commands/global-config.ts | 31 +- .../taro-cli/src/presets/commands/update.ts | 2 +- .../taro-cli/src/presets/constant/hooks.ts | 1 + packages/taro-cli/src/presets/hooks/build.ts | 1 + packages/taro-cli/src/util/defineConfig.ts | 2 +- .../templates/default/package.json.tmpl | 2 +- .../templates/default/template_creator.js | 8 +- .../taro-components-advanced/package.json | 2 +- .../src/components/virtual-list/react/list.ts | 2 +- .../components/virtual-list/react/wrapper.ts | 4 +- .../src/components/virtual-list/vue/list.ts | 4 +- .../src/utils/math.ts | 2 +- .../src/utils/vue-render.ts | 2 +- .../package.json | 2 +- .../react-component-lib/utils/attachProps.ts | 4 +- .../taro-components-library-vue2/package.json | 2 +- .../src/vue-component-lib/utils.ts | 2 +- .../taro-components-library-vue3/package.json | 2 +- .../src/vue-component-lib/utils.ts | 2 +- packages/taro-components-react/package.json | 2 +- .../src/components/button/index.tsx | 2 +- .../src/components/input/index.tsx | 2 +- packages/taro-components-rn/package.json | 2 +- .../__mocks__/swiper/swiper-bundle.esm.js.ts | 2 +- .../taro-components/__tests__/checkbox.e2e.ts | 2 +- .../__tests__/draggable-sheet.spec.tsx | 25 + .../__tests__/grid-builder.spec.tsx | 25 + .../__tests__/list-builder.spec.tsx | 25 + .../__tests__/nested-scroll-body.spec.tsx | 25 + .../__tests__/nested-scroll-header.spec.tsx | 25 + .../__tests__/open-container.spec.tsx | 25 + .../taro-components/__tests__/span.spec.tsx | 25 + .../taro-components/__tests__/video.spec.tsx | 4 +- packages/taro-components/package.json | 2 +- .../scripts/json-schema-to-types.ts | 3 +- .../scripts/stencil/plugin/sass-plugin.ts | 4 +- .../draggable-sheet/draggable-sheet.tsx | 18 + .../src/components/draggable-sheet/readme.md | 10 + .../components/grid-builder/grid-builder.tsx | 18 + .../src/components/grid-builder/readme.md | 10 + .../components/list-builder/list-builder.tsx | 18 + .../src/components/list-builder/readme.md | 10 + .../nested-scroll-body/nested-scroll-body.tsx | 18 + .../components/nested-scroll-body/readme.md | 10 + .../nested-scroll-header.tsx | 18 + .../components/nested-scroll-header/readme.md | 10 + .../open-container/open-container.tsx | 18 + .../src/components/open-container/readme.md | 10 + .../src/components/span/readme.md | 8 + .../src/components/span/span.tsx | 16 + packages/taro-components/src/utils/index.ts | 2 +- .../taro-components/types/DraggableSheet.d.ts | 47 + .../taro-components/types/GridBuilder.d.ts | 72 + packages/taro-components/types/GridView.d.ts | 22 +- .../taro-components/types/ListBuilder.d.ts | 55 + packages/taro-components/types/ListView.d.ts | 9 +- .../types/NestedScrollBody.d.ts | 15 + .../types/NestedScrollHeader.d.ts | 15 + .../taro-components/types/OpenContainer.d.ts | 74 + .../taro-components/types/ScrollView.d.ts | 3 +- packages/taro-components/types/Snapshot.d.ts | 15 +- packages/taro-components/types/Span.d.ts | 14 + .../taro-components/types/StickyHeader.d.ts | 15 +- .../taro-components/types/StickySection.d.ts | 6 + packages/taro-components/types/Text.d.ts | 16 + packages/taro-components/types/index.d.ts | 7 + .../taro-components/types/index.vue3.d.ts | 4 + packages/taro-extend/package.json | 2 +- .../__tests__/base/pxTransform.test.ts | 1 - .../taro-h5/__tests__/ui/animation.test.ts | 12 +- .../taro-h5/__tests__/ui/navigation.test.ts | 2 +- packages/taro-h5/package.json | 2 +- packages/taro-h5/src/api/device/calendar.ts | 2 +- .../src/api/location/chooseLocation.ts | 2 +- .../src/api/location/locationChange.ts | 14 +- .../src/api/media/audio/InnerAudioContext.ts | 2 +- .../BackgroundAudioManager.ts | 2 +- .../src/api/media/video/chooseMedia.ts | 4 +- packages/taro-h5/src/api/network/upload.ts | 2 +- packages/taro-h5/src/api/taro.ts | 4 +- .../src/api/wxml/IntersectionObserver.ts | 2 - .../src/api/wxml/MediaQueryObserver.ts | 1 - packages/taro-h5/src/utils/index.ts | 2 +- packages/taro-helper/package.json | 2 +- packages/taro-helper/scripts/backup.js | 2 +- packages/taro-helper/src/dotenv.ts | 6 +- .../swc-backup/swc_plugin_compile_mode.wasm | Bin 1037305 -> 1037382 bytes .../swc-backup/swc_plugin_define_config.wasm | Bin 515673 -> 572927 bytes packages/taro-jd/package.json | 2 +- packages/taro-jd/src/apis.ts | 2 +- packages/taro-jd/src/components.ts | 1 + packages/taro-loader/package.json | 2 +- packages/taro-loader/src/native-component.ts | 2 +- packages/taro-mini-runner/package.json | 2 +- .../__snapshots__/babel.spec.ts.snap | 120 +- .../__snapshots__/common-style.spec.ts.snap | 120 +- .../compiler-macros.spec.ts.snap | 120 +- .../__snapshots__/config.spec.ts.snap | 368 +- .../__snapshots__/css-modules.spec.ts.snap | 240 +- .../__snapshots__/custom-tabbar.spec.ts.snap | 120 +- .../__tests__/__snapshots__/jd.spec.ts.snap | 3 +- .../__snapshots__/parse-html.spec.ts.snap | 120 +- .../__snapshots__/prerender.spec.ts.snap | 366 +- .../__tests__/__snapshots__/qq.spec.ts.snap | 300 +- .../__snapshots__/react.spec.ts.snap | 150 +- .../__tests__/__snapshots__/sass.spec.ts.snap | 480 ++- .../__snapshots__/skyline.spec.ts.snap | 2365 ++++++++++++ .../__snapshots__/subpackages.spec.ts.snap | 120 +- .../__snapshots__/tabbar.spec.ts.snap | 128 +- .../__tests__/__snapshots__/ts.spec.ts.snap | 120 +- .../__tests__/__snapshots__/vue.spec.ts.snap | 120 +- .../__tests__/__snapshots__/vue3.spec.ts.snap | 120 +- .../__snapshots__/wx-hybrid.spec.ts.snap | 120 +- .../fixtures/skyline/babel.config.js | 11 + .../fixtures/skyline/src/app.config.js | 17 + .../__tests__/fixtures/skyline/src/app.css | 0 .../src/__tests__/fixtures/skyline/src/app.js | 18 + .../__tests__/fixtures/skyline/src/index.html | 19 + .../skyline/src/pages/index/index.config.js | 7 + .../skyline/src/pages/index/index.css | 0 .../skyline/src/pages/index/index.jsx | 46 + .../src/__tests__/skyline.spec.ts | 15 + .../src/loaders/miniXScriptLoader.ts | 4 +- .../src/plugins/MiniPlugin.ts | 9 +- .../build/definition-json/parser.ts | 2 +- packages/taro-platform-h5/build/utils/ast.ts | 14 +- .../taro-platform-h5/build/utils/helper.ts | 4 +- packages/taro-platform-h5/package.json | 2 +- packages/taro-platform-h5/src/program.ts | 4 +- .../build/config/harmony-definition.json | 918 ++++- .../build/definition-json/parseApis.ts | 2 +- .../build/definition-json/parseCommponents.ts | 12 +- .../build/utils/getAnnotatedApis.ts | 2 +- .../build/utils/getDeclaredApis.ts | 2 +- .../build/utils/getH5ExportApis.ts | 2 +- .../build/utils/helper.ts | 2 +- .../taro-platform-harmony-hybrid/package.json | 16 +- .../rollup.config.ts | 1 - .../src/api/apis/NativeApi.ts | 664 +++- .../src/api/apis/ad/index.ts | 54 + .../src/api/apis/ai/facial.ts | 20 + .../src/api/apis/ai/index.ts | 23 + .../src/api/apis/ai/inference.ts | 13 + .../src/api/apis/ai/visual.ts | 57 + .../src/api/apis/alipay/index.ts | 13 + .../src/api/apis/base/crypto.ts | 12 + .../src/api/apis/base/debug/getLogManager.ts | 35 + .../apis/base/debug/getRealtimeLogManager.ts | 81 + .../src/api/apis/base/debug/index.ts | 15 + .../src/api/apis/base/debug/setEnableDebug.ts | 37 + .../apis/base/getAppAuthorizeSetting/index.ts | 8 + .../base/getAppAuthorizeSetting/native.ts | 35 + .../base/getAppAuthorizeSetting/oschannel.ts | 85 + .../api/apis/base/getSystemSetting/index.ts | 8 + .../api/apis/base/getSystemSetting/native.ts | 28 + .../apis/base/getSystemSetting/oschannel.ts | 51 + .../src/api/apis/base/index.ts | 10 +- .../src/api/apis/base/performance.ts | 156 + .../src/api/apis/base/system.ts | 144 +- .../api/apis/base/update/getUpdateManager.ts | 13 + .../src/api/apis/base/update/index.ts | 9 + .../src/api/apis/base/weapp/app-event.ts | 249 ++ .../src/api/apis/base/weapp/life-cycle.ts | 2 +- .../src/api/apis/canvas/CanvasContext.ts | 15 +- .../src/api/apis/canvas/canvasGetImageData.ts | 35 + .../src/api/apis/canvas/canvasPutImageData.ts | 30 + .../api/apis/canvas/canvasToTempFilePath.ts | 14 +- .../api/apis/canvas/createCanvasContext.ts | 2 +- .../src/api/apis/canvas/index.ts | 64 +- .../src/api/apis/cloud/index.ts | 81 + .../src/api/apis/comments.ts | 1478 ++------ .../api/apis/data-analysis/getExptInfoSync.ts | 9 + .../src/api/apis/data-analysis/index.ts | 15 + .../api/apis/data-analysis/reportAnalytics.ts | 7 + .../api/apis/device/accelerometer/index.ts | 4 + .../accelerometer/offAccelerometerChange.ts | 24 + .../accelerometer/onAccelerometerChange.ts | 28 + .../accelerometer/startAccelerometer.ts | 37 + .../device/accelerometer/stopAccelerometer.ts | 35 + .../src/api/apis/device/accessibility.ts | 6 + .../src/api/apis/device/battery.ts | 14 + .../bluetooth-ble/closeBLEConnection.ts | 60 + .../bluetooth-ble/createBLEConnection.ts | 61 + .../getBLEDeviceCharacteristics.ts | 70 + .../device/bluetooth-ble/getBLEDeviceRSSI.ts | 55 + .../bluetooth-ble/getBLEDeviceServices.ts | 56 + .../api/apis/device/bluetooth-ble/index.ts | 45 + .../notifyBLECharacteristicValueChange.ts | 97 + .../onBLECharacteristicValueChange.ts | 24 + .../onBLEConnectionStateChange.ts | 24 + .../readBLECharacteristicValue.ts | 89 + .../apis/device/bluetooth-ble/setBLEMTU.ts | 86 + .../writeBLECharacteristicValue.ts | 106 + .../api/apis/device/bluetooth-peripheral.ts | 26 + .../device/bluetooth/closeBluetoothAdapter.ts | 41 + .../bluetooth/getBluetoothAdapterState.ts | 43 + .../device/bluetooth/getBluetoothDevices.ts | 37 + .../bluetooth/getConnectedBluetoothDevices.ts | 42 + .../src/api/apis/device/bluetooth/index.ts | 24 + .../offBluetoothAdapterStateChange.ts | 23 + .../bluetooth/offBluetoothDeviceFound.ts | 29 + .../onBluetoothAdapterStateChange.ts | 24 + .../bluetooth/onBluetoothDeviceFound.ts | 30 + .../device/bluetooth/openBluetoothAdapter.ts | 41 + .../startBluetoothDevicesDiscovery.ts | 51 + .../stopBluetoothDevicesDiscovery.ts | 41 + .../src/api/apis/device/calendar.ts | 15 + .../src/api/apis/device/clipboard.ts | 21 + .../src/api/apis/device/compass/index.ts | 4 + .../apis/device/compass/offCompassChange.ts | 33 + .../apis/device/compass/onCompassChange.ts | 42 + .../api/apis/device/compass/startCompass.ts | 39 + .../api/apis/device/compass/stopCompass.ts | 40 + .../apis/device/contact/addPhoneContact.ts | 112 + .../src/api/apis/device/contact/index.ts | 7 + .../src/api/apis/device/crypto.ts | 6 + .../src/api/apis/device/gyroscope/index.ts | 9 + .../device/gyroscope/onGyroscopeChange.ts | 14 + .../apis/device/gyroscope/startGyroscope.ts | 39 + .../apis/device/gyroscope/stopGyroscope.ts | 37 + .../src/api/apis/device/iBeacon.ts | 53 + .../src/api/apis/device/index.ts | 23 +- .../device/keyBoard/hideKeyboard/index.ts | 9 + .../native.ts} | 6 +- .../device/keyBoard/hideKeyboard/oschannel.ts | 27 + .../src/api/apis/device/keyBoard/index.ts | 8 + .../keyBoard/offKeyboardHeightChange.ts | 22 + .../device/keyBoard/onKeyboardHeightChange.ts | 27 + .../src/api/apis/device/memory/index.ts | 4 + .../apis/device/memory/offMemoryWarning.ts | 17 + .../api/apis/device/memory/onMemoryWarning.ts | 20 + .../src/api/apis/device/motion.ts | 29 + .../src/api/apis/device/network.ts | 47 + .../src/api/apis/device/nfc.ts | 102 + .../src/api/apis/device/phone/index.ts | 9 +- .../apis/device/phone/{phone.ts => native.ts} | 0 .../src/api/apis/device/phone/oschannel.ts | 32 + .../src/api/apis/device/scan.ts | 37 + .../apis/device/screen/getScreenBrightness.ts | 35 + .../src/api/apis/device/screen/index.ts | 31 + .../device/screen/offUserCaptureScreen.ts | 33 + .../apis/device/screen/onUserCaptureScreen.ts | 2 +- .../apis/device/screen/setScreenBrightness.ts | 51 + .../src/api/apis/device/sms.ts | 7 + .../src/api/apis/device/vibrate.ts | 43 + .../src/api/apis/device/wifi/connectWifi.ts | 79 + .../api/apis/device/wifi/getConnectedWifi.ts | 33 + .../src/api/apis/device/wifi/getWifiList.ts | 32 + .../src/api/apis/device/wifi/index.ts | 24 + .../api/apis/device/wifi/offGetWifiList.ts | 22 + .../api/apis/device/wifi/offWifiConnected.ts | 39 + .../wifi/offWifiConnectedWithPartialInfo.ts | 28 + .../src/api/apis/device/wifi/onGetWifiList.ts | 23 + .../api/apis/device/wifi/onWifiConnected.ts | 40 + .../wifi/onWifiConnectedWithPartialInfo.ts | 29 + .../src/api/apis/device/wifi/startWifi.ts | 32 + .../src/api/apis/device/wifi/stopWifi.ts | 32 + .../src/api/apis/files/getFileInfo.ts | 64 + .../api/apis/files/getFileSystemManager.ts | 23 + .../src/api/apis/files/getSavedFileInfo.ts | 60 + .../src/api/apis/files/getSavedFileList.ts | 44 + .../src/api/apis/files/index.ts | 20 +- .../src/api/apis/files/openDocument.ts | 51 + .../src/api/apis/files/removeSavedFile.ts | 51 + .../src/api/apis/files/saveFile.ts | 60 + .../src/api/apis/index.ts | 61 +- .../api/apis/interface/NativeAContextApi.ts | 10 +- .../apis/interface/NativeFileSystemManager.ts | 12 +- .../src/api/apis/interface/NativeRequest.ts | 13 +- .../api/apis/interface/NativeUpdateManager.ts | 30 + .../api/apis/interface/NativeUploadFile.ts | 4 +- .../src/api/apis/location/chooseLocation.ts | 143 +- .../src/api/apis/location/getFuzzyLocation.ts | 64 +- .../src/api/apis/location/getLocation.ts | 65 +- .../src/api/apis/location/index.ts | 14 + .../api/apis/location/offLocationChange.ts | 39 + .../apis/location/offLocationChangeError.ts | 20 + .../src/api/apis/location/onLocationChange.ts | 40 + .../apis/location/onLocationChangeError.ts | 21 + .../src/api/apis/location/openLocation.ts | 89 +- .../api/apis/location/startLocationUpdate.ts | 31 + .../location/startLocationUpdateBackground.ts | 31 + .../api/apis/location/stopLocationUpdate.ts | 31 + .../src/api/apis/media/EditorContext.ts | 304 ++ .../src/api/apis/media/audio/AudioContext.ts | 2 +- .../api/apis/media/audio/InnerAudioContext.ts | 20 +- .../src/api/apis/media/audio/index.ts | 71 + .../api/apis/media/background-audio/index.ts | 71 + .../src/api/apis/media/camera.ts | 24 + .../src/api/apis/media/image/chooseImage.ts | 15 +- .../src/api/apis/media/image/compressImage.ts | 61 + .../src/api/apis/media/image/index.ts | 28 +- .../src/api/apis/media/image/previewImage.ts | 22 +- .../src/api/apis/media/image/previewMedia.ts | 115 + .../src/api/apis/media/index.ts | 22 + .../api/apis/media/live/LivePlayerContext.ts | 140 + .../src/api/apis/media/live/index.ts | 16 + .../src/api/apis/media/map/HosMapContext.ts | 126 + .../src/api/apis/media/map/MapContext.ts | 487 +++ .../src/api/apis/media/map/index.ts | 26 + .../src/api/apis/media/media-recorder.ts | 12 + .../src/api/apis/media/recorder.ts | 34 + .../src/api/apis/media/video-decoder.ts | 12 + .../src/api/apis/media/video-processing.ts | 18 + .../src/api/apis/media/video/chooseMedia.ts | 15 +- .../src/api/apis/media/video/chooseMedium.ts | 222 ++ .../src/api/apis/media/video/chooseVideo.ts | 92 + .../src/api/apis/media/video/compressVideo.ts | 108 + .../src/api/apis/media/video/index.ts | 18 + .../api/apis/media/video/openVideoEditor.ts | 60 + .../media/video/saveVideoToPhotosAlbum.ts | 47 + .../src/api/apis/media/voip.ts | 111 + .../src/api/apis/navigate/index.ts | 10 +- .../src/api/apis/network/download.ts | 49 +- .../src/api/apis/network/index.ts | 4 + .../src/api/apis/network/mdns.ts | 69 + .../src/api/apis/network/request/index.ts | 93 +- .../api/apis/network/request/nativeRequest.ts | 77 + .../src/api/apis/network/tcp.ts | 12 + .../src/api/apis/network/udp.ts | 12 + .../src/api/apis/network/upload.ts | 1 - .../src/api/apis/network/websocket/index.ts | 56 + .../src/api/apis/open-api/account.ts | 12 + .../src/api/apis/open-api/address.ts | 6 + .../src/api/apis/open-api/authorize.ts | 14 + .../src/api/apis/open-api/card.ts | 13 + .../src/api/apis/open-api/channels-live.ts | 56 + .../src/api/apis/open-api/customer-service.ts | 6 + .../src/api/apis/open-api/device-voip.ts | 13 + .../src/api/apis/open-api/facial.ts | 20 + .../src/api/apis/open-api/favorites.ts | 20 + .../src/api/apis/open-api/group.ts | 6 + .../src/api/apis/open-api/index.ts | 40 + .../src/api/apis/open-api/invoice.ts | 13 + .../src/api/apis/open-api/license-plate.ts | 6 + .../src/api/apis/open-api/login/index.ts | 13 + .../src/api/apis/open-api/red-package.ts | 6 + .../src/api/apis/open-api/settings/index.ts | 17 +- .../soter/checkIsSoterEnrolledInDevice.ts | 55 + .../checkIsSupportSoterAuthentication.ts | 39 + .../src/api/apis/open-api/soter/index.ts | 3 + .../soter/startSoterAuthentication.ts | 66 + .../api/apis/open-api/subscribe-message.ts | 30 + .../apis/open-api/user-info/getUserInfo.ts | 7 + .../src/api/apis/open-api/user-info/index.ts | 9 +- .../src/api/apis/open-api/werun.ts | 13 + .../src/api/apis/payment/index.ts | 15 + .../src/api/apis/payment/requestPayment.ts | 18 + .../src/api/apis/qq/index.ts | 6 + .../src/api/apis/request.ts | 223 ++ .../src/api/apis/route/index.ts | 28 - .../src/api/apis/share/index.ts | 72 + .../src/api/apis/storage/background-fetch.ts | 15 + .../apis/storage/getBackgroundFetchData.ts | 19 + .../src/api/apis/storage/index.ts | 266 ++ .../apis/storage/setBackgroundFetchToken.ts | 50 + .../src/api/apis/storage/util.ts | 21 + .../src/api/apis/swan/index.ts | 33 + .../src/api/apis/taro.ts | 287 +- .../src/api/apis/ui/animation/index.ts | 17 + .../src/api/apis/ui/background.ts | 13 + .../src/api/apis/ui/custom-component.ts | 4 +- .../src/api/apis/ui/fonts.ts | 8 + .../src/api/apis/ui/index.ts | 11 +- .../src/api/apis/ui/interaction/index.ts | 68 + .../src/api/apis/ui/menu.ts | 2 +- .../src/api/apis/ui/navigation-bar/index.ts | 101 +- .../src/api/apis/ui/pull-down-refresh.ts | 13 + .../src/api/apis/ui/scroll/index.ts | 14 + .../src/api/apis/ui/sticky.ts | 7 + .../src/api/apis/ui/tab-bar.ts | 65 + .../src/api/apis/ui/window.ts | 27 + .../src/api/apis/utils/colorConvert.ts | 34 + .../src/api/apis/utils/coordinateConvert.ts | 31 +- .../src/api/apis/utils/index.ts | 2 +- .../src/api/apis/worker/index.ts | 12 + .../src/api/apis/wxml/index.ts | 34 +- .../src/api/apis/wxml/nodesRef.ts | 7 + .../src/api/apis/wxml/selectorQuery.ts | 2 +- .../src/api/index.ts | 11 +- .../components/components-react/Map/Map.tsx | 107 + .../src/components/react/index.ts | 11 +- .../src/components/vue2/index.ts | 75 - .../src/components/vue3/index.ts | 10 +- .../src/program.ts | 58 +- .../src/runtime/apis/index.ts | 173 + .../tsconfig.json | 10 +- .../types/global.d.ts | 1 + packages/taro-plugin-html/package.json | 2 +- packages/taro-plugin-html/src/constant.ts | 2 +- packages/taro-plugin-http/package.json | 2 +- .../src/__tests__/cookie.spec.js | 1 - .../src/__tests__/dom.spec.js | 1 - .../taro-plugin-http/src/runtime/Cookie.ts | 2 +- .../src/runtime/XMLHttpRequest.ts | 14 +- packages/taro-plugin-inject/package.json | 2 +- packages/taro-plugin-inject/src/index.ts | 2 +- packages/taro-plugin-inject/src/runtime.ts | 2 +- packages/taro-plugin-mini-ci/package.json | 4 +- packages/taro-plugin-mini-ci/src/AlipayCI.ts | 18 +- packages/taro-plugin-mini-ci/src/BaseCi.ts | 5 +- .../taro-plugin-mini-ci/src/DingtalkCI.ts | 16 +- packages/taro-plugin-mini-ci/src/JdCI.ts | 4 +- packages/taro-plugin-mini-ci/src/SwanCI.ts | 14 +- packages/taro-plugin-mini-ci/src/TTCI.ts | 21 +- packages/taro-plugin-mini-ci/src/WeappCI.ts | 2 +- packages/taro-plugin-mini-ci/src/index.ts | 11 +- .../taro-plugin-react-devtools/package.json | 2 +- packages/taro-plugin-react/package.json | 2 +- packages/taro-plugin-react/src/index.ts | 6 - packages/taro-plugin-react/src/loader-meta.ts | 4 +- .../taro-plugin-react/src/runtime/connect.ts | 15 +- packages/taro-plugin-react/src/webpack.h5.ts | 12 - .../taro-plugin-vue-devtools/package.json | 2 +- packages/taro-plugin-vue2/package.json | 2 +- packages/taro-plugin-vue3/package.json | 2 +- packages/taro-plugin-vue3/src/webpack.mini.ts | 2 +- packages/taro-qq/package.json | 2 +- packages/taro-qq/src/components.ts | 2 +- packages/taro-react/package.json | 3 +- packages/taro-react/src/event.ts | 4 +- packages/taro-react/src/index.ts | 2 +- packages/taro-react/src/props.ts | 10 +- packages/taro-react/tsconfig.json | 6 +- packages/taro-rn-runner/package.json | 2 +- packages/taro-rn-runner/src/index.ts | 8 +- .../taro-rn-runner/templates/metro.config.js | 2 +- .../taro-rn-style-transformer/package.json | 2 +- .../src/transforms/index.ts | 1 + packages/taro-rn-supporter/package.json | 2 +- packages/taro-rn-supporter/src/Support.ts | 4 +- packages/taro-rn-supporter/src/babel.ts | 2 +- packages/taro-rn-supporter/src/index.ts | 2 +- .../taro-rn-supporter/src/rollupResolver.ts | 2 +- .../taro-rn-supporter/src/taroResolver.ts | 2 +- .../src/terminal-reporter.ts | 10 +- packages/taro-rn-supporter/src/utils.ts | 5 +- packages/taro-rn-transformer/package.json | 2 +- packages/taro-rn-transformer/src/app.ts | 2 +- packages/taro-rn/package.json | 2 +- packages/taro-router-rn/package.json | 2 +- packages/taro-router-rn/src/provider.ts | 2 +- packages/taro-router-rn/src/router.tsx | 22 +- packages/taro-router-rn/src/utils/index.ts | 12 +- packages/taro-router-rn/src/view/TabBar.tsx | 2 +- packages/taro-router/package.json | 2 +- packages/taro-router/src/api.ts | 23 +- packages/taro-router/src/navigationBar.ts | 6 +- packages/taro-router/src/router/index.ts | 5 +- .../taro-router/src/router/navigation-bar.ts | 22 +- packages/taro-router/src/router/page.ts | 34 +- packages/taro-router/src/router/spa.ts | 5 +- packages/taro-router/src/style.ts | 8 +- packages/taro-runner-utils/package.json | 2 +- packages/taro-runtime-rn/package.json | 2 +- packages/taro-runtime-rn/src/compute.ts | 4 +- packages/taro-runtime-rn/src/hooks.ts | 2 +- packages/taro-runtime-rn/src/router.ts | 16 +- packages/taro-runtime-rn/src/utils.ts | 4 +- packages/taro-runtime/package.json | 2 +- .../taro-runtime/src/__tests__/class.spec.js | 12 +- .../taro-runtime/src/__tests__/nerv.spec.js | 52 +- .../taro-runtime/src/bom/URLSearchParams.ts | 4 +- .../taro-runtime/src/dom/anchor-element.ts | 1 - packages/taro-runtime/src/dom/class-list.ts | 10 +- packages/taro-runtime/src/dom/form.ts | 3 +- packages/taro-runtime/src/dom/root.ts | 2 +- packages/taro-runtime/src/dsl/common.ts | 7 +- packages/taro-service/package.json | 2 +- packages/taro-service/src/Config.ts | 6 +- packages/taro-service/src/Kernel.ts | 12 +- .../src/platform-plugin-base/platform.ts | 2 +- packages/taro-service/src/utils/index.ts | 6 +- packages/taro-service/src/utils/types.ts | 6 + packages/taro-swan/package.json | 2 +- packages/taro-transformer-wx/.eslintrc.js | 1 - packages/taro-transformer-wx/package.json | 2 +- packages/taro-transformer-wx/src/render.ts | 3 +- packages/taro-transformer-wx/src/utils.ts | 10 +- packages/taro-tt/package.json | 5 +- packages/taro-tt/src/components.ts | 2 +- packages/taro-tt/src/index.ts | 25 + packages/taro-weapp/package.json | 2 +- packages/taro-weapp/src/apis.ts | 2 +- packages/taro-weapp/src/components-react.ts | 7 + packages/taro-weapp/src/components.ts | 64 +- packages/taro-weapp/src/template.ts | 2 +- packages/taro-webpack-runner/package.json | 2 +- .../__tests__/__snapshots__/vue.spec.ts.snap | 8 +- .../taro-webpack-runner/src/utils/chain.ts | 4 +- .../taro-webpack-runner/src/utils/index.ts | 2 +- packages/taro-webpack5-prebundle/package.json | 2 +- packages/taro-webpack5-prebundle/src/index.ts | 3 + packages/taro-webpack5-prebundle/src/mini.ts | 2 +- .../src/prebundle/index.ts | 13 +- .../taro-webpack5-prebundle/src/utils/path.ts | 2 +- packages/taro-webpack5-prebundle/src/web.ts | 6 +- packages/taro-webpack5-runner/package.json | 8 +- .../__snapshots__/babel.spec.ts.snap | 120 +- .../compiler-macros.spec.ts.snap | 120 +- .../__snapshots__/config.spec.ts.snap | 488 ++- .../__snapshots__/css-modules.spec.ts.snap | 240 +- .../__snapshots__/framework.spec.ts.snap | 608 +++- .../__snapshots__/mini-platform.spec.ts.snap | 3 +- .../__snapshots__/parse-html.spec.ts.snap | 120 +- .../__snapshots__/prerender.spec.ts.snap | 366 +- .../__tests__/__snapshots__/sass.spec.ts.snap | 600 ++- .../__snapshots__/skyline.spec.ts.snap | 2486 +++++++++++++ .../__snapshots__/subpackages.spec.ts.snap | 120 +- .../__snapshots__/tabbar.spec.ts.snap | 248 +- .../__tests__/__snapshots__/ts.spec.ts.snap | 120 +- .../__snapshots__/wx-hybrid.spec.ts.snap | 120 +- .../fixtures/skyline/babel.config.js | 11 + .../fixtures/skyline/src/app.config.js | 17 + .../__tests__/fixtures/skyline/src/app.css | 0 .../src/__tests__/fixtures/skyline/src/app.js | 18 + .../__tests__/fixtures/skyline/src/index.html | 19 + .../skyline/src/pages/index/index.config.js | 7 + .../skyline/src/pages/index/index.css | 0 .../skyline/src/pages/index/index.jsx | 46 + .../src/__tests__/mini-split-chunks.spec.ts | 2 +- .../src/__tests__/skyline.spec.ts | 17 + packages/taro-webpack5-runner/src/index.h5.ts | 1 + .../taro-webpack5-runner/src/index.mini.ts | 1 + .../src/loaders/miniCompilerLoader.ts | 6 +- .../src/loaders/miniXScriptLoader.ts | 2 +- .../src/plugins/BuildNativePlugin.ts | 4 +- .../src/plugins/MiniCompileModePlugin.ts | 3 +- .../src/plugins/MiniPlugin.ts | 60 +- .../src/plugins/TaroNormalModule.ts | 2 +- .../taro-webpack5-runner/src/utils/index.ts | 2 +- .../src/webpack/Combination.ts | 4 +- .../src/webpack/H5Combination.ts | 1 - .../src/webpack/MiniWebpackModule.ts | 2 +- .../taro-with-weapp/__tests__/lifecycle.jsx | 1 - packages/taro-with-weapp/__tests__/props.jsx | 2 +- packages/taro-with-weapp/jest.config.js | 4 +- packages/taro-with-weapp/package.json | 2 +- packages/taro-with-weapp/src/index.ts | 21 +- packages/taro/package.json | 2 +- packages/taro/types/api/media/image.d.ts | 8 +- packages/taro/types/api/network/request.d.ts | 2 +- .../taro/types/compile/config/project.d.ts | 3 + packages/taro/types/taro.config.d.ts | 4 +- packages/taroize/__tests__/event.test.ts | 4 +- packages/taroize/__tests__/index.test.ts | 11 +- packages/taroize/__tests__/script.test.ts | 4 +- packages/taroize/__tests__/utils.test.ts | 26 +- packages/taroize/package.json | 2 +- packages/taroize/src/cache.ts | 3 +- pnpm-lock.yaml | 3205 ++++++----------- pnpm-workspace.yaml | 1 + 1142 files changed, 47274 insertions(+), 7149 deletions(-) create mode 100644 examples/mini-program-example/.editorconfig create mode 100644 examples/mini-program-example/.eslintrc create mode 100644 examples/mini-program-example/.gitignore create mode 100644 examples/mini-program-example/.prettierrc create mode 100644 examples/mini-program-example/babel.config.js create mode 100644 examples/mini-program-example/config/dev.js create mode 100644 examples/mini-program-example/config/index.js create mode 100644 examples/mini-program-example/config/prod.js create mode 100644 examples/mini-program-example/package.json create mode 100644 examples/mini-program-example/project.config.json create mode 100644 examples/mini-program-example/project.private.config.json create mode 100644 examples/mini-program-example/project.tt.json create mode 100644 examples/mini-program-example/src/app.config.ts create mode 100644 examples/mini-program-example/src/app.scss create mode 100644 examples/mini-program-example/src/app.ts create mode 100644 examples/mini-program-example/src/assets/api/AI.png create mode 100644 examples/mini-program-example/src/assets/api/advertising.png create mode 100644 examples/mini-program-example/src/assets/api/alipay.png create mode 100644 examples/mini-program-example/src/assets/api/analysis.png create mode 100644 examples/mini-program-example/src/assets/api/cache.png create mode 100644 examples/mini-program-example/src/assets/api/canvas.png create mode 100644 examples/mini-program-example/src/assets/api/cloud.png create mode 100644 examples/mini-program-example/src/assets/api/devices.png create mode 100644 examples/mini-program-example/src/assets/api/file.png create mode 100644 examples/mini-program-example/src/assets/api/forward.png create mode 100644 examples/mini-program-example/src/assets/api/frame.png create mode 100644 examples/mini-program-example/src/assets/api/interface.png create mode 100644 examples/mini-program-example/src/assets/api/iphone.png create mode 100644 examples/mini-program-example/src/assets/api/local.png create mode 100644 examples/mini-program-example/src/assets/api/logo.png create mode 100644 examples/mini-program-example/src/assets/api/media.png create mode 100644 examples/mini-program-example/src/assets/api/network.png create mode 100644 examples/mini-program-example/src/assets/api/openapi.png create mode 100644 examples/mini-program-example/src/assets/api/payment.png create mode 100644 examples/mini-program-example/src/assets/api/qq.png create mode 100644 examples/mini-program-example/src/assets/api/redirection.png create mode 100644 examples/mini-program-example/src/assets/api/routing.png create mode 100644 examples/mini-program-example/src/assets/api/swan.png create mode 100644 examples/mini-program-example/src/assets/api/taro.png create mode 100644 examples/mini-program-example/src/assets/api/thirdparty.png create mode 100644 examples/mini-program-example/src/assets/api/worker.png create mode 100644 examples/mini-program-example/src/assets/api/wxml.png create mode 100644 examples/mini-program-example/src/assets/component/canvas.png create mode 100644 examples/mini-program-example/src/assets/component/content.png create mode 100644 examples/mini-program-example/src/assets/component/form.png create mode 100644 examples/mini-program-example/src/assets/component/logo.png create mode 100644 examples/mini-program-example/src/assets/component/map.png create mode 100644 examples/mini-program-example/src/assets/component/media.png create mode 100644 examples/mini-program-example/src/assets/component/nav.png create mode 100644 examples/mini-program-example/src/assets/component/nav_red.png create mode 100644 examples/mini-program-example/src/assets/component/view.png create mode 100644 examples/mini-program-example/src/assets/component/view_red.png create mode 100644 examples/mini-program-example/src/assets/tab/api.png create mode 100644 examples/mini-program-example/src/assets/tab/api_select.png create mode 100644 examples/mini-program-example/src/assets/tab/component.png create mode 100644 examples/mini-program-example/src/assets/tab/component_select.png create mode 100644 examples/mini-program-example/src/assets/tab/home.png create mode 100644 examples/mini-program-example/src/assets/tab/home_select.png create mode 100644 examples/mini-program-example/src/components/buttonList/index.scss create mode 100644 examples/mini-program-example/src/components/buttonList/index.tsx create mode 100644 examples/mini-program-example/src/components/callbackContents/index.scss create mode 100644 examples/mini-program-example/src/components/callbackContents/index.tsx create mode 100644 examples/mini-program-example/src/components/component_state/component_state.js create mode 100644 examples/mini-program-example/src/components/component_state/component_state.scss create mode 100644 examples/mini-program-example/src/components/head/head.js create mode 100644 examples/mini-program-example/src/index.html create mode 100644 examples/mini-program-example/src/pages/api/advertising/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/advertising/index.scss create mode 100644 examples/mini-program-example/src/pages/api/advertising/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/ai/faceRecognition/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/ai/faceRecognition/index.scss create mode 100644 examples/mini-program-example/src/pages/api/ai/faceRecognition/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/ai/inference/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/ai/inference/index.scss create mode 100644 examples/mini-program-example/src/pages/api/ai/inference/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/ai/visionAlgorithms/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/ai/visionAlgorithms/index.scss create mode 100644 examples/mini-program-example/src/pages/api/ai/visionAlgorithms/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/alipay/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/alipay/index.scss create mode 100644 examples/mini-program-example/src/pages/api/alipay/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/analysis/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/analysis/index.scss create mode 100644 examples/mini-program-example/src/pages/api/analysis/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/basics/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/basics/basics/index.scss create mode 100644 examples/mini-program-example/src/pages/api/basics/basics/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/encryption/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/basics/encryption/index.scss create mode 100644 examples/mini-program-example/src/pages/api/basics/encryption/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/miniProgram/applicationLevelEvents/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/miniProgram/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/basics/miniProgram/index.scss create mode 100644 examples/mini-program-example/src/pages/api/basics/miniProgram/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/miniProgram/lifeCycle/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/nativeDebug/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/basics/nativeDebug/index.scss create mode 100644 examples/mini-program-example/src/pages/api/basics/nativeDebug/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/performance/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/basics/performance/index.scss create mode 100644 examples/mini-program-example/src/pages/api/basics/performance/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/system/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/basics/system/index.scss create mode 100644 examples/mini-program-example/src/pages/api/basics/system/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/basics/update/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/basics/update/index.scss create mode 100644 examples/mini-program-example/src/pages/api/basics/update/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/cache/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/cache/index.scss create mode 100644 examples/mini-program-example/src/pages/api/cache/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/canvas/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/canvas/index.scss create mode 100644 examples/mini-program-example/src/pages/api/canvas/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/cloudServices/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/cloudServices/index.scss create mode 100644 examples/mini-program-example/src/pages/api/cloudServices/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/accelerometer/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/accelerometer/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/accelerometer/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/accessibility/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/accessibility/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/accessibility/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/bettery/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/bettery/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/bettery/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothBeacon/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothBeacon/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothBeacon/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothGeneral/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothGeneral/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothGeneral/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothLowCenter/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothLowCenter/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothLowCenter/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothLowPerpherals/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothLowPerpherals/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/bluetoothLowPerpherals/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/calendar/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/calendar/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/calendar/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/clipBoard/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/clipBoard/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/clipBoard/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/compass/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/compass/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/compass/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/contact/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/contact/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/contact/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/deviceOrientation/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/deviceOrientation/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/deviceOrientation/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/gyroscope/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/gyroscope/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/gyroscope/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/keyboard/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/keyboard/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/keyboard/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/memory/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/memory/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/memory/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/network/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/network/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/network/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/nfc/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/nfc/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/nfc/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/phoneCall/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/phoneCall/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/phoneCall/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/scan/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/scan/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/scan/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/screen/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/screen/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/screen/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/sms/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/sms/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/sms/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/vibration/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/vibration/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/vibration/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/device/wifi/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/device/wifi/index.scss create mode 100644 examples/mini-program-example/src/pages/api/device/wifi/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/file/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/file/index.scss create mode 100644 examples/mini-program-example/src/pages/api/file/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/forward/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/forward/index.scss create mode 100644 examples/mini-program-example/src/pages/api/forward/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/framework/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/framework/index.scss create mode 100644 examples/mini-program-example/src/pages/api/framework/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/index/index.config.js create mode 100644 examples/mini-program-example/src/pages/api/index/index.scss create mode 100644 examples/mini-program-example/src/pages/api/index/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/index/module.js create mode 100644 examples/mini-program-example/src/pages/api/interface/animation/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/animation/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/animation/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/background/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/background/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/background/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/customizedComponents/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/customizedComponents/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/customizedComponents/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/font/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/font/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/font/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/interaction/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/interaction/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/interaction/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/menu/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/menu/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/menu/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/navigationBar/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/navigationBar/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/navigationBar/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/pullDownRefresh/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/pullDownRefresh/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/pullDownRefresh/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/scroll/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/scroll/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/scroll/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/setTop/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/setTop/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/setTop/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/tabBar/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/tabBar/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/tabBar/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/interface/windows/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/interface/windows/index.scss create mode 100644 examples/mini-program-example/src/pages/api/interface/windows/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/location/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/location/index.scss create mode 100644 examples/mini-program-example/src/pages/api/location/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/audio/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/audio/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/audio/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/audioOrVideoCompose/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/audioOrVideoCompose/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/audioOrVideoCompose/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/backgroundAudio/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/backgroundAudio/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/backgroundAudio/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/camera/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/camera/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/camera/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/image/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/image/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/image/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/map/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/map/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/map/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/realtimeAudioAndVideo/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/realtimeAudioAndVideo/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/realtimeAudioAndVideo/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/realtimeVoice/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/realtimeVoice/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/realtimeVoice/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/recording/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/recording/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/recording/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/richText/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/richText/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/richText/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/screenRecorder/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/screenRecorder/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/screenRecorder/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/video/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/video/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/video/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/media/videoDecoder/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/media/videoDecoder/index.scss create mode 100644 examples/mini-program-example/src/pages/api/media/videoDecoder/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/navigationBarApis/navigationBarApis.scss create mode 100644 examples/mini-program-example/src/pages/api/navigationBarApis/navigationBarApis.tsx create mode 100644 examples/mini-program-example/src/pages/api/network/TCPCommunications/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/network/TCPCommunications/index.scss create mode 100644 examples/mini-program-example/src/pages/api/network/TCPCommunications/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/network/UDPCommunications/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/network/UDPCommunications/index.scss create mode 100644 examples/mini-program-example/src/pages/api/network/UDPCommunications/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/network/download/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/network/download/index.scss create mode 100644 examples/mini-program-example/src/pages/api/network/download/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/network/mDNS/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/network/mDNS/index.scss create mode 100644 examples/mini-program-example/src/pages/api/network/mDNS/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/network/request/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/network/request/index.scss create mode 100644 examples/mini-program-example/src/pages/api/network/request/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/network/upload/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/network/upload/index.scss create mode 100644 examples/mini-program-example/src/pages/api/network/upload/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/network/webSocket/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/network/webSocket/index.scss create mode 100644 examples/mini-program-example/src/pages/api/network/webSocket/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/accountInfomation/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/accountInfomation/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/accountInfomation/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/authorization/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/authorization/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/authorization/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/biometricAuthorization/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/biometricAuthorization/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/biometricAuthorization/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/cardsAndOffers/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/cardsAndOffers/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/cardsAndOffers/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/collection/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/collection/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/collection/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/deviceVoip/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/deviceVoip/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/deviceVoip/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/invoice/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/invoice/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/invoice/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/licensePlate/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/licensePlate/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/licensePlate/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/login/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/login/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/login/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/mineMiniProgram/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/mineMiniProgram/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/mineMiniProgram/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/recipientAddress/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/recipientAddress/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/recipientAddress/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/setting/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/setting/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/setting/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/subscribeNews/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/subscribeNews/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/subscribeNews/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/userInfomation/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/userInfomation/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/userInfomation/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/weRun/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/weRun/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/weRun/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatCustomerService/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatCustomerService/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatCustomerService/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatGroup/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatGroup/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatGroup/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatRedRacket/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatRedRacket/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatRedRacket/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatVideoChannel/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatVideoChannel/index.scss create mode 100644 examples/mini-program-example/src/pages/api/openAPIS/wechatVideoChannel/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/payment/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/payment/index.scss create mode 100644 examples/mini-program-example/src/pages/api/payment/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/qq/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/qq/index.scss create mode 100644 examples/mini-program-example/src/pages/api/qq/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/redirection/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/redirection/index.scss create mode 100644 examples/mini-program-example/src/pages/api/redirection/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/routing/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/routing/index.scss create mode 100644 examples/mini-program-example/src/pages/api/routing/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/routing/routeA/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/routing/routeA/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/swan/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/swan/index.scss create mode 100644 examples/mini-program-example/src/pages/api/swan/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/tabBarApis/tabBarApis.scss create mode 100644 examples/mini-program-example/src/pages/api/tabBarApis/tabBarApis.tsx create mode 100644 examples/mini-program-example/src/pages/api/taro/expand/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/taro/expand/index.scss create mode 100644 examples/mini-program-example/src/pages/api/taro/expand/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/taro/hooks/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/taro/hooks/index.scss create mode 100644 examples/mini-program-example/src/pages/api/taro/hooks/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/thirdParty/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/thirdParty/index.scss create mode 100644 examples/mini-program-example/src/pages/api/thirdParty/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/worker/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/worker/index.scss create mode 100644 examples/mini-program-example/src/pages/api/worker/index.tsx create mode 100644 examples/mini-program-example/src/pages/api/wxml/index.config.ts create mode 100644 examples/mini-program-example/src/pages/api/wxml/index.scss create mode 100644 examples/mini-program-example/src/pages/api/wxml/index.tsx create mode 100644 examples/mini-program-example/src/pages/component/audio/audio.config.js create mode 100644 examples/mini-program-example/src/pages/component/audio/audio.js create mode 100644 examples/mini-program-example/src/pages/component/audio/audio.scss create mode 100644 examples/mini-program-example/src/pages/component/button/button.config.js create mode 100644 examples/mini-program-example/src/pages/component/button/button.js create mode 100644 examples/mini-program-example/src/pages/component/button/button.scss create mode 100644 examples/mini-program-example/src/pages/component/camera/camera.config.js create mode 100644 examples/mini-program-example/src/pages/component/camera/camera.js create mode 100644 examples/mini-program-example/src/pages/component/camera/camera.scss create mode 100644 examples/mini-program-example/src/pages/component/canvas/canvas.config.js create mode 100644 examples/mini-program-example/src/pages/component/canvas/canvas.js create mode 100644 examples/mini-program-example/src/pages/component/canvas/canvas.scss create mode 100644 examples/mini-program-example/src/pages/component/checkbox-group/checkbox-group.config.ts create mode 100644 examples/mini-program-example/src/pages/component/checkbox-group/checkbox-group.scss create mode 100644 examples/mini-program-example/src/pages/component/checkbox-group/checkbox-group.tsx create mode 100644 examples/mini-program-example/src/pages/component/checkbox/checkbox.config.js create mode 100644 examples/mini-program-example/src/pages/component/checkbox/checkbox.js create mode 100644 examples/mini-program-example/src/pages/component/checkbox/checkbox.scss create mode 100644 examples/mini-program-example/src/pages/component/cover-image/cover-image.config.js create mode 100644 examples/mini-program-example/src/pages/component/cover-image/cover-image.js create mode 100644 examples/mini-program-example/src/pages/component/cover-image/cover-image.scss create mode 100644 examples/mini-program-example/src/pages/component/cover-image/nerv_logo.png create mode 100644 examples/mini-program-example/src/pages/component/cover-view/cover-view.config.js create mode 100644 examples/mini-program-example/src/pages/component/cover-view/cover-view.js create mode 100644 examples/mini-program-example/src/pages/component/cover-view/cover-view.scss create mode 100644 examples/mini-program-example/src/pages/component/cover-view/nerv_logo.png create mode 100644 examples/mini-program-example/src/pages/component/editor/editor.config.ts create mode 100644 examples/mini-program-example/src/pages/component/editor/editor.scss create mode 100644 examples/mini-program-example/src/pages/component/editor/editor.tsx create mode 100644 examples/mini-program-example/src/pages/component/form/form.config.js create mode 100644 examples/mini-program-example/src/pages/component/form/form.js create mode 100644 examples/mini-program-example/src/pages/component/form/form.scss create mode 100644 examples/mini-program-example/src/pages/component/grid-view/demo1.tsx create mode 100644 examples/mini-program-example/src/pages/component/grid-view/demo2.tsx create mode 100644 examples/mini-program-example/src/pages/component/grid-view/grid-tile.scss create mode 100644 examples/mini-program-example/src/pages/component/grid-view/grid-tile.tsx create mode 100644 examples/mini-program-example/src/pages/component/grid-view/grid-view.config.ts create mode 100644 examples/mini-program-example/src/pages/component/grid-view/grid-view.scss create mode 100644 examples/mini-program-example/src/pages/component/grid-view/grid-view.tsx create mode 100644 examples/mini-program-example/src/pages/component/grid-view/utils.js create mode 100644 examples/mini-program-example/src/pages/component/icon/icon.config.js create mode 100644 examples/mini-program-example/src/pages/component/icon/icon.js create mode 100644 examples/mini-program-example/src/pages/component/icon/icon.scss create mode 100644 examples/mini-program-example/src/pages/component/image/image.config.js create mode 100644 examples/mini-program-example/src/pages/component/image/image.js create mode 100644 examples/mini-program-example/src/pages/component/image/image.scss create mode 100644 examples/mini-program-example/src/pages/component/image/nerv_logo.png create mode 100644 examples/mini-program-example/src/pages/component/index/index.config.js create mode 100644 examples/mini-program-example/src/pages/component/index/index.scss create mode 100644 examples/mini-program-example/src/pages/component/index/index.tsx create mode 100644 examples/mini-program-example/src/pages/component/input/input.config.js create mode 100644 examples/mini-program-example/src/pages/component/input/input.js create mode 100644 examples/mini-program-example/src/pages/component/input/input.scss create mode 100644 examples/mini-program-example/src/pages/component/label/label.config.js create mode 100644 examples/mini-program-example/src/pages/component/label/label.js create mode 100644 examples/mini-program-example/src/pages/component/label/label.scss create mode 100644 examples/mini-program-example/src/pages/component/list-view/list-view.config.ts create mode 100644 examples/mini-program-example/src/pages/component/list-view/list-view.scss create mode 100644 examples/mini-program-example/src/pages/component/list-view/list-view.tsx create mode 100644 examples/mini-program-example/src/pages/component/live-player/live-player.config.js create mode 100644 examples/mini-program-example/src/pages/component/live-player/live-player.js create mode 100644 examples/mini-program-example/src/pages/component/live-player/live-player.scss create mode 100644 examples/mini-program-example/src/pages/component/map/map.config.js create mode 100644 examples/mini-program-example/src/pages/component/map/map.js create mode 100644 examples/mini-program-example/src/pages/component/map/map.scss create mode 100644 examples/mini-program-example/src/pages/component/match-media/match-media.config.ts create mode 100644 examples/mini-program-example/src/pages/component/match-media/match-media.scss create mode 100644 examples/mini-program-example/src/pages/component/match-media/match-media.tsx create mode 100644 examples/mini-program-example/src/pages/component/movable-view/movable-view.config.js create mode 100644 examples/mini-program-example/src/pages/component/movable-view/movable-view.js create mode 100644 examples/mini-program-example/src/pages/component/movable-view/movable-view.scss create mode 100644 examples/mini-program-example/src/pages/component/navigator/navigator.config.js create mode 100644 examples/mini-program-example/src/pages/component/navigator/navigator.js create mode 100644 examples/mini-program-example/src/pages/component/navigator/navigator.scss create mode 100644 examples/mini-program-example/src/pages/component/page-container/page-container.config.ts create mode 100644 examples/mini-program-example/src/pages/component/page-container/page-container.scss create mode 100644 examples/mini-program-example/src/pages/component/page-container/page-container.tsx create mode 100644 examples/mini-program-example/src/pages/component/picker-view/picker-view.config.js create mode 100644 examples/mini-program-example/src/pages/component/picker-view/picker-view.js create mode 100644 examples/mini-program-example/src/pages/component/picker/picker.config.js create mode 100644 examples/mini-program-example/src/pages/component/picker/picker.js create mode 100644 examples/mini-program-example/src/pages/component/picker/picker.scss create mode 100644 examples/mini-program-example/src/pages/component/progress/progress.config.js create mode 100644 examples/mini-program-example/src/pages/component/progress/progress.js create mode 100644 examples/mini-program-example/src/pages/component/progress/progress.scss create mode 100644 examples/mini-program-example/src/pages/component/radio-group/radio-group.config.ts create mode 100644 examples/mini-program-example/src/pages/component/radio-group/radio-group.scss create mode 100644 examples/mini-program-example/src/pages/component/radio-group/radio-group.tsx create mode 100644 examples/mini-program-example/src/pages/component/radio/radio.config.js create mode 100644 examples/mini-program-example/src/pages/component/radio/radio.js create mode 100644 examples/mini-program-example/src/pages/component/radio/radio.scss create mode 100644 examples/mini-program-example/src/pages/component/root-portal/root-portal.config.ts create mode 100644 examples/mini-program-example/src/pages/component/root-portal/root-portal.scss create mode 100644 examples/mini-program-example/src/pages/component/root-portal/root-portal.tsx create mode 100644 examples/mini-program-example/src/pages/component/scroll-view/scroll-view.config.js create mode 100644 examples/mini-program-example/src/pages/component/scroll-view/scroll-view.js create mode 100644 examples/mini-program-example/src/pages/component/scroll-view/scroll-view.scss create mode 100644 examples/mini-program-example/src/pages/component/share-element/share-element.config.ts create mode 100644 examples/mini-program-example/src/pages/component/share-element/share-element.scss create mode 100644 examples/mini-program-example/src/pages/component/share-element/share-element.tsx create mode 100644 examples/mini-program-example/src/pages/component/slider/slider.config.js create mode 100644 examples/mini-program-example/src/pages/component/slider/slider.js create mode 100644 examples/mini-program-example/src/pages/component/sticky-header/sticky-header.config.ts create mode 100644 examples/mini-program-example/src/pages/component/sticky-header/sticky-header.scss create mode 100644 examples/mini-program-example/src/pages/component/sticky-header/sticky-header.tsx create mode 100644 examples/mini-program-example/src/pages/component/swiper/swiper.config.js create mode 100644 examples/mini-program-example/src/pages/component/swiper/swiper.js create mode 100644 examples/mini-program-example/src/pages/component/swiper/swiper.scss create mode 100644 examples/mini-program-example/src/pages/component/switch/switch.config.js create mode 100644 examples/mini-program-example/src/pages/component/switch/switch.js create mode 100644 examples/mini-program-example/src/pages/component/switch/switch.scss create mode 100644 examples/mini-program-example/src/pages/component/text/text.config.js create mode 100644 examples/mini-program-example/src/pages/component/text/text.js create mode 100644 examples/mini-program-example/src/pages/component/text/text.scss create mode 100644 examples/mini-program-example/src/pages/component/textarea/textarea.config.js create mode 100644 examples/mini-program-example/src/pages/component/textarea/textarea.js create mode 100644 examples/mini-program-example/src/pages/component/textarea/textarea.scss create mode 100644 examples/mini-program-example/src/pages/component/video/video.config.js create mode 100644 examples/mini-program-example/src/pages/component/video/video.js create mode 100644 examples/mini-program-example/src/pages/component/video/video.scss create mode 100644 examples/mini-program-example/src/pages/component/view/view.config.js create mode 100644 examples/mini-program-example/src/pages/component/view/view.js create mode 100644 examples/mini-program-example/src/pages/component/view/view.scss create mode 100644 examples/mini-program-example/src/pages/error/index.config.ts create mode 100644 examples/mini-program-example/src/pages/error/index.scss create mode 100644 examples/mini-program-example/src/pages/error/index.tsx create mode 100644 examples/mini-program-example/src/pages/index/index.config.ts create mode 100644 examples/mini-program-example/src/pages/index/index.scss create mode 100644 examples/mini-program-example/src/pages/index/index.tsx create mode 100644 examples/mini-program-example/src/pages/performance/index/index.config.ts create mode 100644 examples/mini-program-example/src/pages/performance/index/index.scss create mode 100644 examples/mini-program-example/src/pages/performance/index/index.tsx create mode 100644 examples/mini-program-example/src/styles/mixins.scss create mode 100644 examples/mini-program-example/src/styles/tabPage.scss create mode 100644 examples/mini-program-example/src/styles/variables.scss create mode 100644 examples/mini-program-example/src/util/nativeApi.ts create mode 100644 examples/mini-program-example/src/util/util.ts create mode 100644 examples/mini-program-example/tsconfig.json create mode 100644 examples/mini-program-example/types/global.d.ts create mode 100644 packages/rollup-plugin-copy/.gitignore create mode 100644 packages/taro-components/__tests__/draggable-sheet.spec.tsx create mode 100644 packages/taro-components/__tests__/grid-builder.spec.tsx create mode 100644 packages/taro-components/__tests__/list-builder.spec.tsx create mode 100644 packages/taro-components/__tests__/nested-scroll-body.spec.tsx create mode 100644 packages/taro-components/__tests__/nested-scroll-header.spec.tsx create mode 100644 packages/taro-components/__tests__/open-container.spec.tsx create mode 100644 packages/taro-components/__tests__/span.spec.tsx create mode 100644 packages/taro-components/src/components/draggable-sheet/draggable-sheet.tsx create mode 100644 packages/taro-components/src/components/draggable-sheet/readme.md create mode 100644 packages/taro-components/src/components/grid-builder/grid-builder.tsx create mode 100644 packages/taro-components/src/components/grid-builder/readme.md create mode 100644 packages/taro-components/src/components/list-builder/list-builder.tsx create mode 100644 packages/taro-components/src/components/list-builder/readme.md create mode 100644 packages/taro-components/src/components/nested-scroll-body/nested-scroll-body.tsx create mode 100644 packages/taro-components/src/components/nested-scroll-body/readme.md create mode 100644 packages/taro-components/src/components/nested-scroll-header/nested-scroll-header.tsx create mode 100644 packages/taro-components/src/components/nested-scroll-header/readme.md create mode 100644 packages/taro-components/src/components/open-container/open-container.tsx create mode 100644 packages/taro-components/src/components/open-container/readme.md create mode 100644 packages/taro-components/src/components/span/readme.md create mode 100644 packages/taro-components/src/components/span/span.tsx create mode 100644 packages/taro-components/types/DraggableSheet.d.ts create mode 100644 packages/taro-components/types/GridBuilder.d.ts create mode 100644 packages/taro-components/types/ListBuilder.d.ts create mode 100644 packages/taro-components/types/NestedScrollBody.d.ts create mode 100644 packages/taro-components/types/NestedScrollHeader.d.ts create mode 100644 packages/taro-components/types/OpenContainer.d.ts create mode 100644 packages/taro-components/types/Span.d.ts create mode 100644 packages/taro-mini-runner/src/__tests__/__snapshots__/skyline.spec.ts.snap create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/babel.config.js create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/src/app.config.js create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/src/app.css create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/src/app.js create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/src/index.html create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/src/pages/index/index.config.js create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/src/pages/index/index.css create mode 100644 packages/taro-mini-runner/src/__tests__/fixtures/skyline/src/pages/index/index.jsx create mode 100644 packages/taro-mini-runner/src/__tests__/skyline.spec.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ad/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ai/facial.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ai/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ai/inference.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ai/visual.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/alipay/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/crypto.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/debug/getLogManager.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/debug/getRealtimeLogManager.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/debug/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/debug/setEnableDebug.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/getAppAuthorizeSetting/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/getAppAuthorizeSetting/native.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/getAppAuthorizeSetting/oschannel.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/getSystemSetting/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/getSystemSetting/native.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/getSystemSetting/oschannel.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/performance.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/update/getUpdateManager.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/update/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/base/weapp/app-event.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/canvas/canvasGetImageData.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/canvas/canvasPutImageData.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/cloud/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/data-analysis/getExptInfoSync.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/data-analysis/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/data-analysis/reportAnalytics.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/accelerometer/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/accelerometer/offAccelerometerChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/accelerometer/onAccelerometerChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/accelerometer/startAccelerometer.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/accelerometer/stopAccelerometer.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/accessibility.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/battery.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/closeBLEConnection.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/createBLEConnection.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/getBLEDeviceCharacteristics.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/getBLEDeviceRSSI.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/getBLEDeviceServices.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/notifyBLECharacteristicValueChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/onBLECharacteristicValueChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/onBLEConnectionStateChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/readBLECharacteristicValue.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/setBLEMTU.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-ble/writeBLECharacteristicValue.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth-peripheral.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/closeBluetoothAdapter.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/getBluetoothAdapterState.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/getBluetoothDevices.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/getConnectedBluetoothDevices.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/offBluetoothAdapterStateChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/offBluetoothDeviceFound.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/onBluetoothAdapterStateChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/onBluetoothDeviceFound.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/openBluetoothAdapter.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/startBluetoothDevicesDiscovery.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/bluetooth/stopBluetoothDevicesDiscovery.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/calendar.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/clipboard.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/compass/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/compass/offCompassChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/compass/onCompassChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/compass/startCompass.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/compass/stopCompass.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/contact/addPhoneContact.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/contact/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/crypto.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/gyroscope/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/gyroscope/onGyroscopeChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/gyroscope/startGyroscope.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/gyroscope/stopGyroscope.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/iBeacon.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/keyBoard/hideKeyboard/index.ts rename packages/taro-platform-harmony-hybrid/src/api/apis/device/keyBoard/{hideKeyboard.ts => hideKeyboard/native.ts} (87%) create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/keyBoard/hideKeyboard/oschannel.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/keyBoard/offKeyboardHeightChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/keyBoard/onKeyboardHeightChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/memory/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/memory/offMemoryWarning.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/memory/onMemoryWarning.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/motion.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/network.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/nfc.ts rename packages/taro-platform-harmony-hybrid/src/api/apis/device/phone/{phone.ts => native.ts} (100%) create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/phone/oschannel.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/scan.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/screen/getScreenBrightness.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/screen/offUserCaptureScreen.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/screen/setScreenBrightness.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/sms.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/vibrate.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/connectWifi.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/getConnectedWifi.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/getWifiList.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/offGetWifiList.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/offWifiConnected.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/offWifiConnectedWithPartialInfo.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/onGetWifiList.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/onWifiConnected.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/onWifiConnectedWithPartialInfo.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/startWifi.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/device/wifi/stopWifi.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/files/getFileInfo.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/files/getSavedFileInfo.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/files/getSavedFileList.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/files/openDocument.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/files/removeSavedFile.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/files/saveFile.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/interface/NativeUpdateManager.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/location/offLocationChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/location/offLocationChangeError.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/location/onLocationChange.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/location/onLocationChangeError.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/location/startLocationUpdate.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/location/startLocationUpdateBackground.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/location/stopLocationUpdate.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/EditorContext.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/background-audio/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/camera.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/image/compressImage.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/image/previewMedia.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/live/LivePlayerContext.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/live/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/map/HosMapContext.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/map/MapContext.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/map/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/media-recorder.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/recorder.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/video-decoder.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/video-processing.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/video/chooseMedium.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/video/chooseVideo.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/video/compressVideo.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/video/openVideoEditor.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/video/saveVideoToPhotosAlbum.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/media/voip.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/network/mdns.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/network/request/nativeRequest.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/network/tcp.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/network/udp.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/network/websocket/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/account.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/address.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/authorize.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/card.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/channels-live.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/customer-service.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/device-voip.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/facial.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/favorites.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/group.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/invoice.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/license-plate.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/red-package.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/soter/checkIsSoterEnrolledInDevice.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/soter/checkIsSupportSoterAuthentication.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/soter/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/soter/startSoterAuthentication.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/subscribe-message.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/open-api/werun.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/payment/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/payment/requestPayment.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/qq/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/request.ts delete mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/route/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/share/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/storage/background-fetch.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/storage/getBackgroundFetchData.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/storage/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/storage/setBackgroundFetchToken.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/storage/util.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/swan/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/animation/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/background.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/fonts.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/interaction/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/pull-down-refresh.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/scroll/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/sticky.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/tab-bar.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/ui/window.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/utils/colorConvert.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/worker/index.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/api/apis/wxml/nodesRef.ts create mode 100644 packages/taro-platform-harmony-hybrid/src/components/components-react/Map/Map.tsx delete mode 100644 packages/taro-platform-harmony-hybrid/src/components/vue2/index.ts create mode 100644 packages/taro-webpack5-runner/src/__tests__/__snapshots__/skyline.spec.ts.snap create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/babel.config.js create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/src/app.config.js create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/src/app.css create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/src/app.js create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/src/index.html create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/src/pages/index/index.config.js create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/src/pages/index/index.css create mode 100644 packages/taro-webpack5-runner/src/__tests__/fixtures/skyline/src/pages/index/index.jsx create mode 100644 packages/taro-webpack5-runner/src/__tests__/skyline.spec.ts diff --git a/.eslintrc.js b/.eslintrc.js index 2adc439e07cf..e235012d9090 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -5,8 +5,7 @@ module.exports = { 'import', 'jest', 'react', - 'simple-import-sort', - 'prettier' + 'simple-import-sort' ], extends: [ 'eslint:recommended', @@ -14,7 +13,6 @@ module.exports = { 'plugin:@typescript-eslint/recommended', 'plugin:react/jsx-runtime', 'plugin:react/recommended', - 'prettier' ], rules: { '@typescript-eslint/ban-ts-comment': 0, @@ -31,6 +29,10 @@ module.exports = { '@typescript-eslint/no-use-before-define': [1, { functions: false, classes: false }], '@typescript-eslint/no-var-requires': 0, camelcase: 0, + 'eol-last': 0, + 'comma-dangle': 0, + 'no-mixed-operators': 0, + 'no-multiple-empty-lines': 0, 'import/first': 2, 'import/newline-after-import': 2, 'import/no-duplicates': 2, diff --git a/.github/workflows/build-rust-binding.yml b/.github/workflows/build-rust-binding.yml index c1e319397f4b..e092c415b125 100644 --- a/.github/workflows/build-rust-binding.yml +++ b/.github/workflows/build-rust-binding.yml @@ -46,7 +46,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm - uses: pnpm/action-setup@v2.4.0 + uses: pnpm/action-setup@v3.0.0 with: version: 7 - name: Setup Node.js ${{ matrix.node-version }} diff --git a/.github/workflows/nodejs.yml b/.github/workflows/nodejs.yml index 82a398b15732..ce148e641712 100644 --- a/.github/workflows/nodejs.yml +++ b/.github/workflows/nodejs.yml @@ -44,7 +44,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm - uses: pnpm/action-setup@v2.4.0 + uses: pnpm/action-setup@v3.0.0 with: version: 7 - name: Setup Node.js ${{ matrix.node-version }} @@ -102,7 +102,7 @@ jobs: # 以下 coverage 流程通过 artifact 拆分文件作为单独 job 上传时间损耗过长,因此在在 node test 后直接继续执行 - name: Upload [taro-cli] coverage to Codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 if: ${{ matrix.settings.host == 'ubuntu-latest' }} with: move_coverage_to_trash: true @@ -110,7 +110,7 @@ jobs: files: ./packages/taro-cli/coverage/clover.xml token: ${{ secrets.CODECOV_TOKEN }} - name: Upload runner coverage to Codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 if: ${{ matrix.settings.host == 'ubuntu-latest' }} with: move_coverage_to_trash: true @@ -118,7 +118,7 @@ jobs: files: ./packages/taro-webpack5-runner/coverage/clover.xml,./packages/taro-webpack-runner/coverage/clover.xml,./packages/taro-mini-runner/coverage/clover.xml token: ${{ secrets.CODECOV_TOKEN }} - name: Upload [taro-runtime] coverage to Codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 if: ${{ matrix.settings.host == 'ubuntu-latest' }} with: move_coverage_to_trash: true @@ -126,7 +126,7 @@ jobs: files: ./packages/taro-runtime/coverage/clover.xml token: ${{ secrets.CODECOV_TOKEN }} - name: Upload [taro-web] coverage to Codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 if: ${{ matrix.settings.host == 'ubuntu-latest' }} with: move_coverage_to_trash: true @@ -134,7 +134,7 @@ jobs: files: ./packages/taro-components/coverage/clover.xml,./packages/taro-h5/coverage/clover.xml,./packages/taro-router/coverage/clover.xml token: ${{ secrets.CODECOV_TOKEN }} - name: Upload rest coverage to Codecov - uses: codecov/codecov-action@v3 + uses: codecov/codecov-action@v4 if: ${{ matrix.settings.host == 'ubuntu-latest' }} with: token: ${{ secrets.CODECOV_TOKEN }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8feaeda923e1..93cb33d8f643 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -82,7 +82,7 @@ jobs: - name: Checkout uses: actions/checkout@v4 - name: Setup pnpm - uses: pnpm/action-setup@v2.4.0 + uses: pnpm/action-setup@v3.0.0 with: version: 7 - name: Setup Node 16 diff --git a/.github/workflows/sync-components-types.yml b/.github/workflows/sync-components-types.yml index b437f3c9ab0c..a5597c8187ed 100644 --- a/.github/workflows/sync-components-types.yml +++ b/.github/workflows/sync-components-types.yml @@ -34,7 +34,7 @@ jobs: ${{ runner.os }}- - name: install - uses: pnpm/action-setup@v2.4.0 + uses: pnpm/action-setup@v3.0.0 with: version: 7 run_install: | diff --git a/.gitignore b/.gitignore index 6a1460ae0b34..1e103109c873 100644 --- a/.gitignore +++ b/.gitignore @@ -76,6 +76,7 @@ common/autoinstallers/*/.npmrc target/ debug/ +!packages/taro-platform-harmony-hybrid/src/api/apis/base/debug # Binding artifacts artifacts @@ -84,4 +85,4 @@ artifacts *.node # harmony-hybrid extend-h5-apis file -packages/taro-platform-harmony-hybrid/src/api/apis/extend-h5-apis.ts \ No newline at end of file +packages/taro-platform-harmony-hybrid/src/api/apis/extend-h5-apis.ts diff --git a/.vscode/settings.json b/.vscode/settings.json index 40629da47a9c..14c42a2afc83 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,16 +1,4 @@ { - "eslint.validate": [ - "javascript", - "javascriptreact", - { - "language": "typescript", - "autoFix": true - }, - { - "language": "typescriptreact", - "autoFix": true - } - ], "search.exclude": { "**/.git": true, "**/node_modules": true, diff --git a/crates/native_binding/package.json b/crates/native_binding/package.json index 2ddde1a807d5..64b74ec32566 100644 --- a/crates/native_binding/package.json +++ b/crates/native_binding/package.json @@ -1,6 +1,6 @@ { "name": "@tarojs/binding", - "version": "3.6.25", + "version": "3.6.29", "description": "Node binding for taro", "main": "binding.js", "typings": "binding.d.ts", diff --git a/crates/swc_plugin_compile_mode/src/tests/attributes.rs b/crates/swc_plugin_compile_mode/src/tests/attributes.rs index bfeab582ee26..ddc9de82f4f8 100644 --- a/crates/swc_plugin_compile_mode/src/tests/attributes.rs +++ b/crates/swc_plugin_compile_mode/src/tests/attributes.rs @@ -27,7 +27,7 @@ test!( - + diff --git a/crates/swc_plugin_compile_mode/src/transform.rs b/crates/swc_plugin_compile_mode/src/transform.rs index 523d9ffa8574..e17c62a3fa59 100644 --- a/crates/swc_plugin_compile_mode/src/transform.rs +++ b/crates/swc_plugin_compile_mode/src/transform.rs @@ -376,7 +376,9 @@ impl TransformVisitor { } // 小程序组件标准属性 -> 取 @tarojs/shared 传递过来的属性值;非标准属性 -> 取属性名 - let value: &str = attrs_map.get(&miniapp_attr_name).unwrap_or(&jsx_attr_name); + let value: &str = attrs_map.get(&miniapp_attr_name) + .map(|res| res.as_str()) + .unwrap_or(if miniapp_attr_name == "id" { "uid" } else { &jsx_attr_name }); // 按当前节点在节点树中的位置换算路径 node_path.push('.'); let value = if value.contains(TMPL_DATA_ROOT) { diff --git a/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_handle_events.js b/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_handle_events.js index ce536eb00b87..2a9fea02d0b1 100644 --- a/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_handle_events.js +++ b/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_handle_events.js @@ -1,4 +1,4 @@ -const TARO_TEMPLATES_f0t0 = ''; +const TARO_TEMPLATES_f0t0 = ''; function Index() { return diff --git a/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_turn_dynamic_attrs.js b/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_turn_dynamic_attrs.js index 846b9f5233ab..236b82458a1a 100644 --- a/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_turn_dynamic_attrs.js +++ b/crates/swc_plugin_compile_mode/tests/__swc_snapshots__/src/tests/attributes.rs/should_turn_dynamic_attrs.js @@ -1,10 +1,10 @@ -const TARO_TEMPLATES_f0t0 = ''; +const TARO_TEMPLATES_f0t0 = ''; function Index() { return - + ; diff --git a/examples/blended-taro-component-vue3/h5/package.json b/examples/blended-taro-component-vue3/h5/package.json index ef0b47f7035a..6a5bda647751 100644 --- a/examples/blended-taro-component-vue3/h5/package.json +++ b/examples/blended-taro-component-vue3/h5/package.json @@ -60,7 +60,7 @@ "style-loader": "1.3.0", "stylelint": "^14.4.0", "typescript": "^4.1.0", - "vue-loader": "^17.0.0", + "vue-loader": "^17.1.0", "webpack": "5.78.0" } } diff --git a/examples/blended-taro-component-vue3/taro-project/package.json b/examples/blended-taro-component-vue3/taro-project/package.json index dff3abdd5cc9..e034a17ec9fe 100644 --- a/examples/blended-taro-component-vue3/taro-project/package.json +++ b/examples/blended-taro-component-vue3/taro-project/package.json @@ -68,7 +68,7 @@ "ts-node": "^10.9.1", "tsconfig-paths-webpack-plugin": "^4.1.0", "typescript": "^5.1.0", - "vue-loader": "^17.0.0", + "vue-loader": "^17.1.0", "webpack": "5.78.0" } } diff --git a/examples/mini-program-example/.editorconfig b/examples/mini-program-example/.editorconfig new file mode 100644 index 000000000000..5760be583696 --- /dev/null +++ b/examples/mini-program-example/.editorconfig @@ -0,0 +1,12 @@ +# 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 diff --git a/examples/mini-program-example/.eslintrc b/examples/mini-program-example/.eslintrc new file mode 100644 index 000000000000..c9c31c176f54 --- /dev/null +++ b/examples/mini-program-example/.eslintrc @@ -0,0 +1,13 @@ +{ + "extends": ["taro/react"], + "rules": { + "react/jsx-uses-react": "off", + "react/react-in-jsx-scope": "off", + "@typescript-eslint/no-unused-expressions": "off", + "import/first": "off", + "no-unused-vars": "off", + "@typescript-eslint/no-unused-vars": "off", + "@typescript-eslint/no-shadow": "off", + "react/forbid-elements": "off" + } +} diff --git a/examples/mini-program-example/.gitignore b/examples/mini-program-example/.gitignore new file mode 100644 index 000000000000..331e8f6f4da6 --- /dev/null +++ b/examples/mini-program-example/.gitignore @@ -0,0 +1,7 @@ +dist/ +deploy_versions/ +.temp/ +.rn_temp/ +node_modules/ +.DS_Store +.swc \ No newline at end of file diff --git a/examples/mini-program-example/.prettierrc b/examples/mini-program-example/.prettierrc new file mode 100644 index 000000000000..0b9ec4ffff82 --- /dev/null +++ b/examples/mini-program-example/.prettierrc @@ -0,0 +1,14 @@ +{ + "printWidth": 120, + "singleQuote": true, + "useTabs": false, + "tabWidth": 2, + "semi": false, + "quoteProps": "as-needed", + "trailingComma": "es5", + "bracketSpacing": true, + "jsxSingleQuote": true, + "jsxBracketSameLine": false, + "arrowParens": "always", + "endOfLine": "auto" +} \ No newline at end of file diff --git a/examples/mini-program-example/babel.config.js b/examples/mini-program-example/babel.config.js new file mode 100644 index 000000000000..f3acb812f5a9 --- /dev/null +++ b/examples/mini-program-example/babel.config.js @@ -0,0 +1,10 @@ +// babel-preset-taro 更多选项和默认值: +// https://github.com/NervJS/taro/blob/next/packages/babel-preset-taro/README.md +module.exports = { + presets: [ + ['taro', { + framework: 'react', + ts: true + }] + ] +} diff --git a/examples/mini-program-example/config/dev.js b/examples/mini-program-example/config/dev.js new file mode 100644 index 000000000000..6821bf8e47d4 --- /dev/null +++ b/examples/mini-program-example/config/dev.js @@ -0,0 +1,9 @@ +module.exports = { + env: { + NODE_ENV: '"development"' + }, + defineConstants: { + }, + mini: {}, + h5: {} +} diff --git a/examples/mini-program-example/config/index.js b/examples/mini-program-example/config/index.js new file mode 100644 index 000000000000..03f52196110f --- /dev/null +++ b/examples/mini-program-example/config/index.js @@ -0,0 +1,96 @@ +const path = require('path') + +const config = { + projectName: 'mini-program-example', + date: '2023-6-15', + designWidth: 750, + deviceRatio: { + 640: 2.34 / 2, + 750: 1, + 828: 1.81 / 2 + }, + sourceRoot: 'src', + outputRoot: `dist/spa/main`, + plugins: [], + alias: { + '@/util': path.resolve(__dirname, '..', 'src/util'), + '@/styles': path.resolve(__dirname, '..', 'src/styles'), + '@/assets': path.resolve(__dirname, '..', 'src/assets'), + '@/components': path.resolve(__dirname, '..', 'src/components'), + }, + defineConstants: { + }, + copy: { + patterns: [ + ], + options: { + } + }, + framework: 'react', + compiler: 'webpack5', + cache: { + enable: false // Webpack 持久化缓存配置,建议开启。默认配置请参考:https://docs.taro.zone/docs/config-detail#cache + }, + mini: { + postcss: { + pxtransform: { + enable: true, + config: { + + } + }, + url: { + enable: true, + config: { + limit: 1024 // 设定转换尺寸上限 + } + }, + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + config: { + namingPattern: 'module', // 转换模式,取值为 global/module + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + }, + imageUrlLoaderOption:{ + limit:8192 + } + }, + h5: { + publicPath: '/spa/main/', + staticDirectory: 'static', + postcss: { + autoprefixer: { + enable: true, + config: { + } + }, + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + config: { + namingPattern: 'module', // 转换模式,取值为 global/module + generateScopedName: '[name]__[local]___[hash:base64:5]' + } + } + }, + imageUrlLoaderOption:{ + limit:8192 + } + }, + rn: { + appName: 'taroDemo', + postcss: { + cssModules: { + enable: false, // 默认为 false,如需使用 css modules 功能,则设为 true + } + } + } +} + +module.exports = function (merge) { + if (process.env.NODE_ENV === 'development') { + return merge({}, config, require('./dev')) + } + return merge({}, config, require('./prod')) +} diff --git a/examples/mini-program-example/config/prod.js b/examples/mini-program-example/config/prod.js new file mode 100644 index 000000000000..e1486661d96c --- /dev/null +++ b/examples/mini-program-example/config/prod.js @@ -0,0 +1,37 @@ +module.exports = { + env: { + NODE_ENV: '"production"' + }, + defineConstants: { + }, + mini: {}, + h5: { + /** + * WebpackChain 插件配置 + * @docs https://github.com/neutrinojs/webpack-chain + */ + // webpackChain (chain) { + // /** + // * 如果 h5 端编译后体积过大,可以使用 webpack-bundle-analyzer 插件对打包体积进行分析。 + // * @docs https://github.com/webpack-contrib/webpack-bundle-analyzer + // */ + // chain.plugin('analyzer') + // .use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, []) + + // /** + // * 如果 h5 端首屏加载时间过长,可以使用 prerender-spa-plugin 插件预加载首页。 + // * @docs https://github.com/chrisvfritz/prerender-spa-plugin + // */ + // const path = require('path') + // const Prerender = require('prerender-spa-plugin') + // const staticDir = path.join(__dirname, '..', 'dist') + // chain + // .plugin('prerender') + // .use(new Prerender({ + // staticDir, + // routes: [ '/pages/index/index' ], + // postProcess: (context) => ({ ...context, outputPath: path.join(staticDir, 'index.html') }) + // })) + // } + } +} diff --git a/examples/mini-program-example/package.json b/examples/mini-program-example/package.json new file mode 100644 index 000000000000..018d091f750d --- /dev/null +++ b/examples/mini-program-example/package.json @@ -0,0 +1,86 @@ +{ + "name": "mini-program-example", + "version": "1.0.0", + "private": true, + "description": "小程序demo", + "templateInfo": { + "name": "default", + "typescript": true, + "css": "sass" + }, + "scripts": { + "lint": "eslint src --ext .js --ext .jsx --ext .ts --ext .tsx", + "format": "prettier --write \"src/**/*.{ts,tsx,js,jsx}\" && eslint src --ext .js --ext .jsx --ext .ts --ext .tsx --fix", + "build:weapp": "taro build --type weapp", + "build:swan": "taro build --type swan", + "build:alipay": "taro build --type alipay", + "build:tt": "taro build --type tt", + "build:h5": "taro build --type h5", + "build:rn": "taro build --type rn", + "build:qq": "taro build --type qq", + "build:jd": "taro build --type jd", + "build:quickapp": "taro build --type quickapp", + "build:harmony-hybrid": "taro build --type harmony-hybrid", + "dev:weapp": "npm run build:weapp -- --watch", + "dev:swan": "npm run build:swan -- --watch", + "dev:alipay": "npm run build:alipay -- --watch", + "dev:tt": "npm run build:tt -- --watch", + "dev:h5": "npm run build:h5 -- --watch", + "dev:rn": "npm run build:rn -- --watch", + "dev:qq": "npm run build:qq -- --watch", + "dev:jd": "npm run build:jd -- --watch", + "dev:quickapp": "npm run build:quickapp -- --watch", + "dev:harmony-hybrid": "npm run build:harmony-hybrid -- --watch", + "clear:harmony-hybrid": "rm -rf node_modules/.taro/harmony-hybrid && npm run dev:harmony-hybrid", + "rebuild": "cd ../../packages/%npm_config_package% && pnpm build && cd ../../examples/mini-program-example && rimraf node_modules && pnpm install" + }, + "browserslist": [ + "last 3 versions", + "Android >= 4.1", + "ios >= 8" + ], + "author": "", + "dependencies": { + "@babel/runtime": "^7.14.5", + "@tarojs/components": "workspace:*", + "@tarojs/helper": "workspace:*", + "@tarojs/plugin-platform-weapp": "workspace:*", + "@tarojs/plugin-platform-alipay": "workspace:*", + "@tarojs/plugin-platform-tt": "workspace:*", + "@tarojs/plugin-platform-swan": "workspace:*", + "@tarojs/plugin-platform-jd": "workspace:*", + "@tarojs/plugin-platform-qq": "workspace:*", + "@tarojs/plugin-platform-h5": "workspace:*", + "@tarojs/plugin-platform-harmony-hybrid": "workspace:*", + "@tarojs/runtime": "workspace:*", + "@tarojs/shared": "workspace:*", + "@tarojs/taro": "workspace:*", + "@tarojs/plugin-framework-react": "workspace:*", + "@tarojs/react": "workspace:*", + "react-dom": "^18.2.0", + "react": "^18.2.0" + }, + "devDependencies": { + "@babel/core": "^7.8.0", + "@tarojs/cli": "workspace:*", + "@types/webpack-env": "^1.13.6", + "@types/react": "^18.2.0", + "webpack": "5.78.0", + "@tarojs/webpack5-runner": "workspace:*", + "babel-preset-taro": "workspace:*", + "eslint-config-taro": "workspace:*", + "eslint": "^8.12.0", + "@pmmmwh/react-refresh-webpack-plugin": "^0.5.5", + "react-refresh": "^0.11.0", + "eslint-plugin-react": "^7.8.2", + "eslint-plugin-import": "^2.12.0", + "eslint-plugin-react-hooks": "^4.2.0", + "stylelint": "^14.4.0", + "@typescript-eslint/parser": "^5.20.0", + "@typescript-eslint/eslint-plugin": "^5.20.0", + "typescript": "^4.1.0", + "postcss": "^8.4.18", + "ts-node": "^10.9.1", + "@types/node": "^18.15.11" + } +} diff --git a/examples/mini-program-example/project.config.json b/examples/mini-program-example/project.config.json new file mode 100644 index 000000000000..8f6409b7da15 --- /dev/null +++ b/examples/mini-program-example/project.config.json @@ -0,0 +1,32 @@ +{ + "miniprogramRoot": "dist/", + "projectname": "mini-program-example", + "description": "小程序demo", + "appid": "wx16ae4838cf116f8f", + "setting": { + "urlCheck": true, + "es6": false, + "enhance": false, + "compileHotReLoad": false, + "postcss": false, + "minified": false, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + }, + "condition": false + }, + "compileType": "miniprogram", + "libVersion": "3.0.0", + "srcMiniprogramRoot": "dist/", + "packOptions": { + "ignore": [], + "include": [] + }, + "condition": {}, + "editorSetting": { + "tabIndent": "insertSpaces", + "tabSize": 2 + } +} diff --git a/examples/mini-program-example/project.private.config.json b/examples/mini-program-example/project.private.config.json new file mode 100644 index 000000000000..76705881346f --- /dev/null +++ b/examples/mini-program-example/project.private.config.json @@ -0,0 +1,7 @@ +{ + "description": "项目私有配置文件。此文件中的内容将覆盖 project.config.json 中的相同字段。项目的改动优先同步到此文件中。详见文档:https://developers.weixin.qq.com/miniprogram/dev/devtools/projectconfig.html", + "projectname": "mini-program-example", + "setting": { + "compileHotReLoad": true + } +} diff --git a/examples/mini-program-example/project.tt.json b/examples/mini-program-example/project.tt.json new file mode 100644 index 000000000000..72f4fc579101 --- /dev/null +++ b/examples/mini-program-example/project.tt.json @@ -0,0 +1,9 @@ +{ + "miniprogramRoot": "./", + "projectname": "mini-program-example", + "appid": "testAppId", + "setting": { + "es6": false, + "minified": false + } +} diff --git a/examples/mini-program-example/src/app.config.ts b/examples/mini-program-example/src/app.config.ts new file mode 100644 index 000000000000..847d1653cc36 --- /dev/null +++ b/examples/mini-program-example/src/app.config.ts @@ -0,0 +1,185 @@ +export default defineAppConfig({ + pages: [ + 'pages/index/index', + 'pages/error/index', + 'pages/component/index/index', + 'pages/component/cover-image/cover-image', + 'pages/component/cover-view/cover-view', + 'pages/component/view/view', + 'pages/component/scroll-view/scroll-view', + 'pages/component/swiper/swiper', + 'pages/component/text/text', + 'pages/component/icon/icon', + 'pages/component/progress/progress', + 'pages/component/button/button', + 'pages/component/checkbox/checkbox', + 'pages/component/form/form', + 'pages/component/input/input', + 'pages/component/label/label', + 'pages/component/picker/picker', + 'pages/component/picker-view/picker-view', + 'pages/component/radio/radio', + 'pages/component/switch/switch', + 'pages/component/textarea/textarea', + 'pages/component/navigator/navigator', + 'pages/component/audio/audio', + 'pages/component/camera/camera', + 'pages/component/image/image', + 'pages/component/video/video', + 'pages/component/live-player/live-player', + 'pages/component/map/map', + 'pages/component/canvas/canvas', + 'pages/component/slider/slider', + 'pages/component/grid-view/grid-view', + 'pages/component/grid-view/demo1', + 'pages/component/grid-view/demo2', + 'pages/component/list-view/list-view', + 'pages/component/page-container/page-container', + 'pages/component/radio-group/radio-group', + 'pages/component/checkbox-group/checkbox-group', + 'pages/component/match-media/match-media', + 'pages/component/movable-view/movable-view', + 'pages/component/sticky-header/sticky-header', + 'pages/component/root-portal/root-portal', + 'pages/component/editor/editor', + 'pages/component/share-element/share-element', + 'pages/api/index/index', + 'pages/api/advertising/index', + 'pages/api/ai/inference/index', + 'pages/api/ai/visionAlgorithms/index', + 'pages/api/ai/faceRecognition/index', + 'pages/api/alipay/index', + 'pages/api/analysis/index', + 'pages/api/basics/basics/index', + 'pages/api/basics/nativeDebug/index', + 'pages/api/basics/encryption/index', + 'pages/api/basics/miniProgram/index', + 'pages/api/basics/performance/index', + 'pages/api/basics/system/index', + 'pages/api/basics/update/index', + 'pages/api/cache/index', + 'pages/api/canvas/index', + 'pages/api/cloudServices/index', + 'pages/api/device/bluetoothGeneral/index', + 'pages/api/device/bluetoothLowCenter/index', + 'pages/api/device/bluetoothLowPerpherals/index', + 'pages/api/device/bluetoothBeacon/index', + 'pages/api/device/nfc/index', + 'pages/api/device/wifi/index', + 'pages/api/device/calendar/index', + 'pages/api/device/contact/index', + 'pages/api/device/accessibility/index', + 'pages/api/device/bettery/index', + 'pages/api/device/clipBoard/index', + 'pages/api/device/network/index', + 'pages/api/device/screen/index', + 'pages/api/device/keyboard/index', + 'pages/api/device/phoneCall/index', + 'pages/api/device/accelerometer/index', + 'pages/api/device/compass/index', + 'pages/api/device/deviceOrientation/index', + 'pages/api/device/gyroscope/index', + 'pages/api/device/memory/index', + 'pages/api/device/scan/index', + 'pages/api/device/sms/index', + 'pages/api/device/vibration/index', + 'pages/api/file/index', + 'pages/api/forward/index', + 'pages/api/framework/index', + 'pages/api/interface/interaction/index', + 'pages/api/interface/navigationBar/index', + 'pages/api/interface/background/index', + 'pages/api/interface/font/index', + 'pages/api/interface/pullDownRefresh/index', + 'pages/api/interface/scroll/index', + 'pages/api/interface/animation/index', + 'pages/api/interface/setTop/index', + 'pages/api/interface/customizedComponents/index', + 'pages/api/interface/menu/index', + 'pages/api/interface/windows/index', + 'pages/api/location/index', + 'pages/api/media/map/index', + 'pages/api/media/image/index', + 'pages/api/media/video/index', + 'pages/api/media/audio/index', + 'pages/api/media/backgroundAudio/index', + 'pages/api/media/realtimeAudioAndVideo/index', + 'pages/api/media/recording/index', + 'pages/api/media/camera/index', + 'pages/api/media/richText/index', + 'pages/api/media/audioOrVideoCompose/index', + 'pages/api/media/realtimeVoice/index', + 'pages/api/media/screenRecorder/index', + 'pages/api/media/videoDecoder/index', + 'pages/api/network/request/index', + 'pages/api/network/download/index', + 'pages/api/network/upload/index', + 'pages/api/network/webSocket/index', + 'pages/api/network/mDNS/index', + 'pages/api/network/TCPCommunications/index', + 'pages/api/network/UDPCommunications/index', + 'pages/api/openAPIS/login/index', + 'pages/api/openAPIS/accountInfomation/index', + 'pages/api/openAPIS/userInfomation/index', + 'pages/api/openAPIS/authorization/index', + 'pages/api/openAPIS/setting/index', + 'pages/api/openAPIS/recipientAddress/index', + 'pages/api/openAPIS/cardsAndOffers/index', + 'pages/api/openAPIS/invoice/index', + 'pages/api/openAPIS/biometricAuthorization/index', + 'pages/api/openAPIS/weRun/index', + 'pages/api/openAPIS/subscribeNews/index', + 'pages/api/openAPIS/wechatRedRacket/index', + 'pages/api/openAPIS/collection/index', + 'pages/api/openAPIS/mineMiniProgram/index', + 'pages/api/openAPIS/licensePlate/index', + 'pages/api/openAPIS/wechatVideoChannel/index', + 'pages/api/openAPIS/deviceVoip/index', + 'pages/api/openAPIS/wechatGroup/index', + 'pages/api/openAPIS/wechatCustomerService/index', + 'pages/api/payment/index', + 'pages/api/qq/index', + 'pages/api/redirection/index', + 'pages/api/routing/index', + 'pages/api/routing/routeA/index', + 'pages/api/swan/index', + 'pages/api/taro/expand/index', + 'pages/api/taro/hooks/index', + 'pages/api/thirdParty/index', + 'pages/api/worker/index', + 'pages/api/wxml/index', + 'pages/performance/index/index' + ], + tabBar: { + color: '#7A7E83', + selectedColor: '#1F69FF', + borderStyle: 'black', + backgroundColor: 'F7F7F7', + list: [ + { + pagePath: 'pages/component/index/index', + iconPath: 'assets/tab/component.png', + selectedIconPath: 'assets/tab/component_select.png', + text: '组件', + }, + { + pagePath: 'pages/index/index', + iconPath: 'assets/tab/home.png', + selectedIconPath: 'assets/tab/home_select.png', + text: '首页', + }, + { + pagePath: 'pages/api/index/index', + iconPath: 'assets/tab/api.png', + selectedIconPath: 'assets/tab/api_select.png', + text: '接口', + }, + ], + }, + window: { + backgroundTextStyle: 'light', + navigationBarBackgroundColor: '#F7F7F7', + navigationBarTitleText: 'Harmony', + navigationBarTextStyle: 'black', + }, +}) diff --git a/examples/mini-program-example/src/app.scss b/examples/mini-program-example/src/app.scss new file mode 100644 index 000000000000..f170d325e905 --- /dev/null +++ b/examples/mini-program-example/src/app.scss @@ -0,0 +1,37 @@ +@import '@/styles/variables.scss'; + +.api-page { + box-sizing: border-box; + padding: 40px; + height: 100%; +} + +.test-style { + color: #f5f5f5; + background-color: $color-success; +} + +.tag { + display: inline-block; + text-align: center; + width: 120px; + padding: 5px 5px; + border: 1px solid red; + border-radius: 5px; + color: red; + font-size: 20px; + margin: 5px; +} + +.navigator { + padding: 20px 30px; + position: relative; + display: flex; + align-items: center; + transition: 0.3s; + } + +.navigator:active { + background-color: $color-grey-5; + opacity: 0.2; +} \ No newline at end of file diff --git a/examples/mini-program-example/src/app.ts b/examples/mini-program-example/src/app.ts new file mode 100644 index 000000000000..2c34853faba7 --- /dev/null +++ b/examples/mini-program-example/src/app.ts @@ -0,0 +1,55 @@ +import React from 'react' +import Taro from '@tarojs/taro' +import { TestConsole } from '@/util/util' +import './app.scss' + +class App extends React.Component { + onLaunch(res) { + if (res) { + Taro.setStorageSync('onLaunch', res) + } else { + Taro.setStorageSync('onLaunch', 'Triggered') + } + TestConsole.consoleNormal('onLaunch', res) + } + + onError(error) { + if (error) { + Taro.setStorageSync('onError', error) + } else { + Taro.setStorageSync('onError', 'Triggered') + } + TestConsole.consoleNormal('onError', error) + Taro.showToast({ + title: 'onError', + icon: 'error', + }) + } + + onPageNotFound(res) { + if (res) { + Taro.setStorageSync('onPageNotFound', res) + } else { + Taro.setStorageSync('onPageNotFound', 'Triggered') + } + TestConsole.consoleNormal('onPageNotFound', res) + Taro.navigateTo({ + url: 'pages/error/index', + }) + } + + componentDidShow(res) { + TestConsole.consoleNormal('App componentDidShow', res) + } + + componentDidHide() { + TestConsole.consoleNormal('App componentDidHide') + } + + render() { + // this.props.children 是将要会渲染的页面 + return this.props.children + } +} + +export default App diff --git a/examples/mini-program-example/src/assets/api/AI.png b/examples/mini-program-example/src/assets/api/AI.png new file mode 100644 index 0000000000000000000000000000000000000000..9fd4b8d15ac50b47a9f02ba6afb92e2a1e279e89 GIT binary patch literal 2333 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/alipay.png b/examples/mini-program-example/src/assets/api/alipay.png new file mode 100644 index 0000000000000000000000000000000000000000..fa8e5181a94de63e5ba47c6871018d29929444fe GIT binary patch literal 2302 zcmVPx-xJg7oRCr$Pn|+KVMHRr`>)B;pKO;s^L31Z3M;5c2sn@gX8WB#^$cM;r8Wj?Q z(TG7!R6v8Eq6b`zBFTXyqJW4X<^&^nYWzSHF6-{q>(RZq1_c!%C`8XM%w+av`k8m> z-t_kNOn*%Gx_?Y1`^Qe#d-dwquc}_Xszw-=RRnOzV>N*xkeEjdfoudIv$L~Db~>Ho zL}ZKa`&$ulLhTZfCC70dLd1thMn)c)o0~hh-a~p_J!E2H;@RWl! zdTD9t>5TOUuC{JKi0Ewrhhhx9ojZuNct6#%da5ibLP zk(k^fBA#!pRj;X}R0f2IUIPGM2Y}5n%lG=ee^s;Doa@)4dc8jDIF3R&BUbN^0Prqm zey|E6l>l*F_Y@KN762R-Gx`!{{z9IP5Yfc|@cEd`Q;7I>Ywi7cbY-bqI*_Y{E<%DAq3mWX^e zLHD*Yp_B%s7Yq?O&GWn;4gw>THO9ON5r0r6lv057g5mrA>zmEyPs@N2>ZsT2r#g=F zld7N$45W`|yw>x)2g-yI@syJg@fTG<83>5$y3-;upU~-7F>})IrST!6836cY0+bnR z?LyIp3Imy*o<6?Y?H&%OqQ!BX>HYin?=Nal9=S%N(eQnLP3LR1+SY}Ih2Q1T71k{T zWO8!ysL|2UH6gT!R5na{bYjxmK$+wzRagoJU`7AVky!04LVSdCYuAo`!>t zXhgdbw}{ARiU3hvM073y+#a*RXXaWSyK(^`qQ3*ckV}$TC2O(LZxgVf!AFoB3H%?`U5i`m&M3T zK!}L-1;i9y!_2zzDqN}n5)2>RKwcCx%wuLsGd2~7>$>-d$eUw|Zer&5_EK()xdIVa zCd)J<3Ov7`nYZMQlDOA~T-nJ)G2!en7s6 zh#v`s@~i*>kdxEE1bgpC%d4idb$?YcCiONPH@AJBKisd^bGC$ zbgTscw*tWXW8SgmO%{QZuzIEs8EuG&3QwvPM5(2CN6@eQlWLM+)@9cia~>joBlhMB8=ymh+^N(i*V~m+ZL_M+?4`lL%?kZ%A$-TKFBE9+)9&-PN znO~X3=mgJ76MGZ@u5YzkyR#&bTk0@X_fG(r=oj(_DF)5QzA;V! z5x0qm4&8oPE=I)N)>^%Xl2{TZ`C{AuU~0bqM*S-;JgF=jg=>b;MoT<68i ze2wY}Vh6QjORr8Nq8_H-YOTF9TBpZ~S1dskne;NJ5R(iLk=q={`EjSyd0=d8tkdaq zW<})0UMa?25Q#{0q?*GBx9~}P9utw9^#LNj8UWr9t%Qj8Zr;3k`<^{}^e82-A~pSb0s2P2msH|(}o_7x7+Qr4;(n~kA8BQfCNx7 z9Yg4)+~wtEJ-^9ZMC48p+1YG1m$C@yR$fFd3BZhHkU0PVXEO7j)9Pjh5*($fBqBH~VKt;QI+i!P@Ca3LbT0|1`aL%|)jTJ7?Mg$2E=ms)ZG37}*?$_#eS zdQn#=&J%(tQB#BuA|j8Cjq$#H`!oSHP*JaJx7(*7q8?|S9w_@20Nl*X*X2>38%UXl z-FXaMue!N`s9_uFIz-u^3IS0gHo}FOvSFyc!a!8`|9PdV3K#0Yc)(SrIbdt-|#8pYIkspSv_ObZ6FcZ;d!10fu)pEfkdE`dimcNa}FY^ zXFN07>ni4{(t$*vRQY*`ey}*9agD6ABSwln+)vB&Ehex{lLX80j<4{sTM>R#n6ShDWQC)JYetz6v@NDT21NDRpT Y0GT_OfoasfjsO4v07*qoM6N<$g65l0N&o-= literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/analysis.png b/examples/mini-program-example/src/assets/api/analysis.png new file mode 100644 index 0000000000000000000000000000000000000000..5f824d64ab8f411a847150f8eea67222ae531b86 GIT binary patch literal 1596 zcmV-C2E+M@P)Px)_DMuRRCr$Pn|+8>RTRL_dBd`0Y*s>rec`gv_vU-&j>~39feU?5k$sC5lwyLW z{}@ue`HoJE!Za*B{&v+uyfBH%pjqO-ykHTi~uG)$_XSuDl#Ggk^re)B$5n?njxO&EeXyw#=Ltf z7vOX{-J8$n&o;(ztvEt6gori*z%vEmADQ`@Qxymitpk7!HXdf)(y>64Qg@4p1<`LI zh{!%;%uvSxab5S?R4TPmL>5&B&&)OJW?LtD?vVfS`gni#uK#D;s zr5+KHO#pCFW#EXoN^AXkM**?H646osc&jpS5g9hdJkU`<`uqFO=<4eF3IM!9F+G5Y zKLEfg064Va zX6D6Fd#JVpLPXC4fNjJkhlr?p-Dwb3TLB>=+fCbAQ5>%_^O~sHVdu3QkT(HfMFD^h z0CSl6_l^YOy6ytUaSjxNN5u77>&=b8XsZnIJa0E5-d_N4w5O-1FO$jq+mS$&Qg?{R zM}b1R+!(XHQ5bELAw*<*ih;?15Vh7i-3*Mj0766$1HjvX>{w)s`LH8_^!4?1&zw2) zC;-eVWXGpk>)V@!F{K&edET7>aE0SIhqczjtvDGb>v`T9M0`20vs|yW{-zaMQ__bJ z(FXufG^ygOf#}0&u_5;8TRU8{*=F?hr*vb>p{@5YO|TM8vWuN)dU=7-J7<$_5cVTev+d{{2WQm0H-y&Ok)}0Kklb zg5Q{VPMk2TuBL%hZhMo;>KyTVp0^DVR|bMO===UqE|)uAFEAon4FInc=Q)lul+9-M z)st)V`=)>p(GCE3G+=BD5tnJLchz%1DYeTM*1)_>Z*T9yk&%&n4OxeXO5Y>mcUtS~ z>e*`M`-XrJ(F{bi0R^uJk0atzt@S5S9UvlG2W&l<9Ei9_YkgOkd}U_&zCSmY%N>kr zuaS9?f!GxFegAy`u)Ric{94G2Oe01uSOE9}0Okkeb};j@N*PZP+j)ihnAlMhR)@ApyN~ygfa#O&@Y-TP!!!%>N zmP{ld0Pr6GbOjXccN}MFHk&=%ibJmJUg8v6)ibPHjzj%yFFk`F!5~{gR^oo}QkrOeQnY zioJTWp+G{OT6Y#;*o=v75K&pf6{2_pGd~xb(GW$AWXLvVetfDNvhTFn9V|?Ly%$~L z@+&Hkt6D5Z9a$U{}DKjMJadUUFNhzjJSymS}#PKSjcA`6T$Uw0Ic%G?x7}$A#5(4A-ff6@H2|Ck03S26J(fHv zV_MaalM-b7~FZRHxNhy uBx)bh0Mxdcnq)|lAx(CwZM6;>2 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/canvas.png b/examples/mini-program-example/src/assets/api/canvas.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a11d7a66aded0526040ea4223560150cfde3c7 GIT binary patch literal 1035 zcmV+m1oZofP)Px&#Ysd#RCr$Pn@eaEK@f(kf+56s(TnI!ysZ#S_iQ8xx{(}>qLLg`6fZtdFN%_z z@gzRLgApGm6-6-kz+4rhC_(A&NWjHIay57n0*ONsvL%BX+)QS6dLELE)*iR3s;j@L zzk6V+5%{-&05Xq-1Q>{~A{Yn*slG`pX@#`4wXK<*oo%j6vA({3WN2vU$5QQWOA16v z`2+yEe2eebT6h1iK;8gA!MFH9t#vyC`9pw#aD|i!NGX@MWTccU5pf>?2qM~?kr=*YoE9SL2Y`*X!E3~B3=zAOQo}a+SOJkzt^LM-lPP za#(Owjzo0K7;`r*kX}T*;17a`?MkV^s3ewR+;N-&5qU@Yf*%oGG{*EYkTL-V!WHtH z087SK2@HgRR6o18LbyV>LSnt&v1C{>EE$$eECMVUmQ1XI;Zues!;)di#3I0wVadcQ z7(QiKGAtREOe_K{8J0|}g83__j1a>6rn|kIiNDLo`@1H;>sF8p&6$YahJE7={QCbd zwLpZGR#nmZ8XFr20@|)?TnN_b4Z5z|Su7SO z{T`7mRn}9K4IRhnBchWbekZinx8uaj=kxhesq`tx2N7>7rB20(7iF6%5Fx|?M0^-B z={>FWk*I`%#-)^J0pMED7!e&b#ym$@s}L#WGXU5VGT9ET^`a)YI16ZPZQU?8H|Moft`6{fuC?A9 zCtjFsCP0J`=MeEq$Rs^l>&sarTTPNgblwN^1pvoGHrdpz zqN#wCkLOnauq7bDaU$Agj2TV))GGbGdwMf7Gw%RkQ$XC0uIqNB*{f0k5klNR#K2<@ z5%(*l9%l(-K9&$-r`Nk4a_aOMV@@ZXH!%>$aSjpD{g9-t8)MESP0GekN_hzYdP1ag zSSj_uCXU}GF_4fOm0tY!6B831qobqKNfNU4DHIATCMPFfd$J7hNqn<24UnMgVP8t6 zQupxiaM5;QY3y2BT5@%Db>3B1|9+DAB4c78-sw`g7(|?!o}Mm_jEqdBS!7(_=H}+6 zhK7b55j9o%CcT)D7)ad2my10E@jWR9!a%Bvmn+1_=NGJO|6|y5jspMy002ovPDHLk FV1k8%%y<9* literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/cloud.png b/examples/mini-program-example/src/assets/api/cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..53a4e5c14f44f89af9f13a77b4139d0aed4e38d9 GIT binary patch literal 1922 zcmV-|2YvX7P)Px+JV``BRCr$PTYZRBRTMvGc1E%&!%|85!^ommS)F_Du)BSLK@z5EWr>y_MQBkZ z8Kq@XhDr88Wf-CuSSg8>m6?b_jb+)o_uiQ-1OKs7wvr|33v_p9?uon13~%1P8Rz2- zGcNDKW8uxc=lss^oqO-O=iEgIS{?%!@R83zK#0pD0zv{piZ2p@hXfuHct}|rX)tAi zDbs*croFv=cu!Bya74TW0Q$n=a92l1$H}sMyGEUBK4se5+lTh{_D&@vW{laWwcb^#5z%OLL?{%x8vyJx$vuvUwrQ>Blq#>Betr@1HvnAZ zQrt&GOSIN+l>^A#mvjCU0KDiy%JW+5mDR}h8e26Xobx>ZaEnX$5h7Zwwf@2nz>Kkb z5pj!$_sx+~Zu3KjFKY;6Y$YN-=O)7#Gb@ou{NyK48_f0g_WtQ1vrQ@0;g_z8J%lkf z77;Cw;SMl%(e#~+tbE2;8zK(adhOI~YHEsic6KJKC8lCRIOlHyz@tt8h`2yX`EIqK zijC)-uL6J-1^OfrF-}DL)9G|PnN0pwE|!W2X>D!2Je5k>T_x8LagUU8O1S{a?cdVU zazP{#`5FMCXBpc~L^}|1hf->9sd_3RgmZ4U!|hHbM0BUt`r}d+SJN*Ri(O}ou`$oE zQsfX(CjdOFwYD2T(N+;5jIq}caYyQmyqXrGTnMpNSJEjtPgu&BmB%tAugb-0<%nU@di@tLg%;Gz&l$ziLwk$#zWA|m^4twUvwRAdtMKYQE zr6JgGfXIXfi`~0nrpsxi)cJ1AB@x0HyAc4MK*Z@DM(Rsj4_8i7R|3xsnmi-+*Ye0CA0J7W%G$> zLXHs5`DOrE;8LVefm4#bP%bWA?d}tXE1s?3dz3mBScY zh=~31N2VP|&iO+Cu-@_VKL8k~lsew1hWLexbACGjICD7vT0-ox-A1I@Ht5%mtf4}P z$wcJLrk%Eg*mdI8Y$qaGr?t+@mHPEX8ch!8{2l<<>cDlx67sX_ys}U!wW-m-*8&e? z>@h^l)rxJE(Gt=N0Jap_-w<(zlyYY+05qCRA;bnETI9gB))Mj?09@vHxkf4VbfbZ< z1s=}1EqvuNYD9FuCFBPH81GORS4!DHZBRF_@~F-HSwg;aRoHvN;qb_gj*fo@Gb2KX zokVn-!^WgiDvDlA5z)-Sbh34SSjN~iyMQ|1BjOuU$|aa7BHIMMB>-}upyW*f)J9%FR??Jlb~;N1y{;CPsQeHjt}C_vTvGMlD$Woyg@~pgV$JW8 zm1u0CZr=cay*X{Of3_f1ax0k-w?s=&C=|Mih{h6;{YRj>HAJ*K;4%9Q8#e4%JRUz& zDVT~0sZ?R3j|&KKeW8GmfRN&oHt>+ZLjn&eYhw$hjEk=S0q(c87!tf=p8x;=07*qo IM6N<$f)sI%GXMYp literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/devices.png b/examples/mini-program-example/src/assets/api/devices.png new file mode 100644 index 0000000000000000000000000000000000000000..827aee51e439dd7b3a3981ff0a91bd8743aa3858 GIT binary patch literal 807 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 Cb*X>= literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/interface.png b/examples/mini-program-example/src/assets/api/interface.png new file mode 100644 index 0000000000000000000000000000000000000000..f461ad371a939159f7d15d9da7524c00e8fab8e6 GIT binary patch literal 2549 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 LNkvXXu0mjf2LrxJ literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/iphone.png b/examples/mini-program-example/src/assets/api/iphone.png new file mode 100644 index 0000000000000000000000000000000000000000..288291a3086dca74a0cbd26fe4a86be2a8b1b3f1 GIT binary patch literal 812 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXo1|%(nCvO5$oCO|{#S9F5M?jcysy3fA0|V1N zPZ!6KiaBp*8)l0H3LO9cS?~GX#8WfW)(TlXowjFcO@oQo2I0U%rCdLm%C41}nJr2X zRN)YMqmq%FSXuGjqlw)ynv>PQ`_{#Y#R`J>`ZH8-| zCk#G^EA3)`FxBwc?tCBlOD49=52TFmt1sGoW)4$C$+^8BJH>+(eU*$D4xA~UTinl_ z)cUC)FE5Yb!NrW`SqytxB+j#VF{B+=Z$6lC)z~ksLniIv&YN*gk1WhwzO3$SGugPt zVg|F|)W;Uzve@^De!4Go$+@XxQN}Te;(r^mGiTM^x^d&joN_-0N2f&^voxoA^>r-c z-|gqJJ5c1N(h`wRrzDb>G5GvVJ$WU=_nkA!HKDT(izx8&*ot&8_ zQkNO#FTkRjy>)razQt+>K@+t;~w7Q3LKFbC3uAH#t{`>nYuV(%JVSB>Hu1f)!bl!iT l{!o+oLSVUT;1r*qjN3lnFE;sJkqAuw44$rjF6*2UngGJ$W2pcD literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/local.png b/examples/mini-program-example/src/assets/api/local.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8cc40fa0424d1ef026a8bdc3ea477c23d0cc3d GIT binary patch literal 4015 zcmW-kc|2787soG(5n1xc7G)kw5{)gg$1s>kV~^|&CR-U3*&o}8BI}GLMYc4AELqD= zV;3PyL>NP3%QE=get&%L{o{V`>z?~L=kq@28)s^QID1C$3;+OU4GrKZ@DBgGAk5%Z zg(syFys`Qk*!TeeNBiH!kS5I`1OS{)hVYx_0ohc$2Uv59^yA$dwJ6?8taVZBco`3o z=hqF?lHNf6W0hIq!ZQ2HOxm~_k>f>zBzC{`=^|cTXp=q@Y13qGG~|&mBHL;6)Jv|r z3hrzluJ8VWi-q?T)g8tfX#TayZ6L8e;;yLq6${=ccJUkI8nwFLrn81SRJ=E?tgw}HGer@|mdN9b;);#tl2kN4M2#q31eWVXiYNz(si<11fFEWj)NgKXGAm!dUP!4whA0e3%RWcRz zg~6H}GFRN;Y_mV8%SnAU8c;MMH5>A0I(Pr*80FW&4YY7MH%)sxnAzKxbzwN<{%v1; z6qjNDWW}%zmY$V}&&Agyh-f@n%<^fTI3F*!G?1I?3yO+D+cRprpv4Qmn_64fsai^l zqodvw7HamADO>?F{-W)@t*x!kD(r`4GmwpY^YKXHzTv6w%({?@#+n+O-_`A|sHB91 zgj?m~6bYy_5Q(?sSfiIuNp^JEm~SyHuI6zi#5JBHa33N%-zs~ zR>~_d`S#_g{aJ~CG67HH<1L(=elUwhefeJW&c1v+Eh9r&;TuD zX=CN-58qd?f8Y)sUN1cE zFA%yzN?KZ4f}ZLIxSK>|1s;Q1M~#k-j`wHZ@G}|TnKmlPNJCwt)HffJi3-0^W@gfr zm6e^b`46a*)d&Vp<*YbkW8-LU<4$;cRBCFfyHSY)!MMiy>WPR+%l7uR9+gVo+53B%FIBGQ_IXM|0IfiH5U(QeLl;852?(2x> zySP!BIPD!a2umOV^~x<9_+lLhjleZ82Ym|+dWK&A20p+w9DQ!yURqofW-{dj$iYD& zAxDXaTKND}qMfqSzx>=f&i%H7Pnv)Nnr=S6(+3m20+fqOO5T1~T54-&YkP?G@}iFT z`}@bIq@;xDz{6no{~BWe{QpOnr$OMK#RJ?=bmZl(Y(vx=zMv? z6puC&o(kcqb6}{G!p{rQ>-owx2vGrXrooc#0LNRg&!{Iu?7uHqa=CfJPXJCPw zKj+@OpzhHY#-As}@km|)G7JI^skO0D$&z`<@|$Rmsd!!;yJYH@2=(AS-}h599+TgE zz@R>s)?#ZL>g!{6h8Bk(p_gpigu7q~$VybN-)mPjH8mdyrUovE)T=599SeC#o9}4h z5HI$aAaII0S&wy1R zoYXQ;8C$`|LB>V>6no~#_%;$ zp5VnaD|%*OTINTK*Qs}FJSQr#)jjmu1$_r-~ zXi2CmLJ+aMh531?i8kT_H65(*w6rut+%gW(2lGV&`FlvmY>FhtrpwsY48sy6$#L@B zAy*6NkzDhqfXfBm3hWCT#C;AZR6)=BuBGL!IT|hDVEh;ag^{i8R1w6L^4!hU_0}`R z0YTasscYB9qq)Kqvns(paVa$z+&e|xtw!~ph5WQ-{p8vP8#_EY77lF*i*@3sFx*-< zfg+`pzkyp`cLU+OySt181g{QWOFsqs{0jY|qWhpF5DLK9^XF!QHjLTD9YAVkq@|IP zQL?~q(eN4eafaZ_1$L&EmNjq7dt~hDV1`m(kM8gBoI6*u8zzy#?Qf!_q~za#!f2kJ z0}Ug6wkUUGB{gVwjrfjoaL=gZ#b3shdrZEbsB#;R&GOGu^|?HWmVOd0HG*S2S1BIGIQl0BssOkkYb46oR$I` zaMV?W5ndS_h^EWk4-eO4guJbV*_!0kiYuq6oCin8e0^pO5?Oue{>y`}Z@av1kSx5N z8=5svndWq?+sDWjlSm=e1J9imZEv)z4tO`j<{ z-b}Cy0Nx#8V`HOtak^EX43UzRwFI$x0(r#%5cd1aTaFL*XBvkLe)y_*f`A-g+A9g9 zj6_96#U5^&9Yhkw2p>TJ@9hP!gm1**Q&DUt*(w!7E7-evU#VDCncU#b9(2Jd<0+9H zHp|kl59dBb;0GL^=#t~tXTna7+EBd+!o-96vqC@SzRkwquQw>A9A)&{kDC4 z$EHCTM@MTkRy9XX@;-f!*7b)vHU61g#noLobvsA3AP0Q!=va0mIr*H|$?;JsVZRnG z#;}a)4V!-N)P{8FOo*#qVbbj;$hmwXS0fTdsu>6|+7mkZE-v{y-zr>KevyehmYaod z-oQ)WzI~ER%$R?)(xwm{9ZlJ2IXNa!g+BAYSN%Fa@2ms{D9No6ukA%FOuc*8!eR%j zB18f$XJKLC<+?Q6Di(=<+1J+>^5~K@8+23m0!OTjrsm69&xv^|^7^vv@maF&73jf+ zkWV8m1I#dHg>>7*#AFz3RKMh1#2B|YW6Mes zN2Xg-D3p^h9I>``sZ)Ra9YS(UioSpJ`}L?`ln0n6+ZlK{JI_ZR{@L(h zPtQ?$FjhA$x-Mg%*$;lbOQ9MuMeEi}w!xV{-fBG|6 zqHY?1L81KowwR1c=yT_g=%u>4y0BtU8;$G;brDXIbp_O6e8;#hxF*QNi0EKuR>cR% z%gdt=gPSuL5)`$3_;lz<8=DE~AKslF9v&QRuo_$uPXqEs-0~v#zxs{G{c0N@VphW} zbjZCeK}Vq{g6L+Y005AIe|QX5^T~z&*JiNckr6-kwgA>o4#a~-RIf464NE{o8eJPe zO2uO^7~Bpb42Q#QMzis~yuV~aR#)6(6U$4{5$tQc_ZX;JVDf|AUyEoV1F6`gDCv(My(F zSn-$h9V3~2`qsdgC&&bc3LQ{{4LSA&;Zyw7B-C*sI2Tj2n^r-s*J=B~Sq$(0&aY)< zGs;{G1fie^6y{&XXw_pdTP;U(k(|4yzTCTMfWfSuN6R{*#}rB6khruT0sDO|`oo70 z4gxV1M7%cq0VKyl;fu^%EC3wa;W5V>WgvAjl3;EqwIdB$R|kjN<-K)0n3R)~vxaMM za9nc0A;=FOK0NtqwthxujAU!|Z-HI>r+vJ+k&L&ucNr3iwB6MelK?yG4GoPDJ+Sti z3Pzm?)qAMkVX%OM2hEzTwA#PFK&GNf9mk@HJGQguhHNcMtDV7900J7vTXq^W8+EkA ztfao|msG(z6HL8()*}U_3YvSXVJ5q(^vPSWv55q&RbcOpTPgURztz<#)_EIVgfG4e zshD-HxFDc}8MWfnqWfB19SQvLX@NHAH=yD60D}>no|)0?*fymCopM#;c!=;P29QcW z>-{O1GPGN61vx)aQ_#xBX5X)1^c?zS#FvK#ut`9XL51Pf9i#o%9nSl=j3(q=yORos z@)5NrMEMRar`A*J*PPHEr-W}jY9AgPOoGhmx6Epd{@QwGW;7kAO`D|x-mXic8tM+r zgE!$U(OhLKBSkF@9wQPC#kAJvxO=i00o3a8PJb+xo=rUA_(UbEHx^MsdXlx*=1vbX z&OsSz0|Mydr}$vVJNZcBS*Sc&Ga3KJBSjy69o-y9^wFQw#y}X0ur;O&jPB4pEkmi< ziV4q?D)*thPG8|K_)Sqzud#9mt;T|aMadW^vboW8^rzZ?hQC?2i8ZllONVQ*ie6DN z4!R~MM@!+Awp7&H-0S@Lsuw)N)XqG4unaoWn;E7rrPL2gP{Usq&`w5S{t3ScTt(Zb z5^M+p67@AzOU$z84;TAge!b!u`vVFj=<5I#{qQ9K5Pfcl*ESEaU&-aIa@7m%e6u#$i!mmo zeIIWqcl}iax8uSbhNA6uS81 zLo#R`iEjE)*@nk-puZgDh0MLF|9+MVHhXKzA;oXdbEBrwfzvHY($_!?`ew`3SMHbr zpZ>FC6{H+rPtosVRSzVU***8pyO|{Ny=qV4mf|Nnn~uFt0^gkNIw8cxFv(S5o#v+> zdeX+9H#~9yiGqsIoQMGf2H|-39^%MwYii zqobphrMgi!CAg$Y2qGS$4`RZWn~`0d)_cm&Ednhh`jcd+iLeov7r>(^i#`7}F4-SH+PxL5^u&lGM#a^1yA4+}VmRnB9cw)qoRV}o%m7K(UPIA0W z$D4Ou4T(Co>9Nstx24tQl%EPRlrm`c_)b%c1H5x5G{DN@f_ddg@cSbIT!m=56hD0s z=I^ifu}`s&ZLj-`ZJ(L`F^{Ff@2k(CAB2__6{Fd)8DTBkRl=YDml5fjS|s~-&V(r5 zMvrm?7b(f*X?`Yp1B0%3#0n7s%F2drDO}Z5OJN$@pGy;u>oRtnq+QHBOAnF`wv&SM z8?4S>JN~cdp)N2gY3*5R*|8Sk5C8nh7)wHJ*ThMb!vhq#D}Ndy+x>(SqmFzIJ( zB+IvivE0u?-P!dZSR>c-L_$YAw&p_Br(3i%a#!;~?-yjg9fe@xIyc!a_r|aRs<2!{ zTtQtNkdsDn|_58;QilH^xbe4?zY zv4xa)&Apm{0vh(SaYKV@R`Ys)=vytb3jQu*KG%aC6@G*c zUS~0xOu-A;eWOG71uy<}dct{55&*jmSWW^nKg3gRx6%$Uu?MRysoDf4!twI0V9*Q;JGldfUye;lNzu~CP0S4N4V#pq zYPJn`>4*IVPB`47{0+-9oo;{M**IT?KTnTw@{H>rU%7b%aXjQ^KPe<--J1=9nqc>P zeWQqBaF*Mxv@dHdJh4j+V|g5~&(&_eI$C_0 z+3!eFC5d|3tEtc3ZJrvB)mfpK#B9U#>@klR@>f38@$u1Jk6zO5zy48z4_)q>+MSA! zob%S6kva-Ee= zz{#KU+cZu`g#P9;^Z}E>^`o# z8`#<(1GlLWdUEaRt~t|_LI?lL_*n1oH>j24^;MKLdAa$|*T)Ne`bmXPRC1#uqYH;_ zt%z{Em8^dWV~QJH)PIqL-x@VVdi8-uY260aK%L4)(I)%@;kuqb@?QDHwQX5;Jp$~bH{1Q z{R2uoTj>`1!NfrB&(LY(N?bloT|qMIP}F_w8xEgB=-DsH@Xje2S3{nnXKg&Y3kCH=1abMw7%2t_!XvCh- zk>RVgt%+o=4u(N3QTKkjAX)4I11mKQP?SD-}P zt69ocGdQLp0#$kj5 zAoOsy0k&RQe1B${(4&@$OBG72R_hLB<9R-F(A3SKU1gF3c8~R`x*>rtv+<&Jzm}kZ z*h4GS+~bLRFy+$qD*Tmre6}yo69c(RmomFrX8@82!Dv&Jxg_Kn?&BK8xczJhU*20)yRw^e_c*kC zYaZ}Rr7QP{5PH%&CqiRb9qg*v*yk2lu4|u`MFFLrYtp~E_$imrLl3{nqMMk2+4{xJ5NEs2lzTZab_XCN;_ZISo6xpmFbv_d&_` zFahWYCrBE$sDUp_$hJu@;%XSVMQha6)vYY{C#V|`%ZK%&k*|jI^Pv6}&~`6P^Opt1 z0F!u67?}1CH3!qyzS&zInhZC736m>o2f?fD9-@5xrZO2 zeEi(9z+Xrq=6*D}v8jn%=j8@$+4T(T&mHJ9DoiTODX6TPkUS@OcwZgBG`oN=O+*m4Zgg*qBXhy1P_LD78svzm(m_Uz=ee_Q zdVqXdt1uw2j;d-rwsD(oh<|Wz%dNn0IyneI6vKS%-=HlOHPojAc+Uty0KQl-;txkm zd7SgvIOs}6Wfo%aKmB%0SB(%fg?9ZV5WD7a(gik90i|R(X|N3y74*sY?hFhb>G=X8ABqIv15t4s_})M0FF?1iVddy-wi-4QgRx1)#0;t2MZRbkS{ zzldazyLuy`?Dl~dFJ5#O3B7)ltVpc$_;ucMI2;80wl-?~kN@+l;H|^R7JGyk9DXo> z=B}?CrE;*B%mGZ!6{KlH!#zSmc9$~4EqH|>o#QmmKI8F|uMb~4_2>N4*%awHx88C1 zj1Az?9RCjSn{N#BN^BbsTY^Y+6DvFHb66N`z2&9_jDQ~;o z@V@T%eYe^@hnvfm(!V}}*kD2cfvXAx_L23jhey{w)jSiG$(4AvaW#>(yW4E#CzXG3 zI)rr;qQCIDx$vZD{WcXW#jksxJYFv>JRv#P^Z?qQbi9|x5R4h_#^HA)3~Y;&FWUM{ zX=rHNwXGdH@E(7i&TKtL3gT|l1*!~Bym0Hw+S12X+>g*ny^}du==XT(AvsBi>0gm1 zeFoXsc%<_WwZuBp`wE1e5H>)S&kK%`0?X3F)`7LwULfuaoK>fmCX>|bcQ19VFH_CE zZR;(`Ghwq{ffI@4np<34yo}8l6jz8zn(R2Nu{rZJ7o1p~?DlNbze3@GaiDagQ`%K^ zam+l$Z1{_o<7T2226-hzDfjSOX=T=xQaihgCiu1BL#nY*Esud_+u1uN8%L>>P=~o7 zV{rGQ@`mZVj?>MdCuL$q)a2pN_~ogR!dzu)v#jUTW(-3Vepwj*v+@0so(_4?*1^cl zu0ZiXRDd0aKQP)?9oV=UnZ+&jZ1$BskLgR3)RW7$Ppw~&>WJkLQOJ-s>JB-i96Fb# zRDaW}CMIUqz%0|t>j);$r9SYVKAh%j&`gMdv-P#g^F0}DMYARG0=YyZXN%c|O( zUc&@tNz@rM=fy^^;ia*tvk1G)m9dV#aw7`eB>|eET$(d9@u5nEZLRT?JbW)ZrOw1H z@Chbyr)#6c;-hW2PU^XZpcOFzgna9uz7xAz4RDhNy_#ak4k9|?W5Y_N+phOxX1j{o zAAs07ZicU`^=_EMOjoc~)cawj-fcbIc0U)ZDILJDI%z6`&;zMSqfZ5zCab_#&tJJ= z&4a8+3hu4f8o}S+e8>(?l`%+@<6slQr6h93Xwfx%lPvXF4Xw8}!k+E2XHJ9SZ13Dh z=R3$zr_+)Ym-1bX^3qc(u$MkI<7e7F5wyZ>`<#_r+!?AE=%Ni^G&f zbaGNFHJ9@D{?211D7xGO5NM~dosVXPh0w$zibg;6gBPm^mk#`+CwIHV=0ZGegO?Ww zw=oLUsn+_Ix0nu+;)yDF7#rJCmTrL$)zYnD3wHwSaIxVjzd@qN4zHoeT6X|t+~&U? zKnI`R!Z_h@CNCLidq?Pbv!i}ul*z?s&YNuHeO6`a`X+z(9-(J2)XTj9XG(giH&tJ^ zM5weQ?8b1w^kblO^}7KRE_}zpY}RfNV(O<+U$t6L?T<+>Wt$iP&refrlckgz3@g~a z;R$4~_(p=!-s%^-(#u!!lFhg5OfwZMc-Ta6Dw_PcT0}aLr6rNjLHQLvy0360EHBwW z?nuc^>$;!0`luTZonD2fTP{1ZYs`SYQ`ic&FIM_y#4#}0km%{Xow5t* z70{HU2HENMs+w>2(N#1#V127CC4zWc>6n?DvL)%^#nEWc9timEJCSGK`2JSI#IJY$ z;d$PFWIP={op8biC^sdw12<{JO*UV)Sw6Ra^;k??e5_z_>EJ{CS{h9z|DL%~L{F^p zcJ&MJ1JFmGhK4xS?pGx}RQ?oOD!v{)?mg(!5S+*w?X^n52hj-fLr-9O%ck4AY~vQe zvnGXi8bnH7x~IrK!W!U}N4J9?sdY9`2zl$X@e#)5xECb6Y0z<4#5*d^;$r;c$Bz%J ziw8sBQ7h9%ZBbOsu{7m7Y6;*6;C$M&1aK;-pO+i=OR+kbuTT{ip7m0j65dJU{UkG;6fTti136JYP4 zyAU(~82U@i{lqJgl9G~dMwWuYSAO4Zq-@kGg;pgrfgeCVdZ|Z`)w*Zvl?eu|TpqTm zYWy1DXMXx3Cq@I#U;|IFm@OWZYmevb5X8gF_ok6c!qXKdbX z`-I^iu5Ir-K^wl9S^kB*7@}+ex{jiryLfHgveKYBEDZ}jEREpMCBq4ykbm7&a{ zrQRP;xY4iK|0PBF-glW6He#vg;jGi>{IAe;d-Q8lIoI<;n*4M@5NR)xrIK-TpV#Pi z6XoOf#X}CCM#B@Fe4J7y7-`tj2=GJf|GM~aqlqjAY1n|;EVZFthWLfgO5~^WJ3oRA z<@ySIutr5VC(7XF_P>`+RzUK1+C&S$OoVh4=TX-qIRhXuv)3<(*`xD?DTJhqdmerd8*{bA5^qO) zzhhHVaaP}gtYFJG+2lQODM`#TZc;CK(HuWn|0SSOI{!#Ip)d7o_tMpTToK8IQ@_PN z?*az1+uqgHm6&_2^Lvu%aG#d4HseSPRC#@|v&rce0PJA@d8^J5t$exKvh?%V|3|9(arQ*bf16oVXq{ z0G*YM{2g?)nVzDGP+!yKR0T00QvCV|fezI>|ES>zxOP8^f8o!Y*D}F#056?c45==g z>W4#*7>Fg-B&K5f6-04DY@?s+NX5XBK#0o;c86+GGIrpM6;7JXZHt?r>)Wee1;{Wq z=c;Y}GEpD*D2VSXo2-dv>}^$o9{?ZU1OyJ076A|f?U8?LqkJ3bi~I%d(kw8)!H|5% z9$Q~QQcEY{Ww-cLkQSw4U$aZuJrx0gRWIe*Nap1?a(pY;J&iqmZ(shu9;EFLPx)<4Ht8RCr$Pn|p{tL6k(1u02FZ2nq#lo93P~vZ4_!3l#{xM6;-NXYMb~HY0b>-aF3h z-qm~8d;XmBxWDgbe!p|hJ->4aNf||e5+0)oBtQ(0NPr|j>Q54hhcx0L*=+V!BDxX4 z4FIxJY~n2dIFL@KHx>$opG|FJJVXd_CxB0;7zAHAuInx+l}bmwm1BU|w*3_|cb^YH z0311a@}w9T82GoQcNCDWuC6P}JG35=S|9w}w7FA&?d?_uT-{D2VAdI0-^V7acl zn26T;)b|k4uR;Bo`EdZtjQU+f^m?5>vjFTg>zR4IWm$nX>h{e18h{0-0T8Wn9A~pH zkZd-)E&FAd)Yudd-I$2(1#p!C;8iK*vtdFJLR<(y$MRC|xXiq_TrTJP`}_Y2!&AZl z@)3aD0OlHoZdOXI3KL3KSJ(7%xvb}gTa0l(Pp8xQLZR@-M4?O=h>kDYwmXJlEq?CH4 z@Gaw+XgfMOW?7b{J!P@smHW%(a!-GM|1V8KS*MiJt0Y1LQiZaJnLh?_iDBqArPL#J zpsXb#znMR9q7_1124Dw(>y2>_x~|((DwU2k31wt82^B~c%3@~L^U6%aptq%z4}}S( zv$Jz{rBeBjh!z^-ehpx`l=8=Bq3HJBtwqzTjNh6rgt)o7B1|_7+AgJhAWSH^TyCz0 z0w8C2WigdXttb|YgUvz-9f&qS2yt6=W2Bc$Z+Txzd4HI5N;aEqB_a()7~_^ImCEu% zhYo$;3={)w;~O*6oy>=3v)Q|(X8^E>3v-Se`<_!J( z-m~=UNaG$7^bb#^-xDClznK7;2oOzgDuqW)%cLy3aRn9nPBpF|YIY|;jDIjvK!gw* z0bI$nB(*><*|L>)+t z!_IU%{cz9`VVJPu0z_;6otf7vr2_LYVStGfkec4zQc5#N69$WsF(M0uh?X$(O8^%6 zsQnYbN^goWEFzHx($dm$;MA#8F9LYZPcRYfaUAE4uwX>qLmbB$$-~;Vy;P@30kr#w zAGR#(red+UKMXLD_K+G7EmY@YhK7dpAx==9r|uzkqp)HFq$a3(13{-O=9?nVbfnn` zl-L2$qT1Wr=cH08?JedB{yr(?l179FwTT@N+qPFSv-S`(Z93-sb39;T10bt^6*4qM1I+IUH3Q<=^IJN3=p+3BI_Xlo(7=vIT!l~{>`$irNv^g7$%HJdq^Fj8>E!JNu@C0MA<`3eLuLa z`(UY5`XUVBv0HWxgEwU|nKgZVeSc3Tj5vhMQD$DPlsaoy$)gl9`rzlWngK%99s_nB&(m4;z^@@2O{F#(bQsUKL0ha?_S b-$VWbV@o`c&hhfF00000NkvXXu0mjfW3Jm~ literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/network.png b/examples/mini-program-example/src/assets/api/network.png new file mode 100644 index 0000000000000000000000000000000000000000..d7313b12c47bd41e84b6cb6c624b6190b017ff50 GIT binary patch literal 3559 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/openapi.png b/examples/mini-program-example/src/assets/api/openapi.png new file mode 100644 index 0000000000000000000000000000000000000000..da04b5702e8ca1f07d5712c3e3b207217f22a5cf GIT binary patch literal 2411 zcmV-x36%DUP)Px;B}qg5lGzDEy!3xEVhOXPW=g#gHw~5w*3TXVnu3If_ckVH_ zd2jOe@#ejIXJ%)KnVU3C=AL`bcfNP-&$;(3LbuIf0K0t5WuQw)A|kqkbP35`B)Spu zQi_mOt5%)f+uOU6na^hCihmpi1@i!|AR#IK3m6{mFpBCN#}-%=&~%( zzVBa&h~JLMJV!*QH|wbFxCJ2u5pS1LZq5Q31i?kj{IjGCGvADe-zB0y*gEMVH!p;g z%jGl1#>SqBEtJU!87HD*PJ}dCT%%#z`uh5A92pszb#XXPw(W!nA+`X(Vj}uvWLyaG zP5{^$2gA&pl~T7i0vH6rL(Kf190x`K;6@@E%X8GWzpaD_A>~s#8N_T3=y|ztCjrQu2!qNT=mE0 zTP8#Z@l<%^o`VAsKOm+2LHx&ZxqQm(?Ciq;;5&dmFS$ktAua}hAEr&ALZNVGd_i}x zb6m6~LWB_JobaNrg^0eCvYH0Q_x(2@;th?ya%{|_g+gKN*x1;=GZx+oGY5(OiNl8v zzin!2>X0iLEfJD(aEk1oNJRh515+xMRx|S^W_}F-yaE7DM#Kqb-i3%#N_l^tj&LfP zl)#LSxBH3c{Wjy1GEGIuz`(#+Jv}`pb2Zs%y&>ZHQcANGcC3XFHn)p{nmtd%-B6dw9(ag zJLOZ7L8Ja^BD&kfjx!-b2oo75LZWs^YyGBbwfaXF!|j$G7#LXD)6+8v04KzBKTbp! zxY%lj5VLleOX8^AO+;6_7@aR!-}kp8;#G0|p63l#DwW-~Hk}Aby9V?;Z%w6AdCb<} ze99Gz#S1*oOJdnZMAzHebtU8$X09h~%`RNF;F^*1eg9EJTpb(xBoV#YR+keYLI`s| zaZ#k4nQu@^eaY5XC**wJ--w9cO4v$GBGd4=5;7-eG3mKd>ZhG>)Ye9^SnLmX!TJyv zoYsVdhcT14)SKsdD=L-B0b8)0kn8X7U$S`d;=h?YnOG#>93`1~7_15Leg6_ftlw_{ zzzh*B%`>nN{X&Q*0pN`>+jkPtCL1g+ge0#4_YhIp#z?1Sgb?P#T@tf<9}%s$!C_5^ z5aK!jxFe?YrA)|I0pOb0lzBucRo@J0+jz1;-nTTH9X=mr#o;4w*QfWYI9l!KBNJOT{<^QT#6Jn}; z3WY-btpxyT0ATJR%w4L{vy+*hsMTu26B85WywZ{8`~F7|@rn?KdD;6106fLa56sTa zet&Xu(rm%j&6*G)L@xjwwa`3+h}-jC<}CDNiU=Xh4rj7%ksYgl?g%HWNlBS*n;xk|s^%#DjadH+)6>%@ z?ccxuNM01=^`}flS1h2lE>){lvvs>q88gE7{q?5EEwQlfM#Qzr>YoN%^g~LidLd1o z(^>sN5Nu}VTU)^LfKqC0mW|v92}yYn5#O6obcmUEdY*THnfm}>1pvIL5VsxEC9>=L z{^f}HmE^$;0IaZ>(g~#$wM*`HRV|*a^er%@i9BJ*0)uw)lpkgod}7PhQwUV%x_1;*D

s7*2R?zA~7gfR7} zAGHOQBexF#z7}o$Ve)w?A`UY15=4AjYb^_fLS@gMJtpyVYE2R1Vj*0AOfj!n-Rpl1 z;i4myHO0C25|O!4pSL#egha^0LK{=}W&Xv>DYBe1C#K$X zdU|?!Z*TANTCKJm5$n&6k=)UvN2grxL)*dDf)LUU;Pa)UOGtv*E+Jh)vL{3?6H_j2d;M(Y3o002ovPDHLkV1m?8ifaG> literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/payment.png b/examples/mini-program-example/src/assets/api/payment.png new file mode 100644 index 0000000000000000000000000000000000000000..e6ecf00625e52372680290900039abe8cc26f0d1 GIT binary patch literal 913 zcmV;C18)3@P)Px&OG!jQRCr$Pn>}b0K@`W|Tkx)k9D*N}h+q*=IgWc9f+(2SSO|)ssT33;7O4aa zJ7a4TD`r#?vT_N#%R4ykc5i0( z|9<;_J0G`;Ag>q!6drK`0>pBJ01+VlFB0MqamWxHQm@xXs@3X2W*#YGuM`BqFGT#L zwf;Rwf8UgGUH2k0Uk8BtpoR+ayT{Crj4^l8^rix7Hk-4Ec(WjZW|GOw&x|qWk}4$v zA);3Ra4OSL3RV~q?FkVk}w5Ap)eVi$ZB<9A^R%_afqQ5CqHNCjf+>f5YwW_hrX%!tF(^b@<Z{N| zT-Tjv=IKlp0C=ypK9W|a&_IZYGs0Lc&disMF%OgK79Gd~0JxMDN~KcS*>1OglnzK3 zPTQaq?##fBxNLJBxN=) zWn9-i&CD;NN3ieo&2;pf6(*ts0MG$|?Gb6QJGJdwyGNPXo-MWz@wQTGA!qSrmP16( z0pM)3Vh{v}JkR^s+qdp%2>U7=sr&^17Bj2JSB14Zn7fm}m&TYgv5c_w645>Y_?oXc zHcicLt@XFQK*Ar1=okRJ-830FXqcH@V~nHaj1a~$%V=- n6d^z?*aAd=^v^$Wh{fk0`-IG6_K%U-00000NkvXXu0mjf*j=1s literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/qq.png b/examples/mini-program-example/src/assets/api/qq.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5700df4bd4c6b4bcfd5552bb84cffc5fdf0f55 GIT binary patch literal 2568 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 LNkvXXu0mjfJm~rC literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/swan.png b/examples/mini-program-example/src/assets/api/swan.png new file mode 100644 index 0000000000000000000000000000000000000000..c8917b87cea57f5dfa4bcbf2a0587c6df58e63be GIT binary patch literal 1823 zcmV+)2jKXLP)Px**-1n}RCr$PTYZQXRTMvGo+}7JAM|Na87Z-4?7L@nx3xn3LlpYZi0qpR@}rf$ z%%Cq&Bl3^@h{F8Xpn}X&5VeFvL!)ea?wmVI$r82nA(drO5ew3;GdJ!sBeUasZ|2T> zZ}pG4FzjRJo^$X0y>ssQopbL)$lC}6Fvnvg0y!Wti^u`V0ja)8x^v1w;rj)3U5ZN+}IQ%?%MXFl(ihyK7cf zK|wM*lW8AoLs{vqMY@&Yyz#jehzQ4zH-JjAdq*yFoW?9w@00^J6V{%=`jvZUv*Vi|Y zMqipfbpu2QaU~*d1c2$$ft6BgnwpwcmrA9d(@dyRpZ50lONNGq79--5u|E5hQuC#h z{k7;1W$OY+;3A*LCbZS}{WY%ZcGqK~p^jp)*kM_g2IY>ZUPQd19xhZfAVP>`h`2Pi z=;xSuMLmIt>ms6O0pR7BH7=740s#wIY2ncu8sQfXz0=wSfpih**U zlyXyA9r1pd0U@Gx0QfShuuv#maq!^5AF@s+i(Fe<+XT<^zK_XX$IPWH`Z591(a~|v z;Nak=0B}t>sPFsdyRQ33mPynqQ!EzGvn=aqM9-nIW5-VI?(Y7}RCgvoh)7416QLCm zr#p_b-*oVL_P1?&no??CL}wQ>&o>>z7?3g%Wf3#KVLGr$|F*WaNxtuo_dM^Y>$-iF zWQnK~0M>@@vqT+*)nq`vv7y)A2_RcU-(+pHf zx!45#VzJn)lo}cs7&zSD-~V44St5!9l4zAeh}9vZ)d`{FIJc%5OZQ0)NJ~r0<%L2a z45|N&88c?G2_4s9SeB*D`Dy_8*7yBR*L6QhnrKW;cc075TdT=wnt%NG@vi~kEZxuZ zya~O%y+0<6Wdw*2VqTD|=&W?7lyY{O0m42+^eO;69+>_xv#nFMcBvnbss$iAZ$w)2?z&m{R&fCwRO)|*qH><}|gPEuU%JrQX(xy$ps<%L3F zigp747(~Pe9LIUTf=me!J;!l$f1^f3dLJ2P(>fSPDL+b5kQR{nh`1q8wuPDROi~5&-;bS=Q}6Jw1B^vws2+*JNRwTAqkr0f1p3 zl~T*4l;IjGPCpeOwry|FJ9VJNXmblkCL#ua-mcTSqj#ace+Q5wuYOgovI2fE8&85)ln&t(vD0(JxA=J}IRxG#j-> z0+QKfbaDm&4ahX`%H1(!hrrw%JyY-@C zbbVLARff-QOj^S>RUt&Cup55U%zUvneE>Mn=yE|6uttX6OvEezB&6$lBi@)LWSdw; z43NeUv#iuTFn!HGrs;`hq5N6FXef0LVtVG}P6Jb|^p|zf)#MtQ-06X9P5&FQ=xRC} zp8nTbAR0|TMx{Wc7gTErakM}gl@em$HmQrunyxnzfJ)~;qgrGRHrK>sh%$#pb;qVs zelx1a5P{q1+dZa8~UaE>&Qq0UR-IceL{90xlm;B;x1z*aqc2@uPAUazJA6<$&aXRQIUdLUIeqEyO75wjVZ{&LZ=y6^x1 N002ovPDHLkV1nCbSaARV literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/api/taro.png b/examples/mini-program-example/src/assets/api/taro.png new file mode 100644 index 0000000000000000000000000000000000000000..85e79b551f578e294c902f37fdac26a84d6ea0b1 GIT binary patch literal 373 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/component/canvas.png b/examples/mini-program-example/src/assets/component/canvas.png new file mode 100644 index 0000000000000000000000000000000000000000..21b38cb5814b4b0674a57eadca9b7df7d2d5ed58 GIT binary patch literal 1480 zcmV;(1vmPMP)Px)f=NU{RCodHm~CiVRTzMmkG7cn$ShJ2W<|F@{t+3ZX-b3LbV}(_&b>Jw@B5thob#T$YL!ZgfFhs>C<2OrBA^H;0*ZhlU;zR)3+QN=inX=1 z>*MkGCOY&ZKIFUM;o*BS2XJOSlw!HQzW(Of+1c&b_CPEaTQ|?f1rD*`#k>ZVeH3p1 zz#f~;c7Gy~aHI_Ro#(SixU8(Kzpt1b?h{JO2J zEj}MY=5xsaX=!P3jEs!z#<&*|H!@|n+m9kg1_lO3GmT!XToOR)>gsNso16O>uc#Me z@rKUw^736QiHnOFpY1=(1F5O0X$HhGjPn3u6nSiDXz0sq#^&?Ro=>HfTF2}4?gPeY z^z$HR91h2=dSHm1mOOSF8XBBaQ&S%T<56sg;}v^}Ck}~0dXwcmq_wrRY;tn)R0_r< zUeRn641sB>J%nSkVtjo3Ghl4SD=s;m&b#~j`y+b2BD1|^JcRhc9*ss%2n-B}l5aE` zhJZ;&aG8)+WSKqVD2hFj@{A2^p5GTk(V}gt;@%Sz6PuaI^(g)~0n&NO!x%EA)exf3 zm$;Pe1jaP|1PQc$(Ar17^^3BH5E}$AUSfl_nTlZ0405Qds_NCQuCA%f|8kYNlLWbw z$o(S@jOM|?!LD3&jd*W35N7irv-twbVT0{F`4>n6xeZ8n$$KQihIl(OJxw`h^85Yk zh(N!kf(ID8@vg%;D;xBOp-TqOXa|PeC$3_^{_5)L_Rh}ESXx&MtYNk##P(w7aqUb?*J(3gh!Tc*2r%|w;A`}GmDu3ET&^v%4wPZ)UJDF~AwFL~gBL`h z$H}%KKXNbehQr~@+3Fen&X8l5b$%y`y@Diw@n9|(qCCsw0wDHDnUv1|drJKRcPGVd z)VqSG-D?&M8D2M#Kp=2EGk%g8cVNH)V4O+Wl{2fXtn8rf7;V^ce6^Vs#e;bNy1WC% z6D$?khfGVlfy~Uzyoa{eVc@x@rlte=Xx`J)^AAR!lDgy@(`_X9VsGi-*-d|+0Qb}M ze`e*nfZ*C&QFIIP7fa>wrM^aG8im1Oc?L-G8-|p-yStwytK+{>m&^6EyfZr$41^o! zYK(bH6vnlm)AChH+VD*?3523wJOj8l(ceM&kN$RqLZLsUY<4Ob2sh3)l$E9O73*Ar zFinY#@;4e>L{_te)&k>w$}ajl!BXkb)R}>m3j)Haatn$-g~V7Y&lIW;?UUa+iCtu= zY~p#mqM|~|%a#fPf&qt_QK!tRo_huD)63#XA;9yl-rn9nmW>7jYX-uxScl?G%;sgc z+r3|p^7N4gA^~D35{Z1Ir#~awY6e2g@v;mIlp}0>Q9VikBOJ;9MyLZ_;u9&W=Ndx8uMB)y-V+-CfO`MR7PEFF!^kMP>Lfr8@n%RJI zY`NovViQ^t2ysUxN<54tI2zw9wnEF@|B^t6J9gk1*RWiAEO|6)B)lXL`r9sj0_AOu zeOt16KF96_Ec=CTpXcxrOB$(^Rs9 iKoL*`6oLOcfqwy-A`ls@Q1y}k0000M`_YZ{sc$b^^i98J`(-Wj^TPctf!kyF*S*{M^QKvU z4bL9)#U1Wvxvod#RAhb$QR}`n$1G*z*>$B#js-?d988QZ(n=gG0=XOxm)=kK^>q9E z|ND|x>Dc|A7Mavr>0WyNtpBYE!80wR7F4SLH~#SNedQ@aMS0V833iI4tL-B{1X}JYD@< J);T3K0RVkAq3!?x literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/component/form.png b/examples/mini-program-example/src/assets/component/form.png new file mode 100644 index 0000000000000000000000000000000000000000..a47bd243b6b9ecf9f00732219d9886380ebc258b GIT binary patch literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXo1|%(nCvO5$jKx9jP7LeL$-D$|=6Jd|hEy=V zy|GcSK|z4U;oc$*r`J=JGPrmpnK~}2K6=iP(EcK56Ni9;LjwaN6AOruP~8}@SK)ch z_G{;^?v(x1p|SN^cG>l0u~R6jpvr&jZtyGp!Dw}r@rVc91O&rDe?jnD(|ddUN*N4= fknCtUz|JD~B}Rhlq*!(V(47pPu6{1-oD!M0}4E>X;f08#H zD@FN`^xwpo5wtxm1Ki$+42 z-~zcVdn_|D_kG!TAm{a(gQp(bmn_@n+9`JN$~)=XUxNjE+}}%0&fK#2Z>rJEJ@fsR z-=FPwy!&k0=c4VmYa80SMchmt{z}fuPQPxqk?yEn4{#?Cp!7@+oJ8#Q=>uxpdWYM2ZH-?`lW798)b(|Pk_^^%pz-1pb4=KXm42k(@9epwgyO<>ykv}oq8nDZT9PyBbh zytwYAgPFJB{9o1ktPX4p-jea|b&u_o<@Ynqc`mYV+`i~!$6m9X+SwtxFJ*ThPthyn z;R`o;u;b9j-3i;9Pn~*pZtc6XbEYj8a=CLw?+Nejoz5kT?7nHA<1R09WAJ3Ua(v&_ zNe?*IJXD^eS@rN^#=%qOcfSj_o%!>An{R7%l12xMM+3{hriPsrrDE*?zgMK>P5hdA z(CvS*+OBdtIPzQB9BWBy%t(b)M1LJqp!2QuQtbp8qO?d{jvwNEEPV$u7> zUF-boMIXqDRmq2z)P^1F>YdNT^y*RQgMMdz7LIG0q8!r_=5ko-RQ8MSX&W6d+X*vh31Ph8z_ozmwGx_Ds+{p6U<-kc@V^qyq#}-|3 zxx4$xl7l6yGcW$~QSUo8M@&?wWJUFKnXi%SOm(B?KRtYTSytddpt>@xwjUW$TlOtH z@@&hBuN!w*ez9Bi;@1=JFk`Xzy$8#+oSgs4TXamzGjqGHUUjv{S9s!?2~iWZo?i|$@g1QiMlp00i_>zopr0Qji*l>h($ literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/component/map.png b/examples/mini-program-example/src/assets/component/map.png new file mode 100644 index 0000000000000000000000000000000000000000..e205568ba8c7b1e05d880b25ab17cc9b1f675b92 GIT binary patch literal 2408 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 LNkvXXu0mjfTVVr? literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/component/nav.png b/examples/mini-program-example/src/assets/component/nav.png new file mode 100644 index 0000000000000000000000000000000000000000..24e15b307d4eda324be166363005818ca7196fc1 GIT binary patch literal 1233 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXo1|%(nCvO5$jKx9jP7LeL$-HD>VCnXBaSW+o zd^_DYBPLYjxb@^2hMcCyUM|vQ&Jyb?ovitUdD4_du3UqFi%mfXLpfhMEpl><+3~`O zt0^qTq~+0}OF>>!d9+qONXoD~!@fmOWvSjTMo(V_M|VZTi7Nm8UEY~kQG9>)F6}Qi z7JI+X{cQjI-tXDv#rfrLHXP@WU{p?E>1hx&U~)TvpY!2_V2ACQo?W|keOt43ZEedp zgK4*J-TGxM)*ZXt-oVt<^oxOM)2w^*nU>?2-yEwT~@`Pk!&` z=lAbv_wSl3HJQoDkC`@Z(eHcj78-i>wy?0Ux$~pcciXmYTR!9Q^c&WxjxuKoE#>;Z z2Yrr?zw`6ay2sh9&7Jki5+Zw=WY?@;pTFe8=@-8@?on%~Z4Yf(ZD?g>^)2Xg`mW4Z zXMd@3SZWLi;AW=Y$ z7P<5J+mfQ1uQjD@zos_-JtwQvr`28!Kg9RBJfA&p-oCDH=J%whO`mQ(=l=CYuP4r* zB_8=>lE3o&q)RK_7hU;od(=?6 z!6zy&eEs)(&z_vkU8de9tupyr+5ODZj?PleF0@QdeVjV)_#HvkC);im{Arc#z5U_` z%Xjg3F3a1EpU%nd{86HPP3NLW(JAlT>N_(;v!|^&`ZPzpaBhG?PP4qqqswp0lj2Xy z?>(GRy783yRLYUTZ-7pwf-*L3gP zR`F&YD9m=uSbuefRJ7qO#9!zo3(mYu8(|@Vfx3X55Y$qAf9b8Rv^s;^Jdt z?{dEludr`5H8^3Kw@UJsZsuaS*li{I9T)G3e3QKGcuUcWo9FloxNaZMj{DxaapT6{ zU9Pq-lJA5RZ(+aiGCT0>{H*Nk_sns(f3j>`yz1b#%I3wEU$#kcy0EgecG{VRf7jBr zdNp(Q?A8VsyZrg{=ZVp(5%Xtx+uGX3>+0#fvhQ5A zQ#kr~-O+PPF28(yGpEdOhWOWYmI=-)LtcqznJlWEW!881sNN>uzTWc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0d=ry1 z^FV@{U|qhxR-SpqC5d^-sh%#jN= zAx`t4dQ)(_#R#WfeV}9XLD7p8-7q0w8Uiuli5JL$C;!wuV45!iCho3zZU-3{m|l9i zIEGZ*dNbYIBP3Af*m;h?Zm+f`ua>xgl+`oM8Uq{;O0aoywl<#L;Oev0NL)ASiqi{6 zZq*o8&sH~QPgY$Yf!i=l>ppb!i|mg!z3GXa}obb3W&!dyIL_a~AL8 z@oSjQc`SxEuOZL9745uHq(7rWqS*2WkJLfOcjD_dl(H5`I{liYH?wTo zb=&)WbDxL`XMNpbd!)$1sV(tt!HRzED9i72+}%Dz-iqa2)RM!QQ?PFa=hwoc&sdVD zIoH0Ln0|A5dUN0rF{ATF;>mMrfEwfOxtMU^sCZEv?4|F_{M14tZG~Jo`;!%kC^#Cc9@#> z-BsMCS?MQn*s}U(f^UaP7-F9A*&qCDf37=F_`P|r zj(&sqn%id$qkpWu{mJ=E_f3obudaPRdul)LQ7+x|Hn2MS>Q&okS8d;(zRPd$S3K_B zo7!i2bAc4|nl-mi&yD*pDx{={9W9z5z&R0yewKfXZeV0s!W_Hddz*#bP0 Hl+XkK$68~Q literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/component/view.png b/examples/mini-program-example/src/assets/component/view.png new file mode 100644 index 0000000000000000000000000000000000000000..03c900331dae39f1b0fdf1bc8104557eb8b24bd9 GIT binary patch literal 653 zcmeAS@N?(olHy`uVBq!ia0vp^E+EXo1|%(nCvO5$jKx9jP7LeL$-HD>U~>0#aSW+o zd^_9TkI7NwSY)`6M$VR?k8Dy}P8k=j-8vVyx3T?z@Cinn##Ys!59%Rq`3o|Zw(_d5 zT>Bny;)gEFjHxM-`+e2UZ2z2AzW=^mg4#?^m5K=roN#ocsloiE=BJ-EY8*|IrYL9L zpC_{U(DQpX=U02|%rTp-|3aB%Nr1+iZ@>StH*Rb_sF%t3Nl~>s;M&C{2X+KW2-T=R z<*`oqvnuoKzk>+@V*STIy;0R%zO3CeI3t#c|Euv-uerO~oNHGuFR`j!_;q6V+WtNP zfy^5hk7aHBWy4kU_VNd_FIm54vmD9!UtY@881ARQ!o=cW-n;H2m zXPtI@>g>G7c7LWzF8;AjfTNLtal#n^CPpTOnTn|HI^q0%$N8#*?|mdCJMJ7@8M)qc z!j7{=>HB_JGOuYok~__M`Td!Re*#%uSez6b7*vc~92yur(oV=Y#F;LO(0S*$#`qG* z=Th9M9XdbuUvKbRUc8q3>DdJFSFcvyemm`Icg5NT%P;&|H-E3uF5490=GaS2kMDl} zo3l4AfA+qb;EcU@^Xk)#W=bc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU%v{0TQqR!T z+}y-mN5ROz&{W^RSl`${*T~q)#K6kLNC66zfVLH-q*(>IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr7I$IMft0d=ry1 z^FV@{U|qhxR-SpqC5d^-sh%#jN*Q ziwjQkpn6kqy2aHMr(S)aWAs7Mixk~3Az&H;G2w|9$bl#S)I4CCF9IfR#`d&t3=E99 zo-U3d6}R5pKJUxqD02LxY%*)rr}Oi6cquGo*csW(o53!&P&9-2R-?>92BEV>Pg`D` zlsb0*v|o}@`(25Pt<&Fo*GV!x{9tEoeR_gVhoRV&^0$r*910B#OhBR}+Ij=Z0cb-McXfAbTP#wpF=kN8)=l1e$a=u|M9fP;nu10#!o1H;YMy*{iR zk7M8GJN&w1)K|V!XBE`p%%A2RyHt2T^;)*_37y{WuC+c#q9gtJUw$?DZ}5bD=Jdpr z_zK-umzn0h4wn4#sOGMj^P4RVbCoN#UL7{OcdDu?r0vwM(zXpNf*|HGFnO4NRXxD4 X{+!`%hS~|AKt+CqWJ*=k){+u=}iO) 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/tab/api_select.png b/examples/mini-program-example/src/assets/tab/api_select.png new file mode 100644 index 0000000000000000000000000000000000000000..269d726af8a47b5da5b75f7690d6dce74b30066a GIT binary patch literal 4305 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/tab/component.png b/examples/mini-program-example/src/assets/tab/component.png new file mode 100644 index 0000000000000000000000000000000000000000..b5917ae7a601804213d34934a850755cae8e7ec5 GIT binary patch literal 10129 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/tab/component_select.png b/examples/mini-program-example/src/assets/tab/component_select.png new file mode 100644 index 0000000000000000000000000000000000000000..f79d9954bc1ade731d1cc00ca331c5b9e546b7b8 GIT binary patch literal 9569 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 literal 0 HcmV?d00001 diff --git a/examples/mini-program-example/src/assets/tab/home_select.png b/examples/mini-program-example/src/assets/tab/home_select.png new file mode 100644 index 0000000000000000000000000000000000000000..57d426fe49282e69f6158fe9339a6b74345dc392 GIT binary patch literal 5114 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 + textareaControl: Array + hiddenNum: Number +} + +export default class Index extends React.Component { + state = { + inputData: [], + textareaControl: [], + hiddenNum: 0, + } + componentDidMount(): void { + const buttonList = this.props.buttonList + const inputData: Array = [] + const textareaControl: Array = [] + buttonList.forEach((item) => { + if (item['inputData']) { + inputData.push(item.inputData) + } else { + inputData.push(undefined) + } + textareaControl.push(true) + }) + this.setState({ + inputData, + }) + } + changeData = (e, apiIndex) => { + const { inputData } = this.state + try { + inputData[apiIndex] = JSON.parse(e.detail.value) + } catch (err) { + inputData[apiIndex] = e.detail.value + } + this.setState({ + inputData, + }) + } + submitData = (data, apiItem, apiIndex) => { + if (apiItem.func != null) { + if (typeof data == 'string') { + Taro.showToast({ + icon: 'error', + title: '请检查参数格式', + }) + } else if (data == undefined) { + apiItem.func(apiIndex) + } else { + apiItem.func(apiIndex, data) + } + } + } + minusHidden = () => { + const { hiddenNum } = this.state + if (hiddenNum > 0) { + this.setState({ + hiddenNum: hiddenNum - 1, + }) + } else { + Taro.showToast({ + title: '已全部显示', + }) + } + } + addHidden = () => { + const { hiddenNum } = this.state + const btnLength = this.props.buttonList.length + if (hiddenNum < btnLength) { + this.setState({ + hiddenNum: hiddenNum + 1, + }) + } else { + Taro.showToast({ + title: '已全部隐藏', + }) + } + } + hideTextarea = (apiIndex: Number) => { + const { textareaControl } = this.state + textareaControl[apiIndex] = !textareaControl[apiIndex] + this.setState({ + textareaControl, + }) + } + + isAdvancedAPI = (APIName) => { + try { + // @ts-ignore + return asAPIMap.get(APIName) + } catch (err) { + return false + } + } + render() { + const { buttonList } = this.props + const { inputData, textareaControl, hiddenNum } = this.state + return ( + + + 隐藏按钮 + + + - + + {hiddenNum} + + + + + + + {buttonList.map((item, apiIndex) => { + return ( + + {inputData[apiIndex] != undefined ? ( + + + polyline: + + circles: + + polygons: + + + ) + } +} diff --git a/examples/mini-program-example/src/pages/component/map/map.scss b/examples/mini-program-example/src/pages/component/map/map.scss new file mode 100644 index 000000000000..6ff0008d547e --- /dev/null +++ b/examples/mini-program-example/src/pages/component/map/map.scss @@ -0,0 +1,27 @@ +.flex-wrp { + margin-top: 60px; + display: flex; +} +.flex-item { + width: 200px; + height: 300px; + font-size: 26px; +} +.flex-item-V { + margin: 0 auto; + width: 300px; + height: 200px; +} + +.page-section-title { + text-align: center; +} + +.taro-map-container { + display: inline-block; + position: relative; + left: 0; + top: 0; + width: 100%; + object-position: inherit; +} diff --git a/examples/mini-program-example/src/pages/component/match-media/match-media.config.ts b/examples/mini-program-example/src/pages/component/match-media/match-media.config.ts new file mode 100644 index 000000000000..1399075dd433 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/match-media/match-media.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '第二个页面', +}) diff --git a/examples/mini-program-example/src/pages/component/match-media/match-media.scss b/examples/mini-program-example/src/pages/component/match-media/match-media.scss new file mode 100644 index 000000000000..461be2c97024 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/match-media/match-media.scss @@ -0,0 +1,19 @@ +.overlay_black { + background: #0d0d0d; +} + +.overlay_white { + background: #f4f4f4; +} +.customStyle { + background: #8065df; +} + + + +.gridStyle { + width: 1000px; +} + + + diff --git a/examples/mini-program-example/src/pages/component/match-media/match-media.tsx b/examples/mini-program-example/src/pages/component/match-media/match-media.tsx new file mode 100644 index 000000000000..603f6d7d0040 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/match-media/match-media.tsx @@ -0,0 +1,28 @@ +import { View, Image, MatchMedia } from '@tarojs/components' +import { useLoad } from '@tarojs/taro' +import './match-media.scss' +import React from 'react' +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default function PageView() { + useLoad(() => { + console.log('Page loaded.') + }) + + return ( + + +
+ + {' '} + +
+ + + + + +
+ ) +} diff --git a/examples/mini-program-example/src/pages/component/movable-view/movable-view.config.js b/examples/mini-program-example/src/pages/component/movable-view/movable-view.config.js new file mode 100644 index 000000000000..a80e22fff91e --- /dev/null +++ b/examples/mini-program-example/src/pages/component/movable-view/movable-view.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'MovableView和MovableArea组件', +} diff --git a/examples/mini-program-example/src/pages/component/movable-view/movable-view.js b/examples/mini-program-example/src/pages/component/movable-view/movable-view.js new file mode 100644 index 000000000000..9e204b3f3b40 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/movable-view/movable-view.js @@ -0,0 +1,133 @@ +import './movable-view.scss' + +import React from 'react' +import { Button, MovableArea, MovableView, View } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageView extends React.Component { + state = { + x: 0, + y: 0, + scale: 2, + } + + tap = () => { + this.setState({ + x: 30, + y: 30, + }) + } + + tap2 = () => { + this.setState({ + scale: 3, + }) + } + + onChange(e) { + console.log(e.detail) + } + + onScale(e) { + console.log(e.detail) + } + + render() { + return ( + + +
+ + {' '} + +
+ + + movable-view区域小于movable-area + + + text + + + + + + + + + movable-view区域大于movable-area + + + text + + + + + + 只可以横向移动 + + + text + + + + + + 只可以纵向移动 + + + text + + + + + + 可超出边界 + + + text + + + + + + 带有惯性 + + + text + + + + + + 可放缩 + + + text + + + + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/movable-view/movable-view.scss b/examples/mini-program-example/src/pages/component/movable-view/movable-view.scss new file mode 100644 index 000000000000..ced1f46b0acd --- /dev/null +++ b/examples/mini-program-example/src/pages/component/movable-view/movable-view.scss @@ -0,0 +1,46 @@ +.example-body{ + text-align: center; +} + +.movable-view { + display: flex; + align-items: center; + justify-content: center; + height: 50px; + width: 50px; + background: #1AAD19; + color: #fff; +} + +.movable-area { + height: 200px; + width: 200px; + margin: 25px 0px 0 25px; + background-color: #ccc; + overflow: hidden; +} +.max { + width: 300px; + height: 300px; +} +.page-section { + width: 100%; + margin-bottom: 10px; +} + +.page-section-title { + margin-top: 25px; + font-size: 14px; + color: #999999; + margin-bottom: 5px; + padding-left: 15px; + padding-right: 15px; +} + +.page-section-title.first { + margin-top: 0; +} +.btn-area { + margin-top: 10px; + padding-bottom: 50px; +} diff --git a/examples/mini-program-example/src/pages/component/navigator/navigator.config.js b/examples/mini-program-example/src/pages/component/navigator/navigator.config.js new file mode 100644 index 000000000000..dcd052c2f040 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/navigator/navigator.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Navigator组件', +} diff --git a/examples/mini-program-example/src/pages/component/navigator/navigator.js b/examples/mini-program-example/src/pages/component/navigator/navigator.js new file mode 100644 index 000000000000..daa1b96778fe --- /dev/null +++ b/examples/mini-program-example/src/pages/component/navigator/navigator.js @@ -0,0 +1,51 @@ +import './navigator.scss' + +import Taro from '@tarojs/taro' +import React from 'react' + +import { View, Navigator, Text } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageSwitch extends React.Component { + state = {} + + render() { + return ( + + +
+ + {' '} + +
+ + + + {Taro.getEnv() != Taro.ENV_TYPE.WEB && Taro.getEnv() != Taro.ENV_TYPE.HARMONYHYBRID ? ( + + + 跳转到新页面 + + + 在当前页打开 + + + ) : ( + 暂未支持,请使用Taro API + )} + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/navigator/navigator.scss b/examples/mini-program-example/src/pages/component/navigator/navigator.scss new file mode 100644 index 000000000000..dd98af4c271f --- /dev/null +++ b/examples/mini-program-example/src/pages/component/navigator/navigator.scss @@ -0,0 +1,11 @@ +.example-body{ + text-align: center; +} + +.example-body__navigators-item { + height: 80px; + line-height: 80px; + margin: 20px 100px 0; + text-align: center; + border: 1px solid #ccc; +} diff --git a/examples/mini-program-example/src/pages/component/page-container/page-container.config.ts b/examples/mini-program-example/src/pages/component/page-container/page-container.config.ts new file mode 100644 index 000000000000..1399075dd433 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/page-container/page-container.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '第二个页面', +}) diff --git a/examples/mini-program-example/src/pages/component/page-container/page-container.scss b/examples/mini-program-example/src/pages/component/page-container/page-container.scss new file mode 100644 index 000000000000..461be2c97024 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/page-container/page-container.scss @@ -0,0 +1,19 @@ +.overlay_black { + background: #0d0d0d; +} + +.overlay_white { + background: #f4f4f4; +} +.customStyle { + background: #8065df; +} + + + +.gridStyle { + width: 1000px; +} + + + diff --git a/examples/mini-program-example/src/pages/component/page-container/page-container.tsx b/examples/mini-program-example/src/pages/component/page-container/page-container.tsx new file mode 100644 index 000000000000..1110e9488cfe --- /dev/null +++ b/examples/mini-program-example/src/pages/component/page-container/page-container.tsx @@ -0,0 +1,153 @@ +import { View, Text, Button, PageContainer } from '@tarojs/components' +import { useLoad } from '@tarojs/taro' +import './page-container.scss' +import React, { useState } from 'react' +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default function PageView() { + const [container_show, setContainerShow] = useState(false) + const [position, setTransitionPosition] = useState('bottom') + const [round, setRound] = useState(false) + const [overlay, setOverlay] = useState(false) + const [overlayStyle, setOverlayStyle] = useState('overlay_black') + + useLoad(() => { + console.log('Page loaded.') + }) + + return ( + + +
+ + {' '} + +
+ + setContainerShow(false)} + bindbeforeenter={() => { + console.log('==bindbeforeenter==') + }} + bindenter={() => { + console.log('==bindenter==') + }} + bindafterenter={() => { + console.log('==bindafterenter==') + }} + bindbeforeleave={() => { + console.log('==bindbeforeleave==') + }} + bindleave={() => { + console.log('==bindleave==') + }} + bindafterleave={() => { + console.log('==bindafterleave==') + }} + duration={2000} + zIndex={20} + customStyle='customStyle' + > + Hello world! + Hello world! + Hello world! + Hello world! + + + + + 弹出位置 + + + + + + + + + 弹出圆角 + + + + 遮罩层 + + + + + + + + +
+ ) +} diff --git a/examples/mini-program-example/src/pages/component/picker-view/picker-view.config.js b/examples/mini-program-example/src/pages/component/picker-view/picker-view.config.js new file mode 100644 index 000000000000..03270f5b0d6b --- /dev/null +++ b/examples/mini-program-example/src/pages/component/picker-view/picker-view.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'PickerView组件', +} diff --git a/examples/mini-program-example/src/pages/component/picker-view/picker-view.js b/examples/mini-program-example/src/pages/component/picker-view/picker-view.js new file mode 100644 index 000000000000..527ecc795487 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/picker-view/picker-view.js @@ -0,0 +1,82 @@ +import Taro, { Component } from '@tarojs/taro' +import React from 'react' + +import { View, PickerView, PickerViewColumn } from '@tarojs/components' +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class Picks extends React.Component { + constructor() { + super(...arguments) + const date = new Date() + const years = [] + const months = [] + const days = [] + for (let i = 1990; i <= date.getFullYear(); i++) { + years.push(i) + } + for (let i = 1; i <= 12; i++) { + months.push(i) + } + for (let i = 1; i <= 31; i++) { + days.push(i) + } + this.state = { + years: years, + year: date.getFullYear(), + months: months, + month: 2, + days: days, + day: 2, + value: [9999, 1, 1], + } + } + + onChange = (e) => { + const val = e.detail.value + this.setState({ + year: this.state.years[val[0]], + month: this.state.months[val[1]], + day: this.state.days[val[2]], + value: val, + }) + } + + render() { + return ( + + +
+ + {' '} + +
+ + {this.state.year}年{this.state.month}月{this.state.day}日 + + + + {this.state.years.map((item) => { + return {item}年 + })} + + + {this.state.months.map((item) => { + return {item}月 + })} + + + {this.state.days.map((item) => { + return {item}日 + })} + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/picker/picker.config.js b/examples/mini-program-example/src/pages/component/picker/picker.config.js new file mode 100644 index 000000000000..00fadb619186 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/picker/picker.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Picker组件', +} diff --git a/examples/mini-program-example/src/pages/component/picker/picker.js b/examples/mini-program-example/src/pages/component/picker/picker.js new file mode 100644 index 000000000000..0d6caa05c135 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/picker/picker.js @@ -0,0 +1,125 @@ +import './picker.scss' + +import Taro from '@tarojs/taro' +import React from 'react' +import { View, Text, Picker } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PagePicker extends React.Component { + state = { + timeSel: '12:01', + dateSel: '2018-04-22', + selectorValue: 1, + mulitSelectorValues: [0, 0], + selector: ['美国', '中国', '巴西', '日本'], + multiSelector: [ + ['饭', '粥', '粉'], + ['猪肉', '牛肉'], + ], + } + + handleChange = (e) => { + this.setState({ + selectorValue: e.detail.value, + }) + } + + handleMulitChange = (e) => { + const values = e.detail.value.map((item, index) => { + return this.state.multiSelector[index][item] + }) + this.setState({ + mulitSelectorValues: e.detail.value, + }) + } + + handleColumnchange = (e) => { + console.log(e.detail) + } + + handleTimeChange = (e) => { + this.setState({ + timeSel: e.detail.value, + }) + } + + handleDateChange = (e) => { + const val = e.detail.value + const dateSel = Array.isArray(val) ? val.join('-') : val + this.setState({ dateSel }) + } + + render() { + const { selector, multiSelector, selectorValue, mulitSelectorValues, timeSel, dateSel } = this.state + return ( + +
+ + {' '} + + + + + 普通选择器 + + + + 当前选择:{selector[selectorValue]} + + + + {Taro.getEnv() !== Taro.ENV_TYPE.ALIPAY ? ( + + + 多行选择器 + + + + + 当前选择:{' '} + {`${this.state.multiSelector[0][mulitSelectorValues[0]]}, ${ + this.state.multiSelector[1][mulitSelectorValues[1]] + }`} + + + + + ) : ( + + + 支付宝小程序暂不支持多列选择器 + + + )} + + + 时间选择器 + + + + 当前选择:{timeSel} + + + + + + 日期选择器 + + + + 当前选择:{dateSel} + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/picker/picker.scss b/examples/mini-program-example/src/pages/component/picker/picker.scss new file mode 100644 index 000000000000..953c842a08df --- /dev/null +++ b/examples/mini-program-example/src/pages/component/picker/picker.scss @@ -0,0 +1,5 @@ +.picker{ + position: relative; + padding: 15px 30px; + background-color: #FFFFFF; +} \ No newline at end of file diff --git a/examples/mini-program-example/src/pages/component/progress/progress.config.js b/examples/mini-program-example/src/pages/component/progress/progress.config.js new file mode 100644 index 000000000000..a05dc9d8175c --- /dev/null +++ b/examples/mini-program-example/src/pages/component/progress/progress.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Progress组件', +} diff --git a/examples/mini-program-example/src/pages/component/progress/progress.js b/examples/mini-program-example/src/pages/component/progress/progress.js new file mode 100644 index 000000000000..eb2531b98e56 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/progress/progress.js @@ -0,0 +1,84 @@ +import './progress.scss' +import React from 'react' +import { View, Progress, Button } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageView extends React.Component { + constructor() { + super(...arguments) + this._timmer = null + } + + state = { + progress: 0, + } + + handleStart = () => { + if (this._timmer || this.state.progress > 100) return + this._timmer = setInterval(() => { + const value = this.state.progress + 2 + if (value > 100) { + return this.handleStop() + } + this.setState({ + progress: value, + }) + }, 100) + } + + handleStop = () => { + if (this._timmer) { + clearInterval(this._timmer) + this._timmer = null + } + } + + handleReset = () => { + this.handleStop() + this.setState({ + progress: 0, + }) + } + + render() { + const { progress } = this.state + return ( + + +
+ + {' '} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/progress/progress.scss b/examples/mini-program-example/src/pages/component/progress/progress.scss new file mode 100644 index 000000000000..e33741f4ecd4 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/progress/progress.scss @@ -0,0 +1,5 @@ +.example-progress { + font-size: 32px; + position: relative; + margin-bottom: 80px; +} \ No newline at end of file diff --git a/examples/mini-program-example/src/pages/component/radio-group/radio-group.config.ts b/examples/mini-program-example/src/pages/component/radio-group/radio-group.config.ts new file mode 100644 index 000000000000..1399075dd433 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/radio-group/radio-group.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '第二个页面', +}) diff --git a/examples/mini-program-example/src/pages/component/radio-group/radio-group.scss b/examples/mini-program-example/src/pages/component/radio-group/radio-group.scss new file mode 100644 index 000000000000..198f1bcdd141 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/radio-group/radio-group.scss @@ -0,0 +1,46 @@ + +.furit-multiple-selected { + left: 3px; + top: 3px; + width: 14px; + height: 14px; + background: #1aad19; +} + +.furit-multiple-normal { + left: 3px; + top: 3px; + width: 12px; + height: 12px; + stroke-width: 2; + border-color:#1aad19; + fill: #fcfff4; + border-style: solid; +} + +.furit-selected { + left: 3px; + top: 3px; + width: 14px; + height: 14px; + background: #1aad19; + border-radius: 50%; +} + +.furit-normal { + left: 3px; + top: 3px; + width: 12px; + height: 12px; + stroke-width: 2; + border-color:#1aad19; + fill: #fcfff4; + border-radius: 50%; + border-style:solid; +} + +.furit-item { + display: flex; + flex-direction: row; + align-content: center; +} diff --git a/examples/mini-program-example/src/pages/component/radio-group/radio-group.tsx b/examples/mini-program-example/src/pages/component/radio-group/radio-group.tsx new file mode 100644 index 000000000000..0a1f45bd27e5 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/radio-group/radio-group.tsx @@ -0,0 +1,59 @@ +import { View, Image, Text, RadioGroup, Radio, Label } from '@tarojs/components' +import { useLoad } from '@tarojs/taro' +import './radio-group.scss' +import React, { useState } from 'react' +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +const furits = [ + { + key: 'apple', + name: '苹果', + }, + { + key: 'banana', + name: '香蕉', + }, + { + key: 'peach', + name: '桃子', + }, +] +export default function PageView() { + useLoad(() => { + console.log('Page loaded.') + }) + + let [singleSelectedFurits, setSingleSelectedFurits] = useState(null) + + return ( + + +
+ + {' '} + +
+ + { + setSingleSelectedFurits(event.detail.value) + }} + > +

单选:

+ {furits.map((item) => { + let checked = singleSelectedFurits == item.key + return ( +
+ +
+ +
+ ) + })} +
+
+
+ ) +} diff --git a/examples/mini-program-example/src/pages/component/radio/radio.config.js b/examples/mini-program-example/src/pages/component/radio/radio.config.js new file mode 100644 index 000000000000..d4cfe62ecbab --- /dev/null +++ b/examples/mini-program-example/src/pages/component/radio/radio.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Radio组件', +} diff --git a/examples/mini-program-example/src/pages/component/radio/radio.js b/examples/mini-program-example/src/pages/component/radio/radio.js new file mode 100644 index 000000000000..0e8eaad9864c --- /dev/null +++ b/examples/mini-program-example/src/pages/component/radio/radio.js @@ -0,0 +1,106 @@ +import './radio.scss' +import React from 'react' +import { Component } from '@tarojs/taro' +import { View, Text, Radio, Label, RadioGroup } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageRadio extends React.Component { + state = { + isChecked: false, + selectValue: '中国', + list: [ + { + value: '美国', + text: '美国', + checked: false, + }, + { + value: '中国', + text: '中国', + checked: true, + }, + { + value: '巴西', + text: '巴西', + checked: false, + }, + { + value: '日本', + text: '日本', + checked: false, + }, + { + value: '英国', + text: '英国', + checked: false, + }, + { + value: '法国', + text: '法国', + checked: false, + }, + ], + } + + radioChange = (e) => { + const list = this.state.list.map((item) => { + item.checked = item.value == e.detail.value + return item + }) + this.setState({ + list, + selectValue: e.detail.value, + }) + } + + render() { + return ( + + +
+ + {' '} + +
+ + + + 默认样式 + + + + 选中 + + + 未选中 + + + + + + 推荐展示样式 + + + 选中的值是: {this.state.selectValue} + + + {this.state.list.map((item, i) => { + return ( + + ) + })} + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/radio/radio.scss b/examples/mini-program-example/src/pages/component/radio/radio.scss new file mode 100644 index 000000000000..f991fd1ffcca --- /dev/null +++ b/examples/mini-program-example/src/pages/component/radio/radio.scss @@ -0,0 +1,54 @@ +.components-page__body { + padding: 0; + .example-body{ + text-align: center; + } +} + +.example-body__radios { + position: relative; + padding: 0px 15px; + background-color: #FFFFFF; + &::before { + content: " "; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1px solid #e5e5e5; + color: #e5e5e5; + } + &::after { + content: " "; + position: absolute; + left: 0; + bottom: 0; + right: 0; + height: 1px; + border-top: 1px solid #e5e5e5; + color: #e5e5e5; + } + &-item { + position: relative; + display: flex; + padding: 20px 15px; + &:not(:first-child) { + &::before { + content: ""; + position: absolute; + left: 0; + top: 0; + right: 0; + height: 1px; + border-top: 1px solid #e5e5e5; + color: #e5e5e5; + left: 15px; + } + } + } +} + +.example-body__select-box { + margin: 20px 0; +} \ No newline at end of file diff --git a/examples/mini-program-example/src/pages/component/root-portal/root-portal.config.ts b/examples/mini-program-example/src/pages/component/root-portal/root-portal.config.ts new file mode 100644 index 000000000000..1399075dd433 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/root-portal/root-portal.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '第二个页面', +}) diff --git a/examples/mini-program-example/src/pages/component/root-portal/root-portal.scss b/examples/mini-program-example/src/pages/component/root-portal/root-portal.scss new file mode 100644 index 000000000000..461be2c97024 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/root-portal/root-portal.scss @@ -0,0 +1,19 @@ +.overlay_black { + background: #0d0d0d; +} + +.overlay_white { + background: #f4f4f4; +} +.customStyle { + background: #8065df; +} + + + +.gridStyle { + width: 1000px; +} + + + diff --git a/examples/mini-program-example/src/pages/component/root-portal/root-portal.tsx b/examples/mini-program-example/src/pages/component/root-portal/root-portal.tsx new file mode 100644 index 000000000000..7a1406c892ac --- /dev/null +++ b/examples/mini-program-example/src/pages/component/root-portal/root-portal.tsx @@ -0,0 +1,39 @@ +import { View, Text, RootPortal } from '@tarojs/components' +import { useLoad } from '@tarojs/taro' +import './root-portal.scss' +import React from 'react' +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default function PageView() { + useLoad(() => { + console.log('Page loaded.') + }) + + return ( + + +
+ + {' '} + +
+ + Hello RootPortal! + Hello RootPortal! + +
+ ) +} diff --git a/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.config.js b/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.config.js new file mode 100644 index 000000000000..7e4aebdeed19 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'ScrollView组件', +} diff --git a/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.js b/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.js new file mode 100644 index 000000000000..455fd617fe6c --- /dev/null +++ b/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.js @@ -0,0 +1,52 @@ +import './scroll-view.scss' +import React from 'react' +import { View, Text, ScrollView, Button } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageView extends React.Component { + render() { + return ( + + +
+ + {' '} + +
+ + + + Horizontal 横向滚动 + + + + + + + + + + + + + Vertical 纵向滚动 + + + + + + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.scss b/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.scss new file mode 100644 index 000000000000..7e2431248cbc --- /dev/null +++ b/examples/mini-program-example/src/pages/component/scroll-view/scroll-view.scss @@ -0,0 +1,24 @@ +/*postcss-pxtransform rn eject enable*/ +.scroll-view { + .example-body__scroll-view { + &--H { + white-space: nowrap; + .example-body__scroll-view-item { + display: inline-block; + width: 100%; + background-color: #0bb20c; + margin: 5px; + } + } + &--V { + height: 300px; + } + .example-body__scroll-view-item { + height: 300px; + background-color: #0bb20c; + margin: 5px; + } + } +} + +/*postcss-pxtransform rn eject disable*/ diff --git a/examples/mini-program-example/src/pages/component/share-element/share-element.config.ts b/examples/mini-program-example/src/pages/component/share-element/share-element.config.ts new file mode 100644 index 000000000000..e9d3a5c067ac --- /dev/null +++ b/examples/mini-program-example/src/pages/component/share-element/share-element.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: 'ShareElement', +}) diff --git a/examples/mini-program-example/src/pages/component/share-element/share-element.scss b/examples/mini-program-example/src/pages/component/share-element/share-element.scss new file mode 100644 index 000000000000..461be2c97024 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/share-element/share-element.scss @@ -0,0 +1,19 @@ +.overlay_black { + background: #0d0d0d; +} + +.overlay_white { + background: #f4f4f4; +} +.customStyle { + background: #8065df; +} + + + +.gridStyle { + width: 1000px; +} + + + diff --git a/examples/mini-program-example/src/pages/component/share-element/share-element.tsx b/examples/mini-program-example/src/pages/component/share-element/share-element.tsx new file mode 100644 index 000000000000..1f947390b636 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/share-element/share-element.tsx @@ -0,0 +1,32 @@ +import { View, Text, Button, PageContainer, ShareElement } from '@tarojs/components' +import { useLoad } from '@tarojs/taro' +import './share-element.scss' +import React, { useState } from 'react' +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default function PageView() { + const [container_show, setContainerShow] = useState(false) + const [position, setTransitionPosition] = useState('bottom') + const [round, setRound] = useState(false) + const [overlay, setOverlay] = useState(false) + const [overlayStyle, setOverlayStyle] = useState('overlay_black') + + useLoad(() => { + console.log('Page loaded.') + }) + + return ( + + +
+ + {' '} + +
+ + ShareElement动画正在开发中…… + +
+ ) +} diff --git a/examples/mini-program-example/src/pages/component/slider/slider.config.js b/examples/mini-program-example/src/pages/component/slider/slider.config.js new file mode 100644 index 000000000000..052314569641 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/slider/slider.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Slider组件', +} diff --git a/examples/mini-program-example/src/pages/component/slider/slider.js b/examples/mini-program-example/src/pages/component/slider/slider.js new file mode 100644 index 000000000000..86a9734fe425 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/slider/slider.js @@ -0,0 +1,98 @@ +import React from 'react' +import { View, Button, Text, Slider } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageSlider extends React.Component { + state = { + value: 50, + } + + setValue = () => { + const value = Math.floor(Math.random() * 100) + console.log(value) + this.setState({ + value, + }) + } + + handleChaning = (e) => {} + + handleChange = (e) => {} + + render() { + return ( + + +
+ + {' '} + +
+ + + + 设置step + + + + + + + + + 显示当前的value + + + + + + + + + 设置最小/最大值 + + + + + + + + + UI设置 + + + + + + + + + 数据绑定 + + + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.config.ts b/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.config.ts new file mode 100644 index 000000000000..1399075dd433 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '第二个页面', +}) diff --git a/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.scss b/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.scss new file mode 100644 index 000000000000..461be2c97024 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.scss @@ -0,0 +1,19 @@ +.overlay_black { + background: #0d0d0d; +} + +.overlay_white { + background: #f4f4f4; +} +.customStyle { + background: #8065df; +} + + + +.gridStyle { + width: 1000px; +} + + + diff --git a/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.tsx b/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.tsx new file mode 100644 index 000000000000..0f064cfb8200 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/sticky-header/sticky-header.tsx @@ -0,0 +1,46 @@ +import { View, StickyHeader, StickySection, CoverImage } from '@tarojs/components' +import { useLoad } from '@tarojs/taro' +import './sticky-header.scss' +import React from 'react' +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default function PageView() { + useLoad(() => { + console.log('Page loaded.') + }) + + return ( + + +
+ + {' '} + +
+ + 我是吸顶容器 + + + + + + +
+ ) +} diff --git a/examples/mini-program-example/src/pages/component/swiper/swiper.config.js b/examples/mini-program-example/src/pages/component/swiper/swiper.config.js new file mode 100644 index 000000000000..476ffe05dba2 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/swiper/swiper.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Swiper组件', +} diff --git a/examples/mini-program-example/src/pages/component/swiper/swiper.js b/examples/mini-program-example/src/pages/component/swiper/swiper.js new file mode 100644 index 000000000000..c378ef66ae5a --- /dev/null +++ b/examples/mini-program-example/src/pages/component/swiper/swiper.js @@ -0,0 +1,217 @@ +import './swiper.scss' +import React from 'react' + +import { Component } from '@tarojs/taro' +import { View, Text, Swiper, SwiperItem, Switch, Slider } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageView extends React.Component { + constructor() { + super(...arguments) + this.state = { + current: 1, + duration: 500, + interval: 5000, + isCircular: true, + verticalIsCircular: true, + isAutoplay: false, + verticalIsAutoplay: false, + hasIndicatorDots: true, + verticalHasIndicatorDots: true, + } + } + + setAutoPlay = (e) => { + this.setState({ + isAutoplay: e.detail.value, + }) + } + + setVerticalAutoPlay = (e) => { + this.setState({ + verticalIsAutoplay: e.detail.value, + }) + } + + setCircular = (e) => { + this.setState({ + isCircular: e.detail.value, + }) + } + + setVerticalCircular = (e) => { + this.setState({ + verticalIsCircular: e.detail.value, + }) + } + + setIndicatorDots = (e) => { + this.setState({ + hasIndicatorDots: e.detail.value, + }) + } + + setVerticalIndicatorDots = (e) => { + this.setState({ + verticalHasIndicatorDots: e.detail.value, + }) + } + + setInterval = (e) => { + this.setState({ + interval: e.detail.value, + }) + } + + setDuration = (e) => { + console.log(this) + this.setState({ + duration: e.detail.value, + }) + } + + render() { + const { + current, + isAutoplay, + duration, + isCircular, + interval, + hasIndicatorDots, + verticalIsCircular, + verticalHasIndicatorDots, + verticalIsAutoplay, + } = this.state + return ( + + +
+ + {' '} + +
+ + + + Swiper 横向滑动 + + + + + + + + + + + + + + + + 指示点 + + + + 自动播放 + + + + 循环播放 + + + + + + + 幻灯片切换时长(ms) + + + + + + + + 自动播放间隔时长(ms) + + + + + + + + + + + Swiper 纵向滑动 + + + + + + + + + + + + + + + + + 指示点 + + + + 自动播放 + + + + 循环播放 + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/swiper/swiper.scss b/examples/mini-program-example/src/pages/component/swiper/swiper.scss new file mode 100644 index 000000000000..7005b674a24a --- /dev/null +++ b/examples/mini-program-example/src/pages/component/swiper/swiper.scss @@ -0,0 +1,62 @@ +.components-page__body { + &.swiper { + padding: 0; + } + .switch-list { + position: relative; + padding: 0 15px; + font-size: 30px; + background-color: #FFFFFF; + &__item { + position: relative; + display: flex; + padding: 10px 0; + &:not(:first-child) { + &::before { + content: ""; + position: absolute; + left: 15px; + right: -15px; + top: 0; + height: 1px; + border-top: 1px solid #e5e5e5; + color: #e5e5e5; + } + } + } + &__text { + display: flex; + flex: 1; + align-items: center; + padding-left: 15px; + } + } + .slider-list { + margin-top: 80px; + padding: 0 40px; + &__item { + margin-bottom: 40px; + &-header { + font-size: 28px; + color: #999999; + text-align: center; + margin-bottom: 15px; + } + &-body {} + } + } +} +.demo-text { + &-1 { + height: 150PX; + background-color: #0bb20c; + } + &-2 { + height: 150PX; + background-color: #4F7DE2; + } + &-3 { + height: 150PX; + background-color: #ce3c39; + } +} diff --git a/examples/mini-program-example/src/pages/component/switch/switch.config.js b/examples/mini-program-example/src/pages/component/switch/switch.config.js new file mode 100644 index 000000000000..306ffb24a2fb --- /dev/null +++ b/examples/mini-program-example/src/pages/component/switch/switch.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Switch组件', +} diff --git a/examples/mini-program-example/src/pages/component/switch/switch.js b/examples/mini-program-example/src/pages/component/switch/switch.js new file mode 100644 index 000000000000..3255bed58be9 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/switch/switch.js @@ -0,0 +1,66 @@ +import './switch.scss' +import React from 'react' +import { View, Text, Switch } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageSwitch extends React.Component { + state = { + isChecked: true, + } + + setIsChecked = (e) => { + const { detail } = e + this.setState({ + isChecked: detail.value, + }) + } + + render() { + return ( + +
+ + {' '} + + + + + 静态展示 + + + + 关闭 + + + + 开启中 + + + + 更换颜色 + + + + CheckBox形式 + + + + + + + 数据绑定 + + + + {this.state.isChecked ? '开启' : '关闭'} + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/switch/switch.scss b/examples/mini-program-example/src/pages/component/switch/switch.scss new file mode 100644 index 000000000000..ec6cd7ad0db2 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/switch/switch.scss @@ -0,0 +1,28 @@ +.switch-list { + position: relative; + padding: 0 15px; + background-color: #FFFFFF; + &__item { + position: relative; + display: flex; + padding: 10px 0; + &:not(:first-child) { + &::before { + content: ""; + position: absolute; + left: 15px; + right: -15px; + top: 0; + height: 1px; + border-top: 1px solid #e5e5e5; + color: #e5e5e5; + } + } + } + &__text { + display: flex; + flex: 1; + align-items: center; + padding-left: 15px; + } +} \ No newline at end of file diff --git a/examples/mini-program-example/src/pages/component/text/text.config.js b/examples/mini-program-example/src/pages/component/text/text.config.js new file mode 100644 index 000000000000..d00c6ad73a17 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/text/text.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Text组件', +} diff --git a/examples/mini-program-example/src/pages/component/text/text.js b/examples/mini-program-example/src/pages/component/text/text.js new file mode 100644 index 000000000000..8fdeacf21801 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/text/text.js @@ -0,0 +1,62 @@ +import './text.scss' +import React from 'react' +import { View, Text } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageView extends React.Component { + constructor() { + super(...arguments) + } + + render() { + return ( + + +
+ + {' '} + +
+ + + + H5、小程序通用 + + + + 可选择的文字 + + + 不可选择的文字 + + + + + + 仅工作在小程序 + + + + 不支持多 空格文字 + + + 多 空格文字(ensp) + + + 多 空格文字(nbsp) + + + 不解码文字> + + + 解码文字> + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/text/text.scss b/examples/mini-program-example/src/pages/component/text/text.scss new file mode 100644 index 000000000000..23089cff12ca --- /dev/null +++ b/examples/mini-program-example/src/pages/component/text/text.scss @@ -0,0 +1,7 @@ +.example-body{ + &__text{ + font-size: 36px; + text-align: center; + margin-bottom: 20px; + } +} \ No newline at end of file diff --git a/examples/mini-program-example/src/pages/component/textarea/textarea.config.js b/examples/mini-program-example/src/pages/component/textarea/textarea.config.js new file mode 100644 index 000000000000..f15fe74db5da --- /dev/null +++ b/examples/mini-program-example/src/pages/component/textarea/textarea.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Textare组件', +} diff --git a/examples/mini-program-example/src/pages/component/textarea/textarea.js b/examples/mini-program-example/src/pages/component/textarea/textarea.js new file mode 100644 index 000000000000..4d6a1d0ea438 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/textarea/textarea.js @@ -0,0 +1,78 @@ +import './textarea.scss' + +import React from 'react' +import { View, Text, Textarea, Button } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageTextarea extends React.Component { + state = { + value: '初始值', + } + + handleClick = () => { + this.setState({ + value: '点击了按钮', + }) + } + + blur = () => { + console.log('blur') + } + + focus = () => { + console.log('focus') + } + + input = (e) => { + console.log(e) + this.setState({ + value: e.target.value, + }) + } + + render() { + return ( + + +
+ + {' '} + +
+ + + + 输入区域高度自适应,不会出现滚动条 + + + + + + + + + + + + 这是一个可以自动聚焦的textarea + + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/textarea/textarea.scss b/examples/mini-program-example/src/pages/component/textarea/textarea.scss new file mode 100644 index 000000000000..1aac714778da --- /dev/null +++ b/examples/mini-program-example/src/pages/component/textarea/textarea.scss @@ -0,0 +1,6 @@ +.components-page__body{ + padding: 0; + .example-body__button { + text-align: center; +} +} \ No newline at end of file diff --git a/examples/mini-program-example/src/pages/component/video/video.config.js b/examples/mini-program-example/src/pages/component/video/video.config.js new file mode 100644 index 000000000000..eebc80b4b8c3 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/video/video.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'Video组件', +} diff --git a/examples/mini-program-example/src/pages/component/video/video.js b/examples/mini-program-example/src/pages/component/video/video.js new file mode 100644 index 000000000000..ce535a5bfca1 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/video/video.js @@ -0,0 +1,37 @@ +import './video.scss' +import React from 'react' +import { View, Video } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageView extends React.Component { + render() { + return ( + + +
+ + {' '} + +
+ + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/video/video.scss b/examples/mini-program-example/src/pages/component/video/video.scss new file mode 100644 index 000000000000..dc354861f094 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/video/video.scss @@ -0,0 +1,3 @@ +.example-body{ + text-align: center; +} \ No newline at end of file diff --git a/examples/mini-program-example/src/pages/component/view/view.config.js b/examples/mini-program-example/src/pages/component/view/view.config.js new file mode 100644 index 000000000000..17cd1b0a9c2f --- /dev/null +++ b/examples/mini-program-example/src/pages/component/view/view.config.js @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: 'View组件', +} diff --git a/examples/mini-program-example/src/pages/component/view/view.js b/examples/mini-program-example/src/pages/component/view/view.js new file mode 100644 index 000000000000..4f1641f038a7 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/view/view.js @@ -0,0 +1,48 @@ +import './view.scss' + +import React from 'react' +import { View, Text } from '@tarojs/components' + +import Header from '../../../components/head/head' +import ComponentState from '../../../components/component_state/component_state' + +export default class PageView extends React.Component { + render() { + return ( + + +
+ + {' '} + +
+ + + + flex-direction: row 横向布局 + + + + + + + + + + + + flex-direction: column 纵向布局 + + + + + + + + + + +
+ ) + } +} diff --git a/examples/mini-program-example/src/pages/component/view/view.scss b/examples/mini-program-example/src/pages/component/view/view.scss new file mode 100644 index 000000000000..e4dbdd328fa3 --- /dev/null +++ b/examples/mini-program-example/src/pages/component/view/view.scss @@ -0,0 +1,23 @@ +.example{ + margin-bottom: 60px; + &-body{ + &__list{ + display: flex; + &-item{ + flex: auto; + height: 300px; + background-color: #0bb20c; + margin: 5px; + } + } + &__list--vertical{ + width: 200px; + flex-direction: column; + margin-left: auto; + margin-right: auto; + .example-body__list-item{ + flex: 1 1 200px; + } + } + } +} diff --git a/examples/mini-program-example/src/pages/error/index.config.ts b/examples/mini-program-example/src/pages/error/index.config.ts new file mode 100644 index 000000000000..8e4792d0aa4b --- /dev/null +++ b/examples/mini-program-example/src/pages/error/index.config.ts @@ -0,0 +1,3 @@ +export default { + navigationBarTitleText: '页面未找到', +} diff --git a/examples/mini-program-example/src/pages/error/index.scss b/examples/mini-program-example/src/pages/error/index.scss new file mode 100644 index 000000000000..a282368e2e5b --- /dev/null +++ b/examples/mini-program-example/src/pages/error/index.scss @@ -0,0 +1,7 @@ +.error-page { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} diff --git a/examples/mini-program-example/src/pages/error/index.tsx b/examples/mini-program-example/src/pages/error/index.tsx new file mode 100644 index 000000000000..22cadb13615c --- /dev/null +++ b/examples/mini-program-example/src/pages/error/index.tsx @@ -0,0 +1,14 @@ +import React from 'react' +import { View } from '@tarojs/components' +import './index.scss' + +/** + * 页面未找到 + * @returns + */ + +export default class Index extends React.Component { + render() { + return 页面未找到啦 + } +} diff --git a/examples/mini-program-example/src/pages/index/index.config.ts b/examples/mini-program-example/src/pages/index/index.config.ts new file mode 100644 index 000000000000..a7c25c75b76b --- /dev/null +++ b/examples/mini-program-example/src/pages/index/index.config.ts @@ -0,0 +1,3 @@ +export default definePageConfig({ + navigationBarTitleText: '首页', +}) diff --git a/examples/mini-program-example/src/pages/index/index.scss b/examples/mini-program-example/src/pages/index/index.scss new file mode 100644 index 000000000000..20fe3a04711b --- /dev/null +++ b/examples/mini-program-example/src/pages/index/index.scss @@ -0,0 +1,24 @@ +//@import '@tarojs/components-mpharmony/dist/style/components/page-container'; + + +.overlay_black { + background: #0d0d0d; +} + +.overlay_white { + background: #f4f4f4; +} +.customStyle { + background: #8065df; +} + + + +.gridStyle { + width: 1000px; +} + +.buttonStyle { + width: 200px; + margin-top: 100px; +} diff --git a/examples/mini-program-example/src/pages/index/index.tsx b/examples/mini-program-example/src/pages/index/index.tsx new file mode 100644 index 000000000000..135869ac3e75 --- /dev/null +++ b/examples/mini-program-example/src/pages/index/index.tsx @@ -0,0 +1,70 @@ +import { View, Button } from '@tarojs/components' +import Taro, { useLoad, useDidShow } from '@tarojs/taro' +import './index.scss' +import { TestConsole } from '@/util/util' +import nativeApi from "@/util/nativeApi"; + +export default function Index() { + useLoad(() => { + console.log('Page loaded.') + }) + useDidShow(() => { + if (Taro.getCurrentInstance().preloadData) { + TestConsole.consoleSuccess( + '接收来至pages/api/basics/index页面 Taro。preload传递的参数:' + + JSON.stringify(Taro.getCurrentInstance().preloadData) + ) + } + }) + return ( + + + + + + + + ) +} diff --git a/examples/mini-program-example/src/pages/performance/index/index.config.ts b/examples/mini-program-example/src/pages/performance/index/index.config.ts new file mode 100644 index 000000000000..bb4e054d12d8 --- /dev/null +++ b/examples/mini-program-example/src/pages/performance/index/index.config.ts @@ -0,0 +1,7 @@ +export default { + navigationBarTitleText: '性能压测', + enablePullDownRefresh: true, + backgroundTextStyle: 'dark', + onReachBottomDistance: 50, + pageOrientation: 'auto', +} diff --git a/examples/mini-program-example/src/pages/performance/index/index.scss b/examples/mini-program-example/src/pages/performance/index/index.scss new file mode 100644 index 000000000000..42bb2fbda5ef --- /dev/null +++ b/examples/mini-program-example/src/pages/performance/index/index.scss @@ -0,0 +1,15 @@ +@import "@/styles/variables.scss"; + +.test-style { + color: #f5f5f5; + background-color: $color-success; +} + +.callback-content { + display: none; +} + +.performance_result { + font-size: 20px; + margin-top: 5px; +} diff --git a/examples/mini-program-example/src/pages/performance/index/index.tsx b/examples/mini-program-example/src/pages/performance/index/index.tsx new file mode 100644 index 000000000000..84efe0564397 --- /dev/null +++ b/examples/mini-program-example/src/pages/performance/index/index.tsx @@ -0,0 +1,548 @@ +import React from 'react' +import { View, Button, Text } from '@tarojs/components' +// import { TestConsole } from '@/util/util' +import './index.scss' +import Taro from "@tarojs/taro"; + +function methodTime(fun: (endFun: ()=>void)=>void): Promise { + return new Promise((resolve)=>{ + let startTimeTaro: number = Date.now() + fun(()=>{ + const excuteTime = Date.now() - startTimeTaro + resolve(excuteTime) + }) + }) +} + +function taroAndNativeMethodTime(methodName: string, taroFun: (endFun: ()=>void)=>void, nativeFun: (endFun:()=>void)=>void): Promise<{taroTime: number, nativeTime: number, excuteLog: string}>{ + const taroPromise = methodTime(taroFun) + const nativePromise = methodTime(nativeFun) + return Promise.all([taroPromise, nativePromise]).then((result)=>{ + const taroTime = result[0] + const nativeTime = result[1] + const excuteLog = `同步调用${methodName}() 耗时:Taro ${result[0]} ms, Native ${result[1]}ms` + return {taroTime, nativeTime, excuteLog} + }) +} + +function jsFetch(endFun: ()=>void){ + // 定义请求头 + const headers = new Headers(); + headers.append("Content-Type", "application/x-www-form-urlencoded,application/json"); // 替换为实际的访问令牌 + headers.append("scene", '1001'); + headers.append("appCode", '0'); + headers.append("thirdKey", "UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH"); + headers.append("cateCode", ""); + headers.append("version", "2.2"); + headers.append("wxsysinfo", "eyJicmFuZCI6IkhVQVdFSSIsIm1vZGVsIjoiTk9ILUFOMDAiLCJwaXhlbFJhdGlvIjozLjUsInNjcmVlbldpZHRoIjozODQsInNjcmVlbkhlaWdodCI6NzkyLCJ3aW5kb3dXaWR0aCI6Mzg0LCJ3aW5kb3dIZWlnaHQiOjc5Miwic3RhdHVzQmFySGVpZ2h0IjozOSwibGFuZ3VhZ2UiOiJ6aC1IYW5zIiwidmVyc2lvbiI6IjQuMC4xMC4xMCIsInN5c3RlbSI6Ik9wZW5IYXJtb255LTQuMC4xMC4xMCIsInBsYXRmb3JtIjoiT3Blbkhhcm1vbnkiLCJmb250U2l6ZVNldHRpbmciOjE2LCJTREtWZXJzaW9uIjoiMTAiLCJiZW5jaG1hcmtMZXZlbCI6LTEsImFsYnVtQXV0aG9yaXplZCI6ZmFsc2UsImNhbWVyYUF1dGhvcmaserwefsdgesryhcvbiOmZhbHNlLCJtaWNyb3Bob25lQXV0aG9yaXplZCI6ZmFsc2UsIm5vdGlmaWNhdGlvbkF1dGhvcml6ZWQiOnRydWUsInBob25lQ2FsZW5kYXJBdXRob3JpemVkIjpmYWxzZSwiYmx1ZXRvb3RoRW5hYmxlZCI6dHJ1ZSwibG9jYXRpb25FbmFibGVkIjpmYWxzZSwid2lmaUVuYWJsZerteyrbdfdserytrhbdfgdLCJoZWlnaHQiOjc1MywibGVmdCI6MCwicmlnaHQiOjM4NCwidG9wIjozOSwid2lkdGgiOjM4NH0sImxvY2F0aW9uUmVkdWNlZEFjY3VyYWN5Ijp0cnVlLCJ0aGVtZSI6ImxpZ2h0IiwiaG9zdCI6eyJhcHBJZCI6ImNvbS53dWJhLmxpZmVfQkxQYzZzTlIyNFhpSGFmZExXako4UnErbS9rckNxVXdwV3Bqam1jRGZTRkZKMkNDQlNZTHFOUlBiZmdCeXFlYkl2emw0Q0tKZ2ZQbnBjaTN3VE9leElZPSJ9LCJlbmFibGVEZWJ1ZyI6dHJ1ZSwiZGV2aWNlT3JpZW50YXRpb24iOiJxx3J0cmFpdCJ9"); + headers.append("listName", "bj"); + headers.append("content-type", "application/json"); + headers.append("idxx", "B41CF5FA70F3DD19B1D87389CF045C8A1614CBEE645A9174BDDFDF1265A56129"); + headers.append("Cookie", "PPU=\"\";idxx=sdfergdshrthfbscaswqr;sessionid=sdddgerhfgjntfyjvzserweagergsderty;"); + headers.append("accuracy", ""); + headers.append("geo", ""); + headers.append("abtest", ""); + + // 发起GET请求 + fetch('http://10.253.108.182:9999/api/pressure/feed?app=sdfwef&lon=&lat=&session=sdfwefwefsgrhrjgjtyjkyukyuksdfxsddr×tamp=170442018xx28&mediauid=dfghrhgfjyukhmgertdfbvdfhrtyrtdfg&devidmd5=IMEI&utm_source=xxun&spm=u-2h6kyt1yf988m1ww31.wx_mjh_feed_zhaogongzuo&brand=HUAWEI&os=OpenHarmony&model=NOH-AN00&city=bj&cate=pugongjg&slot=lm_list_template&pn=1&ps=10&url=https%3A%2F%2Fwxzzmp.xx.com%2Flist.shtml%3F-15%3D20&sign=3ccfb781037ed655120d63c4b5e5c391&debug=1', { + method: 'GET', + headers: headers, + }) + .then(response => { + if (!response.ok) { + throw new Error(`Network response was not ok, status: ${response.status}`); + } + return response.json(); + }) + .then(data => { + endFun() + // 在这里处理返回的JSON数据 + // console.log(data); + }) + .catch(error => { + console.error('Error during fetch operation:', error); + }); +} + +export default class Index extends React.Component { + state = { + syncSingleResult: '', + requestSingleResult: '', + requestConcurrentResult: '', + requestHignConcurrentResult: '', + syncResult: '', + requestByJsResult: '' + } + syncSingleTest = ()=>{ + Promise.all([ + methodTime((endFun)=>{ + Taro.getWindowInfo() + endFun() + }), + methodTime((endFun)=>{ + // @ts-ignore + native.getWindowInfo() + endFun() + }), + methodTime((endFun)=>{ + Taro.getScreenBrightness({ + success: function () {endFun()}, + fail: function (){endFun()}, + complete: function () {} + }) + }), + methodTime((endFun)=>{ + // @ts-ignore + native.getScreenBrightness({ + success: function () {endFun()}, + fail: function (){endFun()}, + }) + }) + ]) + .then((result)=>{ + let totalExcuteLog: string[] = [] + totalExcuteLog.push(`同步调用getWindowInfo() 耗时:Taro ${result[0]} ms, Native ${result[1]}ms`) + totalExcuteLog.push(`异步调用getScreenBrightness() 耗时:Taro ${result[2]} ms, Native ${result[3]}ms`) + this.setState({ + syncSingleResult: totalExcuteLog.join('\n') + }) + }) + } + + syncPressureTest = ()=>{ + Promise.all([ + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getWindowInfo', (endFun)=>{Taro.getWindowInfo();endFun()}, (endFun)=>{native.getWindowInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemSetting', (endFun)=>{Taro.getSystemSetting();endFun()}, (endFun)=>{native.getSystemSetting();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppBaseInfo', (endFun)=>{Taro.getAppBaseInfo();endFun()}, (endFun)=>{native.getAppBaseInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppAuthorizeSetting', (endFun)=>{Taro.getAppAuthorizeSetting();endFun()}, (endFun)=>{native.getAppAuthorizeSetting();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getWindowInfo', (endFun)=>{Taro.getWindowInfo();endFun()}, (endFun)=>{native.getWindowInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppBaseInfo', (endFun)=>{Taro.getAppBaseInfo();endFun()}, (endFun)=>{native.getAppBaseInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppAuthorizeSetting', (endFun)=>{Taro.getAppAuthorizeSetting();endFun()}, (endFun)=>{native.getAppAuthorizeSetting();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getWindowInfo', (endFun)=>{Taro.getWindowInfo();endFun()}, (endFun)=>{native.getWindowInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemSetting', (endFun)=>{Taro.getSystemSetting();endFun()}, (endFun)=>{native.getSystemSetting();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppBaseInfo', (endFun)=>{Taro.getAppBaseInfo();endFun()}, (endFun)=>{native.getAppBaseInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppAuthorizeSetting', (endFun)=>{Taro.getAppAuthorizeSetting();endFun()}, (endFun)=>{native.getAppAuthorizeSetting();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getMenuButtonBoundingClientRect', (endFun)=>{Taro.getMenuButtonBoundingClientRect();endFun()}, (endFun)=>{native.getMenuButtonBoundingClientRect();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getWindowInfo', (endFun)=>{Taro.getWindowInfo();endFun()}, (endFun)=>{native.getWindowInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppBaseInfo', (endFun)=>{Taro.getAppBaseInfo();endFun()}, (endFun)=>{native.getAppBaseInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppAuthorizeSetting', (endFun)=>{Taro.getAppAuthorizeSetting();endFun()}, (endFun)=>{native.getAppAuthorizeSetting();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getWindowInfo', (endFun)=>{Taro.getWindowInfo();endFun()}, (endFun)=>{native.getWindowInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppBaseInfo', (endFun)=>{Taro.getAppBaseInfo();endFun()}, (endFun)=>{native.getAppBaseInfo();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getSystemInfoSync', (endFun)=>{Taro.getSystemInfoSync();endFun()}, (endFun)=>{native.getSystemInfoSync();endFun()}), + // @ts-ignore + taroAndNativeMethodTime('getAppAuthorizeSetting', (endFun)=>{Taro.getAppAuthorizeSetting();endFun()}, (endFun)=>{native.getAppAuthorizeSetting();endFun()}), + ]) + .then((result)=>{ + let totalElapsedTimeTaro = 0 + let totalElapsedTimeNative = 0 + const totalExcuteLog: string[] = [] + totalExcuteLog.push('同步方法压测:case构建:冷启动场景,28次同步调用') + result.forEach(({taroTime, nativeTime, excuteLog})=>{ + totalElapsedTimeTaro += taroTime + totalElapsedTimeNative += nativeTime + totalExcuteLog.push(excuteLog) + }) + totalExcuteLog.push(`总计调用 ${result.length}个方法 \n Taro执行总时间 ${totalElapsedTimeTaro} ms,Native执行总时间 ${totalElapsedTimeNative} ms`) + this.setState({ + syncResult: totalExcuteLog.join('\n') + }) + }) + } + requestSingleTest = ()=>{ + Promise.all([ + methodTime((endFun)=>{ + // 日志请求 + Taro.request({ + url: 'http://10.253.108.182:9999/api/pressure/tracklog?wxid=wlfkjwoejfjsdfjowie&uid=slkfjowejfkmofwe&loginUid=undefined&trackURL=%7B%22pagePath%22%3A%22%2Fpages%2Findex%2Findex%22%2C%22refPagePath%22%3A%22%2Fpages%2Fprivacy%2Findex%22%2C%22pageParam%22%3A%22stamp%253DAE%2526%252524taroTimestamp%253D1704420185161%22%2C%22pageType%22%3A%22index%22%2C%22pageName%22%3A%22index%22%2C%22pageInfo%22%3A%22%22%2C%22loadTime%22%3A0%2C%22cateCode%22%3A%22%22%2C%22cate%22%3A%22%22%2C%22xxx_id%22%3A%22%22%2C%22bendiicontype%22%3A%22%22%2C%22currInfoId%22%3A%22%22%2C%22currentCateCode%22%3A%22%22%2C%22scene%22%3A1001%2C%22thirdKey%22%3A%22UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH%22%2C%22area%22%3A%221%22%2C%22openId%22%3A%22B41CF5FA70F3DD19B1D87389CF045C8A1614CBEE645A9174BDDFDF1265A56129%22%2C%22unionId%22%3A%22C8684F4C3107AD7AA8B19B343D75DDF989D120311D18F9F41EB2320F6FFA66BE%22%2C%22pagetype%22%3A%22index%22%2C%22page%22%3A%22%22%2C%22qudao%22%3A%22weixin%22%2C%22url%22%3A%22%2Fpages%2Findex%2Findex%22%2C%22referrer%22%3A%22%2Fpages%2Fprivacy%2Findex%22%2C%22version%22%3A%222.12.12%22%2C%22spm%22%3A%22%22%2C%22utm_source%22%3A%22%22%2C%22launch_source%22%3A%22%22%2C%22from_userid%22%3A%22%22%2C%22hasuserid%22%3A0%7D&v=1.0.0&rand_id=0.9838634192853211&thirdKey=UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH&appCode=0&debug=1', + method: 'GET', + data: {}, + header: { + "Content-Type": "application/x-www-form-urlencoded,application/json", + "scene": 1001, + "appCode": "0", + "thirdKey": "sklfmowejfklsmfoijwfjlksdmgvioejrgkdmv;ojdspjrlmsdsvklnsoidjfpwk", + "cateCode": "", + "version": "2.12.12", + "wxsysinfo": "eyJicmFuZCI6IkhVQVdFSSIsIm1vZGVsIjoiTk9ILUFOMDAiLCJwaXhlbFJhdGlvIjozLjUsInNjcmVlbldpZHRoIjozODQsInNjcmVlbkhlaWdodCI6NzkyLCJ3aW5kb3dXaWR0aCI6Mzg0LCJ3aW5kb3dIZWlnaHQiOjc5Miwic3RhdHVzQmFySGVpZ2h0IjozOSwibGFuZ3VhZ2UiOiJ6aC1IYW5zIiwidmVyc2lvbiI6I23123113161RlbSI6Ik9wZW5IYXJtb255LTQuMC4xMC4xMCIsInBsYXRmb3JtIjoiT3Blbkhhcm1vbnkiLCJmb250U2l6ZVNldHRpbmciOjE2LCJTREtWZXJzaW9uIjoiMTAiLCJiZW5jaG1hcmtMZXZlbCI6LTEsImFsYnVtQXV0aG9yaXplZCI6ZmFsc2UsImNhbWVyYUF1dGhvcml6ZWQiOmZhbHNlLCJsb2NhdGlvbkF1dGhvcml6ZWQisdfwefsdgv3Bob25lQXV0aG9yaXplZCI6ZmFsgwegfwegwegsdgfkF1dGhvcml6ZWQiOnRydWUsInBob25lQ2FsZW5kYXJBdXRob3JpemVkIjpmYWxzZSwiYmx1ZXRvb3RoRW5hYmxlZCI6dHJ1ZSwqwrqwdasdafsdfgdfghergewvcxbcvxcvhdfydid2lmaUVuYWJsZWQiOnRydWUsInNhZmVBcmVhIjp7ImJvdHRvbSI6NzkyLCJoZWlnaHQiOjc1MywibGVmdCI6MCwicmlnaHQiOjM4NCwidG9wIjozOSwid2lkdGgiOjM4NH0sImxvY2F0aW9uUmVkdWNlZEFjY3VyYWN5Ijp0cnVlLCJ0aGVtZSI6ImxpZ2h0IiwisefkwoejfowfwecHBJZCI6ImNvbS53dWJhLmxpZmVfQkxQYzZzTlIyNFhpSGFmZExXako4UnErbS9rckNxVXdwV3Bqam1jRGZTRkZKMkNDQlNZTHFOUlBiZmdCeXFlYkl2emw0Q0tKZ2ZQbnBjaTN3VE9leElZPSJ9LCJlbmFibGVEZWJ1ZyI6dHJ1ZSwiZGV2aWNlT3JpZW50YXRpb24iOiJxx3J0cmFpdCJ9", + "listName": "bj" + }, + fail(res){ + console.log('request fail **** ', res) + endFun() + }, + success(res) { + console.log('request result ***** ', res.data) + endFun() + }, + }) + }), + methodTime((endFun)=>{ + // @ts-ignore 日志请求 + native.request({ + url: 'http://10.253.108.182:9999/api/pressure/tracklog?wxid=wlfkjwoejfjsdfjowie&uid=slkfjowejfkmofwe&loginUid=undefined&trackURL=%7B%22pagePath%22%3A%22%2Fpages%2Findex%2Findex%22%2C%22refPagePath%22%3A%22%2Fpages%2Fprivacy%2Findex%22%2C%22pageParam%22%3A%22stamp%253DAE%2526%252524taroTimestamp%253D1704420185161%22%2C%22pageType%22%3A%22index%22%2C%22pageName%22%3A%22index%22%2C%22pageInfo%22%3A%22%22%2C%22loadTime%22%3A0%2C%22cateCode%22%3A%22%22%2C%22cate%22%3A%22%22%2C%22xxx_id%22%3A%22%22%2C%22bendiicontype%22%3A%22%22%2C%22currInfoId%22%3A%22%22%2C%22currentCateCode%22%3A%22%22%2C%22scene%22%3A1001%2C%22thirdKey%22%3A%22UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH%22%2C%22area%22%3A%221%22%2C%22openId%22%3A%22B41CF5FA70F3DD19B1D87389CF045C8A1614CBEE645A9174BDDFDF1265A56129%22%2C%22unionId%22%3A%22C8684F4C3107AD7AA8B19B343D75DDF989D120311D18F9F41EB2320F6FFA66BE%22%2C%22pagetype%22%3A%22index%22%2C%22page%22%3A%22%22%2C%22qudao%22%3A%22weixin%22%2C%22url%22%3A%22%2Fpages%2Findex%2Findex%22%2C%22referrer%22%3A%22%2Fpages%2Fprivacy%2Findex%22%2C%22version%22%3A%222.12.12%22%2C%22spm%22%3A%22%22%2C%22utm_source%22%3A%22%22%2C%22launch_source%22%3A%22%22%2C%22from_userid%22%3A%22%22%2C%22hasuserid%22%3A0%7D&v=1.0.0&rand_id=0.9838634192853211&thirdKey=UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH&appCode=0&debug=1', + method: 'GET', + data: {}, + header: { + "Content-Type": "application/x-www-form-urlencoded,application/json", + "scene": 1001, + "appCode": "0", + "thirdKey": "sklfmowejfklsmfoijwfjlksdmgvioejrgkdmv;ojdspjrlmsdsvklnsoidjfpwk", + "cateCode": "", + "version": "2.12.12", + "wxsysinfo": "eyJicmFuZCI6IkhVQVdFSSIsIm1vZGVsIjoiTk9ILUFOMDAiLCJwaXhlbFJhdGlvIjozLjUsInNjcmVlbldpZHRoIjozODQsInNjcmVlbkhlaWdodCI6NzkyLCJ3aW5kb3dXaWR0aCI6Mzg0LCJ3aW5kb3dIZWlnaHQiOjc5Miwic3RhdHVzQmFySGVpZ2h0IjozOSwibGFuZ3VhZ2UiOiJ6aC1IYW5zIiwidmVyc2lvbiI6I23123113161RlbSI6Ik9wZW5IYXJtb255LTQuMC4xMC4xMCIsInBsYXRmb3JtIjoiT3Blbkhhcm1vbnkiLCJmb250U2l6ZVNldHRpbmciOjE2LCJTREtWZXJzaW9uIjoiMTAiLCJiZW5jaG1hcmtMZXZlbCI6LTEsImFsYnVtQXV0aG9yaXplZCI6ZmFsc2UsImNhbWVyYUF1dGhvcml6ZWQiOmZhbHNlLCJsb2NhdGlvbkF1dGhvcml6ZWQisdfwefsdgv3Bob25lQXV0aG9yaXplZCI6ZmFsgwegfwegwegsdgfkF1dGhvcml6ZWQiOnRydWUsInBob25lQ2FsZW5kYXJBdXRob3JpemVkIjpmYWxzZSwiYmx1ZXRvb3RoRW5hYmxlZCI6dHJ1ZSwqwrqwdasdafsdfgdfghergewvcxbcvxcvhdfydid2lmaUVuYWJsZWQiOnRydWUsInNhZmVBcmVhIjp7ImJvdHRvbSI6NzkyLCJoZWlnaHQiOjc1MywibGVmdCI6MCwicmlnaHQiOjM4NCwidG9wIjozOSwid2lkdGgiOjM4NH0sImxvY2F0aW9uUmVkdWNlZEFjY3VyYWN5Ijp0cnVlLCJ0aGVtZSI6ImxpZ2h0IiwisefkwoejfowfwecHBJZCI6ImNvbS53dWJhLmxpZmVfQkxQYzZzTlIyNFhpSGFmZExXako4UnErbS9rckNxVXdwV3Bqam1jRGZTRkZKMkNDQlNZTHFOUlBiZmdCeXFlYkl2emw0Q0tKZ2ZQbnBjaTN3VE9leElZPSJ9LCJlbmFibGVEZWJ1ZyI6dHJ1ZSwiZGV2aWNlT3JpZW50YXRpb24iOiJxx3J0cmFpdCJ9", + "listName": "bj" + }, + fail(res){ + console.log('request fail **** ', res) + endFun() + }, + success(res) { + console.log('request result ***** ', res.data) + endFun() + }, + }) + }), + methodTime((endFun)=>{ + // 日志请求 + Taro.request({ + url: 'http://10.253.108.182:9999/api/pressure/feed?app=sdfwef&lon=&lat=&session=sdfwefwefsgrhrjgjtyjkyukyuksdfxsddr×tamp=170442018xx28&mediauid=dfghrhgfjyukhmgertdfbvdfhrtyrtdfg&devidmd5=IMEI&utm_source=xxun&spm=u-2h6kyt1yf988m1ww31.wx_mjh_feed_zhaogongzuo&brand=HUAWEI&os=OpenHarmony&model=NOH-AN00&city=bj&cate=pugongjg&slot=lm_list_template&pn=1&ps=10&url=https%3A%2F%2Fwxzzmp.xx.com%2Flist.shtml%3F-15%3D20&sign=3ccfb781037ed655120d63c4b5e5c391&debug=1', + method: 'GET', + data: {}, + header: { + "Content-Type": "application/x-www-form-urlencoded,application/json", + "scene": 1001, + "appCode": "0", + "thirdKey": "UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH", + "cateCode": "", + "version": 2.2, + "wxsysinfo": "eyJicmFuZCI6IkhVQVdFSSIsIm1vZGVsIjoiTk9ILUFOMDAiLCJwaXhlbFJhdGlvIjozLjUsInNjcmVlbldpZHRoIjozODQsInNjcmVlbkhlaWdodCI6NzkyLCJ3aW5kb3dXaWR0aCI6Mzg0LCJ3aW5kb3dIZWlnaHQiOjc5Miwic3RhdHVzQmFySGVpZ2h0IjozOSwibGFuZ3VhZ2UiOiJ6aC1IYW5zIiwidmVyc2lvbiI6IjQuMC4xMC4xMCIsInN5c3RlbSI6Ik9wZW5IYXJtb255LTQuMC4xMC4xMCIsInBsYXRmb3JtIjoiT3Blbkhhcm1vbnkiLCJmb250U2l6ZVNldHRpbmciOjE2LCJTREtWZXJzaW9uIjoiMTAiLCJiZW5jaG1hcmtMZXZlbCI6LTEsImFsYnVtQXV0aG9yaXplZCI6ZmFsc2UsImNhbWVyYUF1dGhvcmaserwefsdgesryhcvbiOmZhbHNlLCJtaWNyb3Bob25lQXV0aG9yaXplZCI6ZmFsc2UsIm5vdGlmaWNhdGlvbkF1dGhvcml6ZWQiOnRydWUsInBob25lQ2FsZW5kYXJBdXRob3JpemVkIjpmYWxzZSwiYmx1ZXRvb3RoRW5hYmxlZCI6dHJ1ZSwibG9jYXRpb25FbmFibGVkIjpmYWxzZSwid2lmaUVuYWJsZerteyrbdfdserytrhbdfgdLCJoZWlnaHQiOjc1MywibGVmdCI6MCwicmlnaHQiOjM4NCwidG9wIjozOSwid2lkdGgiOjM4NH0sImxvY2F0aW9uUmVkdWNlZEFjY3VyYWN5Ijp0cnVlLCJ0aGVtZSI6ImxpZ2h0IiwiaG9zdCI6eyJhcHBJZCI6ImNvbS53dWJhLmxpZmVfQkxQYzZzTlIyNFhpSGFmZExXako4UnErbS9rckNxVXdwV3Bqam1jRGZTRkZKMkNDQlNZTHFOUlBiZmdCeXFlYkl2emw0Q0tKZ2ZQbnBjaTN3VE9leElZPSJ9LCJlbmFibGVEZWJ1ZyI6dHJ1ZSwiZGV2aWNlT3JpZW50YXRpb24iOiJxx3J0cmFpdCJ9", + "listName": "bj", + "content-type": "application/json", + "idxx": "B41CF5FA70F3DD19B1D87389CF045C8A1614CBEE645A9174BDDFDF1265A56129", + "Cookie": "PPU=\"\";idxx=sdfergdshrthfbscaswqr;sessionid=sdddgerhfgjntfyjvzserweagergsderty;", + "accuracy": "", + "geo": "", + "abtest": "" + }, + fail(res){ + console.log('request fail **** ', res) + endFun() + }, + success(res) { + console.log('request result ***** ', JSON.stringify(res.data)) + endFun() + }, + }) + }), + methodTime((endFun)=>{ + // @ts-ignore 日志请求 + native.request({ + url: 'http://10.253.108.182:9999/api/pressure/feed?app=sdfwef&lon=&lat=&session=sdfwefwefsgrhrjgjtyjkyukyuksdfxsddr×tamp=170442018xx28&mediauid=dfghrhgfjyukhmgertdfbvdfhrtyrtdfg&devidmd5=IMEI&utm_source=xxun&spm=u-2h6kyt1yf988m1ww31.wx_mjh_feed_zhaogongzuo&brand=HUAWEI&os=OpenHarmony&model=NOH-AN00&city=bj&cate=pugongjg&slot=lm_list_template&pn=1&ps=10&url=https%3A%2F%2Fwxzzmp.xx.com%2Flist.shtml%3F-15%3D20&sign=3ccfb781037ed655120d63c4b5e5c391&debug=1', + method: 'GET', + data: {}, + header: { + "Content-Type": "application/x-www-form-urlencoded,application/json", + "scene": 1001, + "appCode": "0", + "thirdKey": "UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH", + "cateCode": "", + "version": 2.2, + "wxsysinfo": "eyJicmFuZCI6IkhVQVdFSSIsIm1vZGVsIjoiTk9ILUFOMDAiLCJwaXhlbFJhdGlvIjozLjUsInNjcmVlbldpZHRoIjozODQsInNjcmVlbkhlaWdodCI6NzkyLCJ3aW5kb3dXaWR0aCI6Mzg0LCJ3aW5kb3dIZWlnaHQiOjc5Miwic3RhdHVzQmFySGVpZ2h0IjozOSwibGFuZ3VhZ2UiOiJ6aC1IYW5zIiwidmVyc2lvbiI6IjQuMC4xMC4xMCIsInN5c3RlbSI6Ik9wZW5IYXJtb255LTQuMC4xMC4xMCIsInBsYXRmb3JtIjoiT3Blbkhhcm1vbnkiLCJmb250U2l6ZVNldHRpbmciOjE2LCJTREtWZXJzaW9uIjoiMTAiLCJiZW5jaG1hcmtMZXZlbCI6LTEsImFsYnVtQXV0aG9yaXplZCI6ZmFsc2UsImNhbWVyYUF1dGhvcmaserwefsdgesryhcvbiOmZhbHNlLCJtaWNyb3Bob25lQXV0aG9yaXplZCI6ZmFsc2UsIm5vdGlmaWNhdGlvbkF1dGhvcml6ZWQiOnRydWUsInBob25lQ2FsZW5kYXJBdXRob3JpemVkIjpmYWxzZSwiYmx1ZXRvb3RoRW5hYmxlZCI6dHJ1ZSwibG9jYXRpb25FbmFibGVkIjpmYWxzZSwid2lmaUVuYWJsZerteyrbdfdserytrhbdfgdLCJoZWlnaHQiOjc1MywibGVmdCI6MCwicmlnaHQiOjM4NCwidG9wIjozOSwid2lkdGgiOjM4NH0sImxvY2F0aW9uUmVkdWNlZEFjY3VyYWN5Ijp0cnVlLCJ0aGVtZSI6ImxpZ2h0IiwiaG9zdCI6eyJhcHBJZCI6ImNvbS53dWJhLmxpZmVfQkxQYzZzTlIyNFhpSGFmZExXako4UnErbS9rckNxVXdwV3Bqam1jRGZTRkZKMkNDQlNZTHFOUlBiZmdCeXFlYkl2emw0Q0tKZ2ZQbnBjaTN3VE9leElZPSJ9LCJlbmFibGVEZWJ1ZyI6dHJ1ZSwiZGV2aWNlT3JpZW50YXRpb24iOiJxx3J0cmFpdCJ9", + "listName": "bj", + "content-type": "application/json", + "idxx": "B41CF5FA70F3DD19B1D87389CF045C8A1614CBEE645A9174BDDFDF1265A56129", + "Cookie": "PPU=\"\";idxx=sdfergdshrthfbscaswqr;sessionid=sdddgerhfgjntfyjvzserweagergsderty;", + "accuracy": "", + "geo": "", + "abtest": "" + }, + fail(res){ + console.log('request fail **** ', res) + endFun() + }, + success(res) { + console.log('request result ***** ', JSON.stringify(res.data)) + endFun() + }, + }) + }) + ]) + .then((result)=>{ + const logs: string[] = [] + logs.push(`tracklog请求耗时:Taro ${result[0]} ms, Native ${result[1]} ms`) + logs.push(`Feed请求耗时:Taro ${result[2]} ms, Native ${result[3]} ms`) + this.setState({ + requestSingleResult: logs.join('\n') + }) + }) + } + requestConcurentTest = ()=>{ + const startTime = Date.now() + const promiseArray:Promise[] = [] + for (let i=1; i <= 5; i++) { + promiseArray.push(methodTime((endFun)=>{ + // 日志请求 + Taro.request({ + url: 'http://10.253.108.182:9999/api/pressure/tracklog?wxid=wlfkjwoejfjsdfjowie&uid=slkfjowejfkmofwe&loginUid=undefined&trackURL=%7B%22pagePath%22%3A%22%2Fpages%2Findex%2Findex%22%2C%22refPagePath%22%3A%22%2Fpages%2Fprivacy%2Findex%22%2C%22pageParam%22%3A%22stamp%253DAE%2526%252524taroTimestamp%253D1704420185161%22%2C%22pageType%22%3A%22index%22%2C%22pageName%22%3A%22index%22%2C%22pageInfo%22%3A%22%22%2C%22loadTime%22%3A0%2C%22cateCode%22%3A%22%22%2C%22cate%22%3A%22%22%2C%22xxx_id%22%3A%22%22%2C%22bendiicontype%22%3A%22%22%2C%22currInfoId%22%3A%22%22%2C%22currentCateCode%22%3A%22%22%2C%22scene%22%3A1001%2C%22thirdKey%22%3A%22UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH%22%2C%22area%22%3A%221%22%2C%22openId%22%3A%22B41CF5FA70F3DD19B1D87389CF045C8A1614CBEE645A9174BDDFDF1265A56129%22%2C%22unionId%22%3A%22C8684F4C3107AD7AA8B19B343D75DDF989D120311D18F9F41EB2320F6FFA66BE%22%2C%22pagetype%22%3A%22index%22%2C%22page%22%3A%22%22%2C%22qudao%22%3A%22weixin%22%2C%22url%22%3A%22%2Fpages%2Findex%2Findex%22%2C%22referrer%22%3A%22%2Fpages%2Fprivacy%2Findex%22%2C%22version%22%3A%222.12.12%22%2C%22spm%22%3A%22%22%2C%22utm_source%22%3A%22%22%2C%22launch_source%22%3A%22%22%2C%22from_userid%22%3A%22%22%2C%22hasuserid%22%3A0%7D&v=1.0.0&rand_id=0.9838634192853211&thirdKey=UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH&appCode=0&debug=1', + method: 'GET', + data: {}, + header: { + "Content-Type": "application/x-www-form-urlencoded,application/json", + "scene": 1001, + "appCode": "0", + "thirdKey": "sklfmowejfklsmfoijwfjlksdmgvioejrgkdmv;ojdspjrlmsdsvklnsoidjfpwk", + "cateCode": "", + "version": "2.12.12", + "wxsysinfo": "eyJicmFuZCI6IkhVQVdFSSIsIm1vZGVsIjoiTk9ILUFOMDAiLCJwaXhlbFJhdGlvIjozLjUsInNjcmVlbldpZHRoIjozODQsInNjcmVlbkhlaWdodCI6NzkyLCJ3aW5kb3dXaWR0aCI6Mzg0LCJ3aW5kb3dIZWlnaHQiOjc5Miwic3RhdHVzQmFySGVpZ2h0IjozOSwibGFuZ3VhZ2UiOiJ6aC1IYW5zIiwidmVyc2lvbiI6I23123113161RlbSI6Ik9wZW5IYXJtb255LTQuMC4xMC4xMCIsInBsYXRmb3JtIjoiT3Blbkhhcm1vbnkiLCJmb250U2l6ZVNldHRpbmciOjE2LCJTREtWZXJzaW9uIjoiMTAiLCJiZW5jaG1hcmtMZXZlbCI6LTEsImFsYnVtQXV0aG9yaXplZCI6ZmFsc2UsImNhbWVyYUF1dGhvcml6ZWQiOmZhbHNlLCJsb2NhdGlvbkF1dGhvcml6ZWQisdfwefsdgv3Bob25lQXV0aG9yaXplZCI6ZmFsgwegfwegwegsdgfkF1dGhvcml6ZWQiOnRydWUsInBob25lQ2FsZW5kYXJBdXRob3JpemVkIjpmYWxzZSwiYmx1ZXRvb3RoRW5hYmxlZCI6dHJ1ZSwqwrqwdasdafsdfgdfghergewvcxbcvxcvhdfydid2lmaUVuYWJsZWQiOnRydWUsInNhZmVBcmVhIjp7ImJvdHRvbSI6NzkyLCJoZWlnaHQiOjc1MywibGVmdCI6MCwicmlnaHQiOjM4NCwidG9wIjozOSwid2lkdGgiOjM4NH0sImxvY2F0aW9uUmVkdWNlZEFjY3VyYWN5Ijp0cnVlLCJ0aGVtZSI6ImxpZ2h0IiwisefkwoejfowfwecHBJZCI6ImNvbS53dWJhLmxpZmVfQkxQYzZzTlIyNFhpSGFmZExXako4UnErbS9rckNxVXdwV3Bqam1jRGZTRkZKMkNDQlNZTHFOUlBiZmdCeXFlYkl2emw0Q0tKZ2ZQbnBjaTN3VE9leElZPSJ9LCJlbmFibGVEZWJ1ZyI6dHJ1ZSwiZGV2aWNlT3JpZW50YXRpb24iOiJxx3J0cmFpdCJ9", + "listName": "bj" + }, + fail(res){ + console.log('request fail **** ', res) + endFun() + }, + success(res) { + console.log('request result ***** ', res.data) + endFun() + }, + }) + })) + } + + Promise.all(promiseArray) + .then((result)=>{ + const totalTime = Date.now() - startTime + const logs: string[] = [] + + let serialTime = 0 + result.forEach((value, index)=>{ + logs.push(`请求${index}的耗时: ${value} ms`) + serialTime += value + }) + + logs.push(`并发请求时间:${totalTime}ms,串行请求时间:${serialTime} ms`) + logs.push(`是否为并行执行:${totalTime < serialTime}`) + this.setState({ + requestConcurrentResult: logs.join('\n') + }) + }) + } + requestHignConcurentTest = ()=>{ + const startTime = Date.now() + const promiseArray:Promise[] = [] + for (let i=1; i <= 30; i++) { + promiseArray.push(methodTime((endFun)=>{ + // 日志请求 + Taro.request({ + url: 'http://10.253.108.182:9999/api/pressure/feed?app=sdfwef&lon=&lat=&session=sdfwefwefsgrhrjgjtyjkyukyuksdfxsddr×tamp=170442018xx28&mediauid=dfghrhgfjyukhmgertdfbvdfhrtyrtdfg&devidmd5=IMEI&utm_source=xxun&spm=u-2h6kyt1yf988m1ww31.wx_mjh_feed_zhaogongzuo&brand=HUAWEI&os=OpenHarmony&model=NOH-AN00&city=bj&cate=pugongjg&slot=lm_list_template&pn=1&ps=10&url=https%3A%2F%2Fwxzzmp.xx.com%2Flist.shtml%3F-15%3D20&sign=3ccfb781037ed655120d63c4b5e5c391&debug=1', + method: 'GET', + data: {}, + header: { + "Content-Type": "application/x-www-form-urlencoded,application/json", + "scene": 1001, + "appCode": "0", + "thirdKey": "UPYIu5EGmjPu2pQqHOYUaMLk0j4m5tgt9aK1tboYlYeixxkotYfsTvbyRSPNNNjH", + "cateCode": "", + "version": 2.2, + "wxsysinfo": "eyJicmFuZCI6IkhVQVdFSSIsIm1vZGVsIjoiTk9ILUFOMDAiLCJwaXhlbFJhdGlvIjozLjUsInNjcmVlbldpZHRoIjozODQsInNjcmVlbkhlaWdodCI6NzkyLCJ3aW5kb3dXaWR0aCI6Mzg0LCJ3aW5kb3dIZWlnaHQiOjc5Miwic3RhdHVzQmFySGVpZ2h0IjozOSwibGFuZ3VhZ2UiOiJ6aC1IYW5zIiwidmVyc2lvbiI6IjQuMC4xMC4xMCIsInN5c3RlbSI6Ik9wZW5IYXJtb255LTQuMC4xMC4xMCIsInBsYXRmb3JtIjoiT3Blbkhhcm1vbnkiLCJmb250U2l6ZVNldHRpbmciOjE2LCJTREtWZXJzaW9uIjoiMTAiLCJiZW5jaG1hcmtMZXZlbCI6LTEsImFsYnVtQXV0aG9yaXplZCI6ZmFsc2UsImNhbWVyYUF1dGhvcmaserwefsdgesryhcvbiOmZhbHNlLCJtaWNyb3Bob25lQXV0aG9yaXplZCI6ZmFsc2UsIm5vdGlmaWNhdGlvbkF1dGhvcml6ZWQiOnRydWUsInBob25lQ2FsZW5kYXJBdXRob3JpemVkIjpmYWxzZSwiYmx1ZXRvb3RoRW5hYmxlZCI6dHJ1ZSwibG9jYXRpb25FbmFibGVkIjpmYWxzZSwid2lmaUVuYWJsZerteyrbdfdserytrhbdfgdLCJoZWlnaHQiOjc1MywibGVmdCI6MCwicmlnaHQiOjM4NCwidG9wIjozOSwid2lkdGgiOjM4NH0sImxvY2F0aW9uUmVkdWNlZEFjY3VyYWN5Ijp0cnVlLCJ0aGVtZSI6ImxpZ2h0IiwiaG9zdCI6eyJhcHBJZCI6ImNvbS53dWJhLmxpZmVfQkxQYzZzTlIyNFhpSGFmZExXako4UnErbS9rckNxVXdwV3Bqam1jRGZTRkZKMkNDQlNZTHFOUlBiZmdCeXFlYkl2emw0Q0tKZ2ZQbnBjaTN3VE9leElZPSJ9LCJlbmFibGVEZWJ1ZyI6dHJ1ZSwiZGV2aWNlT3JpZW50YXRpb24iOiJxx3J0cmFpdCJ9", + "listName": "bj", + "content-type": "application/json", + "idxx": "B41CF5FA70F3DD19B1D87389CF045C8A1614CBEE645A9174BDDFDF1265A56129", + "Cookie": "PPU=\"\";idxx=sdfergdshrthfbscaswqr;sessionid=sdddgerhfgjntfyjvzserweagergsderty;", + "accuracy": "", + "geo": "", + "abtest": "" + }, + fail(res){ + console.log('request fail **** ', res) + endFun() + }, + success(res) { + console.log('request result ***** ', JSON.stringify(res.data)) + endFun() + }, + }) + })) + } + + Promise.all(promiseArray) + .then((result)=>{ + const totalTime = Date.now() - startTime + const logs: string[] = [] + + let serialTime = 0 + result.forEach((value, index)=>{ + logs.push(`请求${index}的耗时: ${value} ms`) + serialTime += value + }) + + logs.push(`并发请求时间:${totalTime}ms,串行请求时间:${serialTime} ms`) + logs.push(`可能线程数:${serialTime / totalTime}`) + this.setState({ + requestHignConcurrentResult: logs.join('\n') + }) + }) + } + requestByJsTest=()=>{ + const startTime = Date.now() + const promiseArray:Promise[] = [] + for (let i=1; i <= 30; i++) { + promiseArray.push(methodTime((endFun)=>{jsFetch(endFun)})) + } + Promise.all(promiseArray) + .then((result)=>{ + const totalTime = Date.now() - startTime + const logs: string[] = [] + + let serialTime = 0 + result.forEach((value, index)=>{ + logs.push(`请求${index}的耗时: ${value} ms`) + serialTime += value + }) + + logs.push(`并发请求时间:${totalTime}ms,串行请求时间:${serialTime} ms`) + logs.push(`可能线程数:${serialTime / totalTime}`) + this.setState({ + requestByJsResult: logs.join('\n') + }) + }) + } + render() { + const { syncSingleResult, requestSingleResult,requestConcurrentResult,requestHignConcurrentResult,syncResult, requestByJsResult } = this.state + return ( + + + { + syncSingleResult.split("\n").map((text, index)=>{ + return ( + + {text} +
+
+ ) + }) + } +
+ + + { + syncResult.split("\n").map((text, index)=>{ + return ( + + {text} +
+
+ ) + }) + } +
+ + + { + requestSingleResult.split("\n").map((text, index)=>{ + return ( + + {text} +
+
+ ) + }) + } +
+ + + { + requestConcurrentResult.split("\n").map((text, index)=>{ + return ( + + {text} +
+
+ ) + }) + } +
+ + + { + requestHignConcurrentResult.split("\n").map((text, index)=>{ + return ( + + {text} +
+
+ ) + }) + } +
+ + + { + requestByJsResult.split("\n").map((text, index)=>{ + return ( + + {text} +
+
+ ) + }) + } +
+ +
+ ) + } +} diff --git a/examples/mini-program-example/src/styles/mixins.scss b/examples/mini-program-example/src/styles/mixins.scss new file mode 100644 index 000000000000..c00e30314aad --- /dev/null +++ b/examples/mini-program-example/src/styles/mixins.scss @@ -0,0 +1,60 @@ +/** + * 对于部分不兼容的样式,可以通过 mixins 统一处理 + */ + +/** + * // NOTE Taro 编译成 RN 时对 border 的处理有问题 + * RN 不支持针对某一边设置 style,即 border-bottom-style 会报错 + * 那么 border-bottom: 1px 就需要写成如下形式: + * border: 0 style color; border-bottom-width: 1px; + */ +@mixin border($dir, $width, $style, $color) { + border: 0 $style $color; + @each $d in $dir { + #{border-#{$d}-width}: $width; + } +} + +/** + * 对于不能打包到 RN 的样式,可以用 mixins 引入,相对美观一些 + */ +@mixin eject($attr, $value) { + /*postcss-pxtransform rn eject enable*/ + #{$attr}: $value; + /*postcss-pxtransform rn eject disable*/ +} + +/** + * // TODO 1px 的线在各端上实现方式不同,统一出来后续再兼容,目前注意两点: + * 1. Taro 中大写的 PX 不会被编译成 rpx/em,但 RN 还未兼容该写法 + * 2. H5 中 1px(转成 rem 后实际小于 0.5px) + border-radius 会导致 border 不显示 + */ +@mixin hairline($attr) { + #{$attr}: 1px; + @include eject($attr, 1PX); +} + +/** + * NOTE RN 无法通过 text-overflow 实现省略号,这些代码不能打包到 RN 中 + */ +@mixin text-ellipsis() { + /*postcss-pxtransform rn eject enable*/ + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; + /*postcss-pxtransform rn eject disable*/ +} + +/** + * NOTE 实现多行文本省略,RN 用 Text 标签的 numberOfLines,H5/小程序用 -webkit-line-clamp + */ +@mixin lamp-clamp($line) { + /*postcss-pxtransform rn eject enable*/ + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-line-clamp: $line; + /* autoprefixer: ignore next */ + -webkit-box-orient: vertical; + /*postcss-pxtransform rn eject disable*/ +} diff --git a/examples/mini-program-example/src/styles/tabPage.scss b/examples/mini-program-example/src/styles/tabPage.scss new file mode 100644 index 000000000000..d4314e89b5af --- /dev/null +++ b/examples/mini-program-example/src/styles/tabPage.scss @@ -0,0 +1,85 @@ +@import '@/styles/variables.scss'; + +.index-hd { + padding: 80px 80px 40px; + text-align: center; + } + .index-bd { + padding: 0 30px 40px; + } + .index-ft { + padding-bottom: 20px; + text-align: center; + } + .index-logo { + width: 86px; + height: 86px; + align-self: center; + } + .index-desc { + margin-top: 20px; + color: rgba(0, 0, 0, 0.5); + font-size: 28px; + } + + .navigator-box { + opacity: 0; + position: relative; + background-color: $color-bg-base; + line-height: 1.41176471; + font-size: 34px; + transform: translateY(-50%); + transition: 0.3s; + border-top: 1px solid $color-bg; + } + .navigator-box-show { + opacity: 1; + transform: translateY(0); + } + .navigator { + padding: 20px 30px; + } + .navigator-arrow { + position: absolute; + right: 56px; + top: 20px; + color: rgba(0, 0, 0, 0.3); + background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg width='12' height='24' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M2.454 6.58l1.06-1.06 5.78 5.779a.996.996 0 010 1.413l-5.78 5.779-1.06-1.061 5.425-5.425-5.425-5.424z' fill='%23B2B2B2' fill-rule='evenodd'/%3E%3C/svg%3E"); + width: 24px; + height: 48px; + } + .navigator-bottom-line { + border-bottom: 1px solid $color-bg; + } + + .kind-list-item { + margin: 20px 0; + background-color: $color-bg-base; + border-radius: 4px; + overflow: hidden; + } + .kind-list-text { + flex: 1; + } + .kind-list-img { + width: 60px; + height: 60px; + } + .kind-list-item-hd { + padding: 30px; + display: flex; + align-items: center; + flex-direction: row; + transition: opacity 0.3s; + } + .kind-list-item-hd-show { + opacity: 0.2; + } + .kind-list-item-bd { + height: 0; + overflow: hidden; + } + .kind-list-item-bd-show { + height: auto; + } + \ No newline at end of file diff --git a/examples/mini-program-example/src/styles/variables.scss b/examples/mini-program-example/src/styles/variables.scss new file mode 100644 index 000000000000..8d5d183be9e0 --- /dev/null +++ b/examples/mini-program-example/src/styles/variables.scss @@ -0,0 +1,98 @@ +$hd: 2 !default; // 基本单位 + +/* The Color of O2Team Brand */ +$color-brand: #6190e8 !default; +$color-brand-light: #78a4f4 !default; +$color-brand-dark: #346fc2 !default; + +/* Color */ +$color-success: #317af7 !default; +$color-error: #e84026 !default; +$color-warning: #ed6f21 !default; +$color-oncall: #64bb5c !default; +$color-advanced: #63d095 !default; + +/* Color Palette */ +$color-black-0: #000 !default; +$color-black-1: #333 !default; +$color-black-2: #7f7f7f !default; +$color-black-3: #b2b2b2 !default; + +$color-grey-0: #333 !default; +$color-grey-1: #666 !default; +$color-grey-2: #999 !default; +$color-grey-3: #ccc !default; +$color-grey-4: #e5e5e5 !default; +$color-grey-5: #f0f0f0 !default; +$color-grey-6: #f7f7f7 !default; + +$color-white: #fff !default; + +/* Text Color */ +$color-text-base: #333 !default; // 文字的基本色 +$color-text-base-inverse: #fff !default; // 反色 +$color-text-secondary: #36d57d !default; // 辅助色 +$color-text-placeholder: #c9c9c9 !default; +$color-text-disabled: #ccc !default; +$color-text-title: #2c405a !default; // 文章标题 +$color-text-paragraph: #3f536e !default; // 文章段落 + +/* Link */ +$color-link: #6190e8 !default; +$color-link-hover: #79a1eb !default; +$color-link-active: #4f7de2 !default; +$color-link-disabled: #bfbfbf !default; + +/* 背景色 */ +$color-bg: #fff !default; +$color-bg-base: #f1f3f5 !default; +$color-bg-light: #ecf5fd !default; +$color-bg-lighter: tint($color-bg-light, 50%) !default; +$color-bg-grey: #f7f7f7 !default; + +/* 边框颜色 */ +$color-border-base: #c5d9e8 !default; +$color-border-split: tint($color-border-base, 20%) !default; // 分割线 +$color-border-light: tint($color-border-base, 30%) !default; +$color-border-lighter: tint($color-border-base, 50%) !default; +$color-border-lightest: tint($color-border-base, 80%) !default; +$color-border-grey: #ccc !default; + +/* 图标颜色 */ +$color-icon-base: #ccc !default; + +/* Border Radius */ +$border-radius-sm: 2px * $hd !default; +$border-radius-md: 4px * $hd !default; +$border-radius-lg: 6px * $hd !default; +$border-radius-circle: 50% !default; + +/* 透明度 */ +$opacity-active: 0.6 !default; // Button 等组件点击态额透明度 +$opacity-disabled: 0.4 !default; // Button 等组件禁用态的透明度 + +/* Font */ +$font-size-xs: 10px * $hd !default; // 非常用字号,用于标签 +$font-size-sm: 12px * $hd !default; // 用于辅助信息 +$font-size-base: 14px * $hd !default; // 常用字号 +$font-size-lg: 16px * $hd !default; // 常规标题 +$font-size-xl: 18px * $hd !default; // 大标题 +$font-size-xxl: 20px * $hd !default; // 用于大号的数字 + +/* 水平间距 */ +$spacing-h-sm: 5px * $hd !default; +$spacing-h-md: 8px * $hd !default; +$spacing-h-lg: 12px * $hd !default; +$spacing-h-xl: 16px * $hd !default; + +/* 垂直间距 */ +$spacing-v-xs: 3px * $hd !default; +$spacing-v-sm: 6px * $hd !default; +$spacing-v-md: 9px * $hd !default; +$spacing-v-lg: 12px * $hd !default; +$spacing-v-xl: 15px * $hd !default; + +/* 图标尺寸 */ +$icon-size-sm: 18px * $hd !default; +$icon-size-md: 22px * $hd !default; +$icon-size-lg: 36px * $hd !default; diff --git a/examples/mini-program-example/src/util/nativeApi.ts b/examples/mini-program-example/src/util/nativeApi.ts new file mode 100644 index 000000000000..f9d8ed5af7c5 --- /dev/null +++ b/examples/mini-program-example/src/util/nativeApi.ts @@ -0,0 +1,14 @@ +// @ts-ignore +const decorator = window.MethodChannel && window.MethodChannel.jsBridgeMode({ isAsync: false, autoRelease: true }) || (target => target) + +// @proxyClassSign('') +class NativeApi { + // @ts-ignore + @decorator + harmonyNavigateTo(options: any) { + return options + } +} + +const nativeApi = new NativeApi() +export default nativeApi diff --git a/examples/mini-program-example/src/util/util.ts b/examples/mini-program-example/src/util/util.ts new file mode 100644 index 000000000000..6ac07fed470b --- /dev/null +++ b/examples/mini-program-example/src/util/util.ts @@ -0,0 +1,77 @@ +function setCallbackRes(res, type, apiIndex) { + if (apiIndex != -1) { + const apiList = this.state.list + if (apiList[apiIndex].callbackRes == null) { + apiList[apiIndex].callbackRes = {} + } + if (type === 'success' || type === 'fail') { + if (apiList[apiIndex].callbackRes['success']) { + delete apiList[apiIndex].callbackRes['success'] + } + if (apiList[apiIndex].callbackRes['fail']) { + delete apiList[apiIndex].callbackRes['fail'] + } + } + apiList[apiIndex].callbackRes[type] = res + this.setState({ + list: apiList, + }) + } +} + +let startTime = NaN + +function getCostTime() { + return startTime ? Date.now() - startTime : -1 +} + +export const TestConsole = { + consoleTest: (apiName: string) => { + startTime = Date.now() + console.log( + `\n%c------------------------------start test [${apiName}]------------------------------`, + 'color:blue;font-weight:bold' + ) + }, + consoleSuccess: function (res, apiIndex = -1) { + const costTime = getCostTime() + setCallbackRes.call(this, res, 'success', apiIndex) + setCallbackRes.call(this, costTime, 'costTime', apiIndex) + console.log('%csuccess:\n', 'color:green;font-weight:bold', { success: res, costTime }) + }, + consoleFail: function (res, apiIndex = -1) { + const costTime = getCostTime() + setCallbackRes.call(this, res, 'fail', apiIndex) + setCallbackRes.call(this, costTime, 'costTime', apiIndex) + console.log('%cfail:\n', 'color:red;font-weight:bold', { fail: res, costTime }) + }, + consoleComplete: function (res, apiIndex = -1) { + const costTime = getCostTime() + setCallbackRes.call(this, res, 'complete', apiIndex) + setCallbackRes.call(this, costTime, 'costTime', apiIndex) + console.log('%ccomplete:\n', 'color:black;font-weight:bold', { complete: res, costTime }) + }, + consoleResult: function (res, apiIndex = -1) { + const costTime = getCostTime() + startTime = NaN + setCallbackRes.call(this, res, 'result', apiIndex) + setCallbackRes.call(this, costTime, 'costTime', apiIndex) + console.log('%cresult:\n', 'color:blue;font-weight:bold', { result: res, costTime }) + }, + consoleOnCallback: function (res, apiName, apiIndex = -1) { + const costTime = getCostTime() + setCallbackRes.call(this, res, 'callback', apiIndex) + setCallbackRes.call(this, costTime, 'costTime', apiIndex) + console.log(`%c${apiName} callback:\n`, 'color:green;font-weight:bold', { callback: res, costTime }) + }, + consoleNormal: (name: string, data?: any) => { + if (data) { + console.log(`%c${name}:\n`, 'color:gray;font-weight:bold', data) + } else { + console.log(`%c${name}`, 'color:gray;font-weight:bold') + } + }, + consoleDebug: (name: string, errMsg?: any) => { + console.warn('debug:\n', name, ':', errMsg) + }, +} diff --git a/examples/mini-program-example/tsconfig.json b/examples/mini-program-example/tsconfig.json new file mode 100644 index 000000000000..d252b2fe4109 --- /dev/null +++ b/examples/mini-program-example/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "target": "es2017", + "module": "commonjs", + "removeComments": false, + "preserveConstEnums": true, + "moduleResolution": "node", + "experimentalDecorators": true, + "noImplicitAny": false, + "allowSyntheticDefaultImports": true, + "outDir": "lib", + "noUnusedLocals": true, + "noUnusedParameters": true, + "strictNullChecks": true, + "sourceMap": true, + "baseUrl": ".", + "rootDir": ".", + "jsx": "react-jsx", + "allowJs": true, + "resolveJsonModule": true, + "typeRoots": ["node_modules/@types"], + "paths": { + "@/styles/*": ["./src/styles/*"], + "@/util/*": ["./src/util/*"], + "@/assets/*": ["./src/assets/*"], + "@/components/*": ["./src/components/*"] + } + }, + "include": ["./src", "./types"], + "compileOnSave": false +} diff --git a/examples/mini-program-example/types/global.d.ts b/examples/mini-program-example/types/global.d.ts new file mode 100644 index 000000000000..36087b094c99 --- /dev/null +++ b/examples/mini-program-example/types/global.d.ts @@ -0,0 +1,19 @@ +/// + +declare module '*.png'; +declare module '*.gif'; +declare module '*.jpg'; +declare module '*.jpeg'; +declare module '*.svg'; +declare module '*.css'; +declare module '*.less'; +declare module '*.scss'; +declare module '*.sass'; +declare module '*.styl'; + +declare namespace NodeJS { + interface ProcessEnv { + TARO_ENV: 'weapp' | 'swan' | 'alipay' | 'h5' | 'rn' | 'tt' | 'quickapp' | 'qq' | 'jd' + } +} + diff --git a/npm/darwin-arm64/package.json b/npm/darwin-arm64/package.json index 2d059b0fc520..7eb6aa20646c 100644 --- a/npm/darwin-arm64/package.json +++ b/npm/darwin-arm64/package.json @@ -1,7 +1,7 @@ { "name": "@tarojs/binding-darwin-arm64", "description": "Native binding for taro", - "version": "3.6.25", + "version": "3.6.29", "os": [ "darwin" ], diff --git a/npm/darwin-x64/package.json b/npm/darwin-x64/package.json index 24ed567c3e36..fae5dab32ed9 100644 --- a/npm/darwin-x64/package.json +++ b/npm/darwin-x64/package.json @@ -1,7 +1,7 @@ { "name": "@tarojs/binding-darwin-x64", "description": "Native binding for taro", - "version": "3.6.25", + "version": "3.6.29", "os": [ "darwin" ], diff --git a/npm/linux-x64-gnu/package.json b/npm/linux-x64-gnu/package.json index a99244299a0b..3f1a4f825bdc 100644 --- a/npm/linux-x64-gnu/package.json +++ b/npm/linux-x64-gnu/package.json @@ -1,7 +1,7 @@ { "name": "@tarojs/binding-linux-x64-gnu", "description": "Native binding for taro", - "version": "3.6.25", + "version": "3.6.29", "os": [ "linux" ], diff --git a/npm/linux-x64-musl/package.json b/npm/linux-x64-musl/package.json index d4f6d7a95219..da93ea59a739 100644 --- a/npm/linux-x64-musl/package.json +++ b/npm/linux-x64-musl/package.json @@ -1,6 +1,6 @@ { "name": "@tarojs/binding-linux-x64-musl", - "version": "3.6.25", + "version": "3.6.29", "os": [ "linux" ], diff --git a/npm/win32-x64-msvc/package.json b/npm/win32-x64-msvc/package.json index ab2202ebd5bd..c7574b6fdcdd 100644 --- a/npm/win32-x64-msvc/package.json +++ b/npm/win32-x64-msvc/package.json @@ -1,7 +1,7 @@ { "name": "@tarojs/binding-win32-x64-msvc", "description": "Native binding for taro", - "version": "3.6.25", + "version": "3.6.29", "os": [ "win32" ], diff --git a/package.json b/package.json index 6cb4ebe8f17c..6d4f03e93c8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "taro", - "version": "3.6.25", + "version": "3.6.29", "description": "开放式跨端跨框架开发解决方案", "homepage": "https://github.com/NervJS/taro#readme", "author": "O2Team", @@ -26,8 +26,10 @@ "build:binding:release": "pnpm --filter @tarojs/binding run build", "format::rs": "cargo fmt --all", "clear-all": "rimraf **/node_modules", - "lint": "eslint packages/ --ext .js --ext .ts --ext .tsx", + "lint": "eslint ./packages/ --ext .js,.jsx,.ts,.tsx,.mjs,.mts", "lint:style": "stylelint ./packages/**/*.{css,scss}", + "format": "prettier --write --cache .", + "format:check": "prettier --check --cache .", "test": "pnpm --if-present -r --aggregate-output --filter=./packages/* test:ci", "test:binding": "pnpm --filter @tarojs/binding run test", "updateSnapshot": "pnpm --if-present -r --aggregate-output --filter=./packages/* updateSnapshot", diff --git a/packages/babel-plugin-transform-react-jsx-to-rn-stylesheet/package.json b/packages/babel-plugin-transform-react-jsx-to-rn-stylesheet/package.json index 3be54feb5c4d..bb873d241a7e 100644 --- a/packages/babel-plugin-transform-react-jsx-to-rn-stylesheet/package.json +++ b/packages/babel-plugin-transform-react-jsx-to-rn-stylesheet/package.json @@ -1,6 +1,6 @@ { "name": "babel-plugin-transform-react-jsx-to-rn-stylesheet", - "version": "3.6.25", + "version": "3.6.29", "description": "Transform stylesheet selector to style in JSX Elements.", "license": "MIT", "main": "dist/index.js", diff --git a/packages/babel-plugin-transform-taroapi/package.json b/packages/babel-plugin-transform-taroapi/package.json index fdbef4043b26..378f8b8aa9b3 100644 --- a/packages/babel-plugin-transform-taroapi/package.json +++ b/packages/babel-plugin-transform-taroapi/package.json @@ -1,6 +1,6 @@ { "name": "babel-plugin-transform-taroapi", - "version": "3.6.25", + "version": "3.6.29", "main": "dist/index.js", "scripts": { "build": "tsc", diff --git a/packages/babel-preset-taro/package.json b/packages/babel-preset-taro/package.json index 1e66d9b0b6fb..8aaacf4d9446 100644 --- a/packages/babel-preset-taro/package.json +++ b/packages/babel-preset-taro/package.json @@ -1,6 +1,6 @@ { "name": "babel-preset-taro", - "version": "3.6.25", + "version": "3.6.29", "description": "Taro babel preset", "author": "yuche ", "homepage": "https://github.com/nervjs/taro/tree/master/packages/babel-preset-taro#readme", diff --git a/packages/create-app/package.json b/packages/create-app/package.json index 0d5ab616f300..9b5ddab0baa3 100644 --- a/packages/create-app/package.json +++ b/packages/create-app/package.json @@ -1,6 +1,6 @@ { "name": "@tarojs/create-app", - "version": "3.6.25", + "version": "3.6.29", "description": "create taro app with one command", "author": "VincentW ", "homepage": "https://github.com/nervjs/taro/tree/master/packages/create-app#readme", diff --git a/packages/css-to-react-native/package.json b/packages/css-to-react-native/package.json index f5d2e1af4891..f4eb5da53510 100644 --- a/packages/css-to-react-native/package.json +++ b/packages/css-to-react-native/package.json @@ -1,7 +1,7 @@ { "name": "taro-css-to-react-native", "description": "Convert CSS text to a React Native stylesheet object", - "version": "3.6.25", + "version": "3.6.29", "main": "dist/index.js", "license": "MIT", "files": [ diff --git a/packages/eslint-config-taro/package.json b/packages/eslint-config-taro/package.json index aedee1687332..47caf59b740d 100644 --- a/packages/eslint-config-taro/package.json +++ b/packages/eslint-config-taro/package.json @@ -1,6 +1,6 @@ { "name": "eslint-config-taro", - "version": "3.6.25", + "version": "3.6.29", "description": "Taro specific linting rules for ESLint", "main": "index.js", "files": [ diff --git a/packages/postcss-html-transform/package.json b/packages/postcss-html-transform/package.json index 529f3616a9f6..2433b017a12d 100644 --- a/packages/postcss-html-transform/package.json +++ b/packages/postcss-html-transform/package.json @@ -1,6 +1,6 @@ { "name": "postcss-html-transform", - "version": "3.6.25", + "version": "3.6.29", "description": "transform html tag name selector", "main": "index.js", "author": "drchan", diff --git a/packages/postcss-plugin-constparse/package.json b/packages/postcss-plugin-constparse/package.json index 10e6da7d1e35..d44ab8c77565 100644 --- a/packages/postcss-plugin-constparse/package.json +++ b/packages/postcss-plugin-constparse/package.json @@ -1,6 +1,6 @@ { "name": "postcss-plugin-constparse", - "version": "3.6.25", + "version": "3.6.29", "description": "parse constants defined in config", "main": "index.js", "author": "Simba", diff --git a/packages/postcss-pxtransform/package.json b/packages/postcss-pxtransform/package.json index 0da3fca1d917..89351acfc952 100644 --- a/packages/postcss-pxtransform/package.json +++ b/packages/postcss-pxtransform/package.json @@ -1,6 +1,6 @@ { "name": "postcss-pxtransform", - "version": "3.6.25", + "version": "3.6.29", "description": "PostCSS plugin px 转小程序 rpx及h5 rem 单位", "main": "index.js", "keywords": [ diff --git a/packages/postcss-unit-transform/package.json b/packages/postcss-unit-transform/package.json index efac961f7191..714080899cf7 100644 --- a/packages/postcss-unit-transform/package.json +++ b/packages/postcss-unit-transform/package.json @@ -1,6 +1,6 @@ { "name": "postcss-taro-unit-transform", - "version": "3.6.25", + "version": "3.6.29", "description": "小程序单位转换", "main": "index.js", "scripts": { diff --git a/packages/rollup-plugin-copy/.gitignore b/packages/rollup-plugin-copy/.gitignore new file mode 100644 index 000000000000..a65b41774ad5 --- /dev/null +++ b/packages/rollup-plugin-copy/.gitignore @@ -0,0 +1 @@ +lib diff --git a/packages/shared/package.json b/packages/shared/package.json index 81b25e9b95e4..73b6a09cf07d 100644 --- a/packages/shared/package.json +++ b/packages/shared/package.json @@ -1,6 +1,6 @@ { "name": "@tarojs/shared", - "version": "3.6.25", + "version": "3.6.29", "description": "Taro utils internal use.", "author": "yuche ", "homepage": "https://github.com/nervjs/taro/tree/master/packages/shared#readme", diff --git a/packages/shared/src/template.ts b/packages/shared/src/template.ts index 03f3ad8152cc..f927d3b1c340 100644 --- a/packages/shared/src/template.ts +++ b/packages/shared/src/template.ts @@ -316,7 +316,6 @@ export class BaseTemplate { ? `