diff --git a/package.json b/package.json index 058510d5..deb95a5f 100644 --- a/package.json +++ b/package.json @@ -22,18 +22,19 @@ "@commitlint/cli": "^15.0.0", "@iceworks/spec": "^1.6.0", "eslint": "^8.19.0", + "fs-extra": "^10.0.0", "ice-npm-utils": "workspace:^3.0.2", "npm-run-all": "^4.1.5", "rimraf": "^3.0.2", "stylelint": "^13.13.1", - "typescript": "^4.7.4" + "typescript": "^4.7.4", + "vitest": "^0.7.13" }, "dependencies": { "@types/node": "^17.0.45", "axios": "^0.23.0", "c8": "^7.11.3", - "ts-node": "^10.8.2", - "vitest": "^0.7.13" + "ts-node": "^10.8.2" }, "pnpm": { "overrides": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 36b3aa31..5de5dd74 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,6 +13,7 @@ importers: axios: ^0.23.0 c8: ^7.11.3 eslint: ^8.19.0 + fs-extra: ^10.0.0 ice-npm-utils: workspace:^3.0.2 npm-run-all: ^4.1.5 rimraf: ^3.0.2 @@ -25,16 +26,17 @@ importers: axios: 0.23.0 c8: 7.11.3 ts-node: 10.8.2_x2utdhayajzrh747hktprshhby - vitest: 0.7.13_c8@7.11.3 devDependencies: '@commitlint/cli': 15.0.0 '@iceworks/spec': 1.6.0_boy655tvqsm6op45de6ax7jimi eslint: 8.19.0 + fs-extra: 10.1.0 ice-npm-utils: link:packages/ice-npm-utils npm-run-all: 4.1.5 rimraf: 3.0.2 stylelint: 13.13.1 typescript: 4.7.4 + vitest: 0.7.13_c8@7.11.3 examples/application: specifiers: @@ -270,6 +272,74 @@ importers: '@ice/pkg': link:../pkg typescript: 4.7.4 + tests/fixtures/scenarios/node: + specifiers: + '@ice/pkg': ^1.0.0 + '@iceworks/spec': ^1.0.0 + eslint: ^7.0.0 + stylelint: ^13.7.2 + devDependencies: + '@ice/pkg': link:../../../../packages/pkg + '@iceworks/spec': 1.6.0_4v3jurpbcga7euorjuu2q7wmki + eslint: 7.32.0 + stylelint: 13.13.1 + + tests/fixtures/scenarios/rax: + specifiers: + '@ice/pkg': ^1.0.0 + '@ice/pkg-plugin-docusaurus': ^1.0.0 + '@ice/pkg-plugin-rax-component': ^1.0.0 + '@iceworks/spec': ^1.0.0 + '@types/rax': ^1.0.0 + eslint: ^7.0.0 + rax: ^1.2.2 + react: ^18.0.0 + react-dom: ^18.0.0 + style-unit: ^3.0.4 + stylelint: ^13.7.2 + devDependencies: + '@ice/pkg': link:../../../../packages/pkg + '@ice/pkg-plugin-docusaurus': link:../../../../packages/plugin-docusaurus + '@ice/pkg-plugin-rax-component': link:../../../../packages/plugin-rax-component + '@iceworks/spec': 1.6.0_4v3jurpbcga7euorjuu2q7wmki + '@types/rax': 1.0.9 + eslint: 7.32.0 + rax: 1.2.2 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + style-unit: 3.0.4 + stylelint: 13.13.1 + + tests/fixtures/scenarios/react: + specifiers: + '@ice/pkg': ^1.0.0 + '@ice/pkg-plugin-docusaurus': ^1.0.0 + '@iceworks/spec': ^1.0.0 + '@types/react': ^18.0.0 + '@types/react-dom': ^18.0.0 + eslint: ^7.0.0 + rax-compat: ^0.1.0-alpha.5 + react: ^18.0.0 + react-dom: ^18.0.0 + style-unit: ^3.0.4 + stylelint: ^13.7.2 + dependencies: + rax-compat: 0.1.0-beta.4_biqbaboplfbrettd7655fr4n2y + devDependencies: + '@ice/pkg': link:../../../../packages/pkg + '@ice/pkg-plugin-docusaurus': link:../../../../packages/plugin-docusaurus + '@iceworks/spec': 1.6.0_4v3jurpbcga7euorjuu2q7wmki + '@types/react': 18.0.15 + '@types/react-dom': 18.0.6 + eslint: 7.32.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + style-unit: 3.0.4 + stylelint: 13.13.1 + + tests/fixtures/scenarios/web: + specifiers: {} + website: specifiers: '@docusaurus/core': ^2.0.1 @@ -426,6 +496,12 @@ packages: js-base64: 3.7.2 dev: false + /@babel/code-frame/7.12.11: + resolution: {integrity: sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==} + dependencies: + '@babel/highlight': 7.18.6 + dev: true + /@babel/code-frame/7.18.6: resolution: {integrity: sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==} engines: {node: '>=6.9.0'} @@ -482,6 +558,20 @@ packages: transitivePeerDependencies: - supports-color + /@babel/eslint-parser/7.18.2_e47xv5ui6xrfmjzs5tdc45kbly: + resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} + engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} + peerDependencies: + '@babel/core': '>=7.11.0' + eslint: ^7.5.0 || ^8.0.0 + dependencies: + '@babel/core': 7.18.6 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 2.1.0 + semver: 6.3.0 + dev: true + /@babel/eslint-parser/7.18.2_ygqbvsyswrl2cmipz2mlfqys74: resolution: {integrity: sha512-oFQYkE8SuH14+uR51JVAmdqwKYXGRjEXx7s+WiagVjqQ+HPE+nnwyF2qlVG8evUsUHmPcA+6YXMEDbIhEyQc5A==} engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} @@ -1758,7 +1848,6 @@ packages: /@bcoe/v8-coverage/0.2.3: resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} - dev: false /@colors/colors/1.5.0: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -3549,6 +3638,23 @@ packages: - typescript dev: true + /@eslint/eslintrc/0.4.3: + resolution: {integrity: sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 7.3.1 + globals: 13.16.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + js-yaml: 3.14.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + dev: true + /@eslint/eslintrc/1.3.0: resolution: {integrity: sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -3574,6 +3680,17 @@ packages: dependencies: '@hapi/hoek': 9.3.0 + /@humanwhocodes/config-array/0.5.0: + resolution: {integrity: sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==} + engines: {node: '>=10.10.0'} + dependencies: + '@humanwhocodes/object-schema': 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + dev: true + /@humanwhocodes/config-array/0.9.5: resolution: {integrity: sha512-ObyMyWxZiCu/yTisA7uzx81s40xR2fD5Cg/2Kq7G02ajkNubJf6BopgDTmDyc3U7sXpNKM8cYOw7s7Tyr+DnCw==} engines: {node: '>=10.10.0'} @@ -3632,6 +3749,26 @@ packages: fs-extra: 10.1.0 dev: true + /@iceworks/eslint-plugin-best-practices/0.2.11_4v3jurpbcga7euorjuu2q7wmki: + resolution: {integrity: sha512-IsMqWijTyj1c8EBP8oZJhhghz01XUm8hh2AreUvQyi/eCgAcr0MgPXZ94NkXB+1OwCskkiVuXTa+fsooeP0IYA==} + dependencies: + '@iceworks/spec': 1.6.0_4v3jurpbcga7euorjuu2q7wmki + '@mdn/browser-compat-data': 4.2.1 + fs-extra: 9.1.0 + glob: 7.2.3 + line-column: 1.0.2 + path-to-regexp: 6.2.1 + require-all: 3.0.0 + semver: 7.3.7 + transitivePeerDependencies: + - eslint + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - stylelint + - supports-color + - typescript + dev: true + /@iceworks/eslint-plugin-best-practices/0.2.11_boy655tvqsm6op45de6ax7jimi: resolution: {integrity: sha512-IsMqWijTyj1c8EBP8oZJhhghz01XUm8hh2AreUvQyi/eCgAcr0MgPXZ94NkXB+1OwCskkiVuXTa+fsooeP0IYA==} dependencies: @@ -3666,6 +3803,40 @@ packages: - debug dev: false + /@iceworks/spec/1.6.0_4v3jurpbcga7euorjuu2q7wmki: + resolution: {integrity: sha512-fnBjaWKxcY1vv9soBhti3tNDMxKfWYd0vd94f0fvPnVOn6F+4jpcQl2Levs3AfWDh5mZAbW6ieH4qNeE33Zd/g==} + peerDependencies: + eslint: '>=7.5.0' + stylelint: '>=8.3.0' + dependencies: + '@babel/core': 7.18.6 + '@babel/eslint-parser': 7.18.2_e47xv5ui6xrfmjzs5tdc45kbly + '@babel/preset-react': 7.18.6_@babel+core@7.18.6 + '@iceworks/eslint-plugin-best-practices': 0.2.11_4v3jurpbcga7euorjuu2q7wmki + '@typescript-eslint/eslint-plugin': 5.30.5_rd6cw2bkmgckqjtetyu3p3ss5i + '@typescript-eslint/parser': 5.30.5_eslint@7.32.0 + commitlint-config-ali: 0.1.3 + eslint: 7.32.0 + eslint-config-ali: 13.1.0_eslint@7.32.0 + eslint-plugin-import: 2.26.0_rd6cw2bkmgckqjtetyu3p3ss5i + eslint-plugin-jsx-plus: 0.1.0 + eslint-plugin-rax-compile-time-miniapp: 1.0.0 + eslint-plugin-react: 7.30.1_eslint@7.32.0 + eslint-plugin-react-hooks: 4.6.0_eslint@7.32.0 + eslint-plugin-vue: 7.20.0_eslint@7.32.0 + json5: 2.2.1 + require-all: 3.0.0 + stylelint: 13.13.1 + stylelint-config-ali: 0.3.4_2vkgt733dnumio3be4grtjqkwy + stylelint-scss: 3.21.0_stylelint@13.13.1 + vue-eslint-parser: 7.11.0_eslint@7.32.0 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + - typescript + dev: true + /@iceworks/spec/1.6.0_boy655tvqsm6op45de6ax7jimi: resolution: {integrity: sha512-fnBjaWKxcY1vv9soBhti3tNDMxKfWYd0vd94f0fvPnVOn6F+4jpcQl2Levs3AfWDh5mZAbW6ieH4qNeE33Zd/g==} peerDependencies: @@ -3703,7 +3874,6 @@ packages: /@istanbuljs/schema/0.1.3: resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} engines: {node: '>=8'} - dev: false /@jridgewell/gen-mapping/0.1.1: resolution: {integrity: sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==} @@ -4310,11 +4480,11 @@ packages: resolution: {integrity: sha512-frBecisrNGz+F4T6bcc+NLeolfiojh5FxW2klu669+8BARtyQv2C/GkNW6FUodVe4BroGMP/wER/YDGc7rEllw==} dependencies: '@types/chai': 4.3.1 - dev: false + dev: true /@types/chai/4.3.1: resolution: {integrity: sha512-/zPMqDkzSZ8t3VtxOa4KPq7uzzW978M9Tvh+j7GHKuo6k6GTLxPJ4J5gE5cjfJ26pnXst0N5Hax8Sr0T2Mi9zQ==} - dev: false + dev: true /@types/connect-history-api-fallback/1.3.5: resolution: {integrity: sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==} @@ -4394,7 +4564,6 @@ packages: /@types/istanbul-lib-coverage/2.0.4: resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} - dev: false /@types/json-schema/7.0.11: resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} @@ -4450,6 +4619,19 @@ packages: resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} dev: false + /@types/rax/1.0.9: + resolution: {integrity: sha512-ZCahLhWr39LnaiOtvFpTuk+ykL0L2sAWc6sG7karelzPh7NHQCuJpR/gNPu+pDwkgt+1N2nx4Fs3KNY2l+y05w==} + dependencies: + '@types/prop-types': 15.7.5 + csstype: 3.1.0 + dev: true + + /@types/react-dom/18.0.6: + resolution: {integrity: sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==} + dependencies: + '@types/react': 18.0.15 + dev: true + /@types/react-router-config/5.0.6: resolution: {integrity: sha512-db1mx37a1EJDf1XeX8jJN7R3PZABmJQXR8r28yUjVMFSjkmnQo6X6pOEEmNl+Tp2gYQOGPdYbFIipBtdElZ3Yg==} dependencies: @@ -4556,6 +4738,32 @@ packages: - supports-color dev: true + /@typescript-eslint/eslint-plugin/5.30.5_rd6cw2bkmgckqjtetyu3p3ss5i: + resolution: {integrity: sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/parser': 5.30.5_eslint@7.32.0 + '@typescript-eslint/scope-manager': 5.30.5 + '@typescript-eslint/type-utils': 5.30.5_eslint@7.32.0 + '@typescript-eslint/utils': 5.30.5_eslint@7.32.0 + debug: 4.3.4 + eslint: 7.32.0 + functional-red-black-tree: 1.0.1 + ignore: 5.2.0 + regexpp: 3.2.0 + semver: 7.3.7 + tsutils: 3.21.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/parser/5.30.5_4x5o4skxv6sl53vpwefgt23khm: resolution: {integrity: sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4576,6 +4784,25 @@ packages: - supports-color dev: true + /@typescript-eslint/parser/5.30.5_eslint@7.32.0: + resolution: {integrity: sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/scope-manager': 5.30.5 + '@typescript-eslint/types': 5.30.5 + '@typescript-eslint/typescript-estree': 5.30.5 + debug: 4.3.4 + eslint: 7.32.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/scope-manager/5.30.5: resolution: {integrity: sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4603,11 +4830,49 @@ packages: - supports-color dev: true + /@typescript-eslint/type-utils/5.30.5_eslint@7.32.0: + resolution: {integrity: sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/utils': 5.30.5_eslint@7.32.0 + debug: 4.3.4 + eslint: 7.32.0 + tsutils: 3.21.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/types/5.30.5: resolution: {integrity: sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@typescript-eslint/typescript-estree/5.30.5: + resolution: {integrity: sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + dependencies: + '@typescript-eslint/types': 5.30.5 + '@typescript-eslint/visitor-keys': 5.30.5 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.3.7 + tsutils: 3.21.0 + transitivePeerDependencies: + - supports-color + dev: true + /@typescript-eslint/typescript-estree/5.30.5_typescript@4.7.4: resolution: {integrity: sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4647,6 +4912,24 @@ packages: - typescript dev: true + /@typescript-eslint/utils/5.30.5_eslint@7.32.0: + resolution: {integrity: sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + '@types/json-schema': 7.0.11 + '@typescript-eslint/scope-manager': 5.30.5 + '@typescript-eslint/types': 5.30.5 + '@typescript-eslint/typescript-estree': 5.30.5 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-utils: 3.0.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + - typescript + dev: true + /@typescript-eslint/visitor-keys/5.30.5: resolution: {integrity: sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -4657,7 +4940,6 @@ packages: /@uni/env/1.1.0: resolution: {integrity: sha512-2GVgUzxIaO2vGElXEuc45+I7L6Jbw8inLDDFuC0K4htjKtPmYywKSE6oDhvmdAXb4GCOH8hmxECYtAh1rjsgoQ==} - dev: false /@webassemblyjs/ast/1.11.1: resolution: {integrity: sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==} @@ -4927,6 +5209,11 @@ packages: string-width: 4.2.3 dev: false + /ansi-colors/4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + dev: true + /ansi-escapes/4.3.2: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} @@ -5004,7 +5291,6 @@ packages: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} dependencies: sprintf-js: 1.0.3 - dev: false /argparse/2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -5067,7 +5353,7 @@ packages: /assertion-error/1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} - dev: false + dev: true /astral-regex/2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -5391,7 +5677,6 @@ packages: v8-to-istanbul: 9.0.1 yargs: 16.2.0 yargs-parser: 20.2.9 - dev: false /cac/6.7.12: resolution: {integrity: sha512-rM7E2ygtMkJqD9c7WnFU6fruFcN3xe4FM5yUmgxhZzIKJk4uHl9U/fhwdajGFQbQuv43FAUo1Fe8gX/oIKDeSA==} @@ -5476,7 +5761,7 @@ packages: loupe: 2.3.4 pathval: 1.1.1 type-detect: 4.0.8 - dev: false + dev: true /chalk/2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -5516,7 +5801,7 @@ packages: /check-error/1.0.2: resolution: {integrity: sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA==} - dev: false + dev: true /cheerio-select/2.1.0: resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} @@ -6179,7 +6464,7 @@ packages: engines: {node: '>=0.12'} dependencies: type-detect: 4.0.8 - dev: false + dev: true /deep-extend/0.6.0: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} @@ -6437,6 +6722,10 @@ packages: dependencies: is-obj: 2.0.0 + /driver-server/1.0.0: + resolution: {integrity: sha512-H5nhMzsSJYaug+PDPyXiVW2KvK5k7B7K+yVW3FuHESq494Soh1cfomquJ2pk5RiApQr1z0e+0tif11TVRlM+PQ==} + dev: true + /duplexer/0.1.2: resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} dev: false @@ -6498,6 +6787,13 @@ packages: graceful-fs: 4.2.10 tapable: 2.2.1 + /enquirer/2.3.6: + resolution: {integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==} + engines: {node: '>=8.6'} + dependencies: + ansi-colors: 4.1.3 + dev: true + /entities/1.1.2: resolution: {integrity: sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==} dev: true @@ -6798,6 +7094,14 @@ packages: engines: {node: '>=12'} dev: false + /eslint-config-ali/13.1.0_eslint@7.32.0: + resolution: {integrity: sha512-ZjWrpiKADEmNhtfB64iVN3ejlDS5sS9OZx9+jN3mF+oqaroWqrTPvqQvY472M4ykL0JgT+AqsZdG+kWDqUw/6g==} + peerDependencies: + eslint: '>=6.8.0' + dependencies: + eslint: 7.32.0 + dev: true + /eslint-config-ali/13.1.0_eslint@8.19.0: resolution: {integrity: sha512-ZjWrpiKADEmNhtfB64iVN3ejlDS5sS9OZx9+jN3mF+oqaroWqrTPvqQvY472M4ykL0JgT+AqsZdG+kWDqUw/6g==} peerDependencies: @@ -6833,7 +7137,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 5.30.5_4x5o4skxv6sl53vpwefgt23khm + '@typescript-eslint/parser': 5.30.5_eslint@7.32.0 debug: 3.2.7 eslint-import-resolver-node: 0.3.6 find-up: 2.1.0 @@ -6872,6 +7176,37 @@ packages: - supports-color dev: true + /eslint-plugin-import/2.26.0_rd6cw2bkmgckqjtetyu3p3ss5i: + resolution: {integrity: sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==} + engines: {node: '>=4'} + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + dependencies: + '@typescript-eslint/parser': 5.30.5_eslint@7.32.0 + array-includes: 3.1.5 + array.prototype.flat: 1.3.0 + debug: 2.6.9 + doctrine: 2.1.0 + eslint: 7.32.0 + eslint-import-resolver-node: 0.3.6 + eslint-module-utils: 2.7.3_ea34krk32wbcqzxapvwr7rsjs4 + has: 1.0.3 + is-core-module: 2.9.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.values: 1.1.5 + resolve: 1.22.1 + tsconfig-paths: 3.14.1 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: true + /eslint-plugin-jsx-plus/0.1.0: resolution: {integrity: sha512-iANfZsPWwUWT2czz3A7Ti7B5Iun8YvIMDe6c7VYEZAVjCZyZkB+djflAxOv1XD/TwQeFoEYhCoqaBRWFk5/vIA==} engines: {node: '>=0.10.0'} @@ -6887,6 +7222,15 @@ packages: requireindex: 1.1.0 dev: true + /eslint-plugin-react-hooks/4.6.0_eslint@7.32.0: + resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + engines: {node: '>=10'} + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 7.32.0 + dev: true + /eslint-plugin-react-hooks/4.6.0_eslint@8.19.0: resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} engines: {node: '>=10'} @@ -6896,6 +7240,29 @@ packages: eslint: 8.19.0 dev: true + /eslint-plugin-react/7.30.1_eslint@7.32.0: + resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} + engines: {node: '>=4'} + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.5 + array.prototype.flatmap: 1.3.0 + doctrine: 2.1.0 + eslint: 7.32.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.2 + minimatch: 3.1.2 + object.entries: 1.1.5 + object.fromentries: 2.0.5 + object.hasown: 1.1.1 + object.values: 1.1.5 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.0 + string.prototype.matchall: 4.0.7 + dev: true + /eslint-plugin-react/7.30.1_eslint@8.19.0: resolution: {integrity: sha512-NbEvI9jtqO46yJA3wcRF9Mo0lF9T/jhdHqhCHXiXtD+Zcb98812wvokjWpU7Q4QH5edo6dmqrukxVvWWXHlsUg==} engines: {node: '>=4'} @@ -6919,6 +7286,21 @@ packages: string.prototype.matchall: 4.0.7 dev: true + /eslint-plugin-vue/7.20.0_eslint@7.32.0: + resolution: {integrity: sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==} + engines: {node: '>=8.10'} + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + dependencies: + eslint: 7.32.0 + eslint-utils: 2.1.0 + natural-compare: 1.4.0 + semver: 6.3.0 + vue-eslint-parser: 7.11.0_eslint@7.32.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint-plugin-vue/7.20.0_eslint@8.19.0: resolution: {integrity: sha512-oVNDqzBC9h3GO+NTgWeLMhhGigy6/bQaQbHS+0z7C4YEu/qK/yxHvca/2PTZtGNPsCrHwOTgKMrwu02A9iPBmw==} engines: {node: '>=8.10'} @@ -6956,6 +7338,16 @@ packages: eslint-visitor-keys: 1.3.0 dev: true + /eslint-utils/3.0.0_eslint@7.32.0: + resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} + engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} + peerDependencies: + eslint: '>=5' + dependencies: + eslint: 7.32.0 + eslint-visitor-keys: 2.1.0 + dev: true + /eslint-utils/3.0.0_eslint@8.19.0: resolution: {integrity: sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==} engines: {node: ^10.0.0 || ^12.0.0 || >= 14.0.0} @@ -6981,6 +7373,55 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /eslint/7.32.0: + resolution: {integrity: sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==} + engines: {node: ^10.12.0 || >=12.0.0} + hasBin: true + dependencies: + '@babel/code-frame': 7.12.11 + '@eslint/eslintrc': 0.4.3 + '@humanwhocodes/config-array': 0.5.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + enquirer: 2.3.6 + escape-string-regexp: 4.0.0 + eslint-scope: 5.1.1 + eslint-utils: 2.1.0 + eslint-visitor-keys: 2.1.0 + espree: 7.3.1 + esquery: 1.4.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + functional-red-black-tree: 1.0.1 + glob-parent: 5.1.2 + globals: 13.16.0 + ignore: 4.0.6 + import-fresh: 3.3.0 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + js-yaml: 3.14.1 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.1 + progress: 2.0.3 + regexpp: 3.2.0 + semver: 7.3.7 + strip-ansi: 6.0.1 + strip-json-comments: 3.1.1 + table: 6.8.0 + text-table: 0.2.0 + v8-compile-cache: 2.3.0 + transitivePeerDependencies: + - supports-color + dev: true + /eslint/8.19.0: resolution: {integrity: sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7034,6 +7475,15 @@ packages: eslint-visitor-keys: 1.3.0 dev: true + /espree/7.3.1: + resolution: {integrity: sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==} + engines: {node: ^10.12.0 || >=12.0.0} + dependencies: + acorn: 7.4.1 + acorn-jsx: 5.3.2_acorn@7.4.1 + eslint-visitor-keys: 1.3.0 + dev: true + /espree/9.3.2: resolution: {integrity: sha512-D211tC7ZwouTIuY5x9XnS0E9sWNChB7IYKX/Xp5eQj3nFXhqmiUDB9q27y76oFl8jTg3pXcQx/bpxMfs3CIZbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -7047,7 +7497,6 @@ packages: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} hasBin: true - dev: false /esquery/1.4.0: resolution: {integrity: sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==} @@ -7406,7 +7855,6 @@ packages: dependencies: cross-spawn: 7.0.3 signal-exit: 3.0.7 - dev: false /fork-ts-checker-webpack-plugin/6.5.2_3o2jfq6vfqxns3sz6wn2nnc3ei: resolution: {integrity: sha512-m5cUmF30xkZ7h4tWUgTAcEaKmUW7tfyUyTqNNOz7OxWJ0v1VWKTcOvH8FWHUwSjlW/356Ijc9vi3XfcPstpQKA==} @@ -7576,7 +8024,7 @@ packages: /get-func-name/2.0.0: resolution: {integrity: sha512-Hm0ixYtaSZ/V7C8FJrtZIuBBI+iSgL+1Aq82zSu8VQNB4S3Gk8e7Qs3VwBDJAhmRZcFqkl3tQu36g/Foh5I5ig==} - dev: false + dev: true /get-intrinsic/1.1.2: resolution: {integrity: sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==} @@ -7966,7 +8414,6 @@ packages: /html-escaper/2.0.2: resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} - dev: false /html-minifier-terser/6.1.0: resolution: {integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==} @@ -8145,6 +8592,11 @@ packages: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} dev: false + /ignore/4.0.6: + resolution: {integrity: sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==} + engines: {node: '>= 4'} + dev: true + /ignore/5.2.0: resolution: {integrity: sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==} engines: {node: '>= 4'} @@ -8605,7 +9057,6 @@ packages: /istanbul-lib-coverage/3.2.0: resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} engines: {node: '>=8'} - dev: false /istanbul-lib-report/3.0.0: resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} @@ -8614,7 +9065,6 @@ packages: istanbul-lib-coverage: 3.2.0 make-dir: 3.1.0 supports-color: 7.2.0 - dev: false /istanbul-reports/3.1.4: resolution: {integrity: sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==} @@ -8622,7 +9072,6 @@ packages: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.0 - dev: false /jake/10.8.5: resolution: {integrity: sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw==} @@ -8665,7 +9114,6 @@ packages: dependencies: argparse: 1.0.10 esprima: 4.0.1 - dev: false /js-yaml/4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} @@ -8875,7 +9323,7 @@ packages: /local-pkg/0.4.1: resolution: {integrity: sha512-lL87ytIGP2FU5PWwNDo0w3WhIo2gopIAxPg9RxDYF7m4rr5ahuZxP22xnJHIvaLTe4Z9P6uKKY2UHiwyB4pcrw==} engines: {node: '>=14'} - dev: false + dev: true /locate-path/2.0.0: resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} @@ -8969,7 +9417,7 @@ packages: resolution: {integrity: sha512-OvKfgCC2Ndby6aSTREl5aCCPTNIzlDfQZvZxNUrBrihDhL3xcrYegTblhmEiCrg2kKQz4XsFIaemE5BF4ybSaQ==} dependencies: get-func-name: 2.0.0 - dev: false + dev: true /lower-case/2.0.2: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} @@ -9013,7 +9461,6 @@ packages: engines: {node: '>=8'} dependencies: semver: 6.3.0 - dev: false /make-error/1.3.6: resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} @@ -9875,7 +10322,7 @@ packages: /pathval/1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} - dev: false + dev: true /picocolors/0.2.1: resolution: {integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==} @@ -10457,6 +10904,11 @@ packages: /process-nextick-args/2.0.1: resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + /progress/2.0.3: + resolution: {integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==} + engines: {node: '>=0.4.0'} + dev: true + /promise.series/0.2.0: resolution: {integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==} engines: {node: '>=0.12'} @@ -10578,6 +11030,25 @@ packages: unpipe: 1.0.0 dev: false + /rax-children/1.0.0_rax@1.2.2: + resolution: {integrity: sha512-sBKEXAMj9ik6SsPfPGgcQnqggmbWFyBdvAV/Cz/0f04bRA86BtWgbMri/9Dce0k8nkEC/BGWiiTdyA8Q49zIiw==} + engines: {npm: '>=3.0.0'} + peerDependencies: + rax: ^1.0.0 + dependencies: + rax: 1.2.2 + dev: true + + /rax-clone-element/1.0.0_rax@1.2.2: + resolution: {integrity: sha512-TaQMVuzoglvCTjbWATlvvwARmeWnG8kpENWNXrNDv0++x29GHNND/TBbx7sdtVs/QmYwYc8YmwRUhaBwKQi5eQ==} + engines: {npm: '>=3.0.0'} + peerDependencies: + rax: ^1.0.0 + dependencies: + rax: 1.2.2 + rax-is-valid-element: 1.0.0 + dev: true + /rax-compat/0.1.0-beta.4: resolution: {integrity: sha512-/i1TfZ0qsouajUfa9dPXUQ8sP/jCSygvpjCITCT8IrN6gVoW1eVTVbOn9qMaJkZPue6617aoPcJu+n2co3teOg==} peerDependencies: @@ -10591,6 +11062,48 @@ packages: - rax dev: false + /rax-compat/0.1.0-beta.4_biqbaboplfbrettd7655fr4n2y: + resolution: {integrity: sha512-/i1TfZ0qsouajUfa9dPXUQ8sP/jCSygvpjCITCT8IrN6gVoW1eVTVbOn9qMaJkZPue6617aoPcJu+n2co3teOg==} + peerDependencies: + react: ^18 + react-dom: ^18 + dependencies: + appear-polyfill: 0.1.2 + create-react-class: 15.7.0 + react: 18.2.0 + react-dom: 18.2.0_react@18.2.0 + style-unit: 3.0.4 + transitivePeerDependencies: + - rax + dev: false + + /rax-create-factory/1.0.0_rax@1.2.2: + resolution: {integrity: sha512-blBaVrurj/BOWelJhQWiuc0Kk8Ons1jsNsX78omaPBLkSOL7OkyJ3NC/0iKXHu425yWrGB6e5vho/qabROC7VQ==} + engines: {npm: '>=3.0.0'} + peerDependencies: + rax: ^1.0.0 + dependencies: + rax: 1.2.2 + dev: true + + /rax-is-valid-element/1.0.0: + resolution: {integrity: sha512-MM3IUAQRKn3EJ0D2vjxgobOJLplLAw3YxE7/IRM6ytDYzlPq5iIZ8wsXoPAp/qW3Y+n23HLQUIljmLKywcCEIA==} + engines: {npm: '>=3.0.0'} + dev: true + + /rax/1.2.2: + resolution: {integrity: sha512-SKUKSXoG2Dp+sFyiFyYzTGmhZlYGxusRSigcokAYTN3r4WTySreXs2WE+6nBBGg26aFyiCsBVHNeI86SQbVsQg==} + engines: {npm: '>=3.0.0'} + dependencies: + '@babel/runtime': 7.18.6 + driver-server: 1.0.0 + prop-types: 15.8.1 + rax-children: 1.0.0_rax@1.2.2 + rax-clone-element: 1.0.0_rax@1.2.2 + rax-create-factory: 1.0.0_rax@1.2.2 + rax-is-valid-element: 1.0.0 + dev: true + /rc/1.2.8: resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} hasBin: true @@ -10692,6 +11205,15 @@ packages: react: 17.0.2 scheduler: 0.20.2 + /react-dom/18.2.0_react@18.2.0: + resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + /react-error-overlay/6.0.11: resolution: {integrity: sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg==} dev: false @@ -10907,6 +11429,12 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /react/18.2.0: + resolution: {integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==} + engines: {node: '>=0.10.0'} + dependencies: + loose-envify: 1.4.0 + /read-pkg-up/7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -11406,6 +11934,11 @@ packages: loose-envify: 1.4.0 object-assign: 4.1.1 + /scheduler/0.23.0: + resolution: {integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==} + dependencies: + loose-envify: 1.4.0 + /schema-utils/2.7.0: resolution: {integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==} engines: {node: '>= 8.9.0'} @@ -11773,7 +12306,6 @@ packages: /sprintf-js/1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} - dev: false /stable/0.1.8: resolution: {integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==} @@ -11958,7 +12490,6 @@ packages: dependencies: '@babel/runtime': 7.18.6 universal-env: 3.3.3 - dev: false /stylehacks/5.1.0_postcss@8.4.14: resolution: {integrity: sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==} @@ -12174,7 +12705,6 @@ packages: '@istanbuljs/schema': 0.1.3 glob: 7.2.3 minimatch: 3.1.2 - dev: false /text-extensions/1.9.0: resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} @@ -12208,12 +12738,12 @@ packages: /tinypool/0.1.3: resolution: {integrity: sha512-2IfcQh7CP46XGWGGbdyO4pjcKqsmVqFAPcXfPxcPXmOWt9cYkTP9HcDmGgsfijYoAEc4z9qcpM/BaBz46Y9/CQ==} engines: {node: '>=14.0.0'} - dev: false + dev: true /tinyspy/0.3.3: resolution: {integrity: sha512-gRiUR8fuhUf0W9lzojPf1N1euJYA30ISebSfgca8z76FOvXtVXqd5ojEIaKLWbDQhAaC3ibxZIjqbyi4ybjcTw==} engines: {node: '>=14.0.0'} - dev: false + dev: true /tmp/0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -12330,6 +12860,15 @@ packages: /tslib/2.4.0: resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + /tsutils/3.21.0: + resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} + engines: {node: '>= 6'} + peerDependencies: + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + dependencies: + tslib: 1.14.1 + dev: true + /tsutils/3.21.0_typescript@4.7.4: resolution: {integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==} engines: {node: '>= 6'} @@ -12350,7 +12889,7 @@ packages: /type-detect/4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} - dev: false + dev: true /type-fest/0.18.1: resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} @@ -12536,7 +13075,6 @@ packages: engines: {npm: '>=3.0.0'} dependencies: '@uni/env': 1.1.0 - dev: false /universalify/0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} @@ -12716,7 +13254,6 @@ packages: '@jridgewell/trace-mapping': 0.3.14 '@types/istanbul-lib-coverage': 2.0.4 convert-source-map: 1.8.0 - dev: false /validate-npm-package-license/3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} @@ -12780,7 +13317,7 @@ packages: rollup: 2.76.0 optionalDependencies: fsevents: 2.3.2 - dev: false + dev: true /vitest/0.7.13_c8@7.11.3: resolution: {integrity: sha512-UCHeJEOK+qCBa/e4UtkCfv0wIZ125T4Nf2R0J/46v/Wnv6bt9zGfAyKAI6siYFhvLvg20MgDIreROtVgedHFWw==} @@ -12813,7 +13350,25 @@ packages: - less - sass - stylus - dev: false + dev: true + + /vue-eslint-parser/7.11.0_eslint@7.32.0: + resolution: {integrity: sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==} + engines: {node: '>=8.10'} + peerDependencies: + eslint: '>=5.0.0' + dependencies: + debug: 4.3.4 + eslint: 7.32.0 + eslint-scope: 5.1.1 + eslint-visitor-keys: 1.3.0 + espree: 6.2.1 + esquery: 1.4.0 + lodash: 4.17.21 + semver: 6.3.0 + transitivePeerDependencies: + - supports-color + dev: true /vue-eslint-parser/7.11.0_eslint@8.19.0: resolution: {integrity: sha512-qh3VhDLeh773wjgNTl7ss0VejY9bMMa0GoDG2fQVyDzRFdiU3L7fw74tWZDHNQXdZqxO3EveQroa9ct39D2nqg==} @@ -13269,7 +13824,6 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.9 - dev: false /yargs/17.5.1: resolution: {integrity: sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3ed62560..d174a74c 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,4 +1,5 @@ packages: - 'packages/*' - 'examples/*' + - 'tests/fixtures/scenarios/*' - 'website' diff --git a/tests/fixtures/scenarios/node/.eslintignore b/tests/fixtures/scenarios/node/.eslintignore new file mode 100644 index 00000000..c20f050d --- /dev/null +++ b/tests/fixtures/scenarios/node/.eslintignore @@ -0,0 +1,12 @@ +# See https://eslint.org/docs/latest/user-guide/configuring/ignoring-code for more about ignoring files. +.docusaurus/ +node_modules/ +**/*-min.js +**/*.min.js +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/node/.eslintrc.cjs b/tests/fixtures/scenarios/node/.eslintrc.cjs new file mode 100644 index 00000000..cbcecd85 --- /dev/null +++ b/tests/fixtures/scenarios/node/.eslintrc.cjs @@ -0,0 +1,7 @@ +const { getESLintConfig } = require('@iceworks/spec'); + +module.exports = getESLintConfig('react-ts', { + env: { + jest: true + }, +}); diff --git a/tests/fixtures/scenarios/node/.gitignore b/tests/fixtures/scenarios/node/.gitignore new file mode 100644 index 00000000..3b4236cc --- /dev/null +++ b/tests/fixtures/scenarios/node/.gitignore @@ -0,0 +1,24 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +node_modules/ + +# production +.docusaurus/ +build/ +dist/ +tmp/ +cjs/ +esm/ +es2017/ + +# misc +.idea/ +.happypack +.DS_Store +*.swp +*.dia~ + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/tests/fixtures/scenarios/node/.stylelintignore b/tests/fixtures/scenarios/node/.stylelintignore new file mode 100644 index 00000000..273d1719 --- /dev/null +++ b/tests/fixtures/scenarios/node/.stylelintignore @@ -0,0 +1,11 @@ +.docusaurus/ +node_modules/ +**/*-min.css +**/*.min.css +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/node/.stylelintrc.cjs b/tests/fixtures/scenarios/node/.stylelintrc.cjs new file mode 100644 index 00000000..d9ecade5 --- /dev/null +++ b/tests/fixtures/scenarios/node/.stylelintrc.cjs @@ -0,0 +1,3 @@ +const { getStylelintConfig } = require('@iceworks/spec'); + +module.exports = getStylelintConfig('react'); diff --git a/tests/fixtures/scenarios/node/README.md b/tests/fixtures/scenarios/node/README.md new file mode 100644 index 00000000..c0386f1a --- /dev/null +++ b/tests/fixtures/scenarios/node/README.md @@ -0,0 +1,15 @@ +# node + +组件功能描述 + +## Install + +```bash +$ npm i node --save +``` + +## Usage + +```js +import Node from 'node'; +``` diff --git a/tests/fixtures/scenarios/node/abc.json b/tests/fixtures/scenarios/node/abc.json new file mode 100644 index 00000000..942446b5 --- /dev/null +++ b/tests/fixtures/scenarios/node/abc.json @@ -0,0 +1,3 @@ +{ + "builder": "@ali/builder-component" +} diff --git a/tests/fixtures/scenarios/node/build.config.mts b/tests/fixtures/scenarios/node/build.config.mts new file mode 100644 index 00000000..c91fc6b4 --- /dev/null +++ b/tests/fixtures/scenarios/node/build.config.mts @@ -0,0 +1,8 @@ +import { defineConfig } from '@ice/pkg'; + +// https://pkg.ice.work/reference/config-list/ +export default defineConfig({ + transform: { + formats: ['es2017'], + }, +}); diff --git a/tests/fixtures/scenarios/node/package.json b/tests/fixtures/scenarios/node/package.json new file mode 100644 index 00000000..9e3eb55e --- /dev/null +++ b/tests/fixtures/scenarios/node/package.json @@ -0,0 +1,50 @@ +{ + "name": "node", + "version": "0.1.0", + "description": "组件功能描述", + "type": "module", + "files": [ + "esm", + "cjs", + "es2017", + "dist", + "build" + ], + "module": "es2017/index.js", + "exports": { + ".": { + "import": "./es2017/index.js" + }, + "./*": "./*" + }, + "sideEffects": [ + "dist/*", + "*.scss", + "*.less", + "*.css" + ], + "scripts": { + "start": "ice-pkg start", + "build": "ice-pkg build", + "prepublishOnly": "npm run build", + "eslint": "eslint --cache --ext .js,.jsx,.ts,.tsx ./", + "eslint:fix": "npm run eslint -- --fix", + "stylelint": "stylelint \"**/*.{css,scss,less}\"", + "lint": "npm run eslint && npm run stylelint" + }, + "keywords": [ + "ice", + "js", + "library" + ], + "devDependencies": { + "@ice/pkg": "^1.0.0", + "@iceworks/spec": "^1.0.0", + "eslint": "^7.0.0", + "stylelint": "^13.7.2" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT" +} diff --git a/tests/fixtures/scenarios/node/src/index.ts b/tests/fixtures/scenarios/node/src/index.ts new file mode 100644 index 00000000..4347921a --- /dev/null +++ b/tests/fixtures/scenarios/node/src/index.ts @@ -0,0 +1,4 @@ +export function foo(options: any) { + console.log('options'); + return true; +} diff --git a/tests/fixtures/scenarios/node/tsconfig.json b/tests/fixtures/scenarios/node/tsconfig.json new file mode 100644 index 00000000..e624667b --- /dev/null +++ b/tests/fixtures/scenarios/node/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "buildOnSave": false, + "compilerOptions": { + "outDir": "build", + "module": "esnext", + "target": "esnext", + "jsx": "react", + "moduleResolution": "node", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "skipLibCheck": true + }, + "include": ["src/*.ts", "src/*.tsx"], + "exclude": ["node_modules", "build", "public"] +} diff --git a/tests/fixtures/scenarios/rax/.eslintignore b/tests/fixtures/scenarios/rax/.eslintignore new file mode 100644 index 00000000..c20f050d --- /dev/null +++ b/tests/fixtures/scenarios/rax/.eslintignore @@ -0,0 +1,12 @@ +# See https://eslint.org/docs/latest/user-guide/configuring/ignoring-code for more about ignoring files. +.docusaurus/ +node_modules/ +**/*-min.js +**/*.min.js +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/rax/.eslintrc.cjs b/tests/fixtures/scenarios/rax/.eslintrc.cjs new file mode 100644 index 00000000..cbcecd85 --- /dev/null +++ b/tests/fixtures/scenarios/rax/.eslintrc.cjs @@ -0,0 +1,7 @@ +const { getESLintConfig } = require('@iceworks/spec'); + +module.exports = getESLintConfig('react-ts', { + env: { + jest: true + }, +}); diff --git a/tests/fixtures/scenarios/rax/.gitignore b/tests/fixtures/scenarios/rax/.gitignore new file mode 100644 index 00000000..3b4236cc --- /dev/null +++ b/tests/fixtures/scenarios/rax/.gitignore @@ -0,0 +1,24 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +node_modules/ + +# production +.docusaurus/ +build/ +dist/ +tmp/ +cjs/ +esm/ +es2017/ + +# misc +.idea/ +.happypack +.DS_Store +*.swp +*.dia~ + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/tests/fixtures/scenarios/rax/.stylelintignore b/tests/fixtures/scenarios/rax/.stylelintignore new file mode 100644 index 00000000..273d1719 --- /dev/null +++ b/tests/fixtures/scenarios/rax/.stylelintignore @@ -0,0 +1,11 @@ +.docusaurus/ +node_modules/ +**/*-min.css +**/*.min.css +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/rax/.stylelintrc.cjs b/tests/fixtures/scenarios/rax/.stylelintrc.cjs new file mode 100644 index 00000000..d9ecade5 --- /dev/null +++ b/tests/fixtures/scenarios/rax/.stylelintrc.cjs @@ -0,0 +1,3 @@ +const { getStylelintConfig } = require('@iceworks/spec'); + +module.exports = getStylelintConfig('react'); diff --git a/tests/fixtures/scenarios/rax/README.md b/tests/fixtures/scenarios/rax/README.md new file mode 100644 index 00000000..d60f0035 --- /dev/null +++ b/tests/fixtures/scenarios/rax/README.md @@ -0,0 +1,15 @@ +# rax + +组件功能描述 + +## Install + +```bash +$ npm i rax --save +``` + +## Usage + +```jsx +import Rax from 'rax'; +``` diff --git a/tests/fixtures/scenarios/rax/abc.json b/tests/fixtures/scenarios/rax/abc.json new file mode 100644 index 00000000..942446b5 --- /dev/null +++ b/tests/fixtures/scenarios/rax/abc.json @@ -0,0 +1,3 @@ +{ + "builder": "@ali/builder-component" +} diff --git a/tests/fixtures/scenarios/rax/build.config.mts b/tests/fixtures/scenarios/rax/build.config.mts new file mode 100644 index 00000000..59e283fd --- /dev/null +++ b/tests/fixtures/scenarios/rax/build.config.mts @@ -0,0 +1,9 @@ +import { defineConfig } from '@ice/pkg'; + +// https://pkg.ice.work/reference/config-list/ +export default defineConfig({ + plugins: [ + '@ice/pkg-plugin-docusaurus', + '@ice/pkg-plugin-rax-component' + ], +}); diff --git a/tests/fixtures/scenarios/rax/docs/index.md b/tests/fixtures/scenarios/rax/docs/index.md new file mode 100644 index 00000000..7efe87ef --- /dev/null +++ b/tests/fixtures/scenarios/rax/docs/index.md @@ -0,0 +1,8 @@ +--- +sidebar_label: 首页 +sidebar_position: 0 +--- + +import Readme from '../README.md'; + + diff --git a/tests/fixtures/scenarios/rax/docs/usage.js b/tests/fixtures/scenarios/rax/docs/usage.js new file mode 100644 index 00000000..71f24de9 --- /dev/null +++ b/tests/fixtures/scenarios/rax/docs/usage.js @@ -0,0 +1,2 @@ +/* Example for JS use in usage.md in case of need. */ +export default () => {} diff --git a/tests/fixtures/scenarios/rax/docs/usage.md b/tests/fixtures/scenarios/rax/docs/usage.md new file mode 100644 index 00000000..eccb1aac --- /dev/null +++ b/tests/fixtures/scenarios/rax/docs/usage.md @@ -0,0 +1,19 @@ +--- +sidebar_label: 用法 +--- + +本 Demo 演示一行文字的用法。 + +```jsx preview +import Rax from 'rax'; +import styles from './usage.module.css'; +import noop from './usage.js'; + +export default function App () { + return ( +
+ +
+ ) +} +``` diff --git a/tests/fixtures/scenarios/rax/docs/usage.module.css b/tests/fixtures/scenarios/rax/docs/usage.module.css new file mode 100644 index 00000000..d4e913a8 --- /dev/null +++ b/tests/fixtures/scenarios/rax/docs/usage.module.css @@ -0,0 +1,2 @@ +/* Example for CSS use in usage.md in case of need. */ +.usageContainer {} diff --git a/tests/fixtures/scenarios/rax/package.json b/tests/fixtures/scenarios/rax/package.json new file mode 100644 index 00000000..da5c263c --- /dev/null +++ b/tests/fixtures/scenarios/rax/package.json @@ -0,0 +1,60 @@ +{ + "name": "rax", + "version": "0.1.0", + "description": "组件功能描述", + "files": [ + "esm", + "cjs", + "es2017", + "dist", + "build" + ], + "module": "esm/index.js", + "exports": { + ".": { + "import": "./esm/index.js", + "es2017": "./es2017/index.js" + }, + "./*": "./*" + }, + "sideEffects": [ + "dist/*", + "*.scss", + "*.less", + "*.css" + ], + "scripts": { + "start": "ice-pkg start", + "build": "ice-pkg build", + "prepublishOnly": "npm run build", + "eslint": "eslint --cache --ext .js,.jsx,.ts,.tsx ./", + "eslint:fix": "npm run eslint -- --fix", + "stylelint": "stylelint \"**/*.{css,scss,less}\"", + "lint": "npm run eslint && npm run stylelint" + }, + "keywords": [ + "ice", + "react", + "component" + ], + "devDependencies": { + "@ice/pkg": "^1.0.0", + "@ice/pkg-plugin-docusaurus": "^1.0.0", + "@ice/pkg-plugin-rax-component": "^1.0.0", + "@iceworks/spec": "^1.0.0", + "eslint": "^7.0.0", + "@types/rax": "^1.0.0", + "rax": "^1.2.2", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "style-unit": "^3.0.4", + "stylelint": "^13.7.2" + }, + "peerDependencies": { + "rax": "^1.2.2" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT" +} diff --git a/tests/fixtures/scenarios/rax/src/index.module.css b/tests/fixtures/scenarios/rax/src/index.module.css new file mode 100644 index 00000000..34113adb --- /dev/null +++ b/tests/fixtures/scenarios/rax/src/index.module.css @@ -0,0 +1,4 @@ +/* Write your style here. */ +.Rax { + +} diff --git a/tests/fixtures/scenarios/rax/src/index.tsx b/tests/fixtures/scenarios/rax/src/index.tsx new file mode 100644 index 00000000..2cdde8e3 --- /dev/null +++ b/tests/fixtures/scenarios/rax/src/index.tsx @@ -0,0 +1,15 @@ +import { createElement } from 'rax'; +import styles from './index.module.css'; + +interface ComponentProps { + /** Title for Rax. */ + title: string; +} + +export default function Rax(props: ComponentProps) { + const { title = 'Hello World!' } = props; + + return ( +
{title}
+ ); +} diff --git a/tests/fixtures/scenarios/rax/src/typings.d.ts b/tests/fixtures/scenarios/rax/src/typings.d.ts new file mode 100644 index 00000000..3d673e2e --- /dev/null +++ b/tests/fixtures/scenarios/rax/src/typings.d.ts @@ -0,0 +1,4 @@ +declare module '*.module.css' { + const classes: { [key: string]: string }; + export default classes; +} diff --git a/tests/fixtures/scenarios/rax/tsconfig.json b/tests/fixtures/scenarios/rax/tsconfig.json new file mode 100644 index 00000000..ab168ed0 --- /dev/null +++ b/tests/fixtures/scenarios/rax/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compileOnSave": false, + "buildOnSave": false, + "compilerOptions": { + "outDir": "build", + "module": "esnext", + "target": "esnext", + "jsx": "preserve", + "jsxFactory": "createElement", + "moduleResolution": "node", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "skipLibCheck": true + }, + "include": ["src/*.ts", "src/*.tsx"], + "exclude": ["node_modules", "build", "public"] +} diff --git a/tests/fixtures/scenarios/react/.eslintignore b/tests/fixtures/scenarios/react/.eslintignore new file mode 100644 index 00000000..c20f050d --- /dev/null +++ b/tests/fixtures/scenarios/react/.eslintignore @@ -0,0 +1,12 @@ +# See https://eslint.org/docs/latest/user-guide/configuring/ignoring-code for more about ignoring files. +.docusaurus/ +node_modules/ +**/*-min.js +**/*.min.js +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/react/.eslintrc.cjs b/tests/fixtures/scenarios/react/.eslintrc.cjs new file mode 100644 index 00000000..cbcecd85 --- /dev/null +++ b/tests/fixtures/scenarios/react/.eslintrc.cjs @@ -0,0 +1,7 @@ +const { getESLintConfig } = require('@iceworks/spec'); + +module.exports = getESLintConfig('react-ts', { + env: { + jest: true + }, +}); diff --git a/tests/fixtures/scenarios/react/.gitignore b/tests/fixtures/scenarios/react/.gitignore new file mode 100644 index 00000000..3b4236cc --- /dev/null +++ b/tests/fixtures/scenarios/react/.gitignore @@ -0,0 +1,24 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +node_modules/ + +# production +.docusaurus/ +build/ +dist/ +tmp/ +cjs/ +esm/ +es2017/ + +# misc +.idea/ +.happypack +.DS_Store +*.swp +*.dia~ + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/tests/fixtures/scenarios/react/.stylelintignore b/tests/fixtures/scenarios/react/.stylelintignore new file mode 100644 index 00000000..273d1719 --- /dev/null +++ b/tests/fixtures/scenarios/react/.stylelintignore @@ -0,0 +1,11 @@ +.docusaurus/ +node_modules/ +**/*-min.css +**/*.min.css +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/react/.stylelintrc.cjs b/tests/fixtures/scenarios/react/.stylelintrc.cjs new file mode 100644 index 00000000..d9ecade5 --- /dev/null +++ b/tests/fixtures/scenarios/react/.stylelintrc.cjs @@ -0,0 +1,3 @@ +const { getStylelintConfig } = require('@iceworks/spec'); + +module.exports = getStylelintConfig('react'); diff --git a/tests/fixtures/scenarios/react/README.md b/tests/fixtures/scenarios/react/README.md new file mode 100644 index 00000000..8c3e01d0 --- /dev/null +++ b/tests/fixtures/scenarios/react/README.md @@ -0,0 +1,15 @@ +# react + +组件功能描述 + +## Install + +```bash +$ npm i react --save +``` + +## Usage + +```jsx +import React from 'react'; +``` diff --git a/tests/fixtures/scenarios/react/abc.json b/tests/fixtures/scenarios/react/abc.json new file mode 100644 index 00000000..942446b5 --- /dev/null +++ b/tests/fixtures/scenarios/react/abc.json @@ -0,0 +1,3 @@ +{ + "builder": "@ali/builder-component" +} diff --git a/tests/fixtures/scenarios/react/build.config.mts b/tests/fixtures/scenarios/react/build.config.mts new file mode 100644 index 00000000..2a08106d --- /dev/null +++ b/tests/fixtures/scenarios/react/build.config.mts @@ -0,0 +1,8 @@ +import { defineConfig } from '@ice/pkg'; + +// https://pkg.ice.work/reference/config-list +export default defineConfig({ + plugins: [ + '@ice/pkg-plugin-docusaurus', + ], +}); diff --git a/tests/fixtures/scenarios/react/docs/index.md b/tests/fixtures/scenarios/react/docs/index.md new file mode 100644 index 00000000..7efe87ef --- /dev/null +++ b/tests/fixtures/scenarios/react/docs/index.md @@ -0,0 +1,8 @@ +--- +sidebar_label: 首页 +sidebar_position: 0 +--- + +import Readme from '../README.md'; + + diff --git a/tests/fixtures/scenarios/react/docs/usage.js b/tests/fixtures/scenarios/react/docs/usage.js new file mode 100644 index 00000000..71f24de9 --- /dev/null +++ b/tests/fixtures/scenarios/react/docs/usage.js @@ -0,0 +1,2 @@ +/* Example for JS use in usage.md in case of need. */ +export default () => {} diff --git a/tests/fixtures/scenarios/react/docs/usage.md b/tests/fixtures/scenarios/react/docs/usage.md new file mode 100644 index 00000000..ae93279d --- /dev/null +++ b/tests/fixtures/scenarios/react/docs/usage.md @@ -0,0 +1,19 @@ +--- +sidebar_label: 用法 +--- + +本 Demo 演示一行文字的用法。 + +```jsx preview +import React from 'react'; +import styles from './usage.module.css'; +import noop from './usage.js'; + +export default function App () { + return ( +
+ +
+ ) +} +``` diff --git a/tests/fixtures/scenarios/react/docs/usage.module.css b/tests/fixtures/scenarios/react/docs/usage.module.css new file mode 100644 index 00000000..d4e913a8 --- /dev/null +++ b/tests/fixtures/scenarios/react/docs/usage.module.css @@ -0,0 +1,2 @@ +/* Example for CSS use in usage.md in case of need. */ +.usageContainer {} diff --git a/tests/fixtures/scenarios/react/package.json b/tests/fixtures/scenarios/react/package.json new file mode 100644 index 00000000..c58523fa --- /dev/null +++ b/tests/fixtures/scenarios/react/package.json @@ -0,0 +1,62 @@ +{ + "name": "react", + "version": "0.1.0", + "description": "组件功能描述", + "files": [ + "esm", + "cjs", + "es2017", + "dist", + "build" + ], + "module": "esm/index.js", + "exports": { + ".": { + "import": "./esm/index.js", + "es2017": "./es2017/index.js" + }, + "./*": "./*" + }, + "sideEffects": [ + "dist/*", + "*.scss", + "*.less", + "*.css" + ], + "scripts": { + "start": "ice-pkg start", + "build": "ice-pkg build", + "prepublishOnly": "npm run build", + "eslint": "eslint --cache --ext .js,.jsx,.ts,.tsx ./", + "eslint:fix": "npm run eslint -- --fix", + "stylelint": "stylelint \"**/*.{css,scss,less}\"", + "lint": "npm run eslint && npm run stylelint" + }, + "keywords": [ + "ice", + "react", + "component" + ], + "devDependencies": { + "@ice/pkg": "^1.0.0", + "@ice/pkg-plugin-docusaurus": "^1.0.0", + "@iceworks/spec": "^1.0.0", + "@types/react": "^18.0.0", + "@types/react-dom": "^18.0.0", + "eslint": "^7.0.0", + "react": "^18.0.0", + "react-dom": "^18.0.0", + "style-unit": "^3.0.4", + "stylelint": "^13.7.2" + }, + "peerDependencies": { + "react": "^17 || ^18" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT", + "dependencies": { + "rax-compat": "^0.1.0-alpha.5" + } +} diff --git a/tests/fixtures/scenarios/react/src/index.module.css b/tests/fixtures/scenarios/react/src/index.module.css new file mode 100644 index 00000000..23e31951 --- /dev/null +++ b/tests/fixtures/scenarios/react/src/index.module.css @@ -0,0 +1,4 @@ +/* Write your style here. */ +.React { + +} diff --git a/tests/fixtures/scenarios/react/src/index.tsx b/tests/fixtures/scenarios/react/src/index.tsx new file mode 100644 index 00000000..25dcbcb1 --- /dev/null +++ b/tests/fixtures/scenarios/react/src/index.tsx @@ -0,0 +1,15 @@ +import * as React from 'react'; +import styles from './index.module.css'; + +interface ComponentProps { + /** Title for React. */ + title: string; +} + +export default function React(props: ComponentProps) { + const { title = 'Hello World!' } = props; + + return ( +
{title}
+ ); +} diff --git a/tests/fixtures/scenarios/react/src/typings.d.ts b/tests/fixtures/scenarios/react/src/typings.d.ts new file mode 100644 index 00000000..3d673e2e --- /dev/null +++ b/tests/fixtures/scenarios/react/src/typings.d.ts @@ -0,0 +1,4 @@ +declare module '*.module.css' { + const classes: { [key: string]: string }; + export default classes; +} diff --git a/tests/fixtures/scenarios/react/tsconfig.json b/tests/fixtures/scenarios/react/tsconfig.json new file mode 100644 index 00000000..e624667b --- /dev/null +++ b/tests/fixtures/scenarios/react/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "buildOnSave": false, + "compilerOptions": { + "outDir": "build", + "module": "esnext", + "target": "esnext", + "jsx": "react", + "moduleResolution": "node", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "skipLibCheck": true + }, + "include": ["src/*.ts", "src/*.tsx"], + "exclude": ["node_modules", "build", "public"] +} diff --git a/tests/fixtures/scenarios/web/.eslintignore b/tests/fixtures/scenarios/web/.eslintignore new file mode 100644 index 00000000..c20f050d --- /dev/null +++ b/tests/fixtures/scenarios/web/.eslintignore @@ -0,0 +1,12 @@ +# See https://eslint.org/docs/latest/user-guide/configuring/ignoring-code for more about ignoring files. +.docusaurus/ +node_modules/ +**/*-min.js +**/*.min.js +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/web/.eslintrc.cjs b/tests/fixtures/scenarios/web/.eslintrc.cjs new file mode 100644 index 00000000..cbcecd85 --- /dev/null +++ b/tests/fixtures/scenarios/web/.eslintrc.cjs @@ -0,0 +1,7 @@ +const { getESLintConfig } = require('@iceworks/spec'); + +module.exports = getESLintConfig('react-ts', { + env: { + jest: true + }, +}); diff --git a/tests/fixtures/scenarios/web/.gitignore b/tests/fixtures/scenarios/web/.gitignore new file mode 100644 index 00000000..3b4236cc --- /dev/null +++ b/tests/fixtures/scenarios/web/.gitignore @@ -0,0 +1,24 @@ +# See https://help.github.com/ignore-files/ for more about ignoring files. + +# dependencies +node_modules/ + +# production +.docusaurus/ +build/ +dist/ +tmp/ +cjs/ +esm/ +es2017/ + +# misc +.idea/ +.happypack +.DS_Store +*.swp +*.dia~ + +npm-debug.log* +yarn-debug.log* +yarn-error.log* diff --git a/tests/fixtures/scenarios/web/.stylelintignore b/tests/fixtures/scenarios/web/.stylelintignore new file mode 100644 index 00000000..273d1719 --- /dev/null +++ b/tests/fixtures/scenarios/web/.stylelintignore @@ -0,0 +1,11 @@ +.docusaurus/ +node_modules/ +**/*-min.css +**/*.min.css +coverage/ +cjs/ +esm/ +es2017/ +dist/ +build/ +tmp/ diff --git a/tests/fixtures/scenarios/web/.stylelintrc.cjs b/tests/fixtures/scenarios/web/.stylelintrc.cjs new file mode 100644 index 00000000..d9ecade5 --- /dev/null +++ b/tests/fixtures/scenarios/web/.stylelintrc.cjs @@ -0,0 +1,3 @@ +const { getStylelintConfig } = require('@iceworks/spec'); + +module.exports = getStylelintConfig('react'); diff --git a/tests/fixtures/scenarios/web/README.md b/tests/fixtures/scenarios/web/README.md new file mode 100644 index 00000000..cd515303 --- /dev/null +++ b/tests/fixtures/scenarios/web/README.md @@ -0,0 +1,15 @@ +# web + +组件功能描述 + +## Install + +```bash +$ npm i web --save +``` + +## Usage + +```js +import Web from 'web'; +``` diff --git a/tests/fixtures/scenarios/web/abc.json b/tests/fixtures/scenarios/web/abc.json new file mode 100644 index 00000000..942446b5 --- /dev/null +++ b/tests/fixtures/scenarios/web/abc.json @@ -0,0 +1,3 @@ +{ + "builder": "@ali/builder-component" +} diff --git a/tests/fixtures/scenarios/web/build.config.mts b/tests/fixtures/scenarios/web/build.config.mts new file mode 100644 index 00000000..f9bb823f --- /dev/null +++ b/tests/fixtures/scenarios/web/build.config.mts @@ -0,0 +1,4 @@ +import { defineConfig } from '@ice/pkg'; + +// https://pkg.ice.work/reference/config-list +export default defineConfig({}); diff --git a/tests/fixtures/scenarios/web/copy-package.json b/tests/fixtures/scenarios/web/copy-package.json new file mode 100644 index 00000000..2ce85b4b --- /dev/null +++ b/tests/fixtures/scenarios/web/copy-package.json @@ -0,0 +1,47 @@ +{ + "name": "web", + "version": "0.1.0", + "description": "组件功能描述", + "files": [ + "esm", + "cjs", + "es2017", + "dist", + "build" + ], + "module": "esm/index.js", + "exports": { + ".": { + "import": "./esm/index.js", + "es2017": "./es2017/index.js" + }, + "./*": "./*" + }, + "sideEffects": [ + "dist/*" + ], + "scripts": { + "start": "ice-pkg start", + "build": "ice-pkg build", + "prepublishOnly": "npm run build", + "eslint": "eslint --cache --ext .js,.jsx,.ts,.tsx ./", + "eslint:fix": "npm run eslint -- --fix", + "stylelint": "stylelint \"**/*.{css,scss,less}\"", + "lint": "npm run eslint && npm run stylelint" + }, + "keywords": [ + "ice", + "web", + "library" + ], + "devDependencies": { + "@ice/pkg": "^1.0.0", + "@iceworks/spec": "^1.0.0", + "eslint": "^7.0.0", + "stylelint": "^13.7.2" + }, + "publishConfig": { + "access": "public" + }, + "license": "MIT" +} diff --git a/tests/fixtures/scenarios/web/package.json b/tests/fixtures/scenarios/web/package.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/tests/fixtures/scenarios/web/package.json @@ -0,0 +1 @@ +{} diff --git a/tests/fixtures/scenarios/web/src/index.ts b/tests/fixtures/scenarios/web/src/index.ts new file mode 100644 index 00000000..4347921a --- /dev/null +++ b/tests/fixtures/scenarios/web/src/index.ts @@ -0,0 +1,4 @@ +export function foo(options: any) { + console.log('options'); + return true; +} diff --git a/tests/fixtures/scenarios/web/tsconfig.json b/tests/fixtures/scenarios/web/tsconfig.json new file mode 100644 index 00000000..e624667b --- /dev/null +++ b/tests/fixtures/scenarios/web/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compileOnSave": false, + "buildOnSave": false, + "compilerOptions": { + "outDir": "build", + "module": "esnext", + "target": "esnext", + "jsx": "react", + "moduleResolution": "node", + "lib": ["es6", "dom"], + "sourceMap": true, + "allowJs": true, + "noUnusedLocals": true, + "noImplicitReturns": true, + "noImplicitThis": true, + "noImplicitAny": true, + "skipLibCheck": true + }, + "include": ["src/*.ts", "src/*.tsx"], + "exclude": ["node_modules", "build", "public"] +} diff --git a/tests/integration/build.test.ts b/tests/integration/build.test.ts new file mode 100644 index 00000000..77568553 --- /dev/null +++ b/tests/integration/build.test.ts @@ -0,0 +1,55 @@ +import path from 'path'; +import { fileURLToPath } from 'url'; +import { expect, test, describe } from 'vitest'; +import componentService from '../../packages/pkg/lib/index.js'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +import readFile from '../utils/readFile'; +import emptyDir from '../utils/emptyDir'; + +async function buildFixtures(rootDir) { + await componentService.run({ + command: 'build', + rootDir, + configFile: 'ice.config.mts', + commandArgs: {}, + getBuiltInPlugins: () => [path.join(__dirname, '../../packages/plugin-component/lib/index.js')], + }); +} + +describe(`build`, () => { + test('web', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/web'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + await buildFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); + + test('node', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/node'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + await buildFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); + + test('react', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/react'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + await buildFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); + + test('rax', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/rax'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + await buildFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); +}); diff --git a/tests/integration/dev.test.ts b/tests/integration/dev.test.ts new file mode 100644 index 00000000..b656dddb --- /dev/null +++ b/tests/integration/dev.test.ts @@ -0,0 +1,56 @@ +import path from 'path'; +import { fileURLToPath } from 'url'; +import { expect, test, describe } from 'vitest'; +import componentService from '../../packages/pkg/lib/index.js'; +const __dirname = path.dirname(fileURLToPath(import.meta.url)); +import readFile from '../utils/readFile'; +import emptyDir from '../utils/emptyDir'; + +async function startFixtures(rootDir) { + await componentService.run({ + command: 'start', + rootDir, + configFile: 'ice.config.mts', + commandArgs: {}, + getBuiltInPlugins: () => [path.join(__dirname, '../../packages/plugin-component/lib/index.js')], + }); +} + +describe(`build`, () => { + test('web', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/web'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + await startFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); + + test('node', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/node'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + await startFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); + + test('react', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/react'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + debugger; + await startFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); + + test('rax', async () => { + const rootDir = path.join(__dirname, '../fixtures/scenarios/rax'); + const esmDir = path.join(rootDir, 'esm'); + await emptyDir(esmDir); + await startFixtures(rootDir); + const files = readFile(esmDir); + expect(files['index.js']).not.toBeFalsy(); + }); +}); diff --git a/tests/utils/emptyDir.ts b/tests/utils/emptyDir.ts new file mode 100644 index 00000000..d7f716bd --- /dev/null +++ b/tests/utils/emptyDir.ts @@ -0,0 +1,7 @@ +import fse from 'fs-extra'; + +export default async function emptyDir(dir: string) { + if (await fse.pathExists(dir)) { + await fse.emptyDir(dir); + } +} diff --git a/tests/utils/readFile.ts b/tests/utils/readFile.ts new file mode 100644 index 00000000..5bb1fb7f --- /dev/null +++ b/tests/utils/readFile.ts @@ -0,0 +1,29 @@ +import fs from 'fs'; +import path from 'path'; + +export function normalizeSlashes(file: string) { + return file.split(path.win32.sep).join('/'); +} + +export default function readFile( + distPath: string, + parentPath = '', + fileMap: Record = {}, +) { + fs.readdirSync(distPath, { withFileTypes: true }).forEach((item) => { + if (item.isFile()) { + fileMap[normalizeSlashes(path.join(parentPath, item.name))] = fs.readFileSync( + path.join(distPath, item.name), + 'utf-8', + ); + } else if (item.isDirectory()) { + readFile( + path.join(distPath, item.name), + path.join(parentPath, item.name), + fileMap, + ); + } + }); + + return fileMap; +}