From 0dd1db12bf264da039f8ea7e6efd5d7c5d9d92ad Mon Sep 17 00:00:00 2001 From: Arthur Andrade Date: Fri, 26 Nov 2021 12:40:34 -0300 Subject: [PATCH 1/9] feat: Add Plop dependency and plopfile Signed-off-by: Arthur Andrade --- generators/plopfile.js | 37 +++ generators/templates/Component.tsx.hbs | 13 + generators/templates/index.tsx.hbs | 2 + package.json | 5 +- yarn.lock | 421 ++++++++++++++++++++++++- 5 files changed, 466 insertions(+), 12 deletions(-) create mode 100644 generators/plopfile.js create mode 100644 generators/templates/Component.tsx.hbs create mode 100644 generators/templates/index.tsx.hbs diff --git a/generators/plopfile.js b/generators/plopfile.js new file mode 100644 index 0000000000..54c73f97d3 --- /dev/null +++ b/generators/plopfile.js @@ -0,0 +1,37 @@ +module.exports = function (plop) { + plop.setGenerator('component', { + description: 'Create a component', + prompts: [ + { + type: 'input', + name: 'name', + message: 'What is your component name?', + }, + { + type: 'list', + name: 'atomicType', + message: 'What is your component atomic type?', + choices: ['atom', 'molecule', 'organism'], + }, + ], + actions: [ + { + type: 'add', + path: + '../packages/ui/src/{{atomicType}}s/{{pascalCase name}}/{{pascalCase name}}.tsx', + templateFile: 'templates/Component.tsx.hbs', + }, + { + type: 'add', + path: + '../packages/ui/src/{{atomicType}}s/{{pascalCase name}}/index.tsx', + templateFile: 'templates/index.tsx.hbs', + }, + { + type: 'add', + path: + '../themes/theme-b2c-tailwind/src/{{atomicType}}s/{{kebabCase name}}.css', + }, + ], + }) +} diff --git a/generators/templates/Component.tsx.hbs b/generators/templates/Component.tsx.hbs new file mode 100644 index 0000000000..435cbe1a4c --- /dev/null +++ b/generators/templates/Component.tsx.hbs @@ -0,0 +1,13 @@ +import React from 'react' + +export type {{pascalCase name}}Props = { + +} + +const {{pascalCase name}} = ({ }: {{pascalCase name}}Props) => ( +
+

{{pascalCase name}}

+
+) + +export default {{pascalCase name}} diff --git a/generators/templates/index.tsx.hbs b/generators/templates/index.tsx.hbs new file mode 100644 index 0000000000..3f3472dbc7 --- /dev/null +++ b/generators/templates/index.tsx.hbs @@ -0,0 +1,2 @@ +export { default } from './{{pascalCase name}}' +export type { {{pascalCase name}}Props } from './{{pascalCase name}}' diff --git a/package.json b/package.json index f466fc3729..80feef4de0 100644 --- a/package.json +++ b/package.json @@ -17,7 +17,8 @@ "test": "lerna run test --", "bootstrap": "lerna bootstrap", "release": "lerna version minor --yes && lerna publish from-git --yes", - "size": "lerna run size" + "size": "lerna run size", + "generate": "yarn plop --plopfile generators/plopfile.js" }, "workspaces": [ "packages/*", @@ -48,6 +49,7 @@ "husky": "^4.3.0", "lerna": "^3.22.1", "lint-staged": "^10.5.1", + "plop": "^2.7.6", "prettier": "^2.2.1", "typescript": "^4.1.2" }, @@ -56,4 +58,3 @@ "@typescript-eslint/parser": "^4" } } - diff --git a/yarn.lock b/yarn.lock index 5340e655a0..275461e916 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2171,6 +2171,14 @@ core-js-pure "^3.0.0" regenerator-runtime "^0.13.4" +"@babel/runtime-corejs3@^7.9.2": + version "7.16.3" + resolved "https://registry.yarnpkg.com/@babel/runtime-corejs3/-/runtime-corejs3-7.16.3.tgz#1e25de4fa994c57c18e5fdda6cc810dac70f5590" + integrity sha512-IAdDC7T0+wEB4y2gbIL0uOXEYpiZEeuFUTVbdGq+UwCcF35T/tS8KrmMomEwEc5wBbyfH3PJVpTSUqrhPDXFcQ== + dependencies: + core-js-pure "^3.19.0" + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.0.0", "@babel/runtime@^7.10.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.11.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4": version "7.13.10" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.13.10.tgz#47d42a57b6095f4468da440388fdbad8bebf0d7d" @@ -5911,6 +5919,11 @@ resolved "https://registry.yarnpkg.com/@types/events/-/events-3.0.0.tgz#2862f3f58a9a7f7c3e78d79f130dd4d71c25c2a7" integrity sha512-EaObqwIvayI5a8dCzhFrjKzVwKLxjoG9T6Ppd5CEo07LRKfQ8Yokw54r5+Wq7FaBQ+yXRvQAYPrHwya1/UFt9g== +"@types/fined@*": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@types/fined/-/fined-1.1.3.tgz#83f03e8f0a8d3673dfcafb18fce3571f6250e1bc" + integrity sha512-CWYnSRnun3CGbt6taXeVo2lCbuaj4mchVJ4UF/BdU5TSuIn3AmS13pGMwCsBUoehGbhZrBrpNJZSZI5EVilXww== + "@types/fs-extra@^9.0.4": version "9.0.8" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-9.0.8.tgz#32c3c07ddf8caa5020f84b5f65a48470519f78ba" @@ -5971,6 +5984,21 @@ dependencies: "@types/node" "*" +"@types/inquirer@^6.5.0": + version "6.5.0" + resolved "https://registry.yarnpkg.com/@types/inquirer/-/inquirer-6.5.0.tgz#b83b0bf30b88b8be7246d40e51d32fe9d10e09be" + integrity sha512-rjaYQ9b9y/VFGOpqBEXRavc3jh0a+e6evAbI31tMda8VlPaSy0AZJfXsvmIe3wklc7W6C3zCSfleuMXR7NOyXw== + dependencies: + "@types/through" "*" + rxjs "^6.4.0" + +"@types/interpret@*": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/interpret/-/interpret-1.1.1.tgz#b1bf85b0420e2414b989ce237658ad20dc03719b" + integrity sha512-HZ4d0m2Ebl8DmrOdYZHgYyipj/8Ftq1/ssB/oQR7fqfUrwtTP7IW3BDi2V445nhPBLzZjEkApaPVp83moSCXlA== + dependencies: + "@types/node" "*" + "@types/is-function@^1.0.0": version "1.0.0" resolved "https://registry.yarnpkg.com/@types/is-function/-/is-function-1.0.0.tgz#1b0b819b1636c7baf0d6785d030d12edf70c3e83" @@ -6059,6 +6087,15 @@ dependencies: "@types/node" "*" +"@types/liftoff@^2.5.1": + version "2.5.1" + resolved "https://registry.yarnpkg.com/@types/liftoff/-/liftoff-2.5.1.tgz#2eb4c1f86e9d5ee85571e56db0084b26af129ced" + integrity sha512-nB3R6Q9CZcM07JgiTK6ibxqrG1reiHE+UX7em/W1DKwVBxDlfKWOefQjk4jubY5xX+GDxVsWR2KD1SenPby8ow== + dependencies: + "@types/fined" "*" + "@types/interpret" "*" + "@types/node" "*" + "@types/lodash@^4.14.92": version "4.14.168" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.168.tgz#fe24632e79b7ade3f132891afff86caa5e5ce008" @@ -6299,6 +6336,13 @@ dependencies: "@types/jest" "*" +"@types/through@*": + version "0.0.30" + resolved "https://registry.yarnpkg.com/@types/through/-/through-0.0.30.tgz#e0e42ce77e897bd6aead6f6ea62aeb135b8a3895" + integrity sha512-FvnCJljyxhPM3gkRgWmxmDZyAQSiBQQWLI0A0VFL0K7W1oRUrPJSqNO0NvTnLkBcotdlp3lKvaT0JrnyRDkzOg== + dependencies: + "@types/node" "*" + "@types/tmp@^0.0.33": version "0.0.33" resolved "https://registry.yarnpkg.com/@types/tmp/-/tmp-0.0.33.tgz#1073c4bc824754ae3d10cfab88ab0237ba964e4d" @@ -7276,6 +7320,11 @@ array-differ@^2.0.3: resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-2.1.0.tgz#4b9c1c3f14b906757082925769e8ab904f4801b1" integrity sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w== +array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + array-equal@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" @@ -7312,6 +7361,11 @@ array-includes@^3.0.3, array-includes@^3.1.1, array-includes@^3.1.2, array-inclu get-intrinsic "^1.1.1" is-string "^1.0.5" +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + array-union@^1.0.1, array-union@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" @@ -8619,6 +8673,14 @@ camel-case@4.1.2, camel-case@^4.1.1, camel-case@^4.1.2: pascal-case "^3.1.2" tslib "^2.0.3" +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + camelcase-css@2.0.1, camelcase-css@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/camelcase-css/-/camelcase-css-2.0.1.tgz#ee978f6947914cc30c6b44741b6ed1df7f043fd5" @@ -8791,6 +8853,30 @@ change-case-all@1.0.14: upper-case "^2.0.2" upper-case-first "^2.0.2" +change-case@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/change-case/-/change-case-3.1.0.tgz#0e611b7edc9952df2e8513b27b42de72647dd17e" + integrity sha512-2AZp7uJZbYEzRPsFoa+ijKdvp9zsrnnt6+yFokfwEpeJm0xuJDVoxiRCAaTzyJND8GJkofo2IcKWaUZ/OECVzw== + dependencies: + camel-case "^3.0.0" + constant-case "^2.0.0" + dot-case "^2.1.0" + header-case "^1.0.0" + is-lower-case "^1.1.0" + is-upper-case "^1.1.0" + lower-case "^1.1.1" + lower-case-first "^1.0.0" + no-case "^2.3.2" + param-case "^2.1.0" + pascal-case "^2.0.0" + path-case "^2.1.0" + sentence-case "^2.1.0" + snake-case "^2.1.0" + swap-case "^1.1.0" + title-case "^2.1.0" + upper-case "^1.1.1" + upper-case-first "^1.1.0" + change-case@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/change-case/-/change-case-4.1.2.tgz#fedfc5f136045e2398c0410ee441f95704641e12" @@ -8974,6 +9060,11 @@ cli-spinners@^1.3.1: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== +cli-spinners@^2.0.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" + integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== + cli-spinners@^2.2.0, cli-spinners@^2.5.0: version "2.6.0" resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" @@ -9367,6 +9458,14 @@ console-control-strings@^1.0.0, console-control-strings@~1.1.0: resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= +constant-case@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-2.0.0.tgz#4175764d389d3fa9c8ecd29186ed6005243b6a46" + integrity sha1-QXV2TTidP6nI7NKRhu1gBSQ7akY= + dependencies: + snake-case "^2.1.0" + upper-case "^1.1.1" + constant-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/constant-case/-/constant-case-3.0.4.tgz#3b84a9aeaf4cf31ec45e6bf5de91bdfb0589faf1" @@ -9601,6 +9700,11 @@ core-js-pure@^3.0.0: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.9.1.tgz#677b322267172bd490e4464696f790cbc355bec5" integrity sha512-laz3Zx0avrw9a4QEIdmIblnVuJz8W51leY9iLThatCsFawWxC3sE4guASC78JbCin+DkwMpCdp1AVAuzL/GN7A== +core-js-pure@^3.19.0: + version "3.19.1" + resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.19.1.tgz#edffc1fc7634000a55ba05e95b3f0fe9587a5aa4" + integrity sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ== + core-js-pure@^3.8.2: version "3.11.1" resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.11.1.tgz#fd52fa8c8b7b797b3606524b3d97278a8d8e7f09" @@ -10539,6 +10643,11 @@ detab@2.0.4: dependencies: repeat-string "^1.5.4" +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + detect-indent@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/detect-indent/-/detect-indent-5.0.0.tgz#3871cc0a6a002e8c3e5b3cf7f336264675f06b9d" @@ -10830,6 +10939,13 @@ domutils@^2.4.3: domelementtype "^2.2.0" domhandler "^4.2.0" +dot-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-2.1.1.tgz#34dcf37f50a8e93c2b3bca8bb7fb9155c7da3bee" + integrity sha1-NNzzf1Co6TwrO8qLt/uRVcfaO+4= + dependencies: + no-case "^2.2.0" + dot-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/dot-case/-/dot-case-3.0.4.tgz#9b2b670d00a431667a8a75ba29cd1b98809ce751" @@ -12047,6 +12163,13 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + expect@^25.5.0: version "25.5.0" resolved "https://registry.yarnpkg.com/expect/-/expect-25.5.0.tgz#f07f848712a2813bb59167da3fb828ca21f58bba" @@ -12499,6 +12622,32 @@ find-versions@^4.0.0: dependencies: semver-regex "^3.1.2" +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + flat-cache@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" @@ -12551,11 +12700,18 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -for-in@^1.0.2: +for-in@^1.0.1, for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + forever-agent@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" @@ -13881,6 +14037,26 @@ global-modules@2.0.0: dependencies: global-prefix "^3.0.0" +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + global-prefix@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" @@ -14231,7 +14407,7 @@ handle-thing@^2.0.0: resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== -handlebars@^4.7.6: +handlebars@^4.4.3, handlebars@^4.7.6: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== @@ -14465,6 +14641,14 @@ he@^1.2.0: resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +header-case@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/header-case/-/header-case-1.0.1.tgz#9535973197c144b09613cd65d317ef19963bd02d" + integrity sha1-lTWXMZfBRLCWE81l0xfvGZY70C0= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.3" + header-case@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/header-case/-/header-case-2.0.4.tgz#5a42e63b55177349cf405beb8d775acabb92c063" @@ -14512,6 +14696,13 @@ hoist-non-react-statics@^3.3.0: dependencies: react-is "^16.7.0" +homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + hosted-git-info@^2.1.4, hosted-git-info@^2.7.1: version "2.8.9" resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" @@ -15024,7 +15215,7 @@ inquirer@^6.2.0: strip-ansi "^5.1.0" through "^2.3.6" -inquirer@^7.0.0, inquirer@^7.3.3: +inquirer@^7.0.0, inquirer@^7.1.0, inquirer@^7.3.3: version "7.3.3" resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-7.3.3.tgz#04d176b2af04afc157a83fd7c100e98ee0aad003" integrity sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA== @@ -15060,7 +15251,7 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" -interpret@^1.0.0: +interpret@^1.0.0, interpret@^1.2.0: version "1.4.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== @@ -15413,6 +15604,13 @@ is-invalid-path@^0.1.0: dependencies: is-glob "^2.0.0" +is-lower-case@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" + integrity sha1-fhR75HaNxGbbO/shzGCzHmrWk5M= + dependencies: + lower-case "^1.1.0" + is-lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-2.0.2.tgz#1c0884d3012c841556243483aa5d522f47396d2a" @@ -15669,6 +15867,13 @@ is-unicode-supported@^0.1.0: resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== +is-upper-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-1.1.2.tgz#8d0b1fa7e7933a1e58483600ec7d9661cbaf756f" + integrity sha1-jQsfp+eTOh5YSDYA7H2WYcuvdW8= + dependencies: + upper-case "^1.1.0" + is-upper-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/is-upper-case/-/is-upper-case-2.0.2.tgz#f1105ced1fe4de906a5f39553e7d3803fd804649" @@ -15745,6 +15950,11 @@ isarray@^2.0.5: resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== +isbinaryfile@^4.0.2: + version "4.0.8" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.8.tgz#5d34b94865bd4946633ecc78a026fc76c5b11fcf" + integrity sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -16815,6 +17025,20 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +liftoff@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" + integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew= + dependencies: + extend "^3.0.0" + findup-sync "^2.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + lilconfig@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lilconfig/-/lilconfig-2.0.2.tgz#9f802752254697d22a5c33e88d97b7329008c060" @@ -17209,7 +17433,7 @@ log-symbols@^1.0.2: dependencies: chalk "^1.0.0" -log-symbols@^2.1.0: +log-symbols@^2.1.0, log-symbols@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-2.2.0.tgz#5740e1c5d6f0dfda4ad9323b5332107ef6b4c40a" integrity sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg== @@ -17290,6 +17514,13 @@ loud-rejection@^1.0.0: currently-unhandled "^0.4.1" signal-exit "^3.0.0" +lower-case-first@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-1.0.2.tgz#e5da7c26f29a7073be02d52bac9980e5922adfa1" + integrity sha1-5dp8JvKacHO+AtUrrJmA5ZIq36E= + dependencies: + lower-case "^1.1.2" + lower-case-first@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case-first/-/lower-case-first-2.0.2.tgz#64c2324a2250bf7c37c5901e76a5b5309301160b" @@ -17297,6 +17528,11 @@ lower-case-first@^2.0.2: dependencies: tslib "^2.0.3" +lower-case@^1.1.0, lower-case@^1.1.1, lower-case@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-1.1.4.tgz#9a2cabd1b9e8e0ae993a4bf7d5875c39c42e8eac" + integrity sha1-miyr0bno4K6ZOkv31YdcOcQujqw= + lower-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/lower-case/-/lower-case-2.0.2.tgz#6fa237c63dbdc4a82ca0fd882e4722dc5e634e28" @@ -17425,6 +17661,13 @@ make-fetch-happen@^5.0.0: socks-proxy-agent "^4.0.0" ssri "^6.0.0" +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + makeerror@1.0.x: version "1.0.11" resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.11.tgz#e01a5c9109f2af79660e4e8b9587790184f5a96c" @@ -17834,7 +18077,7 @@ micromatch@4.x, micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -micromatch@^3.1.10, micromatch@^3.1.4: +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4: version "3.1.10" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== @@ -18266,6 +18509,13 @@ nice-try@^1.0.4: resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== +no-case@^2.2.0, no-case@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + no-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/no-case/-/no-case-3.0.4.tgz#d361fd5c9800f558551a8369fc0dcd4662b6124d" @@ -18389,6 +18639,23 @@ node-object-hash@^2.3.8: resolved "https://registry.yarnpkg.com/node-object-hash/-/node-object-hash-2.3.9.tgz#d6bbea42201e7a7bf32a3064c44662c020653aaf" integrity sha512-NQt1YURrMPeQGZzW4lRbshUEF2PqxJEZYY4XJ/L+q33dI8yPYvnb7QXmwUcl1EuXluzeY4TEV+H6H0EmtI6f5g== +node-plop@^0.26.3: + version "0.26.3" + resolved "https://registry.yarnpkg.com/node-plop/-/node-plop-0.26.3.tgz#d6fa7e71393c8b940513ba8c4868f8aaa6dea9df" + integrity sha512-Cov028YhBZ5aB7MdMWJEmwyBig43aGL5WT4vdoB28Oitau1zZAcHUn8Sgfk9HM33TqhtLJ9PlM/O0Mv+QpV/4Q== + dependencies: + "@babel/runtime-corejs3" "^7.9.2" + "@types/inquirer" "^6.5.0" + change-case "^3.1.0" + del "^5.1.0" + globby "^10.0.1" + handlebars "^4.4.3" + inquirer "^7.1.0" + isbinaryfile "^4.0.2" + lodash.get "^4.4.2" + mkdirp "^0.5.1" + resolve "^1.12.0" + node-releases@^1.1.61, node-releases@^1.1.70, node-releases@^1.1.71: version "1.1.71" resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.71.tgz#cb1334b179896b1c89ecfdd4b725fb7bbdfc7dbb" @@ -18665,6 +18932,16 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + object.entries@^1.1.0, object.entries@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.3.tgz#c601c7f168b62374541a07ddbd3e2d5e4f7711a6" @@ -18703,7 +18980,15 @@ object.getownpropertydescriptors@^2.0.3, object.getownpropertydescriptors@^2.1.0 define-properties "^1.1.3" es-abstract "^1.18.0-next.2" -object.pick@^1.3.0: +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.pick@^1.2.0, object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= @@ -18853,6 +19138,18 @@ optionator@^0.9.1: type-check "^0.4.0" word-wrap "^1.2.3" +ora@^3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-3.4.0.tgz#bf0752491059a3ef3ed4c85097531de9fdbcd318" + integrity sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg== + dependencies: + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-spinners "^2.0.0" + log-symbols "^2.2.0" + strip-ansi "^5.2.0" + wcwidth "^1.0.1" + ora@^4.0.3: version "4.1.1" resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" @@ -19148,6 +19445,13 @@ parallel-transform@^1.1.0: inherits "^2.0.3" readable-stream "^2.1.5" +param-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/param-case/-/param-case-2.1.1.tgz#df94fd8cf6531ecf75e6bef9a0858fbc72be2247" + integrity sha1-35T9jPZTHs915r75oIWPvHK+Ikc= + dependencies: + no-case "^2.2.0" + param-case@^3.0.3, param-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -19198,7 +19502,7 @@ parse-entities@^2.0.0: is-decimal "^1.0.0" is-hexadecimal "^1.0.0" -parse-filepath@^1.0.2: +parse-filepath@^1.0.1, parse-filepath@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= @@ -19237,6 +19541,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + parse-path@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" @@ -19292,6 +19601,14 @@ parseurl@^1.3.3, parseurl@~1.3.2, parseurl@~1.3.3: resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== +pascal-case@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-2.0.1.tgz#2d578d3455f660da65eca18ef95b4e0de912761e" + integrity sha1-LVeNNFX2YNpl7KGO+VtODekSdh4= + dependencies: + camel-case "^3.0.0" + upper-case-first "^1.1.0" + pascal-case@^3.1.1, pascal-case@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/pascal-case/-/pascal-case-3.1.2.tgz#b48e0ef2b98e205e7c1dae747d0b1508237660eb" @@ -19318,6 +19635,13 @@ path-browserify@0.0.1: resolved "https://registry.yarnpkg.com/path-browserify/-/path-browserify-0.0.1.tgz#e6c4ddd7ed3aa27c68a20cc4e50e1a4ee83bbc4a" integrity sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ== +path-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/path-case/-/path-case-2.1.1.tgz#94b8037c372d3fe2906e465bb45e25d226e8eea5" + integrity sha1-lLgDfDctP+KQbkZbtF4l0ibo7qU= + dependencies: + no-case "^2.2.0" + path-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/path-case/-/path-case-3.0.4.tgz#9168645334eb942658375c56f80b4c0cb5f82c6f" @@ -19547,6 +19871,20 @@ please-upgrade-node@^3.2.0: dependencies: semver-compare "^1.0.0" +plop@^2.7.6: + version "2.7.6" + resolved "https://registry.yarnpkg.com/plop/-/plop-2.7.6.tgz#1fa5360cd5b04e9932ce677bb6bd44750d97ae67" + integrity sha512-IgnYAsC3Ni7t1cDU7wH2151CD22YhMxH8PFh+iPzCf+WuGEWXslJ5t1Tpr0N/gjL23CAV/HbLAWug2IPM2YrHg== + dependencies: + "@types/liftoff" "^2.5.1" + chalk "^1.1.3" + interpret "^1.2.0" + liftoff "^2.5.0" + minimist "^1.2.5" + node-plop "^0.26.3" + ora "^3.4.0" + v8flags "^2.0.10" + pn@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" @@ -21814,6 +22152,14 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + resolve-from@5.0.0, resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -21846,7 +22192,7 @@ resolve@1.17.0: dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2: +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.10.1, resolve@^1.11.0, resolve@^1.12.0, resolve@^1.13.1, resolve@^1.14.2, resolve@^1.17.0, resolve@^1.19.0, resolve@^1.20.0, resolve@^1.3.2: version "1.20.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== @@ -22218,6 +22564,14 @@ send@0.17.1: range-parser "~1.2.1" statuses "~1.5.0" +sentence-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-2.1.1.tgz#1f6e2dda39c168bf92d13f86d4a918933f667ed4" + integrity sha1-H24t2jnBaL+S0T+G1KkYkz9mftQ= + dependencies: + no-case "^2.2.0" + upper-case-first "^1.1.2" + sentence-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/sentence-case/-/sentence-case-3.0.4.tgz#3645a7b8c117c787fde8702056225bb62a45131f" @@ -22510,6 +22864,13 @@ smart-buffer@^4.1.0: resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.1.0.tgz#91605c25d91652f4661ea69ccf45f1b331ca21ba" integrity sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw== +snake-case@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-2.1.0.tgz#41bdb1b73f30ec66a04d4e2cad1b76387d4d6d9f" + integrity sha1-Qb2xtz8w7GagTU4srRt2OH1NbZ8= + dependencies: + no-case "^2.2.0" + snake-case@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/snake-case/-/snake-case-3.0.4.tgz#4f2bbd568e9935abdfd593f34c691dadb49c452c" @@ -23383,6 +23744,14 @@ svgo@^2.3.0: csso "^4.2.0" stable "^0.1.8" +swap-case@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-1.1.2.tgz#c39203a4587385fad3c850a0bd1bcafa081974e3" + integrity sha1-w5IDpFhzhfrTyFCgvRvK+ggZdOM= + dependencies: + lower-case "^1.1.1" + upper-case "^1.1.1" + swap-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/swap-case/-/swap-case-2.0.2.tgz#671aedb3c9c137e2985ef51c51f9e98445bf70d9" @@ -23764,6 +24133,14 @@ tiny-warning@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +title-case@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/title-case/-/title-case-2.1.1.tgz#3e127216da58d2bc5becf137ab91dae3a7cd8faa" + integrity sha1-PhJyFtpY0rxb7PE3q5Ha46fNj6o= + dependencies: + no-case "^2.2.0" + upper-case "^1.0.3" + title-case@^3.0.3: version "3.0.3" resolved "https://registry.yarnpkg.com/title-case/-/title-case-3.0.3.tgz#bc689b46f02e411f1d1e1d081f7c3deca0489982" @@ -24573,6 +24950,13 @@ update-notifier@^5.0.1: semver-diff "^3.1.1" xdg-basedir "^4.0.0" +upper-case-first@^1.1.0, upper-case-first@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-1.1.2.tgz#5d79bedcff14419518fd2edb0a0507c9b6859115" + integrity sha1-XXm+3P8UQZUY/S7bCgUHybaFkRU= + dependencies: + upper-case "^1.1.1" + upper-case-first@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/upper-case-first/-/upper-case-first-2.0.2.tgz#992c3273f882abd19d1e02894cc147117f844324" @@ -24580,6 +24964,11 @@ upper-case-first@^2.0.2: dependencies: tslib "^2.0.3" +upper-case@^1.0.3, upper-case@^1.1.0, upper-case@^1.1.1, upper-case@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + upper-case@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-2.0.2.tgz#d89810823faab1df1549b7d97a76f8662bae6f7a" @@ -24660,6 +25049,11 @@ use@^3.1.0: resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -24749,6 +25143,13 @@ v8-to-istanbul@^4.1.3: convert-source-map "^1.6.0" source-map "^0.7.3" +v8flags@^2.0.10: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + valid-url@1.0.9, valid-url@^1.0.9: version "1.0.9" resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" @@ -25225,7 +25626,7 @@ which-pm-runs@^1.0.0: resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= -which@^1.2.9, which@^1.3.1: +which@^1.2.14, which@^1.2.9, which@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== From 443cbd117e34ea1702a2994ca4ad0b2733f17189 Mon Sep 17 00:00:00 2001 From: Arthur Andrade Date: Tue, 30 Nov 2021 11:21:11 -0300 Subject: [PATCH 2/9] feat: Add plopfile and configs Signed-off-by: Arthur Andrade --- generators/plopfile.js | 37 -------------- generators/plopfile.ts | 69 ++++++++++++++++++++++++++ generators/templates/Component.tsx.hbs | 21 +++++--- generators/templates/exportToIndex.hbs | 2 + generators/templates/stories.mdx.hbs | 20 ++++++++ generators/templates/stories.tsx.hbs | 22 ++++++++ generators/templates/style.css.hbs | 3 ++ generators/templates/test.tsx.hbs | 21 ++++++++ package.json | 2 +- packages/ui/src/index.ts | 2 + 10 files changed, 154 insertions(+), 45 deletions(-) delete mode 100644 generators/plopfile.js create mode 100644 generators/plopfile.ts create mode 100644 generators/templates/exportToIndex.hbs create mode 100644 generators/templates/stories.mdx.hbs create mode 100644 generators/templates/stories.tsx.hbs create mode 100644 generators/templates/style.css.hbs create mode 100644 generators/templates/test.tsx.hbs diff --git a/generators/plopfile.js b/generators/plopfile.js deleted file mode 100644 index 54c73f97d3..0000000000 --- a/generators/plopfile.js +++ /dev/null @@ -1,37 +0,0 @@ -module.exports = function (plop) { - plop.setGenerator('component', { - description: 'Create a component', - prompts: [ - { - type: 'input', - name: 'name', - message: 'What is your component name?', - }, - { - type: 'list', - name: 'atomicType', - message: 'What is your component atomic type?', - choices: ['atom', 'molecule', 'organism'], - }, - ], - actions: [ - { - type: 'add', - path: - '../packages/ui/src/{{atomicType}}s/{{pascalCase name}}/{{pascalCase name}}.tsx', - templateFile: 'templates/Component.tsx.hbs', - }, - { - type: 'add', - path: - '../packages/ui/src/{{atomicType}}s/{{pascalCase name}}/index.tsx', - templateFile: 'templates/index.tsx.hbs', - }, - { - type: 'add', - path: - '../themes/theme-b2c-tailwind/src/{{atomicType}}s/{{kebabCase name}}.css', - }, - ], - }) -} diff --git a/generators/plopfile.ts b/generators/plopfile.ts new file mode 100644 index 0000000000..b2958ad344 --- /dev/null +++ b/generators/plopfile.ts @@ -0,0 +1,69 @@ +import type { NodePlopAPI } from 'plop' + +export default (plop: NodePlopAPI) => { + plop.setGenerator('component', { + description: 'Create a component', + prompts: [ + { + type: 'input', + name: 'name', + message: 'What is your component name?', + }, + { + type: 'list', + name: 'atomicGroup', + message: 'What is your component atomic group?', + choices: ['atoms', 'molecules', 'organisms'], + }, + ], + actions(data) { + const actions = [ + { + type: 'add', + path: + '../packages/ui/src/{{atomicGroup}}/{{pascalCase name}}/{{pascalCase name}}.tsx', + templateFile: 'templates/Component.tsx.hbs', + }, + { + type: 'add', + path: + '../packages/ui/src/{{atomicGroup}}/{{pascalCase name}}/index.tsx', + templateFile: 'templates/index.tsx.hbs', + }, + { + type: 'add', + path: + '../themes/theme-b2c-tailwind/src/{{atomicGroup}}/{{kebabCase name}}.css', + templateFile: 'templates/style.css.hbs', + }, + { + type: 'add', + path: + '../packages/ui/src/{{atomicGroup}}/{{pascalCase name}}/{{pascalCase name}}.test.tsx', + templateFile: 'templates/test.tsx.hbs', + }, + { + type: 'add', + path: + '../packages/ui/src/{{atomicGroup}}/{{pascalCase name}}/stories/{{pascalCase name}}.stories.tsx', + templateFile: 'templates/stories.tsx.hbs', + }, + { + type: 'add', + path: + '../packages/ui/src/{{atomicGroup}}/{{pascalCase name}}/stories/{{pascalCase name}}.mdx', + templateFile: 'templates/stories.mdx.hbs', + }, + ] + + actions.push({ + type: 'append', + path: '../packages/ui/src/index.ts', + pattern: new RegExp(`// ${data?.atomicGroup}`, 'i'), + templateFile: 'templates/exportToIndex.hbs', + } as any) + + return actions + }, + }) +} diff --git a/generators/templates/Component.tsx.hbs b/generators/templates/Component.tsx.hbs index 435cbe1a4c..4405bfb558 100644 --- a/generators/templates/Component.tsx.hbs +++ b/generators/templates/Component.tsx.hbs @@ -1,13 +1,20 @@ import React from 'react' -export type {{pascalCase name}}Props = { - +export interface {{pascalCase name}}Props { + /** + * ID to find this component in testing tools (e.g.: cypress, + * testing-library, and jest). + */ + testId?: string + children?: React.ReactNode } -const {{pascalCase name}} = ({ }: {{pascalCase name}}Props) => ( -
-

{{pascalCase name}}

-
-) +const {{pascalCase name}} = ({ testId = 'store-{{kebabCase name}}', children }: {{pascalCase name}}Props) => { + return ( +
+ {children} +
+ ) +} export default {{pascalCase name}} diff --git a/generators/templates/exportToIndex.hbs b/generators/templates/exportToIndex.hbs new file mode 100644 index 0000000000..b21a6483e0 --- /dev/null +++ b/generators/templates/exportToIndex.hbs @@ -0,0 +1,2 @@ +export { default as {{pascalCase name}} } from './{{atomicGroup}}/{{pascalCase name}}' +export type { {{pascalCase name}}Props } from './{{atomicGroup}}/{{pascalCase name}}' diff --git a/generators/templates/stories.mdx.hbs b/generators/templates/stories.mdx.hbs new file mode 100644 index 0000000000..f2e942f987 --- /dev/null +++ b/generators/templates/stories.mdx.hbs @@ -0,0 +1,20 @@ +import { Canvas, Props, Story, ArgsTable } from '@storybook/addon-docs' + +import {{pascalCase name}} from '../{{pascalCase name}}' + +# {{pascalCase name}} + + + + + +## Props + + + +## CSS Selectors + +```css +[data-store-{{kebabCase name}}] { +} +``` diff --git a/generators/templates/stories.tsx.hbs b/generators/templates/stories.tsx.hbs new file mode 100644 index 0000000000..4259b9ae1f --- /dev/null +++ b/generators/templates/stories.tsx.hbs @@ -0,0 +1,22 @@ +import type { Story, Meta } from '@storybook/react' +import React from 'react' + +import type { {{pascalCase name}}Props } from '../{{pascalCase name}}' +import Component from '../{{pascalCase name}}' +import mdx from './{{pascalCase name}}.mdx' + +const {{pascalCase name}}Template: Story<{{pascalCase name}}Props> = ({ testId }) => ( + {{pascalCase name}} +) + +export const {{pascalCase name}} = {{pascalCase name}}Template.bind({}) +{{pascalCase name}}.storyName = '{{pascalCase name}}' + +export default { + title: '{{pascalCase atomicGroup}}/{{pascalCase name}}', + parameters: { + docs: { + page: mdx, + }, + }, +} as Meta diff --git a/generators/templates/style.css.hbs b/generators/templates/style.css.hbs new file mode 100644 index 0000000000..774dc3d77e --- /dev/null +++ b/generators/templates/style.css.hbs @@ -0,0 +1,3 @@ +[data-store-{{kebabCase name}}] { + +} diff --git a/generators/templates/test.tsx.hbs b/generators/templates/test.tsx.hbs new file mode 100644 index 0000000000..a45be83167 --- /dev/null +++ b/generators/templates/test.tsx.hbs @@ -0,0 +1,21 @@ +import { render } from '@testing-library/react' +import { axe } from 'jest-axe' +import React from 'react' + +import {{pascalCase name}} from './{{pascalCase name}}' + +describe('{{pascalCase name}}', () => { + it('should have `data-store-{{kebabCase name}}` attribute', () => { + const { getByTestId } = render(<{{pascalCase name}}>Testing) + + expect(getByTestId('store-{{kebabCase name}}')).toHaveAttribute('data-store-{{kebabCase name}}') + }) + + describe('Accessibility', () => { + it('should have no violations', async () => { + const { getByTestId } = render(<{{pascalCase name}}>Testing) + + expect(await axe(getByTestId('store-{{kebabCase name}}'))).toHaveNoViolations() + }) + }) +}) diff --git a/package.json b/package.json index 80feef4de0..3c9e5f67f2 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "bootstrap": "lerna bootstrap", "release": "lerna version minor --yes && lerna publish from-git --yes", "size": "lerna run size", - "generate": "yarn plop --plopfile generators/plopfile.js" + "generate": "yarn plop --plopfile generators/plopfile.ts" }, "workspaces": [ "packages/*", diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index fc089ce712..237f15635b 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -96,6 +96,8 @@ export type { export { default as Form } from './molecules/Form' export type { FormProps } from './molecules/Form' +// Organisms + // Hooks export { default as useSlider } from './hooks/useSlider' export type { From f0821736c874a87c593c4ea0e7ee9524581e6bda Mon Sep 17 00:00:00 2001 From: Fanny Date: Tue, 30 Nov 2021 21:56:13 -0300 Subject: [PATCH 3/9] Updates contributing.md with generate component boilerplates section --- CONTRIBUTING.MD | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD index ac7f901e7d..0e8ae06f6f 100644 --- a/CONTRIBUTING.MD +++ b/CONTRIBUTING.MD @@ -34,6 +34,42 @@ Example: } ``` +### Creating Components on the `fastore/ui` + +You can create "boilerplates files" for your new component using the following command: + +- run `yarn generate` + +```bash +# What is your component name? + +ComponentName + +# What is your component atomic group? (Use arrow keys) + +> atoms +> molecules +> organisms +``` + +- It will automatically generate the files below: + +``` +✔ ++ faststore/packages/ui/src/atoms/ComponentName/ComponentName.tsx +✔ ++ faststore/packages/ui/src/atoms/ComponentName/index.tsx +✔ ++ faststore/themes/theme-b2c-tailwind/src/atoms/component-name.css +✔ ++ faststore/packages/ui/src/atoms/ComponentName/ComponentName.test.tsx +✔ ++ faststore/packages/ui/src/atoms/ComponentName/stories/ComponentName.stories.tsx +✔ ++ faststore/packages/ui/src/atoms/ComponentName/stories/ComponentName.mdx +✔ _+ faststore/packages/ui/src/index.ts +``` + +And that is it! You will be ready to work on your component. 🎉 + +> For the component name, please follow CamelCase pattern, and do not use `-`, i.e., Component-Name. + +> Please try to not edit // Atoms, // Molecules, // Organisms comments on `packages/ui/scr/index.ts` [file](https://github.com/vtex/faststore/blob/b1badead35dc43b41f25480a66f4e81cc9a8e22a/packages/ui/src/index.ts), because we are using it as [pattern](https://github.com/vtex/faststore/blob/443cbd117e34ea1702a2994ca4ad0b2733f17189/generators/plopfile.ts#L62) to update it. For more details, check [here](https://github.com/vtex/faststore/pull/1039). + ## Creating Pull Requests 1. Create a production build by running `yarn build` at the root of the package that you are developing @@ -59,16 +95,19 @@ Example: > `git clean -fdx && yarn && lerna run build && lerna publish patch --yes` 3. Update `package.json` of the `storecomponents` with: + ``` yarn upgrade -L --scope @vtex ``` 4. Stage, commit and push your changes with: + ``` git add . && git commit -m "upgrade deps" && git push ``` 5. Rebase with master + ``` git rebase origin/master && git push --force ``` From d5d69f042b85d3d983ced7751099b71f978f3041 Mon Sep 17 00:00:00 2001 From: Fanny Chien Date: Wed, 1 Dec 2021 18:23:11 -0300 Subject: [PATCH 4/9] Update CONTRIBUTING.MD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Larícia Mota --- CONTRIBUTING.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD index 0e8ae06f6f..2bff4d004e 100644 --- a/CONTRIBUTING.MD +++ b/CONTRIBUTING.MD @@ -34,7 +34,7 @@ Example: } ``` -### Creating Components on the `fastore/ui` +### Creating Components on the `faststore/ui` You can create "boilerplates files" for your new component using the following command: From acc65bef6a721af297965e4c4bfaedae8d82c751 Mon Sep 17 00:00:00 2001 From: Fanny Chien Date: Wed, 1 Dec 2021 18:23:22 -0300 Subject: [PATCH 5/9] Update CONTRIBUTING.MD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Larícia Mota --- CONTRIBUTING.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD index 2bff4d004e..f2a1bf699c 100644 --- a/CONTRIBUTING.MD +++ b/CONTRIBUTING.MD @@ -36,7 +36,7 @@ Example: ### Creating Components on the `faststore/ui` -You can create "boilerplates files" for your new component using the following command: +You can generate the boilerplate files for your new component using the following command: - run `yarn generate` From 5f193852e2d595080bde716ed1ae86fe62cc15c1 Mon Sep 17 00:00:00 2001 From: Fanny Chien Date: Wed, 1 Dec 2021 18:23:41 -0300 Subject: [PATCH 6/9] Update CONTRIBUTING.MD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Larícia Mota --- CONTRIBUTING.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD index f2a1bf699c..6f3cef8800 100644 --- a/CONTRIBUTING.MD +++ b/CONTRIBUTING.MD @@ -68,7 +68,7 @@ And that is it! You will be ready to work on your component. 🎉 > For the component name, please follow CamelCase pattern, and do not use `-`, i.e., Component-Name. -> Please try to not edit // Atoms, // Molecules, // Organisms comments on `packages/ui/scr/index.ts` [file](https://github.com/vtex/faststore/blob/b1badead35dc43b41f25480a66f4e81cc9a8e22a/packages/ui/src/index.ts), because we are using it as [pattern](https://github.com/vtex/faststore/blob/443cbd117e34ea1702a2994ca4ad0b2733f17189/generators/plopfile.ts#L62) to update it. For more details, check [here](https://github.com/vtex/faststore/pull/1039). +> Please do not edit `// Atoms`, `// Molecules` and `// Organisms` comments on `packages/ui/scr/index.ts` [file](https://github.com/vtex/faststore/blob/b1badead35dc43b41f25480a66f4e81cc9a8e22a/packages/ui/src/index.ts), because we are using it as a [pattern](https://github.com/vtex/faststore/blob/443cbd117e34ea1702a2994ca4ad0b2733f17189/generators/plopfile.ts#L62) to update the file. For more details, check [here](https://github.com/vtex/faststore/pull/1039). ## Creating Pull Requests From 6595df626c4d230d3704ae14faea4ec89d4d0f86 Mon Sep 17 00:00:00 2001 From: Fanny Chien Date: Wed, 1 Dec 2021 18:24:58 -0300 Subject: [PATCH 7/9] Update CONTRIBUTING.MD MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Larícia Mota --- CONTRIBUTING.MD | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD index 6f3cef8800..7b309c5366 100644 --- a/CONTRIBUTING.MD +++ b/CONTRIBUTING.MD @@ -66,7 +66,7 @@ ComponentName And that is it! You will be ready to work on your component. 🎉 -> For the component name, please follow CamelCase pattern, and do not use `-`, i.e., Component-Name. +> For the component name, please follow the Pascal Case pattern, and do not use `-`, i.e., Component-Name. > Please do not edit `// Atoms`, `// Molecules` and `// Organisms` comments on `packages/ui/scr/index.ts` [file](https://github.com/vtex/faststore/blob/b1badead35dc43b41f25480a66f4e81cc9a8e22a/packages/ui/src/index.ts), because we are using it as a [pattern](https://github.com/vtex/faststore/blob/443cbd117e34ea1702a2994ca4ad0b2733f17189/generators/plopfile.ts#L62) to update the file. For more details, check [here](https://github.com/vtex/faststore/pull/1039). From 673b32875bf9b05ddf8193c2d1c559ff9fbaf236 Mon Sep 17 00:00:00 2001 From: Fanny Chien Date: Wed, 1 Dec 2021 18:25:53 -0300 Subject: [PATCH 8/9] Update generators/templates/Component.tsx.hbs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Larícia Mota --- generators/templates/Component.tsx.hbs | 1 - 1 file changed, 1 deletion(-) diff --git a/generators/templates/Component.tsx.hbs b/generators/templates/Component.tsx.hbs index 4405bfb558..5eb57da137 100644 --- a/generators/templates/Component.tsx.hbs +++ b/generators/templates/Component.tsx.hbs @@ -6,7 +6,6 @@ export interface {{pascalCase name}}Props { * testing-library, and jest). */ testId?: string - children?: React.ReactNode } const {{pascalCase name}} = ({ testId = 'store-{{kebabCase name}}', children }: {{pascalCase name}}Props) => { From c9d1aac7f35403930a105c592e4daf8fb9d182fe Mon Sep 17 00:00:00 2001 From: Arthur Andrade Date: Thu, 2 Dec 2021 10:29:18 -0300 Subject: [PATCH 9/9] chore: update contributing and component template Signed-off-by: Arthur Andrade --- CONTRIBUTING.MD | 2 +- generators/templates/Component.tsx.hbs | 29 ++++++++++++++++++-------- package.json | 2 +- 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/CONTRIBUTING.MD b/CONTRIBUTING.MD index 7b309c5366..b070e1bb75 100644 --- a/CONTRIBUTING.MD +++ b/CONTRIBUTING.MD @@ -38,7 +38,7 @@ Example: You can generate the boilerplate files for your new component using the following command: -- run `yarn generate` +- run `yarn generate-ui-component` ```bash # What is your component name? diff --git a/generators/templates/Component.tsx.hbs b/generators/templates/Component.tsx.hbs index 5eb57da137..76bd8e73e2 100644 --- a/generators/templates/Component.tsx.hbs +++ b/generators/templates/Component.tsx.hbs @@ -1,6 +1,7 @@ -import React from 'react' +import React, { forwardRef } from 'react' +import type { HTMLAttributes } from 'react' -export interface {{pascalCase name}}Props { +export interface {{pascalCase name}}Props extends HTMLAttributes { /** * ID to find this component in testing tools (e.g.: cypress, * testing-library, and jest). @@ -8,12 +9,22 @@ export interface {{pascalCase name}}Props { testId?: string } -const {{pascalCase name}} = ({ testId = 'store-{{kebabCase name}}', children }: {{pascalCase name}}Props) => { - return ( -
- {children} -
- ) -} +const {{pascalCase name}} = forwardRef( + function {{pascalCase name}}( + { testId = 'store-{{kebabCase name}}', children, ...otherProps }, + ref + ) { + return ( +
+ {children} +
+ ) + } +) export default {{pascalCase name}} diff --git a/package.json b/package.json index 3c9e5f67f2..2aa2cf34f7 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "bootstrap": "lerna bootstrap", "release": "lerna version minor --yes && lerna publish from-git --yes", "size": "lerna run size", - "generate": "yarn plop --plopfile generators/plopfile.ts" + "generate-ui-component": "yarn plop --plopfile generators/plopfile.ts" }, "workspaces": [ "packages/*",