From d4239bca59857388e346d802d72334beb3a4886e Mon Sep 17 00:00:00 2001 From: xiaohuoni <448627663@qq.com> Date: Wed, 24 Nov 2021 17:35:58 +0800 Subject: [PATCH] feat: support ant design mobile alll --- packages/layout/package.json | 2 +- packages/plugin-mobile5/README.md | 19 +++ packages/plugin-mobile5/package.json | 35 +++++ .../src/BaseGenerator/BaseGenerator.ts | 58 +++++++++ .../plugin-mobile5/src/Generator/Generator.ts | 67 ++++++++++ packages/plugin-mobile5/src/index.ts | 48 +++++++ .../templates/alias/index.d.ts.tpl | 1 + .../templates/alias/package.json.tpl | 13 ++ packages/umi-presets-alita/package.json | 2 +- packages/umi-presets-alita/src/index.ts | 3 +- .../src/plugins/features/mobile5.ts | 18 --- yarn.lock | 123 ++++++++++++++++-- 12 files changed, 357 insertions(+), 32 deletions(-) create mode 100644 packages/plugin-mobile5/README.md create mode 100644 packages/plugin-mobile5/package.json create mode 100644 packages/plugin-mobile5/src/BaseGenerator/BaseGenerator.ts create mode 100644 packages/plugin-mobile5/src/Generator/Generator.ts create mode 100644 packages/plugin-mobile5/src/index.ts create mode 100644 packages/plugin-mobile5/templates/alias/index.d.ts.tpl create mode 100644 packages/plugin-mobile5/templates/alias/package.json.tpl delete mode 100644 packages/umi-presets-alita/src/plugins/features/mobile5.ts diff --git a/packages/layout/package.json b/packages/layout/package.json index 8d2b004b..2fa328c5 100644 --- a/packages/layout/package.json +++ b/packages/layout/package.json @@ -25,6 +25,6 @@ "access": "public" }, "dependencies": { - "@alitajs/alita-layout": "2.4.8" + "@alitajs/alita-layout": "2.4.9" } } diff --git a/packages/plugin-mobile5/README.md b/packages/plugin-mobile5/README.md new file mode 100644 index 00000000..5b5d3e92 --- /dev/null +++ b/packages/plugin-mobile5/README.md @@ -0,0 +1,19 @@ +# @alitajs/plugin-antd-mobile + +> @alitajs/plugin-antd-mobile. + +See our website [@umijs/plugin-antd](https://umijs.org/plugins/plugin-antd) for more information. + +## Install + +Using npm: + +```bash +$ npm install --save-dev @alitajs/plugin-antd-mobile +``` + +or using yarn: + +```bash +$ yarn add @alitajs/plugin-antd-mobile --dev +``` diff --git a/packages/plugin-mobile5/package.json b/packages/plugin-mobile5/package.json new file mode 100644 index 00000000..31cbb29a --- /dev/null +++ b/packages/plugin-mobile5/package.json @@ -0,0 +1,35 @@ +{ + "name": "@alitajs/plugin-mobile5", + "version": "2.8.26-beta.2", + "description": "@alitajs/plugin-mobile5", + "main": "lib/index.js", + "types": "lib/index.d.ts", + "files": [ + "lib", + "src", + "templates" + ], + "repository": { + "type": "git", + "url": "https://github.com/alitajs/alita" + }, + "keywords": [ + "umi" + ], + "authors": [ + "xiaohuoni (https://github.com/xiaohuoni)" + ], + "license": "MIT", + "bugs": "http://github.com/alitajs/alita/issues", + "homepage": "https://github.com/alitajs/alita/tree/master/packages/plugin-antd-mobile#readme", + "peerDependencies": { + "umi": "3.x" + }, + "publishConfig": { + "access": "public" + }, + "dependencies": { + "antd-mobile5": "npm:antd-mobile@next", + "fs-extra": "10.0.0" + } +} \ No newline at end of file diff --git a/packages/plugin-mobile5/src/BaseGenerator/BaseGenerator.ts b/packages/plugin-mobile5/src/BaseGenerator/BaseGenerator.ts new file mode 100644 index 00000000..254a2a9f --- /dev/null +++ b/packages/plugin-mobile5/src/BaseGenerator/BaseGenerator.ts @@ -0,0 +1,58 @@ +import { copyFileSync, statSync } from 'fs'; +import { basename, dirname, join } from 'path'; +import { prompts } from '@umijs/utils'; +import fsExtra from 'fs-extra'; +import Generator from '../Generator/Generator'; + +interface IOpts { + path: string; + target: string; + data?: any; + questions?: prompts.PromptObject[]; +} + +export default class BaseGenerator extends Generator { + path: string; + target: string; + data: any; + questions: prompts.PromptObject[]; + + constructor({ path, target, data, questions }: IOpts) { + super({ cwd: target, args: data }); + this.path = path; + this.target = target; + this.data = data; + this.questions = questions || []; + } + + prompting() { + return this.questions; + } + + async writing() { + const context = { + ...this.data, + ...this.prompts, + }; + if (statSync(this.path).isDirectory()) { + this.copyDirectory({ + context, + path: this.path, + target: this.target, + }); + } else { + const file = basename(this.path.replace(/\.tpl$/, '')); + if (this.path.endsWith('.tpl')) { + this.copyTpl({ + templatePath: this.path, + target: join(this.target, file), + context, + }); + } else { + const absTarget = join(this.target, file); + fsExtra.mkdirpSync(dirname(absTarget)); + copyFileSync(this.path, absTarget); + } + } + } +} diff --git a/packages/plugin-mobile5/src/Generator/Generator.ts b/packages/plugin-mobile5/src/Generator/Generator.ts new file mode 100644 index 00000000..02c9dc26 --- /dev/null +++ b/packages/plugin-mobile5/src/Generator/Generator.ts @@ -0,0 +1,67 @@ +import { copyFileSync, readFileSync, statSync, writeFileSync } from 'fs'; +import { dirname, join, relative } from 'path'; +import { chalk, glob, Mustache, prompts, yParser } from '@umijs/utils'; +import fsExtra from 'fs-extra'; + +interface IOpts { + cwd: string; + args: yParser.Arguments; +} + +class Generator { + cwd: string; + args: yParser.Arguments; + prompts: any; + + constructor({ cwd, args }: IOpts) { + this.cwd = cwd; + this.args = args; + this.prompts = {}; + } + + async run() { + const questions = this.prompting(); + this.prompts = await prompts(questions); + await this.writing(); + } + + prompting() { + return [] as any; + } + + async writing() {} + + copyTpl(opts: { templatePath: string; target: string; context: object }) { + const tpl = readFileSync(opts.templatePath, 'utf-8'); + const content = Mustache.render(tpl, opts.context); + fsExtra.mkdirpSync(dirname(opts.target)); + console.log(`${chalk.green('Write:')} ${relative(this.cwd, opts.target)}`); + writeFileSync(opts.target, content, 'utf-8'); + } + + copyDirectory(opts: { path: string; context: object; target: string }) { + const files = glob.sync('**/*', { + cwd: opts.path, + dot: true, + ignore: ['**/node_modules/**'], + }); + files.forEach((file: any) => { + const absFile = join(opts.path, file); + if (statSync(absFile).isDirectory()) return; + if (file.endsWith('.tpl')) { + this.copyTpl({ + templatePath: absFile, + target: join(opts.target, file.replace(/\.tpl$/, '')), + context: opts.context, + }); + } else { + console.log(`${chalk.green('Copy: ')} ${file}`); + const absTarget = join(opts.target, file); + fsExtra.mkdirpSync(dirname(absTarget)); + copyFileSync(absFile, absTarget); + } + }); + } +} + +export default Generator; diff --git a/packages/plugin-mobile5/src/index.ts b/packages/plugin-mobile5/src/index.ts new file mode 100644 index 00000000..50db2d26 --- /dev/null +++ b/packages/plugin-mobile5/src/index.ts @@ -0,0 +1,48 @@ +import { dirname, join } from 'path'; +import { IApi } from '@umijs/types'; +import BaseGenerator from './BaseGenerator/BaseGenerator'; +import { existsSync } from 'fs'; +export default (api: IApi) => { + api.describe({ + key: 'mobile5', + config: { + schema(joi) { + return joi.boolean(); + }, + }, + }); + // 忽略用户安装,强制指定 mobile@5 版本 + api.chainWebpack((memo) => { + if (!!api.config.mobile5) { + memo.resolve.alias.set( + 'antd-mobile5', + join(dirname(require.resolve('antd-mobile5/package.json')), '2x'), + ); + } + return memo; + }); + + api.onStart(async () => { + if (!!api.config.mobile5) { + if ( + !existsSync( + `${api.paths.absNodeModulesPath}/@types/antd-mobile5/index.d.ts`, + ) + ) { + // logger.event('Create @types/antd-mobile5 Package'); + const generator = new BaseGenerator({ + path: join(__dirname, '..', 'templates', 'alias'), + target: `${api.paths.absNodeModulesPath}/@types/antd-mobile5`, + data: { + antdMobilePath: join( + dirname(require.resolve('antd-mobile5/package.json')), + ), + antdMobile: 'antd-mobile5', + }, + questions: [], + }); + await generator.run(); + } + } + }); +}; diff --git a/packages/plugin-mobile5/templates/alias/index.d.ts.tpl b/packages/plugin-mobile5/templates/alias/index.d.ts.tpl new file mode 100644 index 00000000..720da59e --- /dev/null +++ b/packages/plugin-mobile5/templates/alias/index.d.ts.tpl @@ -0,0 +1 @@ +export * from '{{{ antdMobilePath }}}' \ No newline at end of file diff --git a/packages/plugin-mobile5/templates/alias/package.json.tpl b/packages/plugin-mobile5/templates/alias/package.json.tpl new file mode 100644 index 00000000..f2f68100 --- /dev/null +++ b/packages/plugin-mobile5/templates/alias/package.json.tpl @@ -0,0 +1,13 @@ +{ + "name": "{{{ antdMobile }}}", + "version": "1.0.0", + "description": "", + "main": "", + "types": "index.d.ts", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC" +} diff --git a/packages/umi-presets-alita/package.json b/packages/umi-presets-alita/package.json index 308f2b7c..a008d441 100644 --- a/packages/umi-presets-alita/package.json +++ b/packages/umi-presets-alita/package.json @@ -36,7 +36,7 @@ "@alitajs/plugin-layout": "2.8.26-beta.2", "@alitajs/router": "2.8.15", "@alitajs/routes": "2.8.26-beta.2", - "@umijs/plugin-antd": "0.12.1", + "@umijs/plugin-antd": "0.13.0", "@umijs/plugin-esbuild": "1.3.1", "@umijs/plugin-helmet": "1.1.3", "@umijs/plugin-request": "2.5.2" diff --git a/packages/umi-presets-alita/src/index.ts b/packages/umi-presets-alita/src/index.ts index 78fac451..5b5614e5 100644 --- a/packages/umi-presets-alita/src/index.ts +++ b/packages/umi-presets-alita/src/index.ts @@ -24,7 +24,8 @@ export default function (api: IApi) { require.resolve('./plugins/features/packageId'), require.resolve('./plugins/features/displayIcon'), require.resolve('./plugins/features/noBuiltInPlugins'), - require.resolve('./plugins/features/mobile5'), + require.resolve('@alitajs/plugin-mobile5'), + require.resolve('@umijs/plugin-antd'), require.resolve('@umijs/plugin-helmet'), ]; if (api.userConfig.appType !== 'pc') { diff --git a/packages/umi-presets-alita/src/plugins/features/mobile5.ts b/packages/umi-presets-alita/src/plugins/features/mobile5.ts deleted file mode 100644 index 358e3ec7..00000000 --- a/packages/umi-presets-alita/src/plugins/features/mobile5.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { IApi } from '@umijs/types'; - -export default (api: IApi) => { - api.describe({ - key: 'mobile5', - config: { - schema(joi) { - return joi.boolean(); - }, - }, - }); - - if (!api.userConfig.mobile5) { - api.registerPlugins([require.resolve('@umijs/plugin-antd')]); - } else { - api.registerPlugins([require.resolve('@alitajs/plugin-antd-mobile')]); - } -}; diff --git a/yarn.lock b/yarn.lock index a71ab9dc..c132d903 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,13 +18,13 @@ lodash.debounce "^4.0.8" lodash.throttle "^4.1.1" -"@alitajs/alita-layout@2.4.8": - version "2.4.8" - resolved "https://registry.yarnpkg.com/@alitajs/alita-layout/-/alita-layout-2.4.8.tgz#263ce20bb99932e2e3fb1edbaac9482c51d269d7" - integrity sha512-MYZSmWfbkUTeZyubR+qkIwoesKAXM5kyGKNWd58rSbrLraxiWItvpUNbPUXf2gwZagDAkdfTWSLUfdODEvkPQg== +"@alitajs/alita-layout@2.4.9": + version "2.4.9" + resolved "https://registry.yarnpkg.com/@alitajs/alita-layout/-/alita-layout-2.4.9.tgz#88e070f0079cb7072a4891182e332a58f1f50eb5" + integrity sha512-F4UXojuoKEN/sYCt82bLafPS1AUczXhF4Ew2sytl8DFS/8bMqCrti9L3c/eRzATPLNe8hy765+1La10A5Rb54g== dependencies: - antd-mobile "^2.2.14" - history "^4.9.0" + antd-mobile "2.3.2" + history "4.9.0" react "^16.8.6" react-router-dom "^5.1.2" @@ -3284,13 +3284,14 @@ jest-worker "24.9.0" prettier "2.2.1" -"@umijs/plugin-antd@0.9.1": - version "0.9.1" - resolved "https://registry.yarnpkg.com/@umijs/plugin-antd/-/plugin-antd-0.9.1.tgz#a5a146a80879565b59cc2dd33d7b158685cf2bb2" - integrity sha512-MG+RifLIovPRvf5qPUfTIRqkiq1QBaKCE/pP3mM72DwAkDh6ZXn8oql/8tqFR3k1+m3XUbDEiOCH+Zx+eNiFew== +"@umijs/plugin-antd@0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@umijs/plugin-antd/-/plugin-antd-0.13.0.tgz#9a7e2f21d37fa4200f25024047035b420557693a" + integrity sha512-7tooYtOylVatrzMWCJtk8JFQL90i94OD0FgZYpKBbM7keThH8prYkSkDJFIDkuGfZ6pl6BJT8ESnYLxf2OiQUw== dependencies: antd "^4.1.3" antd-mobile "^2.3.1" + semver "^7.3.5" "@umijs/plugin-esbuild@1.3.1": version "1.3.1" @@ -3444,6 +3445,11 @@ resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.1.3.tgz#3fc3515af7b1bf26e2035350d653e3287a6e1fe0" integrity sha512-eAwlcE7vppFtaki6mcrSwRa88Z2JAPlfNh35b1MRzhhutgKCUmudYur5JfrKPEvjnUk+KGXWFHCHVfb63c8DPQ== +"@use-gesture/core@10.1.5": + version "10.1.5" + resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.1.5.tgz#4b956bc8aa6354c20c668930c5cacb16fe4415e4" + integrity sha512-Kr3POvOFEfyHyC3MStavQdXdXg8Ys3elJBpxty9tFhNQwOC0+hK/ZHp9vABkre9PCBB/4rtk5Y2t0RG4YUhCpw== + "@use-gesture/react@10.1.3": version "10.1.3" resolved "https://registry.yarnpkg.com/@use-gesture/react/-/react-10.1.3.tgz#a884f8a345a2a602a1aac42b11746f9e48fdc10f" @@ -3451,6 +3457,13 @@ dependencies: "@use-gesture/core" "10.1.3" +"@use-gesture/react@10.1.5": + version "10.1.5" + resolved "https://registry.yarnpkg.com/@use-gesture/react/-/react-10.1.5.tgz#078d2c4f399e6451ee9ff169d447b543397d0e67" + integrity sha512-Lg3LcQa93MmBt+r2HzmtM+OCWsZ2oOE7jpwfHjXZGlhUWHnv5ZhLrtvNr8rAV2GlKRIjbF8q4BQmP7ahpIlZSQ== + dependencies: + "@use-gesture/core" "10.1.5" + "@zeit/schemas@2.6.0": version "2.6.0" resolved "https://registry.yarnpkg.com/@zeit/schemas/-/schemas-2.6.0.tgz#004e8e553b4cd53d538bd38eac7bcbf58a867fe3" @@ -3829,6 +3842,54 @@ antd-mobile-v5-count@^1.0.1: resolved "https://registry.yarnpkg.com/antd-mobile-v5-count/-/antd-mobile-v5-count-1.0.1.tgz#85f20c46d1635c24e856bcf5ad55e8c98e44a523" integrity sha512-YGsiEDCPUDz3SzfXi6gLZn/HpeSMW+jgPc4qiYUr1fSopg3hkUie2TnooJdExgfiETHefH3Ggs58He0OVfegLA== +"antd-mobile5@npm:antd-mobile@next": + version "5.0.0-beta.30" + resolved "https://registry.yarnpkg.com/antd-mobile/-/antd-mobile-5.0.0-beta.30.tgz#84a6ca143029eec87a0e9ee722ac5a15626749ec" + integrity sha512-5o9bBN2EhYpOD4hJNjAdxh60L44S93klXjaS21u9mk7Py8LNxtPvyQ787JcuYyOuAo8DcE/yNtT5Wvf832dVlQ== + dependencies: + "@react-spring/web" "^9.3.0" + "@types/resize-observer-browser" "^0.1.6" + "@use-gesture/react" "10.1.5" + ahooks "^2.10.12" + antd-mobile-icons "^0.2.2" + antd-mobile-v5-count "^1.0.1" + classnames "^2.3.1" + dayjs "^1.10.7" + lodash "^4.17.21" + rc-field-form "^1.22.0" + rc-tooltip "^5.1.1" + staged-components "^1.1.2" + use-async-memo "^1.2.3" + +antd-mobile@2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/antd-mobile/-/antd-mobile-2.3.2.tgz#332c7cbfb98c641e3d6c96ad0ca4e7469ee504ff" + integrity sha512-yKErwVX1S8svl6JGA+zWMktTqyWB5Dubhol6/3jC3AvpemteVpLlRgSlls/dipldE739hSEoWD9S/+SdeO3Fjw== + dependencies: + array-tree-filter "~2.1.0" + babel-runtime "6.x" + classnames "^2.2.1" + normalize.css "^7.0.0" + rc-checkbox "~2.0.0" + rc-collapse "~1.9.1" + rc-slider "~8.2.0" + rc-swipeout "~2.0.0" + rmc-calendar "^1.0.0" + rmc-cascader "~5.0.0" + rmc-date-picker "^6.0.8" + rmc-dialog "^1.0.1" + rmc-drawer "^0.4.11" + rmc-feedback "^2.0.0" + rmc-input-number "^1.0.0" + rmc-list-view "^0.11.0" + rmc-notification "~1.0.0" + rmc-nuka-carousel "~3.0.0" + rmc-picker "~5.0.0" + rmc-pull-to-refresh "~1.0.1" + rmc-steps "~1.0.0" + rmc-tabs "~1.2.0" + rmc-tooltip "~1.0.0" + antd-mobile@5.0.0-beta.26: version "5.0.0-beta.26" resolved "https://registry.yarnpkg.com/antd-mobile/-/antd-mobile-5.0.0-beta.26.tgz#84888e480847ff7f4bfc4d91f0e01b8e0de0f26f" @@ -3848,7 +3909,7 @@ antd-mobile@5.0.0-beta.26: staged-components "^1.1.2" use-async-memo "^1.2.3" -antd-mobile@^2.2.14, antd-mobile@^2.3.1: +antd-mobile@^2.3.1: version "2.3.4" resolved "https://registry.yarnpkg.com/antd-mobile/-/antd-mobile-2.3.4.tgz#8f584707b30343d102f3ca10fdaf677e2a5d1cc8" integrity sha512-Uw02Ghc+DPzaQceJQ+5p1ZnQFafvILA0chTTen7m7c89Uzbw6Ny3zsVZDE1gfteNEIsL4JpPe0I/+aI3Q/nPAA== @@ -7673,6 +7734,15 @@ fs-constants@^1.0.0: resolved "https://registry.yarnpkg.com/fs-constants/-/fs-constants-1.0.0.tgz#6be0de9be998ce16af8afc24497b9ee9b7ccd9ad" integrity sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow== +fs-extra@10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-10.0.0.tgz#9ff61b655dde53fb34a82df84bb214ce802e17c1" + integrity sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + fs-extra@8.1.0, fs-extra@^8.0.0, fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" @@ -8354,6 +8424,18 @@ history-with-query@4.10.4: tiny-warning "^1.0.0" value-equal "^1.0.1" +history@4.9.0: + version "4.9.0" + resolved "https://registry.yarnpkg.com/history/-/history-4.9.0.tgz#84587c2068039ead8af769e9d6a6860a14fa1bca" + integrity sha512-H2DkjCjXf0Op9OAr6nJ56fcRkTSNrUiv41vNJ6IswJjif6wlpZK0BTfFbi7qK9dXLSYZxkq5lBsj3vUjlYBYZA== + dependencies: + "@babel/runtime" "^7.1.2" + loose-envify "^1.2.0" + resolve-pathname "^2.2.0" + tiny-invariant "^1.0.2" + tiny-warning "^1.0.0" + value-equal "^0.4.0" + history@^4.7.2, history@^4.9.0: version "4.10.1" resolved "https://registry.yarnpkg.com/history/-/history-4.10.1.tgz#33371a65e3a83b267434e2b3f3b1b4c58aad4cf3" @@ -14008,6 +14090,15 @@ rc-field-form@^1.21.2: async-validator "^4.0.2" rc-util "^5.8.0" +rc-field-form@^1.22.0: + version "1.22.0" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.22.0.tgz#4a4950d7beaef2859245c82059feae4883c89395" + integrity sha512-IQBNeF4i64lBNLz8HbfXqUpAnrpBtfu2xU6q/wXMfdQm1AfKjiHyMNOxmiA5ZKMOOQPi+YOSzDbictfQP94hUA== + dependencies: + "@babel/runtime" "^7.8.4" + async-validator "^4.0.2" + rc-util "^5.8.0" + rc-field-form@~1.20.0: version "1.20.1" resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.20.1.tgz#d1c51888107cf075b42704b7b575bef84c359291" @@ -14961,6 +15052,11 @@ resolve-options@^1.1.0: dependencies: value-or-function "^3.0.0" +resolve-pathname@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-2.2.0.tgz#7e9ae21ed815fd63ab189adeee64dc831eefa879" + integrity sha512-bAFz9ld18RzJfddgrO2e/0S2O81710++chRMUxHjXOYKF6jTAMrUNZrEZ1PvV0zlhfjidm08iRPdTLPno1FuRg== + resolve-pathname@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" @@ -17276,6 +17372,11 @@ validate-npm-package-name@^3.0.0, validate-npm-package-name@~3.0.0: dependencies: builtins "^1.0.3" +value-equal@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-0.4.0.tgz#c5bdd2f54ee093c04839d71ce2e4758a6890abc7" + integrity sha512-x+cYdNnaA3CxvMaTX0INdTCN8m8aF2uY9BvEqmxuYp8bL09cs/kWVQPVGcA35fMktdOsP69IgU7wFj/61dJHEw== + value-equal@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/value-equal/-/value-equal-1.0.1.tgz#1e0b794c734c5c0cade179c437d356d931a34d6c"