diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 7cd833644a..7b44dc6c11 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -1,8 +1,9 @@ -name: 'Chromatic' - +name: "Chromatic" on: + workflow_dispatch: push: - branches: [ integration ] + branches: + - integration jobs: chromatic-deployment: @@ -10,21 +11,18 @@ jobs: defaults: run: working-directory: packages/webapp - strategy: - matrix: - node-version: [ 16 ] steps: - - uses: actions/checkout@v1 + - name: Checkout repo + uses: actions/checkout@v3 with: fetch-depth: 0 - - uses: pnpm/action-setup@v2.0.1 + - name: Setup pnpm + uses: pnpm/action-setup@v2 with: - version: 6.26.1 + version: latest - name: Install dependencies run: pnpm install - - name: Publish to Chromatic env: NODE_OPTIONS: "--max-old-space-size=8192" run: ./node_modules/.bin/chromatic --project-token ${{ secrets.CHROMATIC_PROJECT_TOKEN }} - diff --git a/README.md b/README.md index 30f82daaa7..5e0fdb28ff 100644 --- a/README.md +++ b/README.md @@ -308,6 +308,13 @@ Notes: - [container_name] are litefarm-db, litefarm-api and litefarm-web. - [ENV] are beta and prod +## Storybook + +You can use Storybook to visualize and test out the UI components used throughout the app. + +- To view Storybook on your local environment, run `pnmp storybook` on the `packages/webapp` directory and navigate to http://localhost:6006 +- To view the deployed version of Storybook, which is updated automatically with the latest changes on the integration branch, go to https://65316fc4f177c73a9181a843-yobioprfjv.chromatic.com + ## How to Contribute Please email: community@litefarm.org for more details. diff --git a/packages/webapp/package.json b/packages/webapp/package.json index d2092c4ef5..4d5584e5a2 100644 --- a/packages/webapp/package.json +++ b/packages/webapp/package.json @@ -9,8 +9,6 @@ "preview": "vite preview", "lint": "eslint src", "i18n": "npx i18next 'src/**/*.{js,jsx,ts,tsx}' -c src/locales/i18next-parser.config.cjs", - "chromatic": "npx chromatic --project-token gb9nrdyzl8b", - "chromatic-local": "./node_modules/.bin/chromatic --project-token 594bdec1c518", "format": "npx prettier --write ./src", "storybook": "storybook dev -p 6006 public", "build-storybook": "storybook build", @@ -84,7 +82,7 @@ "@storybook/addon-links": "7.0.27", "@storybook/addon-mdx-gfm": "7.0.27", "@storybook/addon-viewport": "7.0.27", - "@storybook/jest": "^0.0.10", + "@storybook/jest": "^0.2.3", "@storybook/react": "7.0.27", "@storybook/react-vite": "7.0.27", "@storybook/test-runner": "^0.9.4", diff --git a/packages/webapp/pnpm-lock.yaml b/packages/webapp/pnpm-lock.yaml index ccbc909081..64a66c243a 100644 --- a/packages/webapp/pnpm-lock.yaml +++ b/packages/webapp/pnpm-lock.yaml @@ -202,8 +202,8 @@ devDependencies: specifier: 7.0.27 version: 7.0.27(react-dom@18.2.0)(react@18.2.0) '@storybook/jest': - specifier: ^0.0.10 - version: 0.0.10(react-dom@18.2.0)(react@18.2.0) + specifier: ^0.2.3 + version: 0.2.3(jest@28.1.3)(vitest@0.34.5) '@storybook/react': specifier: 7.0.27 version: 7.0.27(react-dom@18.2.0)(react@18.2.0)(typescript@4.9.5) @@ -306,8 +306,8 @@ devDependencies: packages: - /@adobe/css-tools@4.2.0: - resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} + /@adobe/css-tools@4.3.1: + resolution: {integrity: sha512-/62yikz7NLScCGAAST5SHdnjaDJQBDq0M2muyRTpf2VQhw6StBg2ALiu73zSJQ4fMVLA+0uBhBHAle7Wg+2kSg==} dev: true /@ampproject/remapping@2.2.1: @@ -4053,6 +4053,7 @@ packages: /@emotion/memoize@0.7.4: resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true dev: false optional: true @@ -4715,13 +4716,6 @@ packages: jest-get-type: 28.0.2 dev: true - /@jest/expect-utils@29.5.0: - resolution: {integrity: sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - jest-get-type: 29.4.3 - dev: true - /@jest/expect@28.1.3: resolution: {integrity: sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -6206,11 +6200,11 @@ packages: resolution: {integrity: sha512-YppvPa1qMyC+oCQJ3tf7Quzpf2NnBlvIRLPJiGAMssUwX5qE0iKe9lTtkNwMaNxEvzz6rDxewSlz+f/MWr4gPw==} dev: true - /@storybook/channels@7.5.0-alpha.7: - resolution: {integrity: sha512-B9rDRbY++aqwHR3NMKsRBMxFuwQymtnJ66D6B6RpITbI9hzvcOkKbG7V+LUyod5IroyMaBBPaDB8RSSIEuUpoA==} + /@storybook/channels@7.6.0-alpha.0: + resolution: {integrity: sha512-7O/oQXmC4aDlaJF6YaFE0F4+nWHWJiHv/HZuqlN8cwB6V51/41HUp+GKhnhJfLq1GEQnDnIXXrhkpMjZwIzCGA==} dependencies: - '@storybook/client-logger': 7.5.0-alpha.7 - '@storybook/core-events': 7.5.0-alpha.7 + '@storybook/client-logger': 7.6.0-alpha.0 + '@storybook/core-events': 7.6.0-alpha.0 '@storybook/global': 5.0.0 qs: 6.11.2 telejson: 7.2.0 @@ -6279,8 +6273,8 @@ packages: '@storybook/global': 5.0.0 dev: true - /@storybook/client-logger@7.5.0-alpha.7: - resolution: {integrity: sha512-gIoL6kiJeiRyVH9kcG1Gcb9ohT2Qzw5Av/eEvjgd2gQnQnmkvkf/GglfLvQ4VPcNKFvraxOP9LNQzsAe6MTuOQ==} + /@storybook/client-logger@7.6.0-alpha.0: + resolution: {integrity: sha512-tC7yt1wHIHXeoTKJR3n3FqUhwIggs6GxvRFD7KeBBD5JpEVJTZ2gCk74HFxu+wrtPacGeGXuSgvI3vDQcnpX7Q==} dependencies: '@storybook/global': 5.0.0 dev: true @@ -6440,8 +6434,8 @@ packages: resolution: {integrity: sha512-sNnqgO5i5DUIqeQfNbr987KWvAciMN9FmMBuYdKjVFMqWFyr44HTgnhfKwZZKl+VMDYkHA9Do7UGSYZIKy0P4g==} dev: true - /@storybook/core-events@7.5.0-alpha.7: - resolution: {integrity: sha512-lex9AIFHdB7Zi1TRq7exhKoLuHKxFUlwraK4tzqj2nBTIXkjVAAcu6Feuo4hNNOGVq0xXdKdqqWHXtbsOSHONg==} + /@storybook/core-events@7.6.0-alpha.0: + resolution: {integrity: sha512-Krkn9caFHlMbdvTNVvBlx47LeIgjUL+eBmdD4Fu4JWDBqYcYNloi9uNTZOozgUEDyb9gOjYSPH8ofM8lc+hJRA==} dependencies: ts-dedent: 2.2.0 dev: true @@ -6595,19 +6589,6 @@ packages: resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==} dev: true - /@storybook/instrumenter@6.5.16(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-q8/GaBk8PA/cL7m5OW+ec5t63+Zja9YvYSPGXrYtW17koSv7OnNPmk6RvI7tIHHO0mODBYnaHjF4zQfEGoyR5Q==} - dependencies: - '@storybook/addons': 6.5.16(react-dom@18.2.0)(react@18.2.0) - '@storybook/client-logger': 6.5.16 - '@storybook/core-events': 6.5.16 - core-js: 3.31.0 - global: 4.4.0 - transitivePeerDependencies: - - react - - react-dom - dev: true - /@storybook/instrumenter@7.0.27: resolution: {integrity: sha512-LR1Dm90lC5nurZQ5ZIbNa/8b+0AsBOQkEgnK/BQkheGMdlmrsh/i3dDqscOPZBPTLxZoYhhYWh27fDKHnT8bhw==} dependencies: @@ -6618,26 +6599,27 @@ packages: '@storybook/preview-api': 7.0.27 dev: true - /@storybook/instrumenter@7.5.0-alpha.7: - resolution: {integrity: sha512-Y3nTPkN3ODb81FsuU+qc5Er8hLEjSiCLY9leYj+gjOlH696xRZVBHT6Mrcp+iMh5HCoFuXcYNupw4vcECBaeaw==} + /@storybook/instrumenter@7.6.0-alpha.0: + resolution: {integrity: sha512-xXz0wDkU4P2sj7Kn00NFnRD69uBE6GnQDEAMAG/zjNO6NckR9vxs8MXuePNPhuZyMKEgb1ciY3CBML9nJq2s2g==} dependencies: - '@storybook/channels': 7.5.0-alpha.7 - '@storybook/client-logger': 7.5.0-alpha.7 - '@storybook/core-events': 7.5.0-alpha.7 + '@storybook/channels': 7.6.0-alpha.0 + '@storybook/client-logger': 7.6.0-alpha.0 + '@storybook/core-events': 7.6.0-alpha.0 '@storybook/global': 5.0.0 - '@storybook/preview-api': 7.5.0-alpha.7 + '@storybook/preview-api': 7.6.0-alpha.0 dev: true - /@storybook/jest@0.0.10(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-qeYLIplpcOUQXboJde5pRCjTvkGmF80jEszRUoNYCNcEPfC2sMK68Wq6Ct8EQj3CoEdJqsK54O2YYh+7D9S+ag==} + /@storybook/jest@0.2.3(jest@28.1.3)(vitest@0.34.5): + resolution: {integrity: sha512-ov5izrmbAFObzKeh9AOC5MlmFxAcf0o5i6YFGae9sDx6DGh6alXsRM+chIbucVkUwVHVlSzdfbLDEFGY/ShaYw==} dependencies: '@storybook/expect': 28.1.3-5 - '@storybook/instrumenter': 6.5.16(react-dom@18.2.0)(react@18.2.0) - '@testing-library/jest-dom': 5.16.5 + '@testing-library/jest-dom': 6.1.4(@types/jest@28.1.3)(jest@28.1.3)(vitest@0.34.5) + '@types/jest': 28.1.3 jest-mock: 27.5.1 transitivePeerDependencies: - - react - - react-dom + - '@jest/globals' + - jest + - vitest dev: true /@storybook/manager-api@7.0.27(react-dom@18.2.0)(react@18.2.0): @@ -6735,15 +6717,15 @@ packages: util-deprecate: 1.0.2 dev: true - /@storybook/preview-api@7.5.0-alpha.7: - resolution: {integrity: sha512-U4CxFYFPthKrnZeVTLxizE9C6xTZtRfcVh4o3gku8Wfpef38mXLA5Fl7HanTosFbKT6onmt3NGqKDNJVS0Exkw==} + /@storybook/preview-api@7.6.0-alpha.0: + resolution: {integrity: sha512-nZrahzletsxr+VPZGBZMHCJe688YMAHGbh0I4tvT0dx/LdJE7J8uKHShfOoWgJ8LLAhnXvJv1ALUvvv4k0SkSA==} dependencies: - '@storybook/channels': 7.5.0-alpha.7 - '@storybook/client-logger': 7.5.0-alpha.7 - '@storybook/core-events': 7.5.0-alpha.7 + '@storybook/channels': 7.6.0-alpha.0 + '@storybook/client-logger': 7.6.0-alpha.0 + '@storybook/core-events': 7.6.0-alpha.0 '@storybook/csf': 0.1.1 '@storybook/global': 5.0.0 - '@storybook/types': 7.5.0-alpha.7 + '@storybook/types': 7.6.0-alpha.0 '@types/qs': 6.9.7 dequal: 2.0.3 lodash: 4.17.21 @@ -6968,8 +6950,8 @@ packages: /@storybook/testing-library@0.0.14-next.1: resolution: {integrity: sha512-1CAl40IKIhcPaCC4pYCG0b9IiYNymktfV/jTrX7ctquRY3akaN7f4A1SippVHosksft0M+rQTFE0ccfWW581fw==} dependencies: - '@storybook/client-logger': 7.5.0-alpha.7 - '@storybook/instrumenter': 7.5.0-alpha.7 + '@storybook/client-logger': 7.6.0-alpha.0 + '@storybook/instrumenter': 7.6.0-alpha.0 '@testing-library/dom': 8.20.1 '@testing-library/user-event': 13.5.0(@testing-library/dom@8.20.1) ts-dedent: 2.2.0 @@ -7012,10 +6994,10 @@ packages: file-system-cache: 2.3.0 dev: true - /@storybook/types@7.5.0-alpha.7: - resolution: {integrity: sha512-ZTLWdYXwzD+H77cg9htchMBpKYb3OsN7BVxyRRACEHR4ti2HY8cHnVFYxp0xVZFkvpVEP1FWxhC9F7KthuHu8w==} + /@storybook/types@7.6.0-alpha.0: + resolution: {integrity: sha512-5ouXV3nGyEeowne4jxSGjIHb66kRzbKSdGcKL07+c5GBZgpt+MiwGmi88LJwztENOYHG6dr+Zk57GQJfX7k1pA==} dependencies: - '@storybook/channels': 7.5.0-alpha.7 + '@storybook/channels': 7.6.0-alpha.0 '@types/babel__core': 7.20.1 '@types/express': 4.17.17 file-system-cache: 2.3.0 @@ -7279,19 +7261,35 @@ packages: pretty-format: 27.5.1 dev: true - /@testing-library/jest-dom@5.16.5: - resolution: {integrity: sha512-N5ixQ2qKpi5OLYfwQmUb/5mSV9LneAcaUfp32pn4yCnpb8r/Yz0pXFPck21dIicKmi+ta5WRAknkZCfA8refMA==} - engines: {node: '>=8', npm: '>=6', yarn: '>=1'} + /@testing-library/jest-dom@6.1.4(@types/jest@28.1.3)(jest@28.1.3)(vitest@0.34.5): + resolution: {integrity: sha512-wpoYrCYwSZ5/AxcrjLxJmCU6I5QAJXslEeSiMQqaWmP2Kzpd1LvF/qxmAIW2qposULGWq2gw30GgVNFLSc2Jnw==} + engines: {node: '>=14', npm: '>=6', yarn: '>=1'} + peerDependencies: + '@jest/globals': '>= 28' + '@types/jest': '>= 28' + jest: '>= 28' + vitest: '>= 0.32' + peerDependenciesMeta: + '@jest/globals': + optional: true + '@types/jest': + optional: true + jest: + optional: true + vitest: + optional: true dependencies: - '@adobe/css-tools': 4.2.0 + '@adobe/css-tools': 4.3.1 '@babel/runtime': 7.22.5 - '@types/testing-library__jest-dom': 5.14.6 + '@types/jest': 28.1.3 aria-query: 5.3.0 chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.5.16 + jest: 28.1.3 lodash: 4.17.21 redent: 3.0.0 + vitest: 0.34.5(sass@1.56.1) dev: true /@testing-library/user-event@13.5.0(@testing-library/dom@8.20.1): @@ -7731,13 +7729,6 @@ packages: pretty-format: 28.1.3 dev: true - /@types/jest@29.5.2: - resolution: {integrity: sha512-mSoZVJF5YzGVCk+FsDxzDuH7s+SCkzrgKZzf0Z0T2WudhBUPoF6ktoTPC4R0ZoCPCV5xUvuU6ias5NvxcBcMMg==} - dependencies: - expect: 29.5.0 - pretty-format: 29.5.0 - dev: true - /@types/json-schema@7.0.12: resolution: {integrity: sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==} dev: true @@ -7916,12 +7907,6 @@ packages: resolution: {integrity: sha512-Lja2xYuuf2B3knEsga8ShbOdsfNOtzT73GyJmZyY7eGl2+ajOqrs8yM5ze0fsSoYwvA6bw7/Qr7OZ7PEEmYwWg==} dev: true - /@types/testing-library__jest-dom@5.14.6: - resolution: {integrity: sha512-FkHXCb+ikSoUP4Y4rOslzTdX5sqYwMxfefKh1GmZ8ce1GOkEHntSp6b5cGadmNfp5e4BMEWOMx+WSKd5/MqlDA==} - dependencies: - '@types/jest': 29.5.2 - dev: true - /@types/trusted-types@2.0.3: resolution: {integrity: sha512-NfQ4gyz38SL8sDNrSixxU2Os1a5xcdFxipAFxYEuLUlvU2uDwS4NUpsImcf1//SlWItCVMMLiylsxbmNMToV/g==} dev: true @@ -8561,6 +8546,7 @@ packages: /anymatch@2.0.0: resolution: {integrity: sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==} + requiresBuild: true dependencies: micromatch: 3.1.10 normalize-path: 2.1.1 @@ -8775,6 +8761,7 @@ packages: /async-each@1.0.6: resolution: {integrity: sha512-c646jH1avxr+aVpndVMeAfYw7wAa6idufrlN3LPA4PmKS0QEGp6PIC9nwz0WQkkvBGAMEki3pFdtxaF39J9vvg==} + requiresBuild: true dev: true optional: true @@ -9134,6 +9121,7 @@ packages: /binary-extensions@1.13.1: resolution: {integrity: sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==} engines: {node: '>=0.10.0'} + requiresBuild: true dev: true optional: true @@ -9668,6 +9656,7 @@ packages: /chokidar@2.1.8: resolution: {integrity: sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==} deprecated: Chokidar 2 does not receive security updates since 2019. Upgrade to chokidar 3 with 15x fewer dependencies + requiresBuild: true dependencies: anymatch: 2.0.0 async-each: 1.0.6 @@ -11672,17 +11661,6 @@ packages: jest-util: 28.1.3 dev: true - /expect@29.5.0: - resolution: {integrity: sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - '@jest/expect-utils': 29.5.0 - jest-get-type: 29.4.3 - jest-matcher-utils: 29.5.0 - jest-message-util: 29.5.0 - jest-util: 29.5.0 - dev: true - /express@4.18.2: resolution: {integrity: sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==} engines: {node: '>= 0.10.0'} @@ -13241,6 +13219,7 @@ packages: /is-binary-path@1.0.1: resolution: {integrity: sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==} engines: {node: '>=0.10.0'} + requiresBuild: true dependencies: binary-extensions: 1.13.1 dev: true @@ -13878,16 +13857,6 @@ packages: pretty-format: 28.1.3 dev: true - /jest-diff@29.5.0: - resolution: {integrity: sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - diff-sequences: 29.4.3 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - /jest-docblock@28.1.1: resolution: {integrity: sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -13923,11 +13892,6 @@ packages: engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} dev: true - /jest-get-type@29.4.3: - resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dev: true - /jest-haste-map@28.1.3: resolution: {integrity: sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -13994,16 +13958,6 @@ packages: pretty-format: 28.1.3 dev: true - /jest-matcher-utils@29.5.0: - resolution: {integrity: sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==} - engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} - dependencies: - chalk: 4.1.2 - jest-diff: 29.5.0 - jest-get-type: 29.4.3 - pretty-format: 29.5.0 - dev: true - /jest-message-util@28.1.3: resolution: {integrity: sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==} engines: {node: ^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0} @@ -17405,6 +17359,7 @@ packages: /readdirp@2.2.1: resolution: {integrity: sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==} engines: {node: '>=0.10'} + requiresBuild: true dependencies: graceful-fs: 4.2.11 micromatch: 3.1.10