{"_id":"@sewing-kit/plugin-css","_rev":"65-0c71f66aa0f3fd39e6adeee9678dae1c","name":"@sewing-kit/plugin-css","dist-tags":{"next":"0.1.19-alpha.0","beta":"0.1.22-sk0-sk1-hybrid.4","latest":"0.3.0"},"versions":{"0.0.1":{"name":"@sewing-kit/plugin-css","version":"0.0.1","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.1","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"be1d3f48e0aa444403e429168f2e3bd0aef8be31","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.1.tgz","fileCount":38,"integrity":"sha512-pNuoxioSTqMeKy/ofPrwUqYMWJsHH1REGHZk0ViN+18irJJEPmyhzinyG82ZpRj5Hb8ReNbhJUDCDTWs5xtreA==","signatures":[{"sig":"MEUCIF4ukAiyowbCRK7spf0n29GDZkLfereIbLWIsmRPwgtIAiEA4oPab5qfyWdoNxmFwYyXM8BvJe4eixdzwORfnTkj9cQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":698538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeGzgHCRA9TVsSAnZWagAARkQQAKEAMzqxAL0Z9XEHY8hu\nATpGxZ7iYqoKjor4c/T9Fx45yF9z5aULroMYiBZkNqTxO+es6jbJQBw3bLvC\n+y1AqS0soPV7Ek8VXYqhF7Ejx4xaiQkSvpRSHlHCZ78eXSBNTWGv2JhK7Obx\nteN2ym5hICYTjMSqObQ9xg0eKAWMUVbJHoj9Upw9e0nErMbueR3m7UPJG818\nK1gGCAwjYPmSW0gfothJSFRVG1UFx8mOnvn6pUqn9I1DTp9laFbxHyBIofaI\nDEIlRCZOVFfcG88MSML4sO5907oJYqngHLHTjVVYvFtoA2+CcI1z/OhktDwR\nLNEG8ZPFyWk2mWbcjcKPmqiemWidX2KvsG9fDFI3bGiKlhoFudQL3TjV1jQN\nl2PzkL7YMuZcIjGm6Zo0Jc+r71OLWuhSwFlC1VkTxvL7qf4nCVif9MCAD5Jp\nAhdHSk7WeyAVXNyX9gvkLjM0b74shS/OIx4LNqYsH7kw9iuLn381ZsRrYpwu\nENd8MnXK8L6bWbinwG2twJekMIxijCB7+UOPXrFQkZA8QSVfVmV3eGNc/5Wq\nDoMfSSKEUDAI1q5cXb5HAMJkjxglxBkCZ4e1M0hpq+mNyrTMaG/7cqxw699z\nsvu5mukuNNaUDRZI2/hmvex8MsvpZKh5uu3HwaiuDKiuCAUdf9fukCXYZOuK\nIumd\r\n=PHtA\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"66ec1b604ed9995fc0ec0a9834c9bcd1b6ec0aa1","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.26","node-sass":"^4.13.0","css-loader":"^3.4.2","style-loader":"^1.1.2","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.19","@sewing-kit/plugin-jest":"^0.0.34","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.1","@types/mini-css-extract-plugin":"^0.9.0","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"@sewing-kit/plugin-jest":"^0.0.34","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.1_1578842118964_0.8915451189062065","host":"s3://npm-registry-packages"}},"0.0.2":{"name":"@sewing-kit/plugin-css","version":"0.0.2","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.2","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"9b60cf1692853475eb07c98d3fd658e68648a3ba","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.2.tgz","fileCount":38,"integrity":"sha512-ZrMWSRmYzmxnyJBypdQA/fF/CLTqxxEIxkyhptLYBJ+uCd64eWv1u9M6JPavsBjO1Ogjmd9JLCiusvU1qYsr7A==","signatures":[{"sig":"MEUCIFknqBbJC18dhL3b4aWkz0yehu21M63c4v2a124YPkW/AiEAn301tVqOcmkln9dGvLqjtXewtIx6qwF4yAooiIUc9HM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":698538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeG0bmCRA9TVsSAnZWagAAZCwQAIwwHrZF0DTgaGjhHmk6\ngwmkLZtKaVgNszVuxDf5sNkc77QiUTdNx9K1+iBCv5g4KNnAs59kEIKess/P\nXII9JkNO9ir190Ch6Sofh9Yh4Rf2RCdTo6peQ1cZvee/nFJxKQdeQ16CMl0g\nMYdKBRUI5GWGMGYHQMtKS+JOs5m0MPepXbvlEeEgG2eTf4YKSyhFEM5NsJSI\nDSQoYh+PqKQbhsf+0xyJ0WvcgBkoN2mh8LSSE/bGJJ3HPZSbVpYYKyt4QYNQ\n0Qc0wbiYyRQuksoANuVTyb32XmWgrHCEP2HJVwTF/0d3g/BXP549hi7AhCQj\nOAipihkFNHl6G2QvdJtUDCYeh2/x4eh4ujkzrhG1mtRRXXFiRL18LuUhgFwb\nDNcdgbYjTQsLR/UmUNWBELQa+1FP+/2nPI8b676vsMvG3j8W7mUa1rUBQHnc\n2Xb8wuLr92vV7g3ryldW3F8ZTTiBV8JB9dYZSVaYlk1imac/WBIuseyrfefP\n6YyHsWifQhr2DYvXYTZdWZfCoRUY6mcVUHF3rf+jcmlQAfrf2UPM2bsmlm86\n6FUf0wwWGYhVi3g7CgKlkrnNoy+1Kt1AquckJ80jHAofIHqyYJlg6N+4zV8y\nOajIQoZvsiQiAwtpBcn07BbT47Gt7NDSod61eyYaU85GXCO+AaYUg8QcXpfW\nDuDR\r\n=4XiC\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"1b74815eb82316a0073f4ae997dbca24ac163f7d","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.26","node-sass":"^4.13.0","css-loader":"^3.4.2","style-loader":"^1.1.2","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.19","@sewing-kit/plugin-jest":"^0.0.34","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.2","@types/mini-css-extract-plugin":"^0.9.0","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"@sewing-kit/plugin-jest":"^0.0.34","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.2"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.2_1578845926077_0.7632453931684178","host":"s3://npm-registry-packages"}},"0.0.3":{"name":"@sewing-kit/plugin-css","version":"0.0.3","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.3","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"0aa423f1abe810c037d0b94e11499f24bfca14fe","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.3.tgz","fileCount":38,"integrity":"sha512-j+gGecpFr2XK6mmsFJBdrCs1eizYgwWNKdODPpNoIJW5Ymdcs59MP6HGrpzcN1QEf8ny5+9EzR8gP/d3pY4/zw==","signatures":[{"sig":"MEYCIQDk2+Vf+e9F+O3wVbr1i2JugG7YYbyTo7liduheu0WN+wIhAMcCo5BrSE1hNrYUq3YkztckrFjbw6pnpOimRAOc1xQ0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":698538,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeG0fVCRA9TVsSAnZWagAAO3wP/10tzuBklwTFSGRd3u/p\nF06EEgreeb+VQfj4ALEr4YYCCokgf/ivYF1ysGvgBRiSR4tB97astr3jbPqo\nyNFZj8gblgKwQDm3yQSWD2eV476XODb0Ch8j+HQAY+ybN3toElQZbF9GmPUu\nOiagzsYHXdWpkLw5X5wnCaQZftP38pjDVL1PiImbmQ+xdhJVgjzbJUIhX1ta\nBh2WaPphU8P5hnrRuSuMdGnHsqtheZ64k6IZMmxR/ymeFW54zjgOgKZJzcK+\n8T8AhOqpQS5XqObXNN6s/iONJZWM1rU5IZqxU9fYmE7xlJM1Ufen0x2DXpO8\nycMO+bTllAy853zHizcutZA9Gahsg+QFotCKTTzHck+eiMA4+r0iNiRfhwmn\nqTay4rbI25lSOk2FrKYuWNJWOMyBsAQalvsC2xivorE5cePjLtG64Jjzj/tx\nbkrgzwsCoMDDRvUnG54TEGYxKnSq7tnrAedkSwJ5X4F7QrYd5fSzZwE3tyMt\nVfpE7xWFfKCFlusdEcHeISWQKhumZn2k2/vE+ECyBtMMAEUJXTv2PF6ze6H1\nziALqOjiC1k+CKD9l990zu8RfKUonXoBDop13dAkPEWiScRqoCat/+hF2htj\np0X38Gp2odwTOatTimkC4pmF4qfXgbhO58nLOGySp8x9LXlv9Pg298VMdpBe\nRi8D\r\n=xqvr\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"db3989203c8d3d2e59eaee2446404cd0eff3964e","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.26","node-sass":"^4.13.0","css-loader":"^3.4.2","style-loader":"^1.1.2","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.19","@sewing-kit/plugin-jest":"^0.0.34","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.3","@types/mini-css-extract-plugin":"^0.9.0","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"@sewing-kit/plugin-jest":"^0.0.34","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.3"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.3_1578846165245_0.948657115918021","host":"s3://npm-registry-packages"}},"0.0.4":{"name":"@sewing-kit/plugin-css","version":"0.0.4","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.4","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"4b97b216d545cb01392cb9b5f8d12a12b3c55bc0","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.4.tgz","fileCount":38,"integrity":"sha512-9or86+1VVhmHX6rJAbAADOnpJx6b90rLXwjqNiF9MeEETuKWKqXWwGhewcDprXDw7wv/SAdSkvZZo8M8+e8mMQ==","signatures":[{"sig":"MEYCIQChWWaH1+b5NNNgPNpo7/FZMAVpQBidpEsXIoGGuiHTawIhAI2XOUGAmj30iNmhH67simKpQl7x5QQVN1lWxHQz2vXc","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":700132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeG1XKCRA9TVsSAnZWagAAgQEP/A60HLGWbq6bQSo5m/Mq\npHBcCKf58UE2eKEW3TtLGwHHsQpQEk5yvG9iSCwRd5C+k3Js8YtvQOlECUFA\nEJV5xhpEKYMBA0iZSCF8Me30YD5WgSzZpQxH9t1ArlkkSF3XaQUdNTd5ejV0\nLcX58Jh2FrK0pNXJ1MNI8dkeXTdwVPDDv8/TtpBV6NxAiy0nLtDQjL3hjrjd\n83Hk4VDJ78NpTameew9I/0iBk2TUfcon/1WS+F+weBln6/K0NpnHfVSpxTdi\n3yTcsQp65/OU/UxDP/8CmNkTOvbSOpen+3nzir7zXwcuZAZ7SZfZFLdnH5XO\nJV18Jmi7hlSN1t8bohxmubHXusQw3xTMhzkey28wNbWSmfvkgoFsLFSo/Vmw\n4SQzfnQkxhnHN5/1v+bFBmgcZoiwzeadqbxarw67ZdTxolsqsnAQ9uiJqmN4\nKfXCWnJScRnENhg9FHMr69W+N3vnYP9ws830WaPpsWYs+/QXiQPn0kVGOa0k\nxC/7JCqjdgEWQYW3hpF8BVYQh2+B3chz9iI6hLbG0iFwdc9nXcvyMQDsfr8l\n82nEetWQF9JxLc7hp9wJPqKajK44oNeZPk5j3h0HO75bCgfcHm0WYM5xtA5K\nZNX9Xf+v9Omvrx1hlwRwCZEONygC3V05JNRr9riusM2RjLxH1cda6uv3q6cQ\nVKR5\r\n=Rs+r\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"6410511fc21a5a274d83fd3679b9f9ca806973d3","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.26","node-sass":"^4.13.0","css-loader":"^3.4.2","style-loader":"^1.1.2","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.19","@sewing-kit/plugin-jest":"^0.0.34","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.3","@types/mini-css-extract-plugin":"^0.9.0","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"@sewing-kit/plugin-jest":"^0.0.34","@sewing-kit/plugin-webpack":"^0.0.34","@sewing-kit/plugin-stylelint":"^0.0.3"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.4_1578849738117_0.5744439021580681","host":"s3://npm-registry-packages"}},"0.0.5":{"name":"@sewing-kit/plugin-css","version":"0.0.5","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.5","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"c5a7d97e45cc0f5a8280a02984d12427f1c26501","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.5.tgz","fileCount":38,"integrity":"sha512-ozgrh82rm31ahhS1awipKpuyqXriyCy8My2Pyc4h/VrroMSNCOqZp3XJ46InYdMKYh8KX/93M6O7+gsP8E3+zg==","signatures":[{"sig":"MEUCIQDB+dDzWs8q+VKUo1Ff2BZoRRdNf8y7IxaoFJhPz4gt8gIgHtte8etspwIkvPJhCbv8jnNLe2TdV0p8UdvBfAHvmiQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":700132,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJef4DhCRA9TVsSAnZWagAAzk0QAJGEx8oSEp4YIP45lVcO\n4K4TR1tAipYTGg21z4sz6GD1fUO/1LnJnqD/xiAMMFR2GBsOKmgNg0pVH2gF\n0efcjanGm/mEQMnYwmAKfK16AtNNkHpk9NbIm3DuptaaVkbfUIv9UAgLl/Xu\nzJNLHzOY4oxwNj52FwM3pnStG0pfVhLfDDq/WbfiX3bT/81DxbHV5uE+i4iv\n9mOBh55okdtygVswOC6pjeTogj/ZaD259xvDNRO0ltPDJ8XciWx4boZkbvzV\nNehYLrr+WwvT65hL3ACePqgzeTSRFgHopBwrL+ZB15V+phJ5GW4jBueeaOkn\najHrkkG9mcE48vRuAJNkZFCFylDGfcJtx+s6d2ZXrg5XjLAS8rD6/TlVGD6q\nLUbJrMgGh4KkB7RMrB40OdhwhnOu+Px5Ibn4HpAGftjfyZmldaseBbtIVZhk\n+6RNw0lXv0CcdTqj7Pt7um9KXm/zMv+gU8DkHM0hFyg4vfhZOKS2AQgoFAXC\nRqsqHUsyKFOvbcWX1xbTFN0imcYUEmV6UGRrddlcZvT8HAr6RIfMC9V1N4XL\nxy4PsmQ4StY8abfO9z25zJ9fXgijG976gyHdIMpuSX0Il4IKw0c5Zs5SvsiF\nP9jNdW+2CUtD1+kcReVLzCUolibQmyX/KPdlZflogCJxMFWy4SNsm0gYAX3Z\nnDDb\r\n=oOHb\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"bbbe95446828815ded0278b304213bedeeb87926","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.26","node-sass":"^4.13.0","css-loader":"^3.4.2","style-loader":"^1.1.2","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.20","@sewing-kit/plugin-jest":"^0.0.35","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.35","@sewing-kit/plugin-stylelint":"^0.0.4","@types/mini-css-extract-plugin":"^0.9.0","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"@sewing-kit/plugin-jest":"^0.0.35","@sewing-kit/plugin-webpack":"^0.0.35","@sewing-kit/plugin-stylelint":"^0.0.4"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.5_1585414369192_0.681971489872705","host":"s3://npm-registry-packages"}},"0.0.6":{"name":"@sewing-kit/plugin-css","version":"0.0.6","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.6","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"9b8e3cd5faade47887ff54208b39a3d978365279","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.6.tgz","fileCount":38,"integrity":"sha512-mCeqpU+XPHb3rftDWoezdt+ex2WSmiH/ZtySYvLClTlW/L3ND8fYwK9oxI+ErL3jXITLNhhA/0fsCwLPnUIdMg==","signatures":[{"sig":"MEUCID407AwgKn4XuXen3L7ioI6QzghbFKI0ZI3z1KL4ZLAQAiEAoDNRs5DIkDISuG8nuIX2gy7pRHCcNVzKIgjj/A1EnJI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":716006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJef5BlCRA9TVsSAnZWagAA8DoP/iDVVSOqkueWssjHF7Ws\nvRGj45+zMZ3UxE2XGlSDvJfTA/HTvGHPLyWIBiRiIZCsex4HhG0ypAmWujjN\nF9nXh19pZzsGAm/DjwKj30ErIZEGcy3InL3HQj9/JQUAJy6/AJRqEDsL4ddi\nmEZwE+fAKGh/nVe0GvuqzQAAaJesv2jBBvCT/HxZo5NYzJM/UEz2YXZxj6F7\nkxjuu/mCvjgXJVb0UFjtvx+sAII8kvdhtoTETU/q0sLFTpxY6Ey1AZ6C7Lth\nJfZZfOd1rEkkbNoe6uW2EuXsQZ7VtpjBBpECXTFCI22liC/0LI8aVIILDBB8\nWFViBzikyg192/jCZ9Y39Jkih/SQWUh2XMAu+dykp9Q03j7XPKgvH1uY9qV+\nl6KB4ZrY8jl3E6EcGQOzHQWG01uG0Osnsj0+Lz7/6/SSZIn0RRelcbvXcIaI\n+jnKuHD0pdQFEIxBIzQh7Dkr6o0L1l5XkOWAu4ZIZ3/wa8qPhqh9D9Q3BXhI\nMp2FLHqrL4I4Ld4nP5CTVi1vC8G/PKzIodWM7nmccipP3qZuh4MQVIHwQxzc\nPIyq+DPjGWm6cxJwZE3X7YRduDpuXWRDF5YFAgmACcwBCdseoEjYbxVR2fJU\nruJfyAxWJNS5fgyzbBlfc+2I4LrInEb1+fvDUnwUA2NC9Zvm1wOrd081Sskf\n3i+A\r\n=b3N6\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"1ea2d064fa6694a073db16fc255f6f877a4ab12f","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","node-sass":"^4.13.1","css-loader":"^3.4.2","style-loader":"^1.1.3","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.21","@sewing-kit/plugin-jest":"^0.0.36","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.36","@sewing-kit/plugin-stylelint":"^0.0.5","@types/mini-css-extract-plugin":"^0.9.1","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.36","@sewing-kit/plugin-webpack":"^0.0.36","@sewing-kit/plugin-stylelint":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.6_1585418341152_0.2734388793411655","host":"s3://npm-registry-packages"}},"0.0.7":{"name":"@sewing-kit/plugin-css","version":"0.0.7","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.7","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"343875ed56aa66da20bcfa6172ec42883dc7cafb","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.7.tgz","fileCount":38,"integrity":"sha512-qa3psFGPP7DBNyOivoxkErgTdzAXPJqlUAUJj6pL5YjD2lWc5znO5NRXVFoRFzRNrkflWixHai5Z6EUCHrP9AA==","signatures":[{"sig":"MEYCIQDgFG1GbVIAojh/SXm73dpZcdqKOWKRa3yiXNV6pzrvswIhAI6ADMtg1LHk8DCsj0R3Clei1HpuTg0tqsuNdl2cV6hm","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":716006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJef9AGCRA9TVsSAnZWagAAIioP/ijux+O55tPJugoJOwVW\njPFUajzSGdp4JvYaQ/bPIAhuPlY/zcNacu/SdPY1Q2XCW9imojWJWQ/AIgFz\n/pANhAbpBQIDLWKFnOZyvZe6Nsoi2Hlq1p4w+31kImy4sqjtkN2JJpBGSCZS\n7ALNkrzZHhcHyGG3mgXOBhirmXJ8Zg8NviK3qv3zg+/H3e4/keouRPObILy2\nBAF36SvX/szfUCSbWVLprKYrJwB+lY4ZepjUFZlp6b4367/kPiowyJ4nzbBW\nG9Qslpoiplx/GO4KsCYtZA5oIt25j/RIaGDdGzApaeTaJu48tVsTrrkRGSVX\ne0LjicpG43HHAyTAZbUqDL7uvvbJ4iGUAlE0SDMcE+0haaN0GSYiMw+0F+Qf\n49EAfJORcnvjxLK8RLGn+6/SHnL7VcboS1WFzvmfJuGGktesswt36/7vLQkx\n5waOkod0n59Fz6d/TN+sCoWn8RrLbvsZCC7iif72/sUGyX/mod9SbJI1fHAD\npBsNBVHftteXDlpCs5GEDBzD347fP2RJNbMiD3uVPRxFy6FLNt9qM7v5yiaB\nxLLjkrVmGccHqPUpKWAyq8a5Y21Tbva+YymihXSlovry64FJ7xcRvKOEDRSv\nMeNncUF5tnOnlKL8dhkmQw7sfVjy8EUqL51L5S+7uzu66jVdAvmACPHp86B+\nrFdS\r\n=fJGt\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"f993b812eb3b95f1d868573ded8b4cfb77710dfe","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","node-sass":"^4.13.1","css-loader":"^3.4.2","style-loader":"^1.1.3","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.21","@sewing-kit/plugin-jest":"^0.0.37","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.36","@sewing-kit/plugin-stylelint":"^0.0.5","@types/mini-css-extract-plugin":"^0.9.1","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.37","@sewing-kit/plugin-webpack":"^0.0.36","@sewing-kit/plugin-stylelint":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.7_1585434630515_0.12192421373192297","host":"s3://npm-registry-packages"}},"0.0.8":{"name":"@sewing-kit/plugin-css","version":"0.0.8","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.8","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"5258731c71d07b8668b9288373ee88ddc142de9e","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.8.tgz","fileCount":38,"integrity":"sha512-564ol3Y/Ee7iPuxkIUFdjaIjkN852GBIl4gnhlo5+C9ZzVgOo8uc0DoQ06yqrCwA5SB0evikXBnt04ZmOjzy0A==","signatures":[{"sig":"MEQCIBWT+uXa9N9nNH+01xEiTVFG2ewvkZ+eAgxw/teCqGRaAiB7yP7eVtoSNzdOp3AqbqIwAIJX0xM2x2qpJM01v/8CPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":716006,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJef9DMCRA9TVsSAnZWagAAiCYQAIYeS4FxCqe7ilaTE30d\ntsLcNdFN4MLlIuZ302vRXfuAgwCMNMb415/Wa63WoooKDcUkpx0UQJrVZSOI\nI34y/t0vz+pL57oxAAh7uDOPrDeJoeG4CdTApcalS6PYmu2CSQYPWh9pkDSl\nE/kCyX9pCW5lZrrD2mjlkt12jJ8y4kVV0VaCxTKGXAn2vOD09fNQbf8yhiv2\nxVT3F1u97l35KH5b9OpPM5qqCuzvaBvKTJPd8G7rY6d7KlBOPSJC572DSQTS\nNPxb+Xqz8IpgmHsYWdr0rWPY5sjFpNvA5sA55LY59Eg6xZlHceZX+6WVQbZQ\nHLK2xPcgzDXMKMxBu/wjWFSDu4Os+AOtCBUJ+Mrm7B5p0bVpcDuGD1yVZhgC\nU1i84vGjXEUah/gpd9zAkupyiu2kunx19QLR9nsJDyYJy6rWrvcL1WTcmisa\nX5K/EcMMvYnlR5iTejiG48+k9MA68tw7nCKZUvKNNqfz/qx9kuU3oRPZhfKA\nQZOwHzmw9JffLaiGphrIbYmlBczYKAn1fBzi7NTfbLgYqvaQw2lYr70dQc7i\nlnrnpwgbs25Xy0hr8DNUEZdH9gOClB6WLUj+kFdncoPegoTN/sDdqZVe6wbV\njYjOHlrPNMt3Vk+jogtXlrip/lJ9az5XLQofC9k3t6+QzzP2vWakDG8Bk5C5\nfng6\r\n=GLhH\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"8c94facb5e165cfd63f0589e35217253d670b234","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","node-sass":"^4.13.1","css-loader":"^3.4.2","style-loader":"^1.1.3","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.21","@sewing-kit/plugin-jest":"^0.0.38","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.36","@sewing-kit/plugin-stylelint":"^0.0.5","@types/mini-css-extract-plugin":"^0.9.1","webpack-filter-warnings-plugin":"^2.0.0-beta.0"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.38","@sewing-kit/plugin-webpack":"^0.0.36","@sewing-kit/plugin-stylelint":"^0.0.5"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.8_1585434828521_0.4870480655182923","host":"s3://npm-registry-packages"}},"0.0.9":{"name":"@sewing-kit/plugin-css","version":"0.0.9","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.9","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"f9112c9acd494168254f5f33d131724256594e36","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.9.tgz","fileCount":53,"integrity":"sha512-Djv/R9vcHDf0mCDHzToNPYmB3E2WUmVETInvCWC7t/AKMeU1oYo/wD00yt5QnLblQzwzPUcEUUZz7fJ3XFRp4A==","signatures":[{"sig":"MEUCIG/544cXbN3nc8WZpdzwYmzsNwUFDVAdHLoITC+fjy9DAiEAuxy0+6vPSAHeHw9wQOdvlqLeZLEAZvhNXmmVybkW89E=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":837154,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepHzkCRA9TVsSAnZWagAAWh8P/AhC62pjq+RqLP6jEZM9\nqKAr+ihyUCbrp/fn44EHOTxtXOh9Tf/dUUCps+4oaWhz+OojiHbnHadiDYXe\nFDcDeoAtTjC+Trvu7ASx6Ej9Kj6aWREzcPDUWjtb69XjcmXoZZCWS0bogMv5\nb76Ql8OCJyz8LdhOjWM8u+1orgPXQWmIz6rANhmUDxJ7680c7fq1eaK02/7w\nxKfZm2VcoyHxeBknwl97ScW2c/gpTCk7hX6UKOoyD067VAihIRMOkH/+FEVO\n+oh+j2iyvsQ1R1hCBfnxnCCAjf81DeftSsbU1PXR/kJOgnkdUfVV+8AonIjY\nBTBayfp1U57nC0Txb7162PBErtiNGBePR19m0tGncIcqtEpyRVQI5uLqXK30\nIKT7Z9VR/PlI7E63eX5JqQbS6ZY133CSCvQXFq91Q9Vfr3T1rCMdqEvGgVW3\njFUpiA1DaZPvCF1oqLhIbcNhhR/0TWUbzIqPq8PefilkLsnszE44XtdGDMMI\nCeTM6AN9Mz2wRhHtB+v0i63gBsd9+hPCoh1H8yg2Az9MlkV2Hsx1hj9OEKaz\nHOTuwonGXkjkKZ0tDeXNDlPQWHvwkdVYLsBU6gEkodKlMlhnAcEbFN+qj1bG\ntb2n8ZjwgOaSEAl3RQZaVdJv46DW1IRHJntOyZI8uz/X8RvZUw6hwprypGpK\nNw2n\r\n=Aos7\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"f74af097ae4331aae96fb5c67c0ae02250a3e5df","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.22","@sewing-kit/plugin-jest":"^0.0.39","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.37","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.39","@sewing-kit/plugin-webpack":"^0.0.37"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.9_1587838179994_0.6454622285730138","host":"s3://npm-registry-packages"}},"0.0.10":{"name":"@sewing-kit/plugin-css","version":"0.0.10","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.10","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"68d61bdf47d9c70a2ac150d541116dacef55ef07","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.10.tgz","fileCount":54,"integrity":"sha512-MWDiVmECs4nuhLeYJ+h7sw8WRpiDh5yxpIWfddIPAYJGSz9Pw96V/iLXtwcc0z/39fq37RtF6oUBwZuhx6b0sA==","signatures":[{"sig":"MEUCIHswzCDInDc2fPqQO8zvNnKrCy1V3mtqX3y8IA1uF7SHAiEAloNxU/o4WJzwDgnouvsXYNwHXhmSbHghzU/d598u71U=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":837230,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepIFaCRA9TVsSAnZWagAAfJgP/REhj7ye+BxE8L+pytmN\noVUdsj07qOopwfqworD7/nDGYXzStqDVn+1vO8oUOwPbZUgyWxrhygMv27Cj\nng5plsI6cG5Nin9nzGdWXP+cSmep8j4qk3MzmlEW9TvTsCJimCofy2FkuWps\n1O3PNU0TQs5BpYgFNznpz+yd8GXlWBp0M9CdmMgL+Sfb+vuzt5I9/OwxSG09\nAYlcxv14IjqCOhDXvAj49lnWYG+Rf7DZmCSVXamNJuz/ZrFfInu/RNp0nmIm\nDgb4Oibb3ofN8XGRxoMgHG9dkWYEXavK4xkrXB861hkmuvVEPvf6W6l/QGHW\ndcLulQMST4rTDIXiFpqkqn1HXda8JTMqDgOieADoGoQHoY+dYmtmakgdsNhP\n0qDfaVGV29lC2Oe0R++pnTYtdtixSIaPlyWFm8z8EY4JroOiruwAB6r8zLQ0\niyH3LK+WND43z3ZW1bgDx4lKH9dHHgP3llddBv4nSL6yUOdcKOKGXQ1waAq3\nVBM77rgB5S/UPQ7sdV2gJ3TQxBjDmymrLa+qbIBJMTlaZgNRiNlmUs2RCbph\n/bFxZRzRX0wWCtZxTrKYHoFY/kNCrfp3PWDaRZIRcZoiGYcG093ZIMiGGSJh\nWDwccCbZSIpZcNhRAbhONwCIKAdzGQKjq/Niy7sEsKtKmPY8yTD7iOxvBJrD\nm5WA\r\n=enSz\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"3cf2c255c1c932adfbefee45783864cb23c4cd66","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.22","@sewing-kit/plugin-jest":"^0.0.40","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.37","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.40","@sewing-kit/plugin-webpack":"^0.0.37"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.10_1587839322509_0.7012778575712806","host":"s3://npm-registry-packages"}},"0.0.11":{"name":"@sewing-kit/plugin-css","version":"0.0.11","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.11","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"9c8c76d3d465811c8643cca76c6630a29082a5d8","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.11.tgz","fileCount":54,"integrity":"sha512-J0czwRLjei9fAqSSs0MrAyKtpFCoxX6Vikl0fWA+eO25sVhP6pNDNPPdpg8isxroqG2GB8n4LwtuAH75QUY8LA==","signatures":[{"sig":"MEYCIQC0Y5w9FIz5/MjfLaBp2xu95qjMcz8ePTQ632udM+igkAIhAN1kCGL+mi9/CQxrfxBPFDPxjzTA/ZXU3icxulTsxdLE","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":806523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepIpWCRA9TVsSAnZWagAA9soQAIHl4VQDDLFcm7bI2r8f\nfKLpYfhQeLOCR8VYDlsrziRmce3eFeoBc30CUtmQttdNDAijqU+5vZDz53KI\n110tmjm+7+CIG9lL/mKzn3WBQ2Jgqvezg6rET9AVOtj+r+PhvTntPZr630Ea\n2IE+ZbzeRq/2tPMJ1SsVv3/uxloSCr3s+MHgWE6h3rayWEqXAIex+eiIsWRo\nnNT9VUsiO46vp6iI8k6h7otc5oUyY/yI9KozkNLoL/jrPtaO+5V43DiO0lST\nQGICp1slqxtMvRdW5IrI736To6ZydcAwsMNvrDifYb9WH3CVagZ6PtAfOWGx\n6YR6CrZR9w37k57bBrKQZQzhXVjGJPAd6q51D1nHhqt4GeVXrMm/k8Ya32Ha\naCVnYFDGxEqlzlIfFhnCNmZkpT+3IJTBJB07MgJogw7PE1GfBEgNGSIAQUDT\nmCVU+oS+6yqohHVGpyA6ncHqo+/AkKbzz1usSzuVC+whi0PDT7gbvb0VhskF\nKVCzr8h6MpY0UIS+A0ISD8xTczWNZkvkd3PqSjjsR+chMqThmi5+bbr3hR34\nBZDz7DlPZ3bZtmf5nXWccQDwM/SBzWBsi6ju0GpsST3RRtwtcARdoAt8rGgU\nEYqzjNTuNFjyyxrk0TLJNMz9/cx/EEE0OD48z4F+Lhtn5P0wcpHHigfnro46\nFBr9\r\n=v+qh\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"6e5aeab2dca7950e0c6f06ee1839beefe477848d","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.23","@sewing-kit/plugin-jest":"^0.0.40","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.38","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.40","@sewing-kit/plugin-webpack":"^0.0.38"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.11_1587841622205_0.8044433398890947","host":"s3://npm-registry-packages"}},"0.0.12":{"name":"@sewing-kit/plugin-css","version":"0.0.12","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.12","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"59dd70bbe02dbe0a4784cde32cc5ccb73028d3f7","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.12.tgz","fileCount":54,"integrity":"sha512-Vr4956I0URDJALsr9zkc5TzTWK+njGDBQcP65atrMWAQ5C8yK/7jEX/1qMaCQcTWUt3a2lKssuXl+Y2o3yDsow==","signatures":[{"sig":"MEUCIQCYPiemn6hfYGMY+0Q6CwYz9XH7aXm4zOFqLl/fb5uuoQIgWPj/UBIpbtGj3dvCvayhhb+dGbEHs9+7sW3e8hmmVAc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":806523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJepI6VCRA9TVsSAnZWagAASX8P/2owKQrQR/1BXd3z38M7\nqT4AxRNcUl9ngf4qp9Tn3a77v0iYX8VJl0Cimdghs496PLtotj3WocGvz47U\n6wwv0n66bCy5qVHuU1qP7pn72LWafLWOnRscz/7qgvhmUsarExZbp2nbnYT4\nI9bN48El/BoOV6nZloxT96hfs4Bn8pjg4l54lSIN9eun/jwwAHbqJ0AaEP1l\nhSVFNxfXKumFqNqaW0CrbCrf5oDci73LW8c9dPs80o4fgGbi28+T+AZY3RgR\nxs1zHwww9Ckw2UZ/2MBRp/LoMvqJQfvqRpFmqAS2i1pDfhUMdScg7P17dyOm\nGP7JqRzJSxaY93c5VpqHvojA8jm2NbiBdE3njikMr++YSw/ZANq8JAoC8kkw\nkPESbAXiqQQ3HyqOxIE2VxOnr+dSZTueim3idttLrx3s5kJ0fC5AqUFsZOAo\ne7xECkrPFtWDdo6kKMERV1mkHa3LRT4IlwjafPuAP5TqwUJMCqDrBSXL3JdR\nrnm1A/mKw/J1lhKe9/jvxsjfEDC+iIqXJqfhCmL62tRh15458MZcdNWjj1f/\nOVcfLHTLVOfwim/1LzUnCK4HIJ5LSV/7Li4a7GJrXPHUlv4gkmiYYduMmJAQ\nZmNvmg4xkpqoyNJ2P2xpLabXceV4ssRPDmNDeu+DpZ/zXY+BuUDaM3Afd+o1\n3r24\r\n=pni5\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"92ce43a4d2f5d68e94c22862dfa7f0423b9dff8a","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.23","@sewing-kit/plugin-jest":"^0.0.40","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.39","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.40","@sewing-kit/plugin-webpack":"^0.0.39"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.12_1587842708766_0.039448824770978774","host":"s3://npm-registry-packages"}},"0.0.13":{"name":"@sewing-kit/plugin-css","version":"0.0.13","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.13","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"27d445b5e91ecb62f4d6f359eed68c74de342f99","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.13.tgz","fileCount":54,"integrity":"sha512-Z+HAMZP39Vf8aRXi0XPXAPBDRKihAO+zk5CmQaQANWuEfm3Gm/tOFBNFjXVir4VP/le8il0ZpbTT9OmZoRuUhQ==","signatures":[{"sig":"MEYCIQD3C8nwkb1z1pLvGnNRb4yplsyP53fGti5usrDbRmo7uAIhAMqLyXSDvylFZOxBWDPAh7I9CZGIyJc0w0XgzcHYsDEf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":806523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerbWaCRA9TVsSAnZWagAAAdAQAJOpguFH0RCnzRgaY8/R\nuhFcbsEkJKNZzjV0/q8oQWYndTkb0PlUXPdytgccox57zZ5Vl7q1Z5a04X8s\ndq4yyDSg1MV2Byseew1IASk2gG9MdmsRqZLOAqHUt6FnflETv7/6+I0YN0e7\nZKOOYGV2dhy06Le1VOFwSMYSpRPYGPhFrH91stO32fyFWp09qYMONFTd4MeA\n1T4gKJ9E6pq09I5v5KLRl9z3Yc+zKNuYMY5rckuBKl7g2gnJTMAEeqgBUuri\nFmSdFDZO4Jf5pGedRO5jJ8VqO+aQd+UawXZYuPfjSdszpfpkrvIXjid43JSG\no1cgXTi4UiTbvdsCMqckjzxCztzfwUf3FKlBTUruxEUQqGOrz+osPDxr4TNg\n4BrBvQ6Au6WYU6f/+amBekZdJMPO8GVvDLEEQ6kloFTvMNySEJRwFzJUftGl\nDboNSCYlya/gWdkv1Q7sWRBAhzI3m8ArPqYU63Dh4FUhJm0y/haieVRkXkPE\n47XoFoumcZ5+nodNwZGeCqhFEXqRNlYMFeM2qtgUyULAjzmiXGTR3ReWD+eU\n6sTaMoK6TKY7Mp3Ja4NOdx+LYW258OIQbLovJHVAH5qPEwvQveJOnEhaiFkT\nIpFTpGUM7TNQAknXSHSAN2dyCqhgmmoMuS/HoL8cL+iyh65w/vYOQZrESNFx\nwo93\r\n=LW8K\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"0066152baac209c3eb671f3232880c7f8a4f80d1","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.23","@sewing-kit/plugin-jest":"^0.0.45","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.39","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.45","@sewing-kit/plugin-webpack":"^0.0.39"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.13_1588442522472_0.3393808103406426","host":"s3://npm-registry-packages"}},"0.0.14":{"name":"@sewing-kit/plugin-css","version":"0.0.14","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.14","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"4dd00cebf869892a82646aca853338def327bf03","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.14.tgz","fileCount":54,"integrity":"sha512-fxQBGa8VV3tycG68h2d3WpGXpN6JbYgnE7t+3Mz/xCkytIDc6Eki57hEQPP++j4pI89h7LCLex0taESAoWGfTQ==","signatures":[{"sig":"MEYCIQCss7yM/uPxARApIojyWaEk9INNcl0wkidJS0oU8tLGCwIhAOxIGnbmLuDQsn2gBb1xIFicaDDJrE67v/X2bmiaG0IQ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":806523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJercgxCRA9TVsSAnZWagAAL9UP/jwSXJxWr326BYrL3ZPk\n36rW13M/as5LpROkEHiHCTIHcEzvDYN/O/zA9I+UXkiNwWWBRyiVA2Vw6A2e\n7QjGCu6cGCcJLMCZ1QIVah5PqUwmKcxJcNV6D5z9MBiJ3VAfU8foPri2Ajtn\n0hcFeo+fdzpxj7cTpSdVWHS/FZHGheX59BedniV8kPbas8AXPfUEZTfgxPUJ\nt9Q5L9UWCjbV1aXSlmy6d6CTRrRwK1KjQqLveeDzOw8L8vlmsZ91WQLCSVdY\n1mO1w91Xe/IeYpGESOE9+zQ0PyJ9uWLnGk5qwhs5l5Wq6O86Bs2zmS1wcHzB\nIfCYQQnw7l4rwZ+FZq2z7iK4WZPC/tsE+sk8JmLgevZH0t1egZyWXxFs1UYA\nMVWfem6qGLvl2p2oKA1sPCDH3vjXqkG4h+EbitC/x0FPqjzhwf9MO+D8rbUU\nLs6ge+dAnahEpuUUVKQztnK4YgaDrKNC2iP90Qr3ALzcRyg2m7YUGRWMmbD1\njknaebSfttw1WjDurmbC4OrayJpWf0Y69i0IHrgNf4KvXrsrEdZTNNrGLrQr\nAM0i5rA+0U5YJF3XFt7XEFAgBULy6s33eKXf4n8kmdyGupSBl7SE6jGfpPbp\nRwEX+3091ju9yj9Xb/0tYwH1djBOkP8jkogxCGvyst2zvSASMDby4tuUN6MZ\nOneO\r\n=GS9c\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"b22a82925b855955605c5d121e71c92538702f50","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.23","@sewing-kit/plugin-jest":"^0.0.46","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.39","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.46","@sewing-kit/plugin-webpack":"^0.0.39"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.14_1588447281026_0.3250921217210916","host":"s3://npm-registry-packages"}},"0.0.15":{"name":"@sewing-kit/plugin-css","version":"0.0.15","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.15","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"58e874a51662b03466c73445b08982fc9c5155e4","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.15.tgz","fileCount":54,"integrity":"sha512-E+qtKlhz/Op4xpzhISgeUIh2c3fFH8VdmzaTJiXKA8ZFslguRyLdp73Lh5yZ9Svmp76w3vvlQLagz3hgUQCNzg==","signatures":[{"sig":"MEYCIQC5whXDrWeXlUncRUqQqhmzhiA2Gldt3+XHs+IVgPcxGQIhAKA1njxFyYn1ZblwZFR6QBXlt8WjMzMqhy24mGsgi0Cp","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":806523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerc8pCRA9TVsSAnZWagAATLMP/2XoaQa38bOzx84uhrbJ\nvXXUocWiBncMGv8tkjSAxAWn40mtuiQ6CQA1/GKCXYX0zVpgIxpNdZBWrARA\npUUfv4dRwEErSxpWhJkr2DB3NMwSOy9v4q4X+tFtTfz5mSFQ0/yT0bhI1BGN\nAqBFHDBZD90GnZKKg5XxVSH2wE2AdnLJWi3Up1InmwMr8h0XSkXWeBtGRwe4\nWs22qOrIQEHin6ESUidPWKRuCrk7XJCY2tUbRIw3AvVidNLdRw2alcUI98W6\nnQX/9m8tpVWR9GuWyBpwp0IpJKia9h3LVTZ2p0zA/hKjQ/53XNEiS4t/5RbQ\naTzXkf82R4hN3Ar6Z2T+Mwxp0BDYNxYvDHL/dJqh4Ty039yPcld6dI8JiRX0\n3JqVLTOn3j0/RkD93H/VxO+8l9KKdcFJVqIaHYk21WGnVddNjvsgL5YpdeK1\ngKA98j2w4deNm3SbmIYRo4d0oKrUv6UE3JIMUVgkkpXyhS4VfwhN4kP0uIq4\nsyzbL5kVOCHChy/MPluY730noBT8DJT8CNSBQD+ZPe52cL0c9unAOtgQW8ws\nPzoiGoiEY1fX01QiFnUoUbMqXeVIRik0ynB44xQCHDhKEsdFJpcl9nz1MM2u\nQke410R0WwY7bsjqFXMecs6CGpPoimqiceGFDXX6mXJTmiloVfVqtdcFg1Hx\n3IQY\r\n=xKup\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"213835572a84fd730c8683b36ea322f3126c7684","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.23","@sewing-kit/plugin-jest":"^0.0.47","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.40","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.47","@sewing-kit/plugin-webpack":"^0.0.40"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.15_1588449065540_0.7281882326017244","host":"s3://npm-registry-packages"}},"0.0.16":{"name":"@sewing-kit/plugin-css","version":"0.0.16","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.16","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"8ea585baf908d5e195c0e5f68a7fe17a61385c59","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.16.tgz","fileCount":54,"integrity":"sha512-Aet36kMrq+jYuDiGzd8g3mlks6C5mH5mGemxUZHBBv2qq91PETy0h6oMSZ+y4hwX7DyfusbzHepubeJB2PDTgw==","signatures":[{"sig":"MEYCIQDifmG85vhxgCc3xybv8ri4SYdIzMQzHnZj1pGyFizFuAIhAPpZeqUlw96t13pvwkudybwHNmFo9cU8weHs9WfcESRn","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":806523,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJere5FCRA9TVsSAnZWagAAqrsQAINTdTcVH4tSn44diEYl\nJmtNWbykZY/Um0G70KrZX5vTsAiS59dT+6Ec3TpvfIasnYTWebgaNYDOYmGm\natkqrEtHIUQvD3SIRAZbryjal02Kp48ynV6FGQW1JHqM+UMQRa2TGW/0cQ0/\n2AiXRBWt2964Fk3h78SVU2k5LOz+7U9hwfUPt05dAvpyjVi/5btvUw+7svWQ\nHB/7w51VH6J/dHLiAMJ3TcEf/Pzap1g6Yn8v9aCfKDobaczuQ5GcsiacsRVr\np992E6U6CaYjoa6k21NRJtAerwCl6tvYAnwBCgEacPe1A/8xWr8aK3W9+Own\nlAdH+lzOf9QwqU6e0v+HDV0EovyctvOHPL0nGyL8LZLVDCyWy16huUMYdkUA\n+FYtMkQIj669mwUB5c2m+gp1QuundJMRtabkw2hdTDbLtFLs8QK7DFRbe7YZ\nCFYt1LzJo5+jDYD5hFsoHZc6HLRRb5vc2It/FZgT2MFm8cou0urzy5Vte4MT\nymvfwT9EhBDKKjQ9jF/mY1LL+xMhcAWHbJHsMV//ucCpeNln3u3k88LI5Jwt\nA42MTbN+YyiawthRzBqpLCwdPcFpPdjkNY82yRlCJayMfRTUmVBozMKN3BPT\nGvVi8Agvc2bPpk1neDOPT8iNVW6oVFQKbSZAz06iuPMBR/0TmjNjpvNPD1DY\niL3N\r\n=Im6h\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"a4e36d9454b295cd71cb05dcc77b847b608c8d69","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","@sewing-kit/plugins":"^0.0.23","@sewing-kit/plugin-jest":"^0.0.48","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.41","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.48","@sewing-kit/plugin-webpack":"^0.0.41"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.16_1588457028858_0.35239157076985395","host":"s3://npm-registry-packages"}},"0.0.17":{"name":"@sewing-kit/plugin-css","version":"0.0.17","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.17","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"d8283cb5dddb6009384e06e690dba4f21fc846cd","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.17.tgz","fileCount":54,"integrity":"sha512-F5UZLPQ4sSp96BffjBzV0MgoWwstN0clRLD4gG3bCvOdUtmc+aeg7C9m4na41V2QVHY7h68P8shza5JNev19/w==","signatures":[{"sig":"MEUCIQCQkStHxWubsQ8pJwzrZeVWjtr67aqj3W+9ch4/Zi4YVAIgMUsB484W4hhvQJYbuIRco/1cchvRg3xlgJtvvdgQiCY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":807046,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJerf5WCRA9TVsSAnZWagAA5LcP/RPb6HRHZeH9QWqgSpOG\nOol6CIuEyxh7ZXZKMP/5ozDJcUN+9BzxGGmdTzGdOr9AtxdAQEgKWRHyGPLt\nvXUq5MOTLR7dk4S+KRJA5KX0jP6zpPIoLW3D8wHctw5NnQU2WJRoWRGTC45c\nzO08B+EF5e1kr3moj72j4AUyO7aBB84ejugjq3UswbDPoJ3YcLLDHXQKweM/\nqQ2XTu7mSq0lzN3ksYoq4RPCQSSq/XTdHF4hePbFd1+IA00AzXGJJa3CXfFv\nPhjcLzEM4j+oU3tPGJjKUiCCBrgINZeJhlwEbP0EG8Ai++YPCzlS77rO6GJl\nRrjz7lvi1egSHcyJVeDN7jAFb8aEdr1d2CywaLeBK3nt2Azp2sCTJ+VQiiPT\niHhwqDg4bynRPB/qR+gNVViW7mddau3Pi4pS/p1IDC/7c+MPDufpsFtpoFJj\nPehxFZn8wTZs//0ai1JaAAc2FpAXVsP81/8DlLRZcChVz/3GO9efoS2PsAx7\n5lReN3gnluEOXFzu9LgJaulZb6UcYscbEiUmXBp1QEP7yJ5TZmP19BWghQFF\neXtpxvy7zbH2j0PSeXSYe6F6qZxNoNdahB5O4mDF0YdTvkdxI/OGgyyYkLiR\nforucsVWIkqhoa+NHbffJyfbWk+UECUpVE1U/G4rToTACqL1OnrkUbsXGfn+\n9i4B\r\n=rrcx\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"f324b4c451c4700f0771c3da3e0203f932f02ab0","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.20.2/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.0.23","@sewing-kit/plugin-jest":"^0.0.49","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.42","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.49","@sewing-kit/plugin-webpack":"^0.0.42"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.17_1588461141539_0.10451914820372599","host":"s3://npm-registry-packages"}},"0.0.18":{"name":"@sewing-kit/plugin-css","version":"0.0.18","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.18","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"f8380f7457281e7e87166c46f72da7eedf49106b","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.18.tgz","fileCount":54,"integrity":"sha512-ATGq8AaPlCejfaARcWtEqpLJdxqBWtkd3ZoyvgMuX9Wn7ey+d1ejHVSiAov9eCMFU7zaG+MJFzkjh/on17DK/A==","signatures":[{"sig":"MEQCIBA00G+dtTwZE6bLHtwYacuKNtV3HMsjVC7OZtnRs9HFAiAjMXREmS0NV5+8d052fWWY2f0oVjf84j0sUHCrSbCm3w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":852680,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJewfzcCRA9TVsSAnZWagAAy9cP/Al90OgM5EE5Kp9emhnM\nRLSdR4dRTZPUg/582dvxstfZMNCmigGeKNxVokqbS4OxxfzXTQhdteFKVdVz\nG4e/dJuqEJ0c75KOtLBM5op5G7MDGSiL+F0rcFnON+FecQhVJXnSUZ93EnmR\nTshnoLUknj9HLWz+T/Z1FI9Dhc3UXCQeTK1w5Q1xfF19vJGROb5lhL/hmc6o\nzkf5mRLFk0+ug/iU0IyoWkNcii4FAtfneTswvWSp12/SbrQLpFQvjlrdXaru\nG94Gg8RFL0OLpEnagswc8BCbXo+3wOvF7iF/6TPtSD1m6ZYhBE3m+Rud8Hjn\ns8lSDDL2BMAZeZV/ymcCB+hnunlwptZvdtYM4GHm2f/A4Qs+WR2/280wCydi\nCp0OevTizDblGhGKoh2O2ZkYDABJqIfj429i1jJ7YsoIHG/NqJvzU6d6Rn2Z\ngr0V42YtYIVzWVmStasb5bIEZXAomzsMKw4/wlf+nPvw37wK6Z6nBYAuSb58\nsgImPquLY1AK2Yca533Vc16faJ5awLwirnEfZ2pX71wxbiP5CgBQMSdX+yTv\nxuaaJjGuzXr0szKE5kefDLFHp7A4OyG6Dz6z2aSOyCltMaTmKPhKNBmly7YO\nH1KDGa7NIIlvV88YMWB2LRd1BPnf3PR0tPecf1VccmLElPF2ACF8yRNohOFQ\nDhsI\r\n=ww9Z\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"6444ed2b55ee9e47f0d1f6d0627285b45b667763","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.21.0/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.0.24","@sewing-kit/plugin-jest":"^0.0.50","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.43","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.50","@sewing-kit/plugin-webpack":"^0.0.43"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.18_1589771484384_0.129689344378644","host":"s3://npm-registry-packages"}},"0.0.19":{"name":"@sewing-kit/plugin-css","version":"0.0.19","license":"MIT","_id":"@sewing-kit/plugin-css@0.0.19","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"4ce1c5b9309ea7989c165c2496827973eab6e9b9","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.0.19.tgz","fileCount":54,"integrity":"sha512-uIqHozTZf7zw4+PGulSlXINVJDiLZJIhOhazT9HZ1LGsUBhT5V6HrDAOtjfTLjRZmIvpAS6M06IpCKpHRlvGIw==","signatures":[{"sig":"MEYCIQCrwKFele42xXyObbqUGCL8c7FjIsfHApofM99WWZJDpQIhAPjNwjRDg5aQP7/uyfP9UOeXSVWlmkEC417PM6ySWA0s","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":852668,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJeywwECRA9TVsSAnZWagAAwMgP/1SRaC89jg4KWyzvyHtE\nsyDdJfa38wzntOX5fCmJSQZsKqQHEN1zWTKLxK1RN2aCqSgP5sXBdfjxgb2t\n6xAY9q3f7VMXWpxtRvroMW4Kqu8vbXspC96LeVUYetQYxI28MBe4qw7Kra+H\nGc+jCu2ozf/mwLtlMyvOoOM5p60toMTRMCLcoRFPYhMuH+wzRHW/deuGXRRN\nX551L5+A2Anbid5TjUxCVEWIH5ohA4FmdJlJ4+ni8dPu39zi+2y6nVJST+hS\nT8ro58XSsZVlOQ3tDtJVc4T/pD5yfKsACZB/EWvfv22jmQ5zBkZd6V92Cz6f\n1F73USozKhrMTzhC7CXopSggtRAPI1yxCzXKSj7egP1tng3OGMOXCJFzDlO8\nSmSDD7r7HY1oh7NHgzaFouqH9xIraUh0lNuC9XM8/hMqky6LagoLMiPAaTAb\nOjPp1xNa6ENQAxaMkqWcsMoAviQOXo8ivZT4ZVf1kF9WzXzwquXHW+qMHBq3\nttmrR3SyIAtT337kKi8fFOX+5iCkgf/qOj40jh48mnG7oinA8pWd5Hb7gGSk\nKKnpu4xoAe4cRzYN6sl9DNjX7NNY6RHfS2bK6vvvsT3D5+H9hWkV3vHFf475\nNXGE84sG//w6oZrmMVSGgCsxneJwtkuh6wN+5T6+HLZ46IrzCtuB9wwg1RmU\nkNw4\r\n=JgGp\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"f38584df181993e97e570ec4d57e222501771494","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.21.0/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.0.25","@sewing-kit/plugin-jest":"^0.0.51","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.0.44","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.0.51","@sewing-kit/plugin-webpack":"^0.0.44"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.0.19_1590365187819_0.24574123613241827","host":"s3://npm-registry-packages"}},"0.1.0":{"name":"@sewing-kit/plugin-css","version":"0.1.0","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.0","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"1a92c1d3ca0803e7c0e00858121a8ca2e0868a7c","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.0.tgz","fileCount":54,"integrity":"sha512-XRk5eRB5BN5bUFXen18I9Q8reSivIe44McjfwkldSz7s7gNz3o7Ban3aqHLqbHD5l7/hMoPzE6f+6+A0xAP9Wg==","signatures":[{"sig":"MEYCIQCoqKqZ5i9pmr+1il8nNuy2tHGEbvFN031vtusb32GXEwIhAMSDdleDs/dKHQp9ZZIc8QNLJUhryCWk2r8eIAKAo696","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":852664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJey0FDCRA9TVsSAnZWagAA5pMP/icadLCIS7f96G5dwEEj\n48oO0aOijGu/rAC3OJdjvttKo3f79cs3Vb/Qwn/dgEAn3wcLfitkjNyEH2j+\n2mCBrQ/rFOhJ1zX+YLoT8JnLEKR55XeBqCw0ZQOWsXBDexLopmt/E21fV43P\n/ee7I4C9Cu43nREfPjEpoVSc2vzIP3srDSI9w67WhV9rI8xUjz2Bf0r5Y6NO\nN3J3y6G0eRN/rU/NXWtAKEKe98rUgBvVGpbA0OFGC6YFQMJFwP+FGHyX2LA8\nywNUrS7mpDiyQQydy2/Z6zNw48Gc506fm93HbZij9XT9gunVEb+hx4rvwuHj\nV7tsJZAwVToRX3fZHD4XvJvzMw3VeUUNiYgplYdrwXjhUl7wbuFHc6Jih0G7\n16cl7v7bTiF9S2b5cOKsGFASYVFT0byc+G4ZJE1i14nWMzjmJYMWUwW5OdXa\nRBkRxkKyvkGBAPr1P9D8iuAfFmj8QenW78IBdGOYwzHiDoQVeAI/TW8Tdfji\nqyYDxdJEiHFirwJDD1iRHBrOFu/udYrMjkXpVyDsEAXQzm6izaWipiY1zjIH\n7IoHsCH0ViV82NINOeX921tHvEI7d2Z+TbpTSi/hC6UKe+OfW9WQvaqGxuj2\nN9+unarWdSihaHkuAjuIls4Ijzk7xKBa7Bo4YIO3f9W5JHGzXQAdbwfqUHTA\n7lfA\r\n=LZlc\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"56aa32235e275d34ad6c12f45fa959e5dcaee80f","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.21.0/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.0","@sewing-kit/plugin-jest":"^0.1.0","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.0","@sewing-kit/plugin-webpack":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.0_1590378818789_0.1391546464699569","host":"s3://npm-registry-packages"}},"0.1.1":{"name":"@sewing-kit/plugin-css","version":"0.1.1","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.1","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"afbb4f64b4a3313d97482187d11bf7df787cc0e4","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.1.tgz","fileCount":54,"integrity":"sha512-asMtavpJkdS/HvDPuQwCt5edyMuoX3n1eUv5bx6h9XxhQ2/br8yD20o5VXYfF3uX3WinR9s7qHdpUwwFN+so6g==","signatures":[{"sig":"MEYCIQCZMRJic1uhcxiCY9ABefAS2YdwMX/VRb9puOd8fh8YngIhAMWlAMphEVH13vZsh7UVcHx0O9dkH3aLlmLOvgnetJhO","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":852664,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe5BqPCRA9TVsSAnZWagAAReQQAJVYZXJpnO7dcJxowD6J\nRL3uPJdayT6m6PM/TV7jgN4g734Tm+6SmHWsQRXOBfl93gP5JdEBuiOcMZjC\nRbH+LqPvDMY0Fxzy8OU1PlxTFniKAQjn4BloV8WC6S1Ksmhl9eRXFEFwH6N+\nC08fI9ssPI1g3DjV1WnPtyOb7KpLRg/FcLE71aOZoR4/ud1snU0Try9CaZE4\ni//OErX5VzjYxcHkuyEpr68MSVAtElcgNdkS2nQiL+BAo9ANJNvcpRD4d9ZI\nLQzqnmw2Worsz3CLx9cj/SqaVcJJv0KDSRLWYGoH8vr/vilQz8sKp2+RYZtl\nUTv8vcHmamSrJ2UjGjSRlfs3o9rk1rudBwpyLwylISgWqKJxKZBYzR1fq5kh\n5dJHolPXOp30MWfWGJKCp7o36tUL6784UY0XeqUYQlEpX/9x8B8/d530G1Ov\n27BI227n5fYEQlALwkKkfOHItHUwN2d/dPsE+EFlgRy4ZTNgolCfdYvOH78k\nyUU/J/o+tzYAR4YhU/1kBRv8YjCPPTqz/MmYJJTOwJLmB0Aad3cQo9s8GYGK\nUNBrGPIR2xkv2953W2bIeUGrZ8wn+fkwQ0R+vXyusO1JP5225FgB4/R7y4EY\nk0s7JKaK7wEyC7XWn4jwysk1uqLHOqe3g7vsizQjbkrx0aTTbdPEksgqTv5l\nEEhb\r\n=9HtL\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"0def015093c2196725bc0ebbef6c785edbf84786","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.21.0/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.0","@sewing-kit/plugin-jest":"^0.1.1","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.1","@sewing-kit/plugin-webpack":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.1_1592007310425_0.8432160844897809","host":"s3://npm-registry-packages"}},"0.1.2":{"name":"@sewing-kit/plugin-css","version":"0.1.2","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.2","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"a1563041d8443631d96deeea65bbacc9f5c2a450","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.2.tgz","fileCount":54,"integrity":"sha512-qKeQjzimX3ulvgCzvp1Th5GI0KoKI0aWTUQ5mjHq9dwdEeFAkweTeUEIFyb+ycyaKDpy0qt8cWQGaUCc8Wad3w==","signatures":[{"sig":"MEQCIBqcZ2XxJasOMrxNOw6+EPL5dxcO5Z3kH7Kb0f0ozt2jAiAaExx8V5DXSCM3Fx4DpR9GuzJM4oKz8K/lDHgfsumFpQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":855427,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe7RL+CRA9TVsSAnZWagAA0eQQAI4nON+DEuga9kzXcZwX\nXH4DIfwfqihei6J6x2qbpUI7PspteI/H87L16U+RdxiRz/67wKrc3bnzFXyB\nPnBNwTu/r6ybhtqQCypGF3bWN5yAklKgFJCWRfAZ7xLwNxKWn98R1mqXvVr8\nzy7r8jVR9CF0ddUjjbLjzlIZ12PNoet4nyyKNImyKKVlNiratzcPG+wC3qU0\nEpP0zInj0bn/G9mlw+yoaFR3J4R6m193FlmlRPP6aQDWVKh8FIywOt9f4NUa\nDMsG1h5Z5w7vALtBDo2qmmQFIAcWfwh/oIq9gA+QPaFr4d3kGFwUPE9Zj4nj\n9xi4bpPCkLpm9wTwcDrgl5js6GsizoRPRg+Xu06rzK2zve3h2CneTxtVOdsy\nK0U/5/9N+BUXZM+uHkSoX6lvQA0JgToSKsFhscplW2SReSso0P4nrs+KZsxB\nQuhlcUqpXScLqLlYuvOwL1/JSxUBQvgQu5Abo6Ztd29AV15ixxRttMnU1HVw\nwCV1dO+AoPeiMrLleFzcF8GyaB6YN67gFmFpWQTL9fant2P5g4lkcPFWRuPZ\nkNWjY4QviZxAmfXLZ8Mhv0FfjUCLlP1bXUUTeL+tSbG/DTBUMzeWTedz48tY\nNMbzRk7BxZ0hACW+eWbrMgFccrMSTdUB9JIOa+QsXBuxgNWmtu+Ah+PBLkkz\nUFVF\r\n=pbhD\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"4cb725fdf77292f037d3100a93f895c0ea8af2e1","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.0","@sewing-kit/plugin-jest":"^0.1.2","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.2","@sewing-kit/plugin-webpack":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.2_1592595198432_0.8219578384186372","host":"s3://npm-registry-packages"}},"0.1.3":{"name":"@sewing-kit/plugin-css","version":"0.1.3","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.3","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"0ca939662d76180cb469c4559e3ad4fa012219de","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.3.tgz","fileCount":54,"integrity":"sha512-ZXFi044yidaip8KvQVpuUfU0sH5RnAZ5EtKzpCPnyoZVhAefmOgqaB9zwUKoZKZcv/orHc38sdSb56UwE8ZjfA==","signatures":[{"sig":"MEUCIH4w5vZvgzHDZifXNJNsEq8/uLyUh6Zy1iWMS46xS4tMAiEAu7ScxSO+cfyx3scUu0EKXt5fhJqtxFJGNCuA6XTKVfk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":855344,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe8j/xCRA9TVsSAnZWagAA56IP/1ulhggtAcQJSYgnPGIq\nA37VUKd8PuasrhpcIcb/NWzhH8dMojC2Uaai2XKQYojydvK0cqtDE+dPWDBn\nRmpKk72kNJAXaDr+KqLpHZlS43JFYDHNV/u8UUgkf6D4+C9AW8cSPsxiw0dV\n3c1dAqostwFzQtRCp+b9SxTeJFPGrp3O3a13JiavJBEkIup54xU8EbI+IgMQ\n6v/0UWMlv4sMlwMx6KrVasZ/HfPQulxmmpDACSVJpY/2EJrE22zXcw2y3WbT\nX4YRpBH5G+97yfMRVS83MBp9UPOI+pASFXm3AN0wulGZV/qr/oWwX5ss+yWG\nJYvm896fWFtiBru4ujxWHLOcl9MQiIgEOq9GVTBZTPbnDuPyDp/VowIgA9g8\neIs35qUcJDF5IsNUhWsXGe2vJbyrkSBeyjjHhWRRk8qXfd+TOjJEH1IHekU3\nnV0eJiKDY1EYOTmjyKRds6bX3zLD8WJOfU6ssOufk8qZIC+yw18aZZ96e+Kt\nDPNUE5qB4VthrmAciUulhx2Wg8LtWzJts07Z1r7RHqKQL8a4izS/+qCeuAol\nJ7U4w0gjSc91iLGHw9Rjf7qL0Q3SWEH8vTwgveTaY/IiA5ZY1pbRsWLhrqvx\njpY+frwbaVhOf26FkeUakjb2oWZV72fmL3Xi0z79t0Vstm6qbXXqQYw/siGA\n25nX\r\n=d88r\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"b780f01a9f8b4d23060c70f561cae623babee936","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.0","@sewing-kit/plugin-jest":"^0.1.3","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.3","@sewing-kit/plugin-webpack":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.3_1592934384938_0.09729783157970684","host":"s3://npm-registry-packages"}},"0.1.4":{"name":"@sewing-kit/plugin-css","version":"0.1.4","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.4","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"fd788b0ac3d02d8087256249ccf49eccbb798642","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.4.tgz","fileCount":54,"integrity":"sha512-IsMhgomBwZFvjJ2fBQsv7wqWwL2RLHgsPtR/ekI9R3xw4e2BJ/vaZ2KI5TaBipxd2/CObEewy4zGSc/Ok4GSdw==","signatures":[{"sig":"MEUCIBMERTbn9MOnxZFJNT2rhGF7GdQ4sJOUsmsbDkiJHsKnAiEArDndoYzeB/MNKlQO+vKnTRuWvwXvHDXsCPR0vV4FK4w=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":859899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9hj0CRA9TVsSAnZWagAAHyoP/Rly+vuRR7Wo93jSTlW/\nQ7jmgW21AHsmUyG2TCWORUSXCh3u9/DUmWPcgt1w2pelqA9dfcGzfbRzs3Sa\niqy9JU8CaexyHoee+NDsQJdn3zlO9eeow4clwv1wGze9zBI4RBDlhDdeX61m\n5E7P00X5N9hszTYmT8xdJhzgzJW8C+GSWsDUPnquOtxxBjX+2ZBFzQJZfIpX\n1C9cj/yMXQVhKAsE88F+kVndiIvtodK9NxqdEVmCeVI/n53BXwpYFxe0c/+F\nHUD1dIoy9opX9oYZTKp/lpF5wLCY+jg9ME5nyTPUN11LHH1wq0Bt0G2hby0Y\nBJnBz1H/2znYs5XauAmknnXs5eVhmun/9Cm49DAnG637ZrvaK31yDMK2P3ed\n3U2IKl01EjXfXGfmoYC/UcZsL2ldQGPt/9ch7JXwlwGOGVwhVrrAQe+PwE9y\nSK/Sjr4kmsm92OTpGJjlKDx7rcLI6raUCo2BEtJ4+EUzlshyeTILdTTar6dV\ndLoafBrmEV2pJ36r2wOZKOPwJiGdteq7n9zvdDJ9t4/A7mL/MUYbPDsiEKke\nJlZ0tQuyf8a3RHTuyW4wLgfAPlumT8cHOvtrqhDnLOAHWXBEoUHakftXBQof\nw+0HGKkCsxEgRV1BlhsB5n0kZNM2x3amzRxZH2l+IXSQE6mgys1oJ1ERclO5\n2n0H\r\n=HOkn\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"34ddec36939efe6e419fbda256f48edc13b06d8f","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.1","@sewing-kit/plugin-jest":"^0.1.4","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.1","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.4","@sewing-kit/plugin-webpack":"^0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.4_1593186547220_0.3821159833703305","host":"s3://npm-registry-packages"}},"0.1.5":{"name":"@sewing-kit/plugin-css","version":"0.1.5","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.5","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"468c2354d8aa92ce97e15e4ba558d989a470aacb","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.5.tgz","fileCount":54,"integrity":"sha512-5CT/vpPZg28IqnuIt8WLsUcT2yIBN9MgcDyW0QyndkuIDSHBj0oq28dpat7zFxHtnJhYH4wENP7ru9kMl1kBRQ==","signatures":[{"sig":"MEYCIQDacfyKCiJ6RacyhKHutgR57dOMyyohdtgSyBixOaEFEgIhANTK3l6q2sVMcIkIRboDZYRMcTBMUC6Bc2OrI/FR3AbF","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":859899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9hx4CRA9TVsSAnZWagAAMzMQAJ0UZMhIzGNKN/ml2s8M\n/wAuMD4bV96IHliCqZEYBxByJoX9X50wCylXlrxNhxh4T0gyzdmOG+CnkOGo\nFx+PZXeTtKlMtr5xs8nsfEZyl5MElWzgmD1m47K7g3vYE+gG0quWs/HG9JTo\nEE62C0bV39zv/07Vy9NoPaDqWRIUqAdWYwKa2bRXeeatMVBFNtNTLMJA/QkV\nQayQwJotfPd8Gey5ZklliOr4F7l8j9eEvRUZ5dfEHjS9Q7K+KcXwU4vkNMVA\nrjXaeHmlxVrH3UA+mbfGefdetNURvrNWz4OnByslO1S04MniWMrCxznM2w6G\nJB4l4S6RiQjvW1AsLjjczoDZXIfriJkF5OgzMY15wFWxdFkx3KG7goLfrZbl\nIusFEtrwxeS8jN+M3ZeCg3An309Qod51FUtE7UQZXOWOGa9kLOnh5AngZyDW\nyeZYSnu9vGkrhuLE9NmT7ZuFNque4E/5XolRUI+0LSB1YEANW3JpUr80Wr/K\nf+qJs8A0IC3oik9jkSon51B1EkbzkRS3WYALNJRQMecCffdP10hAzhBqoK0v\nMwxtRZ8GgszuZ6oZcRWdhQwQkY0gCkDtDxRu3/0DcReRU092lFsNkKik1N43\nRUeCxhSnJPD0UoJqG907TJKaSamhI2QmDQVp/TZNaqHf1Zvvy1KoqUTRcL8p\nAK2s\r\n=SToG\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"9e1693c1cadf1850cfa78fcc7cf55f3716c7702b","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.1","@sewing-kit/plugin-jest":"^0.1.5","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.1","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.5","@sewing-kit/plugin-webpack":"^0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.5_1593187447844_0.6099581301962309","host":"s3://npm-registry-packages"}},"0.1.6":{"name":"@sewing-kit/plugin-css","version":"0.1.6","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.6","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"ce66aca492f348397c47cb669fdc2cab64129ace","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.6.tgz","fileCount":54,"integrity":"sha512-ES2VCvS3KIBoJa6UyKUbz07WAra1D1nAa2Ps/y+ivCDeYqNoSDMtZ30Q2IMnN0sAqW12RyWTocS2eSit5zyXwg==","signatures":[{"sig":"MEUCICVmwWe+BBjlN4/6XClymesRUxulvzRKeiHLE9fdL+vqAiEAiwDoSAjxmT8omYkaovYPjCRHqFqVGxxuoBaWKGPep7o=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":859899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9iOdCRA9TVsSAnZWagAAo4YP/1Mqw6tHp6hP/szcKG/r\nY8JrzaY5CRKpX3j11LRiW1roI5dSl8iYYC5uijrcU9oXyBVBLXp5/Jv5RuOn\nDue4MQsZLt3/Z/OU+f2+fZGVoiUJmZQy+uY71HLnXf/oS+51phBx1/PWvV0o\npqeRMqRq9yzeUv/UnHcoFbQXrusYlQZ3BcgIpCSeDQ6cZ1ffgFC/5exSOm/5\n4xhX0CASvsatpROiX/DqW/2GzAJo79Wi1a6uzQQztI7bbWJCojKugtBh+nms\nu9Ql1bcvRaSWmFK8f7/8fyTLXbav0xSBBrI6FFIfulfWjtsB94VfddPmFHrn\nvEcbJ8e2O6kfyRTFiaQ8VgO4/FROHJCS+q7LfbBYgrftJiht6i+ThjfJBfyz\nZ9PZpHuHg1Pv3MMp0DfPNeVFwInvNWBhgWGJ8MZ3+1sUbGXemrQBEDZlUTqM\nmVYvGC1B2JL0ZYOPuKC97GNHu0RakQbOGkxFSbHvgJdM3QRNUe+GQWBmPq91\nAReI11w5hOXJMSvZox4dUXCeb+5UYwHIy4kjJgWGEYaFX4NQQtsVm+f5gBlT\nU5v9xER4drFjJa32KjllFqjyidH7mDXd3SO4Ewm4HyEDTJzQxtP2oi97CsE5\nD9FILm+nSnFh0g+huNuq0vyc7hj0UO0g6dAaA18WMlxlO5/4HoAaY3hyhkFS\ntxLp\r\n=jMnb\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"0b6887b9bbf580b80986087a12afbcf0e349950d","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.1","@sewing-kit/plugin-jest":"^0.1.6","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.1","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.6","@sewing-kit/plugin-webpack":"^0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.6_1593189277332_0.1208204179946133","host":"s3://npm-registry-packages"}},"0.1.7":{"name":"@sewing-kit/plugin-css","version":"0.1.7","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.7","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"16103ba195ce563796d9935ad26df67bde8467be","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.7.tgz","fileCount":54,"integrity":"sha512-rn/fnoNGL554W6oZs3p8fT9GIG3PfUbJy7Pu8bEGtXfIS4Mfmu7PcIOAR7Wdk2zUxFwGOAY3U3OmktkejpOR3w==","signatures":[{"sig":"MEUCIBSowGHQr9wg8M2bk8RdNBUQuA7LWIzOEmFQuZOzQ8zRAiEAv831AmxvLvSkOn+YJN3wL4OUk9/DKW/y3josgsHB1ec=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":859899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9jSfCRA9TVsSAnZWagAANqEQAJ+R0QsCiYcWcumrhfWo\njjasPIp31JQb2IVpU6X1ase5e7fUKEnkYOhT7YSlyGL8f2tpMWIuzkYXJLVn\nk+3qWUOv+hirDNgL5lYUrpQ9290YP/u91T7Jd1ijug9L2zrkTSt3h9Gu8l3q\nu0XiC8Nl6idntdx0efqdgzo0m1P936C5z0Bm6c5ExlKTUdc+10+qJU8c5kBU\nIaOn/lsaPCFVluqde5sYOhsc8nknIz9Vu/JoNdFZdl0KPdU1zC9o+bNhNLIU\nGfQ90vbCDDzBHmavIXffqNUogbQIjcwdRnlyRlDYcwJAB84u7OBnxsdd7xn8\nwe2AIY+OJym7DWOxQaAG2dgjlP2FfkU8FJH2l37bxCMOcmIhKIMIg1SSC0Wc\nIi7aX5crDjtWEcvdXNnm3UxXZLq1fmCNMFHTa6oVNhiYpjyJbYlybNMblwzl\nK4byLleV//EQx2MbLDrY6rIDLmNiU5eFHdUJiIX3qR3zHxjtpnwCwoVFar0y\nzFyYXs08tgWWaqVmZPTXBe64hJ6UdBVdDRsC89lthdCpERLUg380WJDj0bM9\n8p6bNanmXNY/qpJx5J2v989Iu7dbbu3uGqB/Bx8LwSs/B1KYYI/kuXGA0Rzl\nlOBmQqtuJNSnPplwv6LlFezz8m/wncmmB8E8+ursn8LpnIakZC5VBV1/Tc1T\nus+m\r\n=ZuNM\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"3c42034d29bbb323dd5953694ea0bb72e3c2d0ee","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.1","@sewing-kit/plugin-jest":"^0.1.7","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.2","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.7","@sewing-kit/plugin-webpack":"^0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.7_1593193630741_0.9708196523176387","host":"s3://npm-registry-packages"}},"0.1.8":{"name":"@sewing-kit/plugin-css","version":"0.1.8","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.8","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"bd0a7a2c38c918403670f94e997a94008101b78a","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.8.tgz","fileCount":54,"integrity":"sha512-9onf4/5sxOTucZRklGAs8UxAU646GSBO+lioO2q2PUu0W64awFPl3CxWmIq4/37GT2/jc4KzRNKYwNtbN893Lw==","signatures":[{"sig":"MEQCIF7bsfHHGX4W/s5ti/r3m61tEg+VGa1l04vea/5xEePjAiAAyR840CFYEvXBvFywAPObai+16xzy0pkrs4NesOlDXg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9qkXCRA9TVsSAnZWagAApN0QAJmDROcOS7x0fMHwqWmU\n/NoWW78esvsxD+0bCtIpFw8RQdEieWRtOaXATZzU1Svf5sqbMeisxsNlK0iK\nnkPvc03vMCpDYa8LgwVFoh2snpnrtMe8AnlDiMnstJp5wy3bSuBcs4iWY690\nAJb/3e6bv3oSvwekLjcU/fHD2PKV32Uvit9ova4s83oEGRTShSxtXUPaxAKf\nzieHkGiUVzjzzsX5gONLzYG/CS0QdGdSvP/fY8O8EfzHrf3uonl0PVICzjf2\nYVEbYK/mMooONZt0hadx8o6DPkhbZB14Px2xTQff49hTyLCy3eqchTS5K/ie\nwhC1P/VqQZcIVcpG/Kk0UN6BuPIo7AOe1qICweZn7F2yZNjJKXbUTcdgD1md\nw0Ow1Wt2BmUhpinfJm+GQVPOoXn95A3Exp6Q6CEOSkbJqJ4OiVqrRUJGZNQ0\nTTeKEkkKRbB6SuUgfOfAmxbplMzBBizXjdALxEFVFKxRPrhn71LpMF11xSz4\nPf8+m9By/QA5zGv/ywGvEqIE7BvAmWe6wdky16ZsqifSzJoPHSntykAVK6GX\nqAIAe1Gl0IVSmVuRMdc+eE6lz5H064iagcTzdqDiYxV/bOui2wl5pJ+v4tsb\nos8SRTaG6KJQwUMp11UOAQiqtKyDtfH9moKoKoIV35Tyw3ng/uotgIDx78zX\n3MEM\r\n=O64S\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"fa6dc7040274d037d10421c6d2c330b413ce4eba","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.2","@sewing-kit/plugin-jest":"^0.1.8","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.3","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.8","@sewing-kit/plugin-webpack":"^0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.8_1593223447275_0.8142305096053395","host":"s3://npm-registry-packages"}},"0.1.9":{"name":"@sewing-kit/plugin-css","version":"0.1.9","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.9","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"d13aedcb75579c7511b2cc52c10ec497a605d4b6","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.9.tgz","fileCount":54,"integrity":"sha512-dmGUQMgrnprEHMFpRA5wABfxxiDkv4UcQy0orv7aM9THoIQ0sCsmKOPE5PTkzYIcJCGV96lylniXLPdG7qXQ6Q==","signatures":[{"sig":"MEUCIGITY44WPW9r8Yf8lIpGbdgDva52Ry8DZrziGfWYxt3yAiEAirwQB3L5/VDOka4cwoG5xkibsgdUGHU0BC4O0yyUpFI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861027,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9q6JCRA9TVsSAnZWagAA2GkP/1dC+CnoSgKaeyR19keN\nBVcKlDGa4yPH5caoqBM9bNervHpCMBQZc3r6o3SG2NlotoCphix6ocQNi2JB\n5asSjy1aF2Ny3jCSv0T+gCxDKVBrGWaTflQ6UTzMULG/iG4SoeUQMUhaP2qG\n/qWBP2a7dEx0gSwAaL7vjxsjA8xWrSuBTqnd6skDfSnJTBTNe4L+Ns6ojVgi\niI1NLSSRVhRt2wwW3sdoOFggcua8zRJm9zY3UAju88t8Chb29uTO4faGPPeA\nTAYFMDH7BLJlfS8A/wW77TAOzsEfmGmDt8rquZpesx+mk9QJtXUFW0k9dxZH\nboFNnDfwlYxDZvsgTw21ogGo+mPDwKI6wFXAK1sZV646/yNX024VjFl0Prtj\nHrEegEX6TUfva1QBvqRhnEXqv4W7K6aErS7V15nMBvPVH2Nb0GoJxQNLa7ln\npp4K3b3u8gr3N5L2rwFy1hsZDuXc1BLvrseN1hlRGTrfb96eJAgHE3tZHEz4\nIkbdaEQtVfRleap0UWGzoLmfsM+np1UQ171QrtXcYJmk6SzW7GSytJHYNpSP\nKOOqNkYd/iPzZJ1msDSszLEGA8T247tNfBfjFM7kR/CYLsrC3/I2swD0pR9J\nj6rX3luiPjZedfBEdI0RKi3Tx8ItfzKlxQS/x/a9/jDH5sR/VcSFrFephnaT\n9/rG\r\n=6Eh6\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"ee9a0071eec93695362f0c3dc4b160e024ef4a09","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.3","@sewing-kit/plugin-jest":"^0.1.9","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.4","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.9","@sewing-kit/plugin-webpack":"^0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.9_1593224841217_0.35930837143793837","host":"s3://npm-registry-packages"}},"0.1.10":{"name":"@sewing-kit/plugin-css","version":"0.1.10","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.10","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"f17a300a269ffce47196c4c44beee9d906f97410","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.10.tgz","fileCount":54,"integrity":"sha512-kAqLg2lBZ8pB2vvjuXPm8aivHA9uj1CRZkQSCz0aKvWnoa1e+uibHxGQvf8kHRVoVEHir/IC7wbwIVjvTxk7sQ==","signatures":[{"sig":"MEYCIQD2cdKJiToAVA+szUf8FEtnxJh+wdzCp7innFqcFzpAmgIhALq8CgG82ustQToewM/usdGah3luKNh33Ysq0LgB0WOh","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861029,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9rC3CRA9TVsSAnZWagAA73QP/R6AJrkylISbgYIlkkGQ\nZDT8ZONqZE8btRMdEAYaHN6KWzhpGriOEtzIBCRSGw7TLYIsKK59GxBzFSIz\nnpgArvZ7vST8F4qT2E84J8O10K38Da4X2WeOILZFYSmZ4ezmbRu69MyN/aAo\no8c2yukUAaOEgFTKB4Dhm4qp/D3ecEuOL97kmQ1YEzOpYWNYPFrTtrk5qGNh\nEMV58CcRz1KxrzD8fvwkmyuKPH9lwa5O54OC1is1x+3MI8EkREaM/PuZl8Yr\nr6ATB7Pj40o4mpoc9dD3MQyvcZnTCp8Ip3eDbBo1VlEYf6nxDa++YMQSnbfG\neLrWWEDLPpj8zBLJJPTewtcXFDPkcZkAazlYRP1HT0mB0RVo3NFga9YINe7f\nQeKtRa+lg9HTJkIx6z4malUHC95Ypze4CDi1ZdzfVCvNjZo2neMBSDOQEwjw\nMYgIjyCMwV5v3Ud/S9u69hBerZ6++n6MmaECDHFjvaAx6+vGQqDnPT2PmCl3\n1fjKZDnqDQ5nFpykOkmXFbAqoRzZjcIIC8a328KT4Y8ohet7fZXYl0hk9tjG\nbP5zeLjhlEuyCKTBrWm4DpymM97txzQxI6Niz1nGl84YAKaoTLQr3KKvyiwF\n5HULYJ5XklgNDcZ5f9PtTGza7qfT0rwlgfzM7Kn1aw51m+HddDpo2dFNzz16\nLxDe\r\n=gQO5\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"57ec1c03c770a3afa17cd7e3885e862cd8aba22a","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.10","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.5","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.10","@sewing-kit/plugin-webpack":"^0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.10_1593225398555_0.8578525126640066","host":"s3://npm-registry-packages"}},"0.1.11":{"name":"@sewing-kit/plugin-css","version":"0.1.11","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.11","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"1a3310cfffe6c2e83f3376c5f81524915c582655","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.11.tgz","fileCount":54,"integrity":"sha512-0he4P5A+zM0VmDTtQB1nk/k5L+kDWFJGps73G9iQ3WvAe+BdpukUOFTG614orS2txWAA6mcQFwlmrozUAxajAQ==","signatures":[{"sig":"MEQCICbCNO5pMwcdorv/8Do/TjPpMpnt7w8QtwTpWeObRgECAiB/bdEZiT8qIZSvmTE1ypqknMGyutbjIRwOaXUdZa05ew==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9r6iCRA9TVsSAnZWagAAUDwP/0bVegkIu0/l4MJ7dwMu\nkfaTi7UXbzVUtMjhqQRSgMwguJwXgGoFGvVsmob+8Ot0H3MtzWWbtOnRvqkD\n1U8gnm4wDe4vMA4URgygtHC9j1yB2ssXlxryC5IKbsKFtugKeQooPxFt12N/\nD+l3yRJE7W0d8poEjOCUWkaVRRcAKmRTpAfDR9A/3C5MryNKt2C6HntJyT6F\nnL5V9EYaFyxalMeQFW2s3yXlk2tctO/3vl1Cb2J8oD/pjqVZmP/KrXoGHFJn\n0EFhM6ZqUBN8rGY8rOx7SULev9601x3JWLd5U8gdZgtJCp7UscQ9ksvv0hOr\nqgnjIQrhSg44lyIqfMART6AkR5v86toQYGCwdz+IBTYLw1xDWJsWCb46rPCV\nI8xyQ6u5S5jPKdu+B07Xw6KR3qOnk/QHO7WsL2zmmLxMEy2/O/eCg2Vm1eKh\nYVYn6Ub95iTgIFLungvkWQGkyZhLn2Y0Ln8//9kr4eXxElM5Qa191t0QXZfm\nnrsK2vqBJDJhv7LmxPRhvrwjQil4V+VZqbTboiS3dUEnOcsNSwtE+H4G8/ZT\ny9NAV5z64HlvlZ+FbiWPCVE1rhb4iviXMb+Ea7m7nrnnZciFtrd4KZmeHvgV\nc6lou/qzknGLfvg+CIEfU3fsbCgoc4DTUDNEhceJA35s+Xx6vZtDnx+3h87F\nU8FZ\r\n=X+Ix\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"1b1e80ba2659ff327484c5ff8aca16f0d18bea17","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.11","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.6","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.11","@sewing-kit/plugin-webpack":"^0.1.6"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.11_1593228962129_0.7525458247678214","host":"s3://npm-registry-packages"}},"0.1.12":{"name":"@sewing-kit/plugin-css","version":"0.1.12","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.12","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"da0dafeb06e0e4fc9311ce58f07eab7f8b19a825","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.12.tgz","fileCount":54,"integrity":"sha512-yASjckXYtjphS7RF3V8yTL65/MlSr5W4yIhT4Br7cPKkI1PIStJRdzL4d1XpGBp0GifGJTq5aXGtaEa7/IKweQ==","signatures":[{"sig":"MEYCIQDy1uAqGpqoDAMtM8gY6i4jAiMLbM9R9slWIfyfNdQCIwIhAKsM7tUcOcvDjxZ+CewMPMWvvJNMS0yadGL/E9bMDdoI","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe94M8CRA9TVsSAnZWagAA9jEP/1r9EOiCNmzo8/TYlCDW\nBy09DAHHF1vKe9mg2Hd6orUm8pJYRBj8XWwKKMpdnbCOZBzKRHZkBxooeClA\nEypik+b+Bhqoo4uLipP+Hl/77yAIS2PB+D+5TK1fenSu89Kd+aO0k7HmRMOU\nknr2fyCFj+1RAckV9zEV1WaM3PzF8LpxbQlEpp7jgjso4FB669kWg9TAPdYV\nfprf6hJH30wvlYIo04jx/m781qhyMq4rFnc/HhVS+JLIYqi7XDaJ+G5oG1PZ\nMexOT9ggNtEIu1pq6Bxoge8lti6h3okRafYGE/qFX1aJJXWHKuRGVV0gjnXR\njP++jiasd+pqP4GlyMv7+UcA2Ug5XzWHujAg+3Ephgt+lESTP51iiFwxrTvr\nRoVQ7GJFafNa7WG8pd3xJ+l8MXkTSJjDUgpPn9gq/Bq/6kNHpJ4pRp3wazA0\njbLkO4DgJFnSdPKYysKu+2+UpXjD2R7Bh3kajCXLzGPbHihnRned4zKDyyhK\nwcov+mN+bgzXpsdaP9WtWc2Gf//a85HqUeXA/HoMQMqGkJ4K3yBS2lqbZlTk\nsRrg5MYpTxWYMay7KabBkPUtFbcI7Zv0Qiw8otRloEGmAO91q9Rqpbp11ZaA\npf602DQiR34bs42gCrgT5VH2joxPiklGq0ZTrUVH4d2hFWN1O/jyh8hTRQZH\nrRtO\r\n=j6Z1\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"d434b82a888bf9b78d2dc3afd5c3d0b8e021da8a","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.12","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.6","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.12","@sewing-kit/plugin-webpack":"^0.1.6"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.12_1593279291598_0.932061076150692","host":"s3://npm-registry-packages"}},"0.1.13":{"name":"@sewing-kit/plugin-css","version":"0.1.13","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.13","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"ce3f70daccfe2d34fbbd45c5d75e683a22f90e34","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.13.tgz","fileCount":54,"integrity":"sha512-ElNZqN+JyFFoEPzAS+uav2sAE35fDN8fnasT63+5hkYt3IM4aVce4RQcMp7DdIzJU19kPJ9z9cPcZ1YwYeuBFQ==","signatures":[{"sig":"MEQCIG4FB8jkc+9Mrjo3fVNLF82CCMbEtiRqC1IfHxLFmXoGAiAn/oJ7XHLAFWWsIHO+2/EPaGfoW6ZI7Dx+nom5CdoenQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":860922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9/RYCRA9TVsSAnZWagAAsXoP/2rASiSAyBJ6tzPONlFa\nB0ZrlKJGA2boU/ZU5NapnlBKzX5Lcyt3qZTxyGzBeTAmATBvedgczNoOA8xi\nFwy5KIH796bCazs8Otd4ZlDfRrJsyhppVJ+qsDUCfbdn/zuHiBmTXbQBcFg0\nxIpW/wJ2EYLuHHfH3HrIXjDZ+WvNHWDUBdlK5jo3xt2dMOMPYZv+BkazUz5j\nNWzNFHkV1SX+wfRgaXRHwjJ2B/gZI+0/DXM1o9nrvIzf/vrGYOIfxlNJHWJ/\nkmOPYgSDIpWnKoot0dspnHs5tqTz4c7qwbrVTeJSRvYcVC8HAJBrdfOaav7G\noL00sAb1lh34BIgY+FrGdDtDReePfnBnx5bEOZdcPEGdARC6z+5/zgPVZzU0\n0u9w7CliAl4KgM275zAKmQaNUmIq8yv71s5+00ugQPI9ry14CWzkB4Yv0JfD\nU6SyoCgmCFI8yIoFfgdyphAn/lg99YIsYeDBK75I5MSDnB4ub9A3wVgFJT95\nyLKwZhF2+qYJoHGpH+b1FVJXj8Tz2gnrVOZs1rjyji/RfnfC5DwjhHrSEHMu\n9gJYcB934DBqUdxSG4RP9viSjdEjT/Yjhm7d0O7K6Fy5nCbTeDCjqao1/rjO\nZOo6xtW2fBNZM8UaosUsNjkhxEq88wWCtfTGbmEq+oOWlsMTNlho/PhV9l/0\nbbld\r\n=JPy2\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"887b17ed4518f8491f5521c2177481451e9a53bd","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.13","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.13","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.13_1593308247844_0.31664528743263287","host":"s3://npm-registry-packages"}},"0.1.14":{"name":"@sewing-kit/plugin-css","version":"0.1.14","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.14","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"60e7f359510cd8fecea3955c4976e872cc6907f4","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.14.tgz","fileCount":54,"integrity":"sha512-+kUpWkyy1Vv4KzV+UnHHp0B9czKWsJ90v52cByZRQCJyDznqEuUy49szf8JolXUjVIbQQRSOPOwdhqTC1Z59og==","signatures":[{"sig":"MEYCIQDEBtXd9QxfHQG4r+ANnWpbt351cNEKH8CilB8zjzCsiQIhAJsWtdxIIRaGDEvx8ObQsyO6CPdwNEpXBvOfvxOUzu9z","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":860922,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9/sNCRA9TVsSAnZWagAA4SoQAIHWu+tY8u8ziqn3S3jN\nm2AZ0fW2rLp8BQMdNoNX+7jCtXJYCJo+Edy5kA66dtryUgzR6pZSNo8lG5YU\naWz4SahoIfxsac5s2//MQh4nSBNE3jmln8BH9f13NvU2vMHpr2vMBCzRKmcT\nOhgKeXyeSqvGjS1XZrJ7oxo0aGdifSBfN6x7TokKRQ/M68DtZ8U+BAsjPga7\ne4T1NqGLRf44LopJ5v4f1WguV5MJRTztOrYE69uVb7Wj1neKBBCoCdxXovbn\nNAm1eM1yA6k4H/eAz1HuDEls945kxYekSi+L4eP5t+vQM7bO7FTjTIOkGPRJ\ncpbmsaFKdNZpyXOo1rkWYJnUEW7xQID3oZZFxZoeJK8Sz0iVMc/f9NpCFvEZ\nd4eBOeWsuDiUmuwHgaxbb/8cneu4JqlrT1LR1WjQtDdzuCrBbGcpF1O86bDr\nBJ2O5x72gp9I7DEPYrc9q4WvvsnZK2YrHZVPR/ffRHohHpzRQ/jjvqbCZIzi\nJ2Sa2ud5WLt81HASHOBNSLLmgIT8HZYy5y9SQhxPEVZvlNOynGA9LxU4X10I\n+xEOH9YHHJNrUEp9UVHsfozo8uEZzFoCVh13u4izbj207PQ9288xwXNwBNSJ\noKzAzsHnDfmuJjp5oBkLMqRTKGJedXgpLWIvKtqLrXovqGzQuUA9sbessBML\nRsvc\r\n=YOR9\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"8f7b49308b16584482fd1146500fb07701270c61","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.14","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.14","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.14_1593309964812_0.15301481239329728","host":"s3://npm-registry-packages"}},"0.1.15":{"name":"@sewing-kit/plugin-css","version":"0.1.15","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.15","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"6a6ee4dd0ff1f6698daebd170858f228b311cdf4","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.15.tgz","fileCount":54,"integrity":"sha512-oEV7LDzgHRhB2D9ejlL1YRO5sLmOsx1/8NKxCpYk/D38Ho5jXR3lQK0hRP1M13578dZ3cAAiO00yW05Tw5bPaQ==","signatures":[{"sig":"MEUCIGDkfdPIBT4rilQJpmYvnfUqRdPo3f5pv8QiD863uy/BAiEA5XtXMR5u/Z3eT8ngRaBkd3SPpzIy2rHL7zzZrNGUcZI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe9//yCRA9TVsSAnZWagAAJJQP/3gVaqw9sIDvmd6ho67f\n+8QD96TeJfEjDhakB41qKilYYw8lAgqVyQ6uOdfR1LWSX/7LlI481A2Ar5Z8\n6NHT1Lp+sJGmLfU+s8mvah3Z8KxdHEeCQ1AqVGvs3qEW1c05OHIE5wuJQREE\nNiLH5qU9cipB4piiYZfVgDfTToJA6I3czgQhsmwnBuKBdwQYqVvH+5O0kh72\nvbMOSP4RnPOFfuE51yvSJff59/Na0dLSMBF83iVae6rkZYYHlBtTA8D0CGEa\nRY8KC/ODeCjgtZdfV+9oGwELKLIp9rI7YDmK51LM4kOJCS0jJarTAmRouJ1B\nY9OmZdRkpzmGXIUfftL66E//+yJAfAdJMQEG+MElUu7Gdk78TdS0H2py3458\nZR8QCbIW9GNKhPi4flOsGw/mvcHVTrg9W3yJBmGozPYjf+4GiPT8AhtSeaA9\nXbHVTNKmFpj1dhTXPy1RY6A7xSavm/Li4hWshHsIY6Lmxtdm07yXpiAbYcuV\ngxbzcCTV2xFPFxCukerwYYBSvz726hznqQrJLqiStoxbmLZKrqkjoX9rtvDH\nh6wAL9NcYK5NpiCFxdfAebKvOP36YS+SMZ360ozWdubEgLjt0RbxKpwjBqOi\nBqXY+4lwBjG5lddBC3I5DbNKluMXk0kja0mxYcAzXqFcGQ4HqU3TTUx6EgnG\nbVof\r\n=xG3Z\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"59bab246edab4a21facaf81db83e7c89c4ae9b22","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.15","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.15","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.15_1593311218057_0.8070355774472149","host":"s3://npm-registry-packages"}},"0.1.16":{"name":"@sewing-kit/plugin-css","version":"0.1.16","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.16","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"1c0ce089b638dc66f8d50c36c4194ed29df30dec","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.16.tgz","fileCount":54,"integrity":"sha512-XI3tNgWvQeYMD0TgsEQdsYbrCG2a1sX7O2Vbxpuja2BHJSb7xLfZ4xbXkeXD1EFpHgOAQ/s3kZMsoUwer+XL9w==","signatures":[{"sig":"MEQCID4toNKZ/AsbBYqHX4ue/Wu1kGn7o04XIlZyOYCdhI3eAiACdixgMoEC6AEa51FXGNba57S254qyiVTVWVMu6DoZkw==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+AS/CRA9TVsSAnZWagAAW8cP/1+xigxQOLCSqFIP5YDj\nbhpzFmB8HozcFZTARrryqAs1Nm4LUwhT22rqvyFqvTjjsutA/dy89j+Z53hl\nI1lYMDqP8C9kDW4KT/+m/CICNOkEZeaOPhm7v9loBtOSu4SFdA6YCjA71+e1\njxm+3km9/UuhiqKaEbfnCIvTTUpYbU1JEGe2YhWstRryJeMoviNksQ87/1mO\n9q5xe4iFjxgyrwPayE7w0NjMpXjvUmsMn77GanxgUa/oN3wljkv6EG/V/50v\nxz5KCF6Tpu/SxNxaT5GQKXpyrsyyDltOY8N1a4zbX/++6zpK8kgRtoyQEsjQ\n1Ky+ye07MQ7YExVmu2b0OgiSrarQOJUQz/r9s1CvVWV6w38yo6TwkLtFl+Oq\nr/6iyKIQVvLV9mnzWgLuCDY8g0Lqu/T5I6m7Nyk8IpFo+NfjP69IMePMwS0+\nvr0ELqg6QYmpc5BA+pZues1o4Okcy8GLsDB6aUhndaQl1GtzRBESP8Ab+miH\nvTtCQn1lcyBNRc8lTMdFMLlOKmLOfPB00R7Nq2mqx65Vvb96Lmajq902J0ov\nsKsU55foot2D1k/fjiZvfsdqLy6tbMQrCFguESU2lTWB+5RJqW4IlgCoehZs\nSID2jTTCASPiv4HcpJbG41+ZxV1hY/23LeirA9qW+KkMOtbBXk3ts8OOPdnn\n1IIx\r\n=sSFl\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"c8d221e938ded282163990b8d327f687505f07e6","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.16","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.16","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.16_1593312446494_0.21631854415647633","host":"s3://npm-registry-packages"}},"0.1.17":{"name":"@sewing-kit/plugin-css","version":"0.1.17","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.17","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"8689b3f382ec0c99ac39ae24e08bfc0e210a9611","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.17.tgz","fileCount":54,"integrity":"sha512-brPnwQyxW5zPR8fe/W2shgRpoexjtU9xb7uRppPBGQYDtDvo9Mx0S+Yv9uBuWPTpnW+0Ype8lCr/oqg70H1+gw==","signatures":[{"sig":"MEYCIQCol+jthaQA51nOPpnU9TM0JUb2q6ssCtBxSqzlmz/esAIhAMkESiYi4iS9YlzIQf3RANNS7NMdeZhnt/315uB9vqlD","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861005,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJe+AqnCRA9TVsSAnZWagAA2CMQAJNRIeojvRiGUqn3Cd52\n7eVJm1OVNTVjbVAVqPwSl69D+mfM3JXH5VPNj2OqgP+VPvjcErO2yEgtU6ae\n+Imz8mGXStAO7T9FY0tNgvk4PoxNq1gELG+Da2roiJjumsYqbfFiTwO3ok9K\n2wuFRi52m4gysrEkLbpPQIjbDH9ECdKp/bHg/k85wgyC5G5b5Uc2H/qnpKcl\nDdzReRbA4dP45VPsWCCGpDwbsAop3qcA6FrHXpfTtsgP50wYhpbmPAwudASp\nrRKFrjcEXv5kK7AkB6ydWJi2WH4Wwhij9DcmLCzZpF6ELG5e1nhHhD3JNtHi\nJPF3mSFB7gydnfJn2mD4ibR56DILpSFne1nQssamwu4mgAE1GjoTi1YBjPD5\n47ZsTKJLBB7q+bdov776ziRGgh83Zs1TauunSemFE1OizYSYjJlhZKGLZUjC\nInFQP0EfxwznrE1MNIJQkxZsW2RChNOvpKJGS35FkcgsRQf/xZtEmbnjNnyC\nQCHS4+4A1Jyzwev3Flhz7UmB4zDArC61akZl0Inpt4wLYEE5+Vp0gJkszhja\n2dyN17qsXYhfnoNLy20ybrFsMaFcjKnKQUgjF4R412czlVefuSEnBhR0k9Io\nczhOJ7lD7TGgp6/gh442ak/Wt9ekt+K8SVbkU1nBiSzlkQ2QKjAbmVlG7+fx\nsg7t\r\n=ZZRw\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"eee947d51a26c7c3638fa3201119228cc0db7cf2","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.17","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.17","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.17_1593313958550_0.8396473610886963","host":"s3://npm-registry-packages"}},"0.1.18":{"name":"@sewing-kit/plugin-css","version":"0.1.18","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.18","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"82314ca577f06b6dad76d3c5b9ba5a72d75d337e","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.18.tgz","fileCount":54,"integrity":"sha512-T67X/UnvafVhD2N9KbumxT3VNIg6nyWqTXmNI0ZBri7R8iFJLbJ0hiv2kseu8nQ1qXIxG3eaU/sa/MSPL7Hbbg==","signatures":[{"sig":"MEUCIHfy9CbTX71tyn4Z7I4mWbGACfGTBNJaP62KuRGtq+OJAiEA+ejLwxK5jxvjJFpQ7+qOR0bMCrR+c5HByN3GZBU16d0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":861207,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfGPKOCRA9TVsSAnZWagAAPRYP/2Or1F6ne0RGZQSAm0aS\nIIRIqCkRQ0AJTH4jXMQPJLMvSdGt9DA1oJe7TalAWBnDaaie4jp8/ygojTou\ni0BZsrNCLKVqRAaMf5yLR/rWeBL6EoFoUvpWSJBq6Cmo7MeM3B+n6Bq6Hr1l\n1WqZ8DNL+5lR8Vmg1JJ4rOLdcp08tNHXswQ+tuhxzXYnjYqKt+6uXTpImJoG\nZoYKBMdouSitBqXjRaB5XouisziN2AaD8cUCPHY5jycBxSCY/MiZ2By1OmgI\nujEsLM9sRv7nXChEsXFyQ3ybSav0IDUnzN1ydQC+93XQ/NI6m+8Go3mv1f09\nyIrklAaYin7uAY2H7btlNU2njCys14dQNPUFNvyVc5WOpCib6cGVCklsfMY+\nB4Cvzhz4TF684ub3EQ+F1hDIq5cBjZu2nRQswIyKidZNHFzYHU2NHR+6FT7E\n2+Ls7WID3X9OIVZ/Ks8LC8d3qiLtO+kikuUI3Wvc19gQLz0S6X7mtSnSZ1cc\nXjQbUPp+ZIaHwzHPRYM7INnhSyWYzzf0DZ1IJ/0zrDGmwOHSM9Xthw3rXaPW\nHXrNsMJ+xqvhrO2KAW311O7SjmzZ+Ip4OmJLLfwag/ab+U4vdi5zqdVShe+C\nrHNxW0iT0QtWpxJr4adujyCltoR6OBhddRxMwPT0kCMht4MCpt6gNd3yjX5Y\nomXU\r\n=aO1q\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"140c9efc7aa86178d6cfd532e0d744f66d7bb66f","_npmUser":{"name":"lemonmade","email":"chrismsauve@gmail.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.14.0+x64 (darwin)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.14.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.18","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.18","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.18_1595470477582_0.7591821857441938","host":"s3://npm-registry-packages"}},"0.1.19-alpha.0":{"name":"@sewing-kit/plugin-css","version":"0.1.19-alpha.0","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.19-alpha.0","maintainers":[{"name":"ismail.syed","email":"ismail.syed@shopify.com"},{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"}],"dist":{"shasum":"14835e798c909c4f942152d5f869313700ca6693","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.19-alpha.0.tgz","fileCount":45,"integrity":"sha512-67zmngzmDp4MmHWO8IV2Qt4NIQ0LBnl3uAFKYD2muIJks6yVREF2krFt+wFsi17rU85eeTXhv1Cfa1VI6wGdiA==","signatures":[{"sig":"MEYCIQC8W8klOuDJ8j+PD5Jpd7m5rz+7iGohq7dVexI4yGQMYgIhAOYsO0DI+P+f8n/hPP0NNsXE22W8M5j5BwpHaEfJPg3X","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":384556,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRZ9HCRA9TVsSAnZWagAAyJIP+gJ8tDHdQKrWdCgwppLi\n1u1aR52EfSuwO07i6w3kru7g75r8PdZkMVSxNr1t1FjnH6h1f3+VRHKt2iB+\n2NpYmD/q5ElycmfOMxajWg40G0VULtFN48V2G6XQ5EdxiJJF7rNIYsUD+yC4\nKNl4oLHSoffT00bfrxnXSbLQU7uweJt48szyzs0fthPKu9hzwI55OmWWBkpN\n9+i83F4n17PjH9O173sdFhOobFriyDtHZLBe6YXWdl1ZOfGZ5PPL675q7Aq0\nxhCKDThXFWMia8pVaGeYzjLfgUtuvtpH4hXskqczJrS9J/cG7bo1RtU71Pis\nEHRaMZzeDZXDjvuHAbsw8t0AunsVqZfHfhG+QbUT1oTmqvf7LhEtGiei40eR\nZdrPjund46MWX/BbI4XhcaAbzO0UYna01NluYycX0lqZF0Ijx3bENMYwu/Mz\nfspc1N4y6ijqooq4qwmvHd4CAf4XJNoyxXraFV1+iG2SvOKuiDfebAsCgQhK\nEvmWC/naXU+AxXpJ3hBiDZS/H17Athj4m3dyeRM1DJWhv+bJqi3ps7Do8ls9\nG4jGNX4NmUi9YPXNtEYK6bvmCeokmDHRD7LFRIOODESvCwBxaHkp/u8et3Hb\n+TI8ZO/UsPKSKlCfZH7C/48RxsI3/gjlo0+qzpphOTH7A4Xf6BNArVQDozXa\nKVLA\r\n=yGSC\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# `@sewing-kit/plugin-css`\n\n> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.\n\nThis package provides a collection of `sewing-kit` plugins and other utilities for using CSS. It is build with an emphasis on producing highly-cacheable CSS files in production, and defaults to using [CSS modules](https://github.com/css-modules/css-modules) to avoid CSS naming conflicts. It includes built-in support for using CSS in Webpack and Jest, and for processing CSS using PostCSS.\n\n## Installation\n\n```\nyarn add @sewing-kit/plugin-css --dev\n```\n\n## Plugins\n\n### `css()`\n\nThe `css` function returns a `sewing-kit` plugin. This plugin applies to a single web app or service (packages are not currently supported).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css());\n});\n```\n\nThis plugin will automatically configure a number of tools to handle CSS files imported in your application, including Webpack and Jest. It also adds a number of custom hooks for fine grained control over the configurations used.\n\n#### Webpack\n\nIf `@sewing-kit/plugin-webpack`’s `webpackHooks` plugin is included for this project, this plugin will use it to configure Webpack to support importing `.css` files. The nature of this support depends on the project and environment in which `webpack` is run:\n\n- In any build targeting node, CSS is extracted using the [`onlyLocals` option of `css-loader`](https://github.com/webpack-contrib/css-loader#onlylocals), which extracts mappings for [CSS modules](https://github.com/webpack-contrib/css-loader#modules) but otherwise discards the CSS file.\n- In a build targeting web in a development-like environment, CSS is extracted using `css-loader` and [`style-loader`](https://github.com/webpack-contrib/style-loader). Classes are extracted using [CSS modules](https://github.com/webpack-contrib/css-loader#modules) with a default identifier that should globally scope the final names of the resulting classes. Note that this can result in a flash of unstyled content during development if you do server-side rendering, as styles do not load until the JavaScript for the app has executed.\n- In a build targeting web in a production-like environment, CSS is extracted using `css-loader` and [`mini-css-extract-plugin`](https://github.com/webpack-contrib/mini-css-extract-plugin). This extracts CSS into dedicated files that will be split along the same boundaries as the JavaScript in your application.\n\nFor projects targeting the web, this plugin also adds a customized CSS minifier to Webpack that prevents some potentially dangerous optimizations that are otherwise done by default.\n\nYou can fine-tune many parts of the above configuration using the [`cssWebpackFileName`, `cssWebpackMiniExtractOptions`, `cssModuleClassNamePattern`, `cssWebpackLoaderOptions`, `cssWebpackLoaderModule`, `cssWebpackOptimizeOptions`, and `cssWebpackCacheDependencies` hooks provided by this plugin](#hooks). If you need to generate a Webpack rule for other CSS-like languages that require preprocessing, like Sass, you can use the [`createCSSWebpackRuleSet` utility provided by this plugin](#createCSSWebpackRuleSet).\n\nRegardless of the environment or project, this plugin will also configure [`postcss-loader`](https://github.com/postcss/postcss-loader) to run on `.css` files, and will include a default plugin based on [`postcss-preset-env`](https://preset-env.cssdb.org). If you want to provide custom configuration, you can do so with PostCSS config files as you normally would. You can also customize the `postcss-loader` configuration directly with the [`postcssPlugins`, `cssCustomValues`, `postcssEnvFeatures`, `postcssEnvPreserve`, `postcssEnvImportFrom`, `postcssEnvStage`, `cssWebpackPostcssLoaderOptions`, and `cssWebpackPostcssLoaderContext`](#hooks) hooks added by this plugin.\n\n#### Jest\n\nIf `@sewing-kit/plugin-jest`’s `jestHooks` plugin is also included for the project, this plugin will use it to configure Jest to treat CSS files as \"identity\" modules — a module where any imported value will be equal to the name of that import as a string. For example, when you write `import styles from './style.css';`, `styles.MyKlass` would be equal to `\"MyKlass\"`. This behavior is generally sufficient for unit tests, where CSS is not typically tested directly anyways.\n\nIf you want to add additional extensions to treat as stylesheets, you can customize the `cssModuleIdentityProxyExtensions` hook provided by this plugin.\n\n#### Options\n\nThe `css()` plugin accepts the following options:\n\n- `cssModules: boolean` (default: `true`). Determines whether this plugin will configure tools to treat imports of CSS files as CSS modules. Setting `cssModules: false` disables the `modules` option on `css-loader` for webpack builds.\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    app.use(css({cssModules: false}));\n  });\n  ```\n\n- `postcss: boolean | {[key: string]: object | boolean}` (default: `true`). Determines whether this plugin will use PostCSS when building this project. Defaults to `true`. If `true`, this plugin will include a default PostCSS plugin based on `postcss-preset-env` to compile your application’s CSS. If an object is passed instead of a boolean, that object should be a mapping of PostCSS plugin name to options, and will be used as the default set of PostCSS transformations to use. Additional plugins can be added with the [`postcssPlugins` hook](#hooks) or the [`postcssPlugins()` sewing-kit plugin](#postcssplugins).\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    // disables postcss processing entirely\n    app.use(css({postcss: false}));\n\n    // alternatively, this enables postcss, and uses this plugin/ options\n    // mapping for configuring PostCSS. Make sure you have any PostCSS\n    // dependencies you declare here installed in your project.\n    app.use(\n      css({\n        postcss: {\n          'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n          'my-company-postcss-plugin': true,\n        },\n      }),\n    );\n  });\n  ```\n\n- `id: string` (default: `'css'`). Used as a unique identifier for some configuration. Don’t change this unless you know what you’re doing.\n\n#### Hooks\n\nThis plugin adds the following hooks to `TestProjectConfigurationHooks`:\n\n- `cssModuleIdentityProxyExtensions`: an array of file extensions to treat as CSS files during tests. As documented below, this plugin will use the result of running this hook to map CSS files to a suitable \"noop\" module during tests, if you also include `@sewing-kit/plugin-jest`’s `jestHooks()` plugin.\n\n  ```tsx\n  import {createWebAppTestPlugin} from '@sewing-kit/config';\n\n  const plugin = createWebAppTestPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // In addition to the default .css, also provide a mock module for .scss\n      // files.\n      configure.cssModuleIdentityProxyExtensions!.hook((extensions) => [\n        ...extensions,\n        '.scss',\n      ]);\n    });\n  });\n  ```\n\nThis plugin adds the following hooks to `BuildProjectConfigurationHooks` and `DevProjectConfigurationHooks`:\n\n- `cssCustomValues`: an array of sources to import custom media from for the default PostCSS plugin. These values will be used by some CSS transformations to provide values in place of custom properties, which are not understood by older browsers. These sources are passed directly to PostCSS’s [`importFrom` option](https://github.com/csstools/postcss-preset-env#importfrom), and so can be a path to a CSS, JavaScript, or JSON file, or an object with `customMedia`, `customProperties`, `customSelectors`, or `environmentVariables` properties.\n\n  ```tsx\n  import * as path from 'path';\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssCustomValues!.hook((values) => [\n        ...values,\n        path.resolve('static/custom-properties.json'),\n      ]);\n    });\n  });\n  ```\n\n- `cssWebpackFileName`: the file name pattern to use when generating static CSS files. Defaults to a format that is optimized for immutably cached assets.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackFileName!.hook(() => 'static.css');\n    });\n  });\n  ```\n\n- `cssWebpackMiniExtractOptions`: options to use when constructing an instance of [`mini-css-extract-plugin`’s `MiniCssExtractPlugin`](https://github.com/webpack-contrib/mini-css-extract-plugin).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackMiniExtractOptions!.hook((options) => ({\n        ...options,\n        publicPath: '/custom/public/path/for/css',\n      }));\n    });\n  });\n  ```\n\n- `cssModuleClassNamePattern`: the pattern to use when generating CSS modules from imported CSS files. Defaults to a name that contains some hints to the original location in development, and otherwise to a short, randomly-generated hash.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // Prefix all CSS modules with \"x-\"\n      configure.cssModuleClassNamePattern!.hook(() => 'x-[hash:base64:5]');\n    });\n  });\n  ```\n\n- `cssWebpackLoaderModule`: the value to use for the [`modules` option in `css-loader`](https://github.com/webpack-contrib/css-loader#modules). By default, this plugin uses CSS modules with a configuration inferred from the `cssModuleClassNamePattern` and details about the project. You can either customize the options in this hook, or return `false` to disable CSS modules entirely.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderModule!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackLoaderOptions`: the options to use for `css-loader`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderOptions!.hook((options) => ({\n        ...options,\n        localsConvention: 'dashesOnly',\n      }));\n    });\n  });\n  ```\n\n- `postcssPlugins`: a mapping of PostCSS plugin package name to options, or to `true` if no custom options are required. If you do not specify any custom options, this plugin will tell PostCSS to follow its [default configuration lookup technique](https://github.com/postcss/postcss-loader#config-cascade) to determine the plugins to use on a given stylesheet. However, using this hook to declare your PostCSS configuration will automatically register the plugins you use as part of various cache keys, and will allow for easier custom configuration per build. The result of mapping the entries in this object to construct the plugin will be used for [`postcss-loader`’s `plugins` option](https://github.com/postcss/postcss-loader#plugins).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssPlugins!.hook(() => ({\n        // This object will be passed to the plugin:\n        //   require('postcss-preset-env')({stage: 3, autoprefixer: {grid: true}})\n        'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n        // We pass it an option *not* to minify, as this sewing-kit plugin will configure minification\n        // as part of Webpack instead.\n        'postcss-plugin-my-company': {minify: false},\n        // `true` is equivalent to an empty object.\n        'postcss-custom-plugin': true,\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvFeatures`: an object mapping the [allowed PostCSS transforms](https://github.com/csstools/postcss-preset-env#features) to its associated options, or to a boolean indicating that the transform should be disabled. This mapping is used to create the `features` option for the default PostCSS plugin; it does not have an effect if you do not use this default (for instance, because you passed a custom set of plugins as the `preset` option to `css()`).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvFeatures!.hook((features) => ({\n        ...features,\n        // Customize the handling of the focus pseudo class transpile behavior\n        'focus-visible-pseudo-class': false,\n        'focus-within-pseudo-class': {replaceWith: ['[focus-inside]']},\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvPreserve`: a boolean indicating whether the default PostCSS preset should preserve the modern syntax in the compiled asset where possible. Defaults to `true`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvPreserve!.hook(() => false);\n    });\n  });\n  ```\n\n- `postcssEnvStage`: determines the standardization stage of CSS features that will be transpiled. This is passed directly as the [`stage` option in `postcss-preset-env`](https://github.com/csstools/postcss-preset-env#stage). Defaults to `2`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvStage!.hook(() => 0);\n    });\n  });\n  ```\n\n- `postcssEnvGrid`: controls how CSS grid will be handled in builds that target older browsers. This option is passed directly to [`autoprefixer`’s `grid` option](https://github.com/postcss/autoprefixer#options). Defaults to `'autoplace'`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvGrid!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderContext`: the context to use for [`postcss-loader`’s configuration](https://github.com/postcss/postcss-loader#context-ctx). This allows you to pass details from the build to your PostCSS configuration. This is generally used instead of `postcssPlugins` if at all, as that hook allows you to directly set options for plugins without needing to rely on this additional context mechanism.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackPostcssLoaderContext!.hook(() => ({\n        // Here, we pass a custom bit of context that will be available to our plugin\n        // (declared in `postcss.config.js`).\n        'postcss-plugin-my-company': {minify: false},\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderOptions`: the options to use for `postcss-loader`. If you have no dedicated PostCSS config file, this hook allows you to specify [`plugins`](https://github.com/postcss/postcss-loader#plugins) directly (and `ident`, if you use function-based configuration).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // use preset-env in postcss\n      configure.cssWebpackPostcssLoaderOptions!.hook((options) => ({\n        ...options,\n        parser: 'sugarss',\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackOptimizeOptions`: the options to use for [`optimize-css-assets-webpack-plugin`](https://github.com/NMFR/optimize-css-assets-webpack-plugin), which is used for production minification of CSS when building with Webpack.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackOptimizeOptions!.hook((options) => ({\n        ...options,\n        cssProcessorPluginOptions: {\n          preset: ['advanced', {discardComments: {removeAll: true}}],\n        },\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackCacheDependencies`: a list of NPM packages to include when generating cache identifiers for CSS builds. You should include any PostCSS plugins you use in this list, as well as any packages you use for preprocessing, like `node-sass` (note that, if you use `@sewing-kit/plugin-sass`, this is done automatically for you).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackCacheDependencies!.hook((dependencies) => [\n        ...dependencies,\n        'postcss-plugin-my-company',\n      ]);\n    });\n  });\n  ```\n\n### `cssCustomValues()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a file or object providing custom values to use for older browsers, as documented for the `cssCustomValues` hook above. You can pass this plugin one such source, an array of sources, or a function that returns sources. This function can also be asynchronous, which can be useful if you need to read whether a particular source is on disk.\n\n```ts\nimport * as path from 'path';\nimport * as fs from 'fs-extra';\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssCustomValues} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssCustomValues(path.resolve('styles/styles.css')),\n    cssCustomValues(async () => {\n      const sources = [path.resolve('build/custom-values.js')];\n\n      if (await fs.exists(path.resolve('overrides/custom-values.json'))) {\n        sources.push(path.resolve('overrides/custom-values.json'));\n      }\n\n      return sources;\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`cssCustomValues` hook provided by the `css()` plugin](#hooks).\n\n### `postcssPlugins()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of PostCSS plugin name to its options. Alternatively, you can pass a function that returns this value, or a promise for such a value.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssPlugins} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    // A mapping of plugin => options\n    postcssPlugins({\n      'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n    }),\n    // Or a function returning the plugin configuration\n    postcssPlugins(() => ({\n      'postcss-plugin-my-company': {minify: false},\n    })),\n    // That function can also return a promise for the plugin configuration\n    postcssPlugins(async () =>\n      (await hasDependency('postcss-custom-plugin'))\n        ? {\n            'postcss-custom-plugin': true,\n          }\n        : {},\n    ),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssPlugins` hook provided by the `css()` plugin](#hooks).\n\n### `postcssEnvFeatures()`\n\nThe `postcssEnvFeatures` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of `postcss-preset-env` transforms to a boolean (indicating whether it is enabled or not) or an object (if the plugin accepts additional options). You can also pass a function that returns this mapping, optionally as a promise.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssEnvFeatures} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    postcssEnvFeatures({\n      'nesting-rules': true,\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssEnvFeatures` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleExtensions()`\n\nThe `cssModuleExtensions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with one or more extensions to treat as stylesheets. Files with these extensions will be [transformed in Jest as documented above](#jest).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleExtensions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css(), cssModuleExtensions(['.scss']));\n});\n```\n\nMore complex customizations of the extensions treated as CSS modules can be done in the [`cssModuleIdentityProxyExtensions` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleClassNamePattern()`\n\nThe `cssModuleClassNamePattern` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with a string representing the [pattern to use for CSS module class names](https://github.com/webpack-contrib/css-loader#localidentname). This plugin automatically uses a good default for all types of projects, so only change this if you have a particular need for the compiled CSS class names.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleClassNamePattern} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  // Will prefix the base64-hashed class names with a consistent string to make\n  // them easier to find in the DOM.\n  app.use(css(), cssModuleClassNamePattern('prefix__[hash:base64]'));\n});\n```\n\nMore complex customizations of the CSS module class name pattern can be done with the [`cssModuleClassNamePattern` hook provided by the `css()` plugin](#hooks).\n\n### `cssWebpackLoaderOptions()`\n\nThe `cssWebpackLoaderOptions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin can be called with additional options to pass to `css-loader`. You can also pass a function that returns these options, or a promise for the options. Be careful, as any values you pass here will directly overwrite the defaults provided by this plugin, and no deep merging is performed.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssWebpackLoaderOptions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssWebpackLoaderOptions({url: true}),\n    cssWebpackLoaderOptions(() => ({importLoaders: 2})),\n  );\n});\n```\n\nMore complex customizations of these options can be done with the [`cssWebpackLoaderModule` and `cssWebpackLoaderOptions` hooks provided by the `css()` plugin](#hooks).\n\n## Utilities\n\n### `createCSSWebpackRuleSet()`\n\nThe `createCSSWebpackRuleSet` function returns a promise for a webpack `RuleSet` that can be used to handle other file types that are treated as stylesheets. It configures all the loaders up to the `postcss-loader`, so additional loaders that compile a file down to CSS can be appended to the end.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {createCSSWebpackRuleSet} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin(\n  'MyPlugin',\n  ({project, api, hooks, options}) => {\n    hooks.configure.hook((configuration) => {\n      // This is a (slightly) simplified version of @sewing-kit/plugin-sass’s use of this\n      // utility to construct its own Webpack rule.\n      configuration.webpackRules?.hook(async (rules) => {\n        const use = await createCSSWebpackRuleSet({\n          // Several options are mandatory to get some of your plugin’s context...\n          api,\n          project,\n          configuration,\n          env: options.simulateEnv,\n          sourceMaps: options.sourceMaps,\n          // Whether PostCSS should be enabled or not. Defaults to true.\n          postcss: true,\n          // Whether to treat the resulting stylesheets as CSS modules. Defaults to true.\n          cssModules: true,\n          // A custom directory to store build caches in. Must **not** be an absolute path.\n          cacheDirectory: 'sass',\n          // Additional dependencies to include for Webpack’s cache-loader.\n          cacheDependencies: ['node-sass'],\n        });\n\n        return [\n          ...rules,\n          {\n            test: /\\.scss$/,\n            use: [...use, {loader: 'node-sass'}],\n          },\n        ];\n      });\n    });\n  },\n);\n```\n\n### `updatePostcssPlugin()`\n\nThe `updatePostcssPlugin` utility returns a function that will update the options for a PostCSS plugin. The resulting function should be passed to the `postcssPlugins` hook.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin with the option\n    // {webpack: true}. This will be merged with any existing options, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', {webpack: true}),\n    );\n  });\n});\n```\n\nThe second argument can also be a function that is called with the current configuration (or an empty object, if no configuration is present), and returns the new configuration to use.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin to add a nested\n    // features['nesting-rules'] = true. If we just passed {features: {'nesting-rules': true}},\n    // we would overwrite the existing `features`, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', (options) => ({\n        ...options,\n        features: {\n          ...(options.features ?? {}),\n          'nesting-rules': true,\n        },\n      })),\n    );\n  });\n});\n```\n\nInstead of a single plugin, the first argument can be an array of plugins instead. The same updating logic will be performed for each plugin, but only the first plugin will be added if none are already enabled. If you do not want any plugins to be added in the case where none are already enabled, you can pass `{addIfMissing: false}` as the third argument.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the postcss-preset-env plugin with the new browser\n    // option, but will not add it if it is missing.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin(\n        ['postcss-preset-env', require.resolve('postcss-preset-env')],\n        {browsers: ['>2%']},\n        {addIfMissing: false},\n      ),\n    );\n  });\n});\n```\n\n### `updatePostcssEnvPreset()`\n\nThis function can be used to update the default PostCSS plugin included for processing CSS, `@sewing-kit/plugin-css/postcss-preset`. The options for this PostCSS are currently the same as [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env#options), and are documented on in that project’s README.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssEnvPreset} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the default environment preset with these options.\n    // Note that the `autoprefixer` and `features` options are deeply merged\n    // with any existing values for those objects.\n    configuration.postcssPlugins?.hook(\n      updatePostcssEnvPreset({\n        preserve: false,\n        autoprefixer: {\n          flexbox: 'no-2009',\n        },\n        features: {\n          'nesting-rules': true,\n        },\n      }),\n    );\n  });\n});\n```\n","gitHead":"262fbc593e5a75d65bbaf14da6e60d8fa08708de","_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.22.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.22.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.19-alpha.0","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.19-alpha.0","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.19-alpha.0_1598398279369_0.04117783887253257","host":"s3://npm-registry-packages"}},"0.1.19":{"name":"@sewing-kit/plugin-css","version":"0.1.19","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.19","maintainers":[{"name":"ismail.syed","email":"ismail.syed@shopify.com"},{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"}],"dist":{"shasum":"0fefd6ee5541908e39aaecd2d6e0db6747e08b60","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.19.tgz","fileCount":45,"integrity":"sha512-fxGDNLTwiCPuOWt6xJPZ/dCezCguZuA+y5prbjHLHys3rbGFfk78w9iZFr8G5nG0MoFjGWPV3YURf8SMOFvy+w==","signatures":[{"sig":"MEYCIQDc3ivVF8a0S8bKPi5vXmtv5w/L1l6JXDAAF1bPmXA9eAIhAKDONahPlEkZHoVgYN9ECBTmSkbf3GDw5PKQDTItqZwe","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":384540,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfRqXYCRA9TVsSAnZWagAA/IEP/2tzO6QK606M5jnkzUsD\nV8cJmug4WIDoIY3c1jtvwCm99wclUNghxLCND0MsKzBaB4qYq5aGuWh82jgA\nsDLJhiGejSTY4E2esWUEvkblco5xfS6m4yjPBi2DCns4KgvgTTZtUvBFwL8F\nTtB7OWvIi+D7tCytWtaBfdD8520tw9JnRayrUKCop4Vt5fkO4GFRxfHT8Sbj\n9WbbwU+UQKZ6R8btTgsLSjSePg6qB39HGK2IdDpPesLQahkCaUKHWGLvwwzL\nNcJ1g0joPzF1Q6RsDgZeeWJW07N10YPSsHmZ2YQG6QAY8YOwzs9b8oE1Y7hB\n6u+XycMk+nWvTAt3mSwIgBd1z6bPSig4BAfDgqH/4928NlC49f+DF5UUpDCS\nc1T2eLOqTYm30H31nku+/IqVyFubllEh//U6LkH0zgIPTIx1qb5ZWdmPFHkk\n9zOQw8/46Y8vEseJTY1E6VUofsXUdlLUulkEg7RxvXdb9ZBdpAXazkPIW4kl\n+6NJYx4BxCqihvbie5I1qNhRho7nAxb+0AgvdKl/Gsgr/HeWikyRGCZ7ulPz\nOEE8yAsNFhFU0HD6z8tx4YByiXc+XYbYhABxBlA+t07BiDzRB2ufBJ6ybCxh\ny1p/6o5XSbwJmRCH/1tgPRxvK7oAMXzkIUbdfKdje8Bm9chwz6qL71vULwyW\nRuWO\r\n=wCDb\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"8f3d0b7f06d03a341c63e1b03a3817243910b64d","_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.22.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.22.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.4","@sewing-kit/plugin-jest":"^0.1.19","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.7","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.19","@sewing-kit/plugin-webpack":"^0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.19_1598465496102_0.7750120949906334","host":"s3://npm-registry-packages"}},"0.1.20":{"name":"@sewing-kit/plugin-css","version":"0.1.20","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.20","maintainers":[{"name":"ismail.syed","email":"ismail.syed@shopify.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"8abbbb81cbace2e6704bc0e5ec654e1f0da86383","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.20.tgz","fileCount":45,"integrity":"sha512-BKl0+/rgHOI/Nco8p11Xwtk2h1xU+ZmnPEAAqYmqB+8cWlYrXugm/dnJRsg3ceT6dWDRjAgYZXsK+RB+sESx5w==","signatures":[{"sig":"MEYCIQCd2Cg4NJbisiR4SKDMX4Ib5l5WNpQld60uURqk7jzOLQIhALcZ8BUmsFIjjQ4unWghCzRZtl7Tok7hCthlb7LHjo05","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":382749,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfYiOBCRA9TVsSAnZWagAAJ6QP/AwEhJrYXEw7Jz1UgCFz\n4riQxmhASbu4yKz4T1XZF8Dadn8x5a0CLMN3k5gAi9nnTuvPL7n01ut9a8aj\nTgWq/zbX7VLZ/eVhWNUQqxqEDad78zCJifiE7LxboAwfGnAa9KgACjKzCoPb\nwTztkbiAuDGcJj04LbXrRwFfvUuAaXdZ4yLW0cSBXRNnPHYzrLNA3rpKcZZ8\n8pXhbrxS4LLeQn+MZjIT+LQ3zzBkVRd2ary9CYRThXLjlAoDHzxkFrbmPtzY\nMtPVCVdlVve4NUhusyB2UiSqmHKmtM/kDkApwAgM+1KoT8lp0Ldn8JybmY7a\nG55cXnCeGQVn22YEkV8FBWRbxb2GWGdcSpVmn5aAiUDlGYFCxzWGInHYmfqU\nUz7ws7C80D9wiUbJ8kLhMEoFyDSc+Yvmsww2H30BYxwpqG6RCyTzhQHXRmMK\nCHXeMqjyh9gBcnNR/fGRldn5OP0wioRq2gzCvcOgEAG4LMqavzDMQIM/t2WW\ntGTbQCExfV5wiVVh6I0CorY9lsA0m2ShGIAb8DgQS8Xrq98fJ+MeZu+MPkou\nLBInfFQKyhdiRYcm/eb1SLpdI5ftMSvCL/7qnokTVkzbVBXqKtbNTFaJze7z\nsOu/LMJyQBwkOfmLs4dk/7eoX1mzfv1O+2BfSqk4tDB34e3w5nuXCoNjKvaV\nMluW\r\n=4SSo\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"62309865ebbd7dd9e752a7cce8c0bc48d7898a2d","_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.22.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.22.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.5","@sewing-kit/plugin-jest":"^0.1.20","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.8","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.20","@sewing-kit/plugin-webpack":"^0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.20_1600267137335_0.9886214003455078","host":"s3://npm-registry-packages"}},"0.1.21":{"name":"@sewing-kit/plugin-css","version":"0.1.21","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.21","maintainers":[{"name":"ismail.syed","email":"ismail.syed@shopify.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"lemonmade","email":"chrismsauve@gmail.com"}],"dist":{"shasum":"11c89411ec37a142e8e143725aaae7969adb8e6c","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.21.tgz","fileCount":45,"integrity":"sha512-dYsY6diQfm06IPXQelnwXiOxwv3JlRSQzf2XzvigVuk+6fdrbJQLjfyWuoJ6yEryyMFXwHeWawwxm9OsW/dIZw==","signatures":[{"sig":"MEUCIQDeItnm5gXpGWQtDpd9AKD8j6LJdLaqd6RU8lHcJzMcrAIgMV/ohEDTc4A6GD15EOBpU8xDaD1V6tx1uDU2O11q2vI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":382806,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfd34BCRA9TVsSAnZWagAAGrkQAIcVTlDL57LbFDTEnGec\nf7MiCTtodebiOAlbJrY8dBZqhNaqPmi29EnnsFzYteUEJxk+3mhmRtvuZS/4\n7mMbZstZ0l0KiRdT5+7v9AXY5f3ryEl3aU6G19qQdJ86+RXcbMOXJxS2iYQ2\nOuUXl7iThoaQXnaACO8f1HLQ0uPT/enzk8CsgH3MoD9ixoFxZf76MydBs9lU\neJ0pzuGOIU3BHeDIjAyDc6uYKggn5fVA9uR/u8/wOo4mGAnp+CSpbJ/lSKfQ\nffRo+ed+scgz9ZAbHyBN15gW3rsfcJPGTU3uvK2na14bVgfyiUR7eeONe9GY\nQypdjMYfQnc1DriRtratfm/Y4BXLR6ZAvEW6igt422LfhVCSVoMrk2BsdUXF\nrj97NMoNzh4+SlWMYYsdJ6Av+f6PV8t+/6g75Hnc1KVod8/8sv+WWhjn6D/i\nfJYSr5qHcq07BS43uYszVsvzXNZj+JylkkZ66meyyaLRuRdpjvafVkRmr3Wl\n8WwRRQYTpY39fY6d4FKjZ+aWFCMj4SzuOdEqDUr7v+4PHv1j5j81V3tgCV2T\nFrZRrrfwYtV10Ruq8GJGsBI/iVkN9H5i9TTxYrrdY9328RvpKx11qhUJxljt\njDiALuuHszfsS3+sFhJVKoDOqMwz4jqmAJdAUryy3mga8V55xEdLtglezF3D\nzN8w\r\n=wtPA\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"7695287b8a927a3537b7a7ae1b11db6cb449493e","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.22.1+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.22.1","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.6","@sewing-kit/plugin-jest":"^0.1.21","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.9","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.21","@sewing-kit/plugin-webpack":"^0.1.9"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.21_1601666560510_0.9685963661741475","host":"s3://npm-registry-packages"}},"0.1.22-sk0-sk1-hybrid.0":{"name":"@sewing-kit/plugin-css","version":"0.1.22-sk0-sk1-hybrid.0","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.22-sk0-sk1-hybrid.0","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"be741e5ada67431cf2d2ffab24e80d9ece43e6e8","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.22-sk0-sk1-hybrid.0.tgz","fileCount":45,"integrity":"sha512-HFXKtCDAOTMkTEH7e+kBWFcDACPCnqFrnZlWH1IiNXdqMpyEk1KaQAdyjuFW3bFGI9Lg10SN5lzdyw89PAmoJA==","signatures":[{"sig":"MEUCIA8Ut3/SH9WL6Y7jBPlozpZjq+oBhRCFNMXJ4DwSTA73AiEA4TqAfOcW78wRGFwo/mFebbr7qu5NPzkgjF7eXoioTAI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":517474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNrxjCRA9TVsSAnZWagAAcfkP/1IB7LLASweLptTfOa8F\ndfdKb6AHbmeu8YAcm2JXirI1xeLLypGTZ29uQ5ikans5PCrmc0tTEj4Pnpw2\n6z3rXcakgCXc4U2Nnqu55lIGQZrZ+g5gkq4t/6R59oLWaF94TbRJd92AJ0/b\ngRG6IebnLJkZse3ISD7GBo59PdizSIAihAGSMU8z9w68lOtlyTf1sbdFXkP3\nIafIkx1zR2lR6TMROwDca9jQrX88LBd0jDJPFqsgnYOtqwPzjEjn/unS7vpu\nR3QSspEjoSQuiXp8kKFaD+vDjzf2lDba07NPi8+4l8ps71fsNG14B7zf960s\nGuq+T9EQ+iO+ZstsMGjfZyItL3Ax8R0Kp8mzrcTEV/042PQdJN+grwj/oyKS\n2nLx841ZTEWRelzyxFCROCHD+LkXX8fqvJYfbl2Mae8TV02calZam9xSQQiY\nN5zBM9Z8fG9555YZMVA+N2LA4uMcInAWi5WdU4Xah1iv6SL5Ha+42VUKNkoJ\nlRuEu03Fksva31U/LrnQGqha63Shji+HsezAp8jxFqNWwX3I0uiuTOeQFNRm\ntu6Y8xueRhcmFJLiHJjt6RLgkyZy4A3qgFGUtz2sl1CfWVy+xBbpfoXMSjAn\nQiji8utSYEPDJ1hWJlAWQnwr7FkS/Hci7K+iFuHFPfql7YdpziOnVvIdD1tV\nnL4w\r\n=CoBx\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"e68f9c52183adc3e2856cd90462378238b8ef724","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.7-sk0-sk1-hybrid.0","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.0","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.0","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.22-sk0-sk1-hybrid.0_1614199906922_0.258888100491087","host":"s3://npm-registry-packages"}},"0.1.22-sk0-sk1-hybrid.1":{"name":"@sewing-kit/plugin-css","version":"0.1.22-sk0-sk1-hybrid.1","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.22-sk0-sk1-hybrid.1","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"d11c6ea41203cc5e5ed2fa6d6972b920df92eefa","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.22-sk0-sk1-hybrid.1.tgz","fileCount":45,"integrity":"sha512-n/127peZL8+sQyzfuHvFJeDzRJNTWU0FThxXbYAmqOS0bjhcYkpwQ3RjsxNynolWkuTxKwVIQczejO4RXr+KeA==","signatures":[{"sig":"MEQCIC2mcLFRya/JfGsnY0A0WgqnymPwGIfzKn5e8mSVJf8eAiAHsaVg+GDZ2WaIE2VfI9XkFU19Q24SHlDMlmMKeJRuCA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":517474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgNsh9CRA9TVsSAnZWagAAlcwP/1ATiyJL6IVN/uTstOtB\nLHTNG/8P4yydPcjUmP0swBzL9FySv1A95LWRzOiAiAIumEXtBJvJggzFQder\n/HIWFICmpPH+80nxPJKiy8TP56v3GtH9qRifYqSEh+OX1J2eux/Xd7wsP8UO\nX99eXs90tCFhaciuOmWnI0mI9dh8Fa2cYNnGzOPswHGIxw7BO/QQ4+r05PSc\nXc8vt8lh+zJ9X6F4Pv+D/sbBQ1G03JiakXKxZcbvHMtqiuTd+YPocyx/IJdY\noKgrBwe5Z8dzlut/gmmUaosAlpcpwQHPKxiLgCFUX+aTGoWNiSGmbwCbXcO6\nGADSQ37yrMHtTrLyVTvkbneMRe1LSTSIuUZzefuQQmHqjWx55RdGibPAjAmp\nDWpvegsWpvXqlvjPYNxOS+dSBjxCqu6vhZ0aEMxOnLeeYiERaze5+YFVnBR6\nm/Kvloa++I2nWb8srUI82C5h5b3XRFChEMsBmGeLtrWjllzEsvRjCU+e3ZQ8\nk8gZCf8ZvOWBddLqpAMehDPGczLNK79Y9wTupZFJzaGMJ5o6ABIKiUFDrD6W\n4K+DcJATCvQQY1uDRd6zJnw9w1YRAHFmlFk4J4sqGUlZVbjIOOBR9UP0IcHE\nSNJrlYtwvAqUcZ/Dat01p/olAc6LQlCjYn+FqNqsQWo7B4zFihopHaRBsM/y\nVHSC\r\n=PpvZ\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# `@sewing-kit/plugin-css`\n\n> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.\n\nThis package provides a collection of `sewing-kit` plugins and other utilities for using CSS. It is build with an emphasis on producing highly-cacheable CSS files in production, and defaults to using [CSS modules](https://github.com/css-modules/css-modules) to avoid CSS naming conflicts. It includes built-in support for using CSS in Webpack and Jest, and for processing CSS using PostCSS.\n\n## Installation\n\n```\nyarn add @sewing-kit/plugin-css --dev\n```\n\n## Plugins\n\n### `css()`\n\nThe `css` function returns a `sewing-kit` plugin. This plugin applies to a single web app or service (packages are not currently supported).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css());\n});\n```\n\nThis plugin will automatically configure a number of tools to handle CSS files imported in your application, including Webpack and Jest. It also adds a number of custom hooks for fine grained control over the configurations used.\n\n#### Webpack\n\nIf `@sewing-kit/plugin-webpack`’s `webpackHooks` plugin is included for this project, this plugin will use it to configure Webpack to support importing `.css` files. The nature of this support depends on the project and environment in which `webpack` is run:\n\n- In any build targeting node, CSS is extracted using the [`onlyLocals` option of `css-loader`](https://github.com/webpack-contrib/css-loader#onlylocals), which extracts mappings for [CSS modules](https://github.com/webpack-contrib/css-loader#modules) but otherwise discards the CSS file.\n- In a build targeting web in a development-like environment, CSS is extracted using `css-loader` and [`style-loader`](https://github.com/webpack-contrib/style-loader). Classes are extracted using [CSS modules](https://github.com/webpack-contrib/css-loader#modules) with a default identifier that should globally scope the final names of the resulting classes. Note that this can result in a flash of unstyled content during development if you do server-side rendering, as styles do not load until the JavaScript for the app has executed.\n- In a build targeting web in a production-like environment, CSS is extracted using `css-loader` and [`mini-css-extract-plugin`](https://github.com/webpack-contrib/mini-css-extract-plugin). This extracts CSS into dedicated files that will be split along the same boundaries as the JavaScript in your application.\n\nFor projects targeting the web, this plugin also adds a customized CSS minifier to Webpack that prevents some potentially dangerous optimizations that are otherwise done by default.\n\nYou can fine-tune many parts of the above configuration using the [`cssWebpackFileName`, `cssWebpackMiniExtractOptions`, `cssModuleClassNamePattern`, `cssWebpackLoaderOptions`, `cssWebpackLoaderModule`, `cssWebpackOptimizeOptions`, and `cssWebpackCacheDependencies` hooks provided by this plugin](#hooks). If you need to generate a Webpack rule for other CSS-like languages that require preprocessing, like Sass, you can use the [`createCSSWebpackRuleSet` utility provided by this plugin](#createCSSWebpackRuleSet).\n\nRegardless of the environment or project, this plugin will also configure [`postcss-loader`](https://github.com/postcss/postcss-loader) to run on `.css` files, and will include a default plugin based on [`postcss-preset-env`](https://preset-env.cssdb.org). If you want to provide custom configuration, you can do so with PostCSS config files as you normally would. You can also customize the `postcss-loader` configuration directly with the [`postcssPlugins`, `cssCustomValues`, `postcssEnvFeatures`, `postcssEnvPreserve`, `postcssEnvImportFrom`, `postcssEnvStage`, `cssWebpackPostcssLoaderOptions`, and `cssWebpackPostcssLoaderContext`](#hooks) hooks added by this plugin.\n\n#### Jest\n\nIf `@sewing-kit/plugin-jest`’s `jestHooks` plugin is also included for the project, this plugin will use it to configure Jest to treat CSS files as \"identity\" modules — a module where any imported value will be equal to the name of that import as a string. For example, when you write `import styles from './style.css';`, `styles.MyKlass` would be equal to `\"MyKlass\"`. This behavior is generally sufficient for unit tests, where CSS is not typically tested directly anyways.\n\nIf you want to add additional extensions to treat as stylesheets, you can customize the `cssModuleIdentityProxyExtensions` hook provided by this plugin.\n\n#### Options\n\nThe `css()` plugin accepts the following options:\n\n- `cssModules: boolean` (default: `true`). Determines whether this plugin will configure tools to treat imports of CSS files as CSS modules. Setting `cssModules: false` disables the `modules` option on `css-loader` for webpack builds.\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    app.use(css({cssModules: false}));\n  });\n  ```\n\n- `postcss: boolean | {[key: string]: object | boolean}` (default: `true`). Determines whether this plugin will use PostCSS when building this project. Defaults to `true`. If `true`, this plugin will include a default PostCSS plugin based on `postcss-preset-env` to compile your application’s CSS. If an object is passed instead of a boolean, that object should be a mapping of PostCSS plugin name to options, and will be used as the default set of PostCSS transformations to use. Additional plugins can be added with the [`postcssPlugins` hook](#hooks) or the [`postcssPlugins()` sewing-kit plugin](#postcssplugins).\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    // disables postcss processing entirely\n    app.use(css({postcss: false}));\n\n    // alternatively, this enables postcss, and uses this plugin/ options\n    // mapping for configuring PostCSS. Make sure you have any PostCSS\n    // dependencies you declare here installed in your project.\n    app.use(\n      css({\n        postcss: {\n          'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n          'my-company-postcss-plugin': true,\n        },\n      }),\n    );\n  });\n  ```\n\n- `id: string` (default: `'css'`). Used as a unique identifier for some configuration. Don’t change this unless you know what you’re doing.\n\n#### Hooks\n\nThis plugin adds the following hooks to `TestProjectConfigurationHooks`:\n\n- `cssModuleIdentityProxyExtensions`: an array of file extensions to treat as CSS files during tests. As documented below, this plugin will use the result of running this hook to map CSS files to a suitable \"noop\" module during tests, if you also include `@sewing-kit/plugin-jest`’s `jestHooks()` plugin.\n\n  ```tsx\n  import {createWebAppTestPlugin} from '@sewing-kit/config';\n\n  const plugin = createWebAppTestPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // In addition to the default .css, also provide a mock module for .scss\n      // files.\n      configure.cssModuleIdentityProxyExtensions!.hook((extensions) => [\n        ...extensions,\n        '.scss',\n      ]);\n    });\n  });\n  ```\n\nThis plugin adds the following hooks to `BuildProjectConfigurationHooks` and `DevProjectConfigurationHooks`:\n\n- `cssCustomValues`: an array of sources to import custom media from for the default PostCSS plugin. These values will be used by some CSS transformations to provide values in place of custom properties, which are not understood by older browsers. These sources are passed directly to PostCSS’s [`importFrom` option](https://github.com/csstools/postcss-preset-env#importfrom), and so can be a path to a CSS, JavaScript, or JSON file, or an object with `customMedia`, `customProperties`, `customSelectors`, or `environmentVariables` properties.\n\n  ```tsx\n  import * as path from 'path';\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssCustomValues!.hook((values) => [\n        ...values,\n        path.resolve('static/custom-properties.json'),\n      ]);\n    });\n  });\n  ```\n\n- `cssWebpackFileName`: the file name pattern to use when generating static CSS files. Defaults to a format that is optimized for immutably cached assets.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackFileName!.hook(() => 'static.css');\n    });\n  });\n  ```\n\n- `cssWebpackMiniExtractOptions`: options to use when constructing an instance of [`mini-css-extract-plugin`’s `MiniCssExtractPlugin`](https://github.com/webpack-contrib/mini-css-extract-plugin).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackMiniExtractOptions!.hook((options) => ({\n        ...options,\n        publicPath: '/custom/public/path/for/css',\n      }));\n    });\n  });\n  ```\n\n- `cssModuleClassNamePattern`: the pattern to use when generating CSS modules from imported CSS files. Defaults to a name that contains some hints to the original location in development, and otherwise to a short, randomly-generated hash.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // Prefix all CSS modules with \"x-\"\n      configure.cssModuleClassNamePattern!.hook(() => 'x-[hash:base64:5]');\n    });\n  });\n  ```\n\n- `cssWebpackLoaderModule`: the value to use for the [`modules` option in `css-loader`](https://github.com/webpack-contrib/css-loader#modules). By default, this plugin uses CSS modules with a configuration inferred from the `cssModuleClassNamePattern` and details about the project. You can either customize the options in this hook, or return `false` to disable CSS modules entirely.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderModule!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackLoaderOptions`: the options to use for `css-loader`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderOptions!.hook((options) => ({\n        ...options,\n        localsConvention: 'dashesOnly',\n      }));\n    });\n  });\n  ```\n\n- `postcssPlugins`: a mapping of PostCSS plugin package name to options, or to `true` if no custom options are required. If you do not specify any custom options, this plugin will tell PostCSS to follow its [default configuration lookup technique](https://github.com/postcss/postcss-loader#config-cascade) to determine the plugins to use on a given stylesheet. However, using this hook to declare your PostCSS configuration will automatically register the plugins you use as part of various cache keys, and will allow for easier custom configuration per build. The result of mapping the entries in this object to construct the plugin will be used for [`postcss-loader`’s `plugins` option](https://github.com/postcss/postcss-loader#plugins).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssPlugins!.hook(() => ({\n        // This object will be passed to the plugin:\n        //   require('postcss-preset-env')({stage: 3, autoprefixer: {grid: true}})\n        'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n        // We pass it an option *not* to minify, as this sewing-kit plugin will configure minification\n        // as part of Webpack instead.\n        'postcss-plugin-my-company': {minify: false},\n        // `true` is equivalent to an empty object.\n        'postcss-custom-plugin': true,\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvFeatures`: an object mapping the [allowed PostCSS transforms](https://github.com/csstools/postcss-preset-env#features) to its associated options, or to a boolean indicating that the transform should be disabled. This mapping is used to create the `features` option for the default PostCSS plugin; it does not have an effect if you do not use this default (for instance, because you passed a custom set of plugins as the `preset` option to `css()`).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvFeatures!.hook((features) => ({\n        ...features,\n        // Customize the handling of the focus pseudo class transpile behavior\n        'focus-visible-pseudo-class': false,\n        'focus-within-pseudo-class': {replaceWith: ['[focus-inside]']},\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvPreserve`: a boolean indicating whether the default PostCSS preset should preserve the modern syntax in the compiled asset where possible. Defaults to `true`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvPreserve!.hook(() => false);\n    });\n  });\n  ```\n\n- `postcssEnvStage`: determines the standardization stage of CSS features that will be transpiled. This is passed directly as the [`stage` option in `postcss-preset-env`](https://github.com/csstools/postcss-preset-env#stage). Defaults to `2`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvStage!.hook(() => 0);\n    });\n  });\n  ```\n\n- `postcssEnvGrid`: controls how CSS grid will be handled in builds that target older browsers. This option is passed directly to [`autoprefixer`’s `grid` option](https://github.com/postcss/autoprefixer#options). Defaults to `'autoplace'`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvGrid!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderContext`: the context to use for [`postcss-loader`’s configuration](https://github.com/postcss/postcss-loader#context-ctx). This allows you to pass details from the build to your PostCSS configuration. This is generally used instead of `postcssPlugins` if at all, as that hook allows you to directly set options for plugins without needing to rely on this additional context mechanism.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackPostcssLoaderContext!.hook(() => ({\n        // Here, we pass a custom bit of context that will be available to our plugin\n        // (declared in `postcss.config.js`).\n        'postcss-plugin-my-company': {minify: false},\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderOptions`: the options to use for `postcss-loader`. If you have no dedicated PostCSS config file, this hook allows you to specify [`plugins`](https://github.com/postcss/postcss-loader#plugins) directly (and `ident`, if you use function-based configuration).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // use preset-env in postcss\n      configure.cssWebpackPostcssLoaderOptions!.hook((options) => ({\n        ...options,\n        parser: 'sugarss',\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackOptimizeOptions`: the options to use for [`optimize-css-assets-webpack-plugin`](https://github.com/NMFR/optimize-css-assets-webpack-plugin), which is used for production minification of CSS when building with Webpack.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackOptimizeOptions!.hook((options) => ({\n        ...options,\n        cssProcessorPluginOptions: {\n          preset: ['advanced', {discardComments: {removeAll: true}}],\n        },\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackCacheDependencies`: a list of NPM packages to include when generating cache identifiers for CSS builds. You should include any PostCSS plugins you use in this list, as well as any packages you use for preprocessing, like `node-sass` (note that, if you use `@sewing-kit/plugin-sass`, this is done automatically for you).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackCacheDependencies!.hook((dependencies) => [\n        ...dependencies,\n        'postcss-plugin-my-company',\n      ]);\n    });\n  });\n  ```\n\n### `cssCustomValues()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a file or object providing custom values to use for older browsers, as documented for the `cssCustomValues` hook above. You can pass this plugin one such source, an array of sources, or a function that returns sources. This function can also be asynchronous, which can be useful if you need to read whether a particular source is on disk.\n\n```ts\nimport * as path from 'path';\nimport * as fs from 'fs-extra';\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssCustomValues} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssCustomValues(path.resolve('styles/styles.css')),\n    cssCustomValues(async () => {\n      const sources = [path.resolve('build/custom-values.js')];\n\n      if (await fs.exists(path.resolve('overrides/custom-values.json'))) {\n        sources.push(path.resolve('overrides/custom-values.json'));\n      }\n\n      return sources;\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`cssCustomValues` hook provided by the `css()` plugin](#hooks).\n\n### `postcssPlugins()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of PostCSS plugin name to its options. Alternatively, you can pass a function that returns this value, or a promise for such a value.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssPlugins} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    // A mapping of plugin => options\n    postcssPlugins({\n      'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n    }),\n    // Or a function returning the plugin configuration\n    postcssPlugins(() => ({\n      'postcss-plugin-my-company': {minify: false},\n    })),\n    // That function can also return a promise for the plugin configuration\n    postcssPlugins(async () =>\n      (await hasDependency('postcss-custom-plugin'))\n        ? {\n            'postcss-custom-plugin': true,\n          }\n        : {},\n    ),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssPlugins` hook provided by the `css()` plugin](#hooks).\n\n### `postcssEnvFeatures()`\n\nThe `postcssEnvFeatures` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of `postcss-preset-env` transforms to a boolean (indicating whether it is enabled or not) or an object (if the plugin accepts additional options). You can also pass a function that returns this mapping, optionally as a promise.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssEnvFeatures} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    postcssEnvFeatures({\n      'nesting-rules': true,\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssEnvFeatures` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleExtensions()`\n\nThe `cssModuleExtensions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with one or more extensions to treat as stylesheets. Files with these extensions will be [transformed in Jest as documented above](#jest).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleExtensions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css(), cssModuleExtensions(['.scss']));\n});\n```\n\nMore complex customizations of the extensions treated as CSS modules can be done in the [`cssModuleIdentityProxyExtensions` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleClassNamePattern()`\n\nThe `cssModuleClassNamePattern` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with a string representing the [pattern to use for CSS module class names](https://github.com/webpack-contrib/css-loader#localidentname). This plugin automatically uses a good default for all types of projects, so only change this if you have a particular need for the compiled CSS class names.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleClassNamePattern} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  // Will prefix the base64-hashed class names with a consistent string to make\n  // them easier to find in the DOM.\n  app.use(css(), cssModuleClassNamePattern('prefix__[hash:base64]'));\n});\n```\n\nMore complex customizations of the CSS module class name pattern can be done with the [`cssModuleClassNamePattern` hook provided by the `css()` plugin](#hooks).\n\n### `cssWebpackLoaderOptions()`\n\nThe `cssWebpackLoaderOptions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin can be called with additional options to pass to `css-loader`. You can also pass a function that returns these options, or a promise for the options. Be careful, as any values you pass here will directly overwrite the defaults provided by this plugin, and no deep merging is performed.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssWebpackLoaderOptions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssWebpackLoaderOptions({url: true}),\n    cssWebpackLoaderOptions(() => ({importLoaders: 2})),\n  );\n});\n```\n\nMore complex customizations of these options can be done with the [`cssWebpackLoaderModule` and `cssWebpackLoaderOptions` hooks provided by the `css()` plugin](#hooks).\n\n## Utilities\n\n### `createCSSWebpackRuleSet()`\n\nThe `createCSSWebpackRuleSet` function returns a promise for a webpack `RuleSet` that can be used to handle other file types that are treated as stylesheets. It configures all the loaders up to the `postcss-loader`, so additional loaders that compile a file down to CSS can be appended to the end.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {createCSSWebpackRuleSet} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin(\n  'MyPlugin',\n  ({project, api, hooks, options}) => {\n    hooks.configure.hook((configuration) => {\n      // This is a (slightly) simplified version of @sewing-kit/plugin-sass’s use of this\n      // utility to construct its own Webpack rule.\n      configuration.webpackRules?.hook(async (rules) => {\n        const use = await createCSSWebpackRuleSet({\n          // Several options are mandatory to get some of your plugin’s context...\n          api,\n          project,\n          configuration,\n          env: options.simulateEnv,\n          sourceMaps: options.sourceMaps,\n          // Whether PostCSS should be enabled or not. Defaults to true.\n          postcss: true,\n          // Whether to treat the resulting stylesheets as CSS modules. Defaults to true.\n          cssModules: true,\n          // A custom directory to store build caches in. Must **not** be an absolute path.\n          cacheDirectory: 'sass',\n          // Additional dependencies to include for Webpack’s cache-loader.\n          cacheDependencies: ['node-sass'],\n        });\n\n        return [\n          ...rules,\n          {\n            test: /\\.scss$/,\n            use: [...use, {loader: 'node-sass'}],\n          },\n        ];\n      });\n    });\n  },\n);\n```\n\n### `updatePostcssPlugin()`\n\nThe `updatePostcssPlugin` utility returns a function that will update the options for a PostCSS plugin. The resulting function should be passed to the `postcssPlugins` hook.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin with the option\n    // {webpack: true}. This will be merged with any existing options, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', {webpack: true}),\n    );\n  });\n});\n```\n\nThe second argument can also be a function that is called with the current configuration (or an empty object, if no configuration is present), and returns the new configuration to use.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin to add a nested\n    // features['nesting-rules'] = true. If we just passed {features: {'nesting-rules': true}},\n    // we would overwrite the existing `features`, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', (options) => ({\n        ...options,\n        features: {\n          ...(options.features ?? {}),\n          'nesting-rules': true,\n        },\n      })),\n    );\n  });\n});\n```\n\nInstead of a single plugin, the first argument can be an array of plugins instead. The same updating logic will be performed for each plugin, but only the first plugin will be added if none are already enabled. If you do not want any plugins to be added in the case where none are already enabled, you can pass `{addIfMissing: false}` as the third argument.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the postcss-preset-env plugin with the new browser\n    // option, but will not add it if it is missing.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin(\n        ['postcss-preset-env', require.resolve('postcss-preset-env')],\n        {browsers: ['>2%']},\n        {addIfMissing: false},\n      ),\n    );\n  });\n});\n```\n\n### `updatePostcssEnvPreset()`\n\nThis function can be used to update the default PostCSS plugin included for processing CSS, `@sewing-kit/plugin-css/postcss-preset`. The options for this PostCSS are currently the same as [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env#options), and are documented on in that project’s README.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssEnvPreset} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the default environment preset with these options.\n    // Note that the `autoprefixer` and `features` options are deeply merged\n    // with any existing values for those objects.\n    configuration.postcssPlugins?.hook(\n      updatePostcssEnvPreset({\n        preserve: false,\n        autoprefixer: {\n          flexbox: 'no-2009',\n        },\n        features: {\n          'nesting-rules': true,\n        },\n      }),\n    );\n  });\n});\n```\n","gitHead":"6abf915c420a24d13fe2545fe4dd68bd65dddc0f","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.7-sk0-sk1-hybrid.1","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.1","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.1","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.1","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.1"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.22-sk0-sk1-hybrid.1_1614203004990_0.1853548254495785","host":"s3://npm-registry-packages"}},"0.1.22-sk0-sk1-hybrid.2":{"name":"@sewing-kit/plugin-css","version":"0.1.22-sk0-sk1-hybrid.2","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.22-sk0-sk1-hybrid.2","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"1b7e8bc676a144abeb4059ed9f90525eda93c3dd","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.22-sk0-sk1-hybrid.2.tgz","fileCount":13,"integrity":"sha512-ocBFp6lTREKv98zKxgVziTykEy9jEcSBo3TcSDA+2U01X2kVkqDCaULbBxnum2fwDDTqEQjTG8vmzbuptVTtlA==","signatures":[{"sig":"MEUCIDpN+VJDHQ11ThvbvubkUIUxkA9QSRpmJZP2nu7t8MJjAiEA2PNaqfYnu7OzWiKEXVRlwB8l1fgruDfLoxUdTmyagvg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":62494,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPRTLCRA9TVsSAnZWagAArbAP/3/ffIpt8RRKhFFOyt2/\n/QRu3lbZYILC4luJewft0O7MBt5PElYjRV1qjnO5CGxRhRjijQsBuAA+zv90\nWP40StyrTMMaFf5frfZ+fXR13dUPyP0q8+++bDb+f3Ef0Gr6Uvuik88K1qvm\nZnEWa7hj1PDPT7devu15RN/RB0HSvcdw1Rt9X0NsQtXNUMYV2DLCz199JYKy\nuTVEp5sNLa9dxoWlcO9+UNiDn8zPq2w8N0QHkfgiP4PrFW2x32TKHUsD6hbB\nllTvP0+BVhjqjqwLQar3C3CFBWTlCjcc4/RXbe2ndPZARahaYlBGwKA+Ktha\nx5qlaXTODKBaYPWx/tWXTcfj3KIVqnw38zxt3AgeY6DFERl/xxRNXB83bIyL\nyzM+im7kJilcXakglUUlTXYEhZ0zy28OCMg73FmRmIf4dveBrKcHcqwrkLYM\nOXPhsXzQmMV28ZrzHBgXrjQa9nt/0uUT2gclL8JaO+Ct+DX/V00FbS3V6ph7\nZMDClw2eFqqHeGcCz1+nsg3k4wzp24StUy5u1TLicspJeQB93H3hfD+/STLt\n2zzoymNtx4z98FHy4YjTVAvTPB1zOPV052RaDnUYKXxS5qh9x90tC3bGmwAu\nb+8fTOqdnsaAhynV0YOnznZgSoEFRwe20p9KQelfFODf4NrXZVEnODvlLmFJ\ncmAy\r\n=Z8fl\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# `@sewing-kit/plugin-css`\n\n> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.\n\nThis package provides a collection of `sewing-kit` plugins and other utilities for using CSS. It is build with an emphasis on producing highly-cacheable CSS files in production, and defaults to using [CSS modules](https://github.com/css-modules/css-modules) to avoid CSS naming conflicts. It includes built-in support for using CSS in Webpack and Jest, and for processing CSS using PostCSS.\n\n## Installation\n\n```\nyarn add @sewing-kit/plugin-css --dev\n```\n\n## Plugins\n\n### `css()`\n\nThe `css` function returns a `sewing-kit` plugin. This plugin applies to a single web app or service (packages are not currently supported).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css());\n});\n```\n\nThis plugin will automatically configure a number of tools to handle CSS files imported in your application, including Webpack and Jest. It also adds a number of custom hooks for fine grained control over the configurations used.\n\n#### Webpack\n\nIf `@sewing-kit/plugin-webpack`’s `webpackHooks` plugin is included for this project, this plugin will use it to configure Webpack to support importing `.css` files. The nature of this support depends on the project and environment in which `webpack` is run:\n\n- In any build targeting node, CSS is extracted using the [`onlyLocals` option of `css-loader`](https://github.com/webpack-contrib/css-loader#onlylocals), which extracts mappings for [CSS modules](https://github.com/webpack-contrib/css-loader#modules) but otherwise discards the CSS file.\n- In a build targeting web in a development-like environment, CSS is extracted using `css-loader` and [`style-loader`](https://github.com/webpack-contrib/style-loader). Classes are extracted using [CSS modules](https://github.com/webpack-contrib/css-loader#modules) with a default identifier that should globally scope the final names of the resulting classes. Note that this can result in a flash of unstyled content during development if you do server-side rendering, as styles do not load until the JavaScript for the app has executed.\n- In a build targeting web in a production-like environment, CSS is extracted using `css-loader` and [`mini-css-extract-plugin`](https://github.com/webpack-contrib/mini-css-extract-plugin). This extracts CSS into dedicated files that will be split along the same boundaries as the JavaScript in your application.\n\nFor projects targeting the web, this plugin also adds a customized CSS minifier to Webpack that prevents some potentially dangerous optimizations that are otherwise done by default.\n\nYou can fine-tune many parts of the above configuration using the [`cssWebpackFileName`, `cssWebpackMiniExtractOptions`, `cssModuleClassNamePattern`, `cssWebpackLoaderOptions`, `cssWebpackLoaderModule`, `cssWebpackOptimizeOptions`, and `cssWebpackCacheDependencies` hooks provided by this plugin](#hooks). If you need to generate a Webpack rule for other CSS-like languages that require preprocessing, like Sass, you can use the [`createCSSWebpackRuleSet` utility provided by this plugin](#createCSSWebpackRuleSet).\n\nRegardless of the environment or project, this plugin will also configure [`postcss-loader`](https://github.com/postcss/postcss-loader) to run on `.css` files, and will include a default plugin based on [`postcss-preset-env`](https://preset-env.cssdb.org). If you want to provide custom configuration, you can do so with PostCSS config files as you normally would. You can also customize the `postcss-loader` configuration directly with the [`postcssPlugins`, `cssCustomValues`, `postcssEnvFeatures`, `postcssEnvPreserve`, `postcssEnvImportFrom`, `postcssEnvStage`, `cssWebpackPostcssLoaderOptions`, and `cssWebpackPostcssLoaderContext`](#hooks) hooks added by this plugin.\n\n#### Jest\n\nIf `@sewing-kit/plugin-jest`’s `jestHooks` plugin is also included for the project, this plugin will use it to configure Jest to treat CSS files as \"identity\" modules — a module where any imported value will be equal to the name of that import as a string. For example, when you write `import styles from './style.css';`, `styles.MyKlass` would be equal to `\"MyKlass\"`. This behavior is generally sufficient for unit tests, where CSS is not typically tested directly anyways.\n\nIf you want to add additional extensions to treat as stylesheets, you can customize the `cssModuleIdentityProxyExtensions` hook provided by this plugin.\n\n#### Options\n\nThe `css()` plugin accepts the following options:\n\n- `cssModules: boolean` (default: `true`). Determines whether this plugin will configure tools to treat imports of CSS files as CSS modules. Setting `cssModules: false` disables the `modules` option on `css-loader` for webpack builds.\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    app.use(css({cssModules: false}));\n  });\n  ```\n\n- `postcss: boolean | {[key: string]: object | boolean}` (default: `true`). Determines whether this plugin will use PostCSS when building this project. Defaults to `true`. If `true`, this plugin will include a default PostCSS plugin based on `postcss-preset-env` to compile your application’s CSS. If an object is passed instead of a boolean, that object should be a mapping of PostCSS plugin name to options, and will be used as the default set of PostCSS transformations to use. Additional plugins can be added with the [`postcssPlugins` hook](#hooks) or the [`postcssPlugins()` sewing-kit plugin](#postcssplugins).\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    // disables postcss processing entirely\n    app.use(css({postcss: false}));\n\n    // alternatively, this enables postcss, and uses this plugin/ options\n    // mapping for configuring PostCSS. Make sure you have any PostCSS\n    // dependencies you declare here installed in your project.\n    app.use(\n      css({\n        postcss: {\n          'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n          'my-company-postcss-plugin': true,\n        },\n      }),\n    );\n  });\n  ```\n\n- `id: string` (default: `'css'`). Used as a unique identifier for some configuration. Don’t change this unless you know what you’re doing.\n\n#### Hooks\n\nThis plugin adds the following hooks to `TestProjectConfigurationHooks`:\n\n- `cssModuleIdentityProxyExtensions`: an array of file extensions to treat as CSS files during tests. As documented below, this plugin will use the result of running this hook to map CSS files to a suitable \"noop\" module during tests, if you also include `@sewing-kit/plugin-jest`’s `jestHooks()` plugin.\n\n  ```tsx\n  import {createWebAppTestPlugin} from '@sewing-kit/config';\n\n  const plugin = createWebAppTestPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // In addition to the default .css, also provide a mock module for .scss\n      // files.\n      configure.cssModuleIdentityProxyExtensions!.hook((extensions) => [\n        ...extensions,\n        '.scss',\n      ]);\n    });\n  });\n  ```\n\nThis plugin adds the following hooks to `BuildProjectConfigurationHooks` and `DevProjectConfigurationHooks`:\n\n- `cssCustomValues`: an array of sources to import custom media from for the default PostCSS plugin. These values will be used by some CSS transformations to provide values in place of custom properties, which are not understood by older browsers. These sources are passed directly to PostCSS’s [`importFrom` option](https://github.com/csstools/postcss-preset-env#importfrom), and so can be a path to a CSS, JavaScript, or JSON file, or an object with `customMedia`, `customProperties`, `customSelectors`, or `environmentVariables` properties.\n\n  ```tsx\n  import * as path from 'path';\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssCustomValues!.hook((values) => [\n        ...values,\n        path.resolve('static/custom-properties.json'),\n      ]);\n    });\n  });\n  ```\n\n- `cssWebpackFileName`: the file name pattern to use when generating static CSS files. Defaults to a format that is optimized for immutably cached assets.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackFileName!.hook(() => 'static.css');\n    });\n  });\n  ```\n\n- `cssWebpackMiniExtractOptions`: options to use when constructing an instance of [`mini-css-extract-plugin`’s `MiniCssExtractPlugin`](https://github.com/webpack-contrib/mini-css-extract-plugin).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackMiniExtractOptions!.hook((options) => ({\n        ...options,\n        publicPath: '/custom/public/path/for/css',\n      }));\n    });\n  });\n  ```\n\n- `cssModuleClassNamePattern`: the pattern to use when generating CSS modules from imported CSS files. Defaults to a name that contains some hints to the original location in development, and otherwise to a short, randomly-generated hash.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // Prefix all CSS modules with \"x-\"\n      configure.cssModuleClassNamePattern!.hook(() => 'x-[hash:base64:5]');\n    });\n  });\n  ```\n\n- `cssWebpackLoaderModule`: the value to use for the [`modules` option in `css-loader`](https://github.com/webpack-contrib/css-loader#modules). By default, this plugin uses CSS modules with a configuration inferred from the `cssModuleClassNamePattern` and details about the project. You can either customize the options in this hook, or return `false` to disable CSS modules entirely.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderModule!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackLoaderOptions`: the options to use for `css-loader`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderOptions!.hook((options) => ({\n        ...options,\n        localsConvention: 'dashesOnly',\n      }));\n    });\n  });\n  ```\n\n- `postcssPlugins`: a mapping of PostCSS plugin package name to options, or to `true` if no custom options are required. If you do not specify any custom options, this plugin will tell PostCSS to follow its [default configuration lookup technique](https://github.com/postcss/postcss-loader#config-cascade) to determine the plugins to use on a given stylesheet. However, using this hook to declare your PostCSS configuration will automatically register the plugins you use as part of various cache keys, and will allow for easier custom configuration per build. The result of mapping the entries in this object to construct the plugin will be used for [`postcss-loader`’s `plugins` option](https://github.com/postcss/postcss-loader#plugins).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssPlugins!.hook(() => ({\n        // This object will be passed to the plugin:\n        //   require('postcss-preset-env')({stage: 3, autoprefixer: {grid: true}})\n        'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n        // We pass it an option *not* to minify, as this sewing-kit plugin will configure minification\n        // as part of Webpack instead.\n        'postcss-plugin-my-company': {minify: false},\n        // `true` is equivalent to an empty object.\n        'postcss-custom-plugin': true,\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvFeatures`: an object mapping the [allowed PostCSS transforms](https://github.com/csstools/postcss-preset-env#features) to its associated options, or to a boolean indicating that the transform should be disabled. This mapping is used to create the `features` option for the default PostCSS plugin; it does not have an effect if you do not use this default (for instance, because you passed a custom set of plugins as the `preset` option to `css()`).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvFeatures!.hook((features) => ({\n        ...features,\n        // Customize the handling of the focus pseudo class transpile behavior\n        'focus-visible-pseudo-class': false,\n        'focus-within-pseudo-class': {replaceWith: ['[focus-inside]']},\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvPreserve`: a boolean indicating whether the default PostCSS preset should preserve the modern syntax in the compiled asset where possible. Defaults to `true`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvPreserve!.hook(() => false);\n    });\n  });\n  ```\n\n- `postcssEnvStage`: determines the standardization stage of CSS features that will be transpiled. This is passed directly as the [`stage` option in `postcss-preset-env`](https://github.com/csstools/postcss-preset-env#stage). Defaults to `2`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvStage!.hook(() => 0);\n    });\n  });\n  ```\n\n- `postcssEnvGrid`: controls how CSS grid will be handled in builds that target older browsers. This option is passed directly to [`autoprefixer`’s `grid` option](https://github.com/postcss/autoprefixer#options). Defaults to `'autoplace'`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvGrid!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderContext`: the context to use for [`postcss-loader`’s configuration](https://github.com/postcss/postcss-loader#context-ctx). This allows you to pass details from the build to your PostCSS configuration. This is generally used instead of `postcssPlugins` if at all, as that hook allows you to directly set options for plugins without needing to rely on this additional context mechanism.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackPostcssLoaderContext!.hook(() => ({\n        // Here, we pass a custom bit of context that will be available to our plugin\n        // (declared in `postcss.config.js`).\n        'postcss-plugin-my-company': {minify: false},\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderOptions`: the options to use for `postcss-loader`. If you have no dedicated PostCSS config file, this hook allows you to specify [`plugins`](https://github.com/postcss/postcss-loader#plugins) directly (and `ident`, if you use function-based configuration).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // use preset-env in postcss\n      configure.cssWebpackPostcssLoaderOptions!.hook((options) => ({\n        ...options,\n        parser: 'sugarss',\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackOptimizeOptions`: the options to use for [`optimize-css-assets-webpack-plugin`](https://github.com/NMFR/optimize-css-assets-webpack-plugin), which is used for production minification of CSS when building with Webpack.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackOptimizeOptions!.hook((options) => ({\n        ...options,\n        cssProcessorPluginOptions: {\n          preset: ['advanced', {discardComments: {removeAll: true}}],\n        },\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackCacheDependencies`: a list of NPM packages to include when generating cache identifiers for CSS builds. You should include any PostCSS plugins you use in this list, as well as any packages you use for preprocessing, like `node-sass` (note that, if you use `@sewing-kit/plugin-sass`, this is done automatically for you).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackCacheDependencies!.hook((dependencies) => [\n        ...dependencies,\n        'postcss-plugin-my-company',\n      ]);\n    });\n  });\n  ```\n\n### `cssCustomValues()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a file or object providing custom values to use for older browsers, as documented for the `cssCustomValues` hook above. You can pass this plugin one such source, an array of sources, or a function that returns sources. This function can also be asynchronous, which can be useful if you need to read whether a particular source is on disk.\n\n```ts\nimport * as path from 'path';\nimport * as fs from 'fs-extra';\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssCustomValues} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssCustomValues(path.resolve('styles/styles.css')),\n    cssCustomValues(async () => {\n      const sources = [path.resolve('build/custom-values.js')];\n\n      if (await fs.exists(path.resolve('overrides/custom-values.json'))) {\n        sources.push(path.resolve('overrides/custom-values.json'));\n      }\n\n      return sources;\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`cssCustomValues` hook provided by the `css()` plugin](#hooks).\n\n### `postcssPlugins()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of PostCSS plugin name to its options. Alternatively, you can pass a function that returns this value, or a promise for such a value.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssPlugins} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    // A mapping of plugin => options\n    postcssPlugins({\n      'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n    }),\n    // Or a function returning the plugin configuration\n    postcssPlugins(() => ({\n      'postcss-plugin-my-company': {minify: false},\n    })),\n    // That function can also return a promise for the plugin configuration\n    postcssPlugins(async () =>\n      (await hasDependency('postcss-custom-plugin'))\n        ? {\n            'postcss-custom-plugin': true,\n          }\n        : {},\n    ),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssPlugins` hook provided by the `css()` plugin](#hooks).\n\n### `postcssEnvFeatures()`\n\nThe `postcssEnvFeatures` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of `postcss-preset-env` transforms to a boolean (indicating whether it is enabled or not) or an object (if the plugin accepts additional options). You can also pass a function that returns this mapping, optionally as a promise.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssEnvFeatures} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    postcssEnvFeatures({\n      'nesting-rules': true,\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssEnvFeatures` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleExtensions()`\n\nThe `cssModuleExtensions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with one or more extensions to treat as stylesheets. Files with these extensions will be [transformed in Jest as documented above](#jest).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleExtensions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css(), cssModuleExtensions(['.scss']));\n});\n```\n\nMore complex customizations of the extensions treated as CSS modules can be done in the [`cssModuleIdentityProxyExtensions` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleClassNamePattern()`\n\nThe `cssModuleClassNamePattern` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with a string representing the [pattern to use for CSS module class names](https://github.com/webpack-contrib/css-loader#localidentname). This plugin automatically uses a good default for all types of projects, so only change this if you have a particular need for the compiled CSS class names.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleClassNamePattern} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  // Will prefix the base64-hashed class names with a consistent string to make\n  // them easier to find in the DOM.\n  app.use(css(), cssModuleClassNamePattern('prefix__[hash:base64]'));\n});\n```\n\nMore complex customizations of the CSS module class name pattern can be done with the [`cssModuleClassNamePattern` hook provided by the `css()` plugin](#hooks).\n\n### `cssWebpackLoaderOptions()`\n\nThe `cssWebpackLoaderOptions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin can be called with additional options to pass to `css-loader`. You can also pass a function that returns these options, or a promise for the options. Be careful, as any values you pass here will directly overwrite the defaults provided by this plugin, and no deep merging is performed.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssWebpackLoaderOptions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssWebpackLoaderOptions({url: true}),\n    cssWebpackLoaderOptions(() => ({importLoaders: 2})),\n  );\n});\n```\n\nMore complex customizations of these options can be done with the [`cssWebpackLoaderModule` and `cssWebpackLoaderOptions` hooks provided by the `css()` plugin](#hooks).\n\n## Utilities\n\n### `createCSSWebpackRuleSet()`\n\nThe `createCSSWebpackRuleSet` function returns a promise for a webpack `RuleSet` that can be used to handle other file types that are treated as stylesheets. It configures all the loaders up to the `postcss-loader`, so additional loaders that compile a file down to CSS can be appended to the end.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {createCSSWebpackRuleSet} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin(\n  'MyPlugin',\n  ({project, api, hooks, options}) => {\n    hooks.configure.hook((configuration) => {\n      // This is a (slightly) simplified version of @sewing-kit/plugin-sass’s use of this\n      // utility to construct its own Webpack rule.\n      configuration.webpackRules?.hook(async (rules) => {\n        const use = await createCSSWebpackRuleSet({\n          // Several options are mandatory to get some of your plugin’s context...\n          api,\n          project,\n          configuration,\n          env: options.simulateEnv,\n          sourceMaps: options.sourceMaps,\n          // Whether PostCSS should be enabled or not. Defaults to true.\n          postcss: true,\n          // Whether to treat the resulting stylesheets as CSS modules. Defaults to true.\n          cssModules: true,\n          // A custom directory to store build caches in. Must **not** be an absolute path.\n          cacheDirectory: 'sass',\n          // Additional dependencies to include for Webpack’s cache-loader.\n          cacheDependencies: ['node-sass'],\n        });\n\n        return [\n          ...rules,\n          {\n            test: /\\.scss$/,\n            use: [...use, {loader: 'node-sass'}],\n          },\n        ];\n      });\n    });\n  },\n);\n```\n\n### `updatePostcssPlugin()`\n\nThe `updatePostcssPlugin` utility returns a function that will update the options for a PostCSS plugin. The resulting function should be passed to the `postcssPlugins` hook.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin with the option\n    // {webpack: true}. This will be merged with any existing options, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', {webpack: true}),\n    );\n  });\n});\n```\n\nThe second argument can also be a function that is called with the current configuration (or an empty object, if no configuration is present), and returns the new configuration to use.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin to add a nested\n    // features['nesting-rules'] = true. If we just passed {features: {'nesting-rules': true}},\n    // we would overwrite the existing `features`, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', (options) => ({\n        ...options,\n        features: {\n          ...(options.features ?? {}),\n          'nesting-rules': true,\n        },\n      })),\n    );\n  });\n});\n```\n\nInstead of a single plugin, the first argument can be an array of plugins instead. The same updating logic will be performed for each plugin, but only the first plugin will be added if none are already enabled. If you do not want any plugins to be added in the case where none are already enabled, you can pass `{addIfMissing: false}` as the third argument.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the postcss-preset-env plugin with the new browser\n    // option, but will not add it if it is missing.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin(\n        ['postcss-preset-env', require.resolve('postcss-preset-env')],\n        {browsers: ['>2%']},\n        {addIfMissing: false},\n      ),\n    );\n  });\n});\n```\n\n### `updatePostcssEnvPreset()`\n\nThis function can be used to update the default PostCSS plugin included for processing CSS, `@sewing-kit/plugin-css/postcss-preset`. The options for this PostCSS are currently the same as [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env#options), and are documented on in that project’s README.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssEnvPreset} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the default environment preset with these options.\n    // Note that the `autoprefixer` and `features` options are deeply merged\n    // with any existing values for those objects.\n    configuration.postcssPlugins?.hook(\n      updatePostcssEnvPreset({\n        preserve: false,\n        autoprefixer: {\n          flexbox: 'no-2009',\n        },\n        features: {\n          'nesting-rules': true,\n        },\n      }),\n    );\n  });\n});\n```\n","gitHead":"fedf727eb0fcedd5a815fe1f9b6593e6265535c3","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.7-sk0-sk1-hybrid.2","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.2","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.2","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.2","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.2"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.22-sk0-sk1-hybrid.2_1614615755152_0.1476690400184748","host":"s3://npm-registry-packages"}},"0.1.22-sk0-sk1-hybrid.3":{"name":"@sewing-kit/plugin-css","version":"0.1.22-sk0-sk1-hybrid.3","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.22-sk0-sk1-hybrid.3","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"db6296a5cf72f66bb14bfa4381187d79b16d5c13","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.22-sk0-sk1-hybrid.3.tgz","fileCount":45,"integrity":"sha512-LWodvnM0K4cTWKaZye9d6xKASL0IePTTdlMEjCApD/+LY32ed80NlpBaW93+SwYAMLu2Nx+qS6Kcfnx93Lezdg==","signatures":[{"sig":"MEUCIQD0ECeEjtlXopX4Tv1Bbsx4KcrAvwb/9PIiwoeCsDsYaQIgdYpnqRvp7yKfKFxs1xW0f0z64ZXm/AC1xdK8B8BgdSY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":517474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPSJ5CRA9TVsSAnZWagAAzIAQAIckzaHmANbUo6WOXmqi\nMFRLn4A+7Ax6srIjfUg+zt5lo86N7ckI805g8lmzORzCrnJp7Qo22yHS/dwJ\nEoyXn172pNy1d4cN41nQK42nwGn3cPXaICEIA9jqEuTkcfEhqIp///PQrc3/\nNgQ4Jn+Ibs78QG/jRBmq+/CG3r0GUtWXgobsqOkiruH7AB5vQafhjX89BEBf\nUW6UVqsSMGILVFIllD2FC8OqbHCDTli8nungOV2eSdVwc3B8GbEDApt+KT69\nSaS+zAcpcriSwGRL0ISz2Ln3C3E/Pu8owJSrvTDpKYt1jPSk8So3afFYDSRo\nZTjVZ8MU9BvQ1Nlx1JKwsYEPI+6XCyH/7pCCW4xLRIgu2ZnPyFUAGdFRwfmv\nWuGN1jMrWfqfG7iUmAkD71zqBHx6sOmSOhmNvZZ/bSqMxkmJCQR3/eDIJUig\nZCPodjgbt+g8Eun2xK3cK9YyQtwcd0RQoka5rldD7pwE+CWkEXCwLxPpkvv+\nUtWuqterS3oAf25Fr7QwJp0SK2L0YfeX29iTeOhT1blTfGejIzlvomGNaGdK\naFbd9Bj62dGlU6UdHNKnWsMygJymnzVnvqUAzH/dRFZe5WX8hVosKIi+fO9K\nHSiqv8ZJFItoBekjs5J80+1bvowxxxP6dNfDmeY01w0OxvYVw0IGcZeaEd1R\neXwu\r\n=fEwn\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# `@sewing-kit/plugin-css`\n\n> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.\n\nThis package provides a collection of `sewing-kit` plugins and other utilities for using CSS. It is build with an emphasis on producing highly-cacheable CSS files in production, and defaults to using [CSS modules](https://github.com/css-modules/css-modules) to avoid CSS naming conflicts. It includes built-in support for using CSS in Webpack and Jest, and for processing CSS using PostCSS.\n\n## Installation\n\n```\nyarn add @sewing-kit/plugin-css --dev\n```\n\n## Plugins\n\n### `css()`\n\nThe `css` function returns a `sewing-kit` plugin. This plugin applies to a single web app or service (packages are not currently supported).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css());\n});\n```\n\nThis plugin will automatically configure a number of tools to handle CSS files imported in your application, including Webpack and Jest. It also adds a number of custom hooks for fine grained control over the configurations used.\n\n#### Webpack\n\nIf `@sewing-kit/plugin-webpack`’s `webpackHooks` plugin is included for this project, this plugin will use it to configure Webpack to support importing `.css` files. The nature of this support depends on the project and environment in which `webpack` is run:\n\n- In any build targeting node, CSS is extracted using the [`onlyLocals` option of `css-loader`](https://github.com/webpack-contrib/css-loader#onlylocals), which extracts mappings for [CSS modules](https://github.com/webpack-contrib/css-loader#modules) but otherwise discards the CSS file.\n- In a build targeting web in a development-like environment, CSS is extracted using `css-loader` and [`style-loader`](https://github.com/webpack-contrib/style-loader). Classes are extracted using [CSS modules](https://github.com/webpack-contrib/css-loader#modules) with a default identifier that should globally scope the final names of the resulting classes. Note that this can result in a flash of unstyled content during development if you do server-side rendering, as styles do not load until the JavaScript for the app has executed.\n- In a build targeting web in a production-like environment, CSS is extracted using `css-loader` and [`mini-css-extract-plugin`](https://github.com/webpack-contrib/mini-css-extract-plugin). This extracts CSS into dedicated files that will be split along the same boundaries as the JavaScript in your application.\n\nFor projects targeting the web, this plugin also adds a customized CSS minifier to Webpack that prevents some potentially dangerous optimizations that are otherwise done by default.\n\nYou can fine-tune many parts of the above configuration using the [`cssWebpackFileName`, `cssWebpackMiniExtractOptions`, `cssModuleClassNamePattern`, `cssWebpackLoaderOptions`, `cssWebpackLoaderModule`, `cssWebpackOptimizeOptions`, and `cssWebpackCacheDependencies` hooks provided by this plugin](#hooks). If you need to generate a Webpack rule for other CSS-like languages that require preprocessing, like Sass, you can use the [`createCSSWebpackRuleSet` utility provided by this plugin](#createCSSWebpackRuleSet).\n\nRegardless of the environment or project, this plugin will also configure [`postcss-loader`](https://github.com/postcss/postcss-loader) to run on `.css` files, and will include a default plugin based on [`postcss-preset-env`](https://preset-env.cssdb.org). If you want to provide custom configuration, you can do so with PostCSS config files as you normally would. You can also customize the `postcss-loader` configuration directly with the [`postcssPlugins`, `cssCustomValues`, `postcssEnvFeatures`, `postcssEnvPreserve`, `postcssEnvImportFrom`, `postcssEnvStage`, `cssWebpackPostcssLoaderOptions`, and `cssWebpackPostcssLoaderContext`](#hooks) hooks added by this plugin.\n\n#### Jest\n\nIf `@sewing-kit/plugin-jest`’s `jestHooks` plugin is also included for the project, this plugin will use it to configure Jest to treat CSS files as \"identity\" modules — a module where any imported value will be equal to the name of that import as a string. For example, when you write `import styles from './style.css';`, `styles.MyKlass` would be equal to `\"MyKlass\"`. This behavior is generally sufficient for unit tests, where CSS is not typically tested directly anyways.\n\nIf you want to add additional extensions to treat as stylesheets, you can customize the `cssModuleIdentityProxyExtensions` hook provided by this plugin.\n\n#### Options\n\nThe `css()` plugin accepts the following options:\n\n- `cssModules: boolean` (default: `true`). Determines whether this plugin will configure tools to treat imports of CSS files as CSS modules. Setting `cssModules: false` disables the `modules` option on `css-loader` for webpack builds.\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    app.use(css({cssModules: false}));\n  });\n  ```\n\n- `postcss: boolean | {[key: string]: object | boolean}` (default: `true`). Determines whether this plugin will use PostCSS when building this project. Defaults to `true`. If `true`, this plugin will include a default PostCSS plugin based on `postcss-preset-env` to compile your application’s CSS. If an object is passed instead of a boolean, that object should be a mapping of PostCSS plugin name to options, and will be used as the default set of PostCSS transformations to use. Additional plugins can be added with the [`postcssPlugins` hook](#hooks) or the [`postcssPlugins()` sewing-kit plugin](#postcssplugins).\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    // disables postcss processing entirely\n    app.use(css({postcss: false}));\n\n    // alternatively, this enables postcss, and uses this plugin/ options\n    // mapping for configuring PostCSS. Make sure you have any PostCSS\n    // dependencies you declare here installed in your project.\n    app.use(\n      css({\n        postcss: {\n          'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n          'my-company-postcss-plugin': true,\n        },\n      }),\n    );\n  });\n  ```\n\n- `id: string` (default: `'css'`). Used as a unique identifier for some configuration. Don’t change this unless you know what you’re doing.\n\n#### Hooks\n\nThis plugin adds the following hooks to `TestProjectConfigurationHooks`:\n\n- `cssModuleIdentityProxyExtensions`: an array of file extensions to treat as CSS files during tests. As documented below, this plugin will use the result of running this hook to map CSS files to a suitable \"noop\" module during tests, if you also include `@sewing-kit/plugin-jest`’s `jestHooks()` plugin.\n\n  ```tsx\n  import {createWebAppTestPlugin} from '@sewing-kit/config';\n\n  const plugin = createWebAppTestPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // In addition to the default .css, also provide a mock module for .scss\n      // files.\n      configure.cssModuleIdentityProxyExtensions!.hook((extensions) => [\n        ...extensions,\n        '.scss',\n      ]);\n    });\n  });\n  ```\n\nThis plugin adds the following hooks to `BuildProjectConfigurationHooks` and `DevProjectConfigurationHooks`:\n\n- `cssCustomValues`: an array of sources to import custom media from for the default PostCSS plugin. These values will be used by some CSS transformations to provide values in place of custom properties, which are not understood by older browsers. These sources are passed directly to PostCSS’s [`importFrom` option](https://github.com/csstools/postcss-preset-env#importfrom), and so can be a path to a CSS, JavaScript, or JSON file, or an object with `customMedia`, `customProperties`, `customSelectors`, or `environmentVariables` properties.\n\n  ```tsx\n  import * as path from 'path';\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssCustomValues!.hook((values) => [\n        ...values,\n        path.resolve('static/custom-properties.json'),\n      ]);\n    });\n  });\n  ```\n\n- `cssWebpackFileName`: the file name pattern to use when generating static CSS files. Defaults to a format that is optimized for immutably cached assets.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackFileName!.hook(() => 'static.css');\n    });\n  });\n  ```\n\n- `cssWebpackMiniExtractOptions`: options to use when constructing an instance of [`mini-css-extract-plugin`’s `MiniCssExtractPlugin`](https://github.com/webpack-contrib/mini-css-extract-plugin).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackMiniExtractOptions!.hook((options) => ({\n        ...options,\n        publicPath: '/custom/public/path/for/css',\n      }));\n    });\n  });\n  ```\n\n- `cssModuleClassNamePattern`: the pattern to use when generating CSS modules from imported CSS files. Defaults to a name that contains some hints to the original location in development, and otherwise to a short, randomly-generated hash.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // Prefix all CSS modules with \"x-\"\n      configure.cssModuleClassNamePattern!.hook(() => 'x-[hash:base64:5]');\n    });\n  });\n  ```\n\n- `cssWebpackLoaderModule`: the value to use for the [`modules` option in `css-loader`](https://github.com/webpack-contrib/css-loader#modules). By default, this plugin uses CSS modules with a configuration inferred from the `cssModuleClassNamePattern` and details about the project. You can either customize the options in this hook, or return `false` to disable CSS modules entirely.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderModule!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackLoaderOptions`: the options to use for `css-loader`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderOptions!.hook((options) => ({\n        ...options,\n        localsConvention: 'dashesOnly',\n      }));\n    });\n  });\n  ```\n\n- `postcssPlugins`: a mapping of PostCSS plugin package name to options, or to `true` if no custom options are required. If you do not specify any custom options, this plugin will tell PostCSS to follow its [default configuration lookup technique](https://github.com/postcss/postcss-loader#config-cascade) to determine the plugins to use on a given stylesheet. However, using this hook to declare your PostCSS configuration will automatically register the plugins you use as part of various cache keys, and will allow for easier custom configuration per build. The result of mapping the entries in this object to construct the plugin will be used for [`postcss-loader`’s `plugins` option](https://github.com/postcss/postcss-loader#plugins).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssPlugins!.hook(() => ({\n        // This object will be passed to the plugin:\n        //   require('postcss-preset-env')({stage: 3, autoprefixer: {grid: true}})\n        'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n        // We pass it an option *not* to minify, as this sewing-kit plugin will configure minification\n        // as part of Webpack instead.\n        'postcss-plugin-my-company': {minify: false},\n        // `true` is equivalent to an empty object.\n        'postcss-custom-plugin': true,\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvFeatures`: an object mapping the [allowed PostCSS transforms](https://github.com/csstools/postcss-preset-env#features) to its associated options, or to a boolean indicating that the transform should be disabled. This mapping is used to create the `features` option for the default PostCSS plugin; it does not have an effect if you do not use this default (for instance, because you passed a custom set of plugins as the `preset` option to `css()`).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvFeatures!.hook((features) => ({\n        ...features,\n        // Customize the handling of the focus pseudo class transpile behavior\n        'focus-visible-pseudo-class': false,\n        'focus-within-pseudo-class': {replaceWith: ['[focus-inside]']},\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvPreserve`: a boolean indicating whether the default PostCSS preset should preserve the modern syntax in the compiled asset where possible. Defaults to `true`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvPreserve!.hook(() => false);\n    });\n  });\n  ```\n\n- `postcssEnvStage`: determines the standardization stage of CSS features that will be transpiled. This is passed directly as the [`stage` option in `postcss-preset-env`](https://github.com/csstools/postcss-preset-env#stage). Defaults to `2`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvStage!.hook(() => 0);\n    });\n  });\n  ```\n\n- `postcssEnvGrid`: controls how CSS grid will be handled in builds that target older browsers. This option is passed directly to [`autoprefixer`’s `grid` option](https://github.com/postcss/autoprefixer#options). Defaults to `'autoplace'`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvGrid!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderContext`: the context to use for [`postcss-loader`’s configuration](https://github.com/postcss/postcss-loader#context-ctx). This allows you to pass details from the build to your PostCSS configuration. This is generally used instead of `postcssPlugins` if at all, as that hook allows you to directly set options for plugins without needing to rely on this additional context mechanism.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackPostcssLoaderContext!.hook(() => ({\n        // Here, we pass a custom bit of context that will be available to our plugin\n        // (declared in `postcss.config.js`).\n        'postcss-plugin-my-company': {minify: false},\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderOptions`: the options to use for `postcss-loader`. If you have no dedicated PostCSS config file, this hook allows you to specify [`plugins`](https://github.com/postcss/postcss-loader#plugins) directly (and `ident`, if you use function-based configuration).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // use preset-env in postcss\n      configure.cssWebpackPostcssLoaderOptions!.hook((options) => ({\n        ...options,\n        parser: 'sugarss',\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackOptimizeOptions`: the options to use for [`optimize-css-assets-webpack-plugin`](https://github.com/NMFR/optimize-css-assets-webpack-plugin), which is used for production minification of CSS when building with Webpack.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackOptimizeOptions!.hook((options) => ({\n        ...options,\n        cssProcessorPluginOptions: {\n          preset: ['advanced', {discardComments: {removeAll: true}}],\n        },\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackCacheDependencies`: a list of NPM packages to include when generating cache identifiers for CSS builds. You should include any PostCSS plugins you use in this list, as well as any packages you use for preprocessing, like `node-sass` (note that, if you use `@sewing-kit/plugin-sass`, this is done automatically for you).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackCacheDependencies!.hook((dependencies) => [\n        ...dependencies,\n        'postcss-plugin-my-company',\n      ]);\n    });\n  });\n  ```\n\n### `cssCustomValues()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a file or object providing custom values to use for older browsers, as documented for the `cssCustomValues` hook above. You can pass this plugin one such source, an array of sources, or a function that returns sources. This function can also be asynchronous, which can be useful if you need to read whether a particular source is on disk.\n\n```ts\nimport * as path from 'path';\nimport * as fs from 'fs-extra';\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssCustomValues} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssCustomValues(path.resolve('styles/styles.css')),\n    cssCustomValues(async () => {\n      const sources = [path.resolve('build/custom-values.js')];\n\n      if (await fs.exists(path.resolve('overrides/custom-values.json'))) {\n        sources.push(path.resolve('overrides/custom-values.json'));\n      }\n\n      return sources;\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`cssCustomValues` hook provided by the `css()` plugin](#hooks).\n\n### `postcssPlugins()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of PostCSS plugin name to its options. Alternatively, you can pass a function that returns this value, or a promise for such a value.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssPlugins} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    // A mapping of plugin => options\n    postcssPlugins({\n      'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n    }),\n    // Or a function returning the plugin configuration\n    postcssPlugins(() => ({\n      'postcss-plugin-my-company': {minify: false},\n    })),\n    // That function can also return a promise for the plugin configuration\n    postcssPlugins(async () =>\n      (await hasDependency('postcss-custom-plugin'))\n        ? {\n            'postcss-custom-plugin': true,\n          }\n        : {},\n    ),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssPlugins` hook provided by the `css()` plugin](#hooks).\n\n### `postcssEnvFeatures()`\n\nThe `postcssEnvFeatures` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of `postcss-preset-env` transforms to a boolean (indicating whether it is enabled or not) or an object (if the plugin accepts additional options). You can also pass a function that returns this mapping, optionally as a promise.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssEnvFeatures} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    postcssEnvFeatures({\n      'nesting-rules': true,\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssEnvFeatures` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleExtensions()`\n\nThe `cssModuleExtensions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with one or more extensions to treat as stylesheets. Files with these extensions will be [transformed in Jest as documented above](#jest).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleExtensions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css(), cssModuleExtensions(['.scss']));\n});\n```\n\nMore complex customizations of the extensions treated as CSS modules can be done in the [`cssModuleIdentityProxyExtensions` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleClassNamePattern()`\n\nThe `cssModuleClassNamePattern` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with a string representing the [pattern to use for CSS module class names](https://github.com/webpack-contrib/css-loader#localidentname). This plugin automatically uses a good default for all types of projects, so only change this if you have a particular need for the compiled CSS class names.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleClassNamePattern} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  // Will prefix the base64-hashed class names with a consistent string to make\n  // them easier to find in the DOM.\n  app.use(css(), cssModuleClassNamePattern('prefix__[hash:base64]'));\n});\n```\n\nMore complex customizations of the CSS module class name pattern can be done with the [`cssModuleClassNamePattern` hook provided by the `css()` plugin](#hooks).\n\n### `cssWebpackLoaderOptions()`\n\nThe `cssWebpackLoaderOptions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin can be called with additional options to pass to `css-loader`. You can also pass a function that returns these options, or a promise for the options. Be careful, as any values you pass here will directly overwrite the defaults provided by this plugin, and no deep merging is performed.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssWebpackLoaderOptions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssWebpackLoaderOptions({url: true}),\n    cssWebpackLoaderOptions(() => ({importLoaders: 2})),\n  );\n});\n```\n\nMore complex customizations of these options can be done with the [`cssWebpackLoaderModule` and `cssWebpackLoaderOptions` hooks provided by the `css()` plugin](#hooks).\n\n## Utilities\n\n### `createCSSWebpackRuleSet()`\n\nThe `createCSSWebpackRuleSet` function returns a promise for a webpack `RuleSet` that can be used to handle other file types that are treated as stylesheets. It configures all the loaders up to the `postcss-loader`, so additional loaders that compile a file down to CSS can be appended to the end.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {createCSSWebpackRuleSet} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin(\n  'MyPlugin',\n  ({project, api, hooks, options}) => {\n    hooks.configure.hook((configuration) => {\n      // This is a (slightly) simplified version of @sewing-kit/plugin-sass’s use of this\n      // utility to construct its own Webpack rule.\n      configuration.webpackRules?.hook(async (rules) => {\n        const use = await createCSSWebpackRuleSet({\n          // Several options are mandatory to get some of your plugin’s context...\n          api,\n          project,\n          configuration,\n          env: options.simulateEnv,\n          sourceMaps: options.sourceMaps,\n          // Whether PostCSS should be enabled or not. Defaults to true.\n          postcss: true,\n          // Whether to treat the resulting stylesheets as CSS modules. Defaults to true.\n          cssModules: true,\n          // A custom directory to store build caches in. Must **not** be an absolute path.\n          cacheDirectory: 'sass',\n          // Additional dependencies to include for Webpack’s cache-loader.\n          cacheDependencies: ['node-sass'],\n        });\n\n        return [\n          ...rules,\n          {\n            test: /\\.scss$/,\n            use: [...use, {loader: 'node-sass'}],\n          },\n        ];\n      });\n    });\n  },\n);\n```\n\n### `updatePostcssPlugin()`\n\nThe `updatePostcssPlugin` utility returns a function that will update the options for a PostCSS plugin. The resulting function should be passed to the `postcssPlugins` hook.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin with the option\n    // {webpack: true}. This will be merged with any existing options, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', {webpack: true}),\n    );\n  });\n});\n```\n\nThe second argument can also be a function that is called with the current configuration (or an empty object, if no configuration is present), and returns the new configuration to use.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin to add a nested\n    // features['nesting-rules'] = true. If we just passed {features: {'nesting-rules': true}},\n    // we would overwrite the existing `features`, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', (options) => ({\n        ...options,\n        features: {\n          ...(options.features ?? {}),\n          'nesting-rules': true,\n        },\n      })),\n    );\n  });\n});\n```\n\nInstead of a single plugin, the first argument can be an array of plugins instead. The same updating logic will be performed for each plugin, but only the first plugin will be added if none are already enabled. If you do not want any plugins to be added in the case where none are already enabled, you can pass `{addIfMissing: false}` as the third argument.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the postcss-preset-env plugin with the new browser\n    // option, but will not add it if it is missing.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin(\n        ['postcss-preset-env', require.resolve('postcss-preset-env')],\n        {browsers: ['>2%']},\n        {addIfMissing: false},\n      ),\n    );\n  });\n});\n```\n\n### `updatePostcssEnvPreset()`\n\nThis function can be used to update the default PostCSS plugin included for processing CSS, `@sewing-kit/plugin-css/postcss-preset`. The options for this PostCSS are currently the same as [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env#options), and are documented on in that project’s README.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssEnvPreset} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the default environment preset with these options.\n    // Note that the `autoprefixer` and `features` options are deeply merged\n    // with any existing values for those objects.\n    configuration.postcssPlugins?.hook(\n      updatePostcssEnvPreset({\n        preserve: false,\n        autoprefixer: {\n          flexbox: 'no-2009',\n        },\n        features: {\n          'nesting-rules': true,\n        },\n      }),\n    );\n  });\n});\n```\n","gitHead":"f5fa6d416baf099086600d19e0c438b253f468c1","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.7-sk0-sk1-hybrid.3","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.3","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.3","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.3","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.3"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.22-sk0-sk1-hybrid.3_1614619257416_0.8662205406120147","host":"s3://npm-registry-packages"}},"0.1.22-mandatory-extensions.0":{"name":"@sewing-kit/plugin-css","version":"0.1.22-mandatory-extensions.0","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.22-mandatory-extensions.0","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"ca89708a92339e1ce190b598c7835d87c585fe00","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.22-mandatory-extensions.0.tgz","fileCount":45,"integrity":"sha512-PKN90/SGzxCHli61+0v9oRtA2MRKNgc+0e83WAVV3KTiNvCmdlsrDe6S+AdcXwW09ABwWhAn9sKjpGWLSfSxkw==","signatures":[{"sig":"MEUCIQDEUCaimMtIPwbF/pKQU+Bm4p9Bdl0uRFs0s0qSaP6QawIga9oKvkb3GBrXghLWiAQMqrp43s1DjHaDrW//WG/x9rE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":517516,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPWsTCRA9TVsSAnZWagAA/D8P/Agcfn6ohCWCT2q105HZ\nvGRpRoS3bqGRr52tZjsW8uk/F70Qqe3cfG7dAk/sPaMMuhtRCTuVgV9xCcZz\necmJ9r6lW2tYpwp38I1o6sKiNW/BKWZlCrMnpRSqG5wL+gtwk0gyKjoff/KV\nA6nROHhXRONM02EK2s8FLvbEz7t+mufsVGlWzTyvRAst6fOXJwt570g9aAME\niO0vwKPdU7VqKuSJSVLeBegAbpqOV3hmOrZWwT5gExUMv6HFtW/RDDBxEcfU\n0dTrvbQAXNQgx4ygnXcJK7u7y1X6ttELhbOo7PBFe66mHMkkEnzUTe6KmpvT\n/fOyH8B/yT+qVpdqXSuUZLNCIzsUv7VuBJjB40svs4bRHQMDQFulGH39M/hD\nfY2ACxqtzba5edSqI/O+oYny2DjzVkECdN1wPhQo3vdcJPaQ9xUJZmgPlJQb\ngPYsYROR4B1O0v+FB/SmiveD3TXd1rBbuEwTDsEzz9KopjbUcLbHbSE5x40q\nbvFBkCatCGOiSUtv6WSRH9jywkFQkfaXpxlEyi99+DlXPnEhdgIhLA8fOEGh\nRRVOapYOJuWe/NDEZqYYPSasz5sKNE2f3U59cV1iSIzu6TQM3pjRddfsnvG1\nkHNaIgAaCIEQv1iPehFkG5VJq8woyh+inzYyk9c9JwdffJab6i1Ui5OMu+hO\n16i7\r\n=P27g\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# `@sewing-kit/plugin-css`\n\n> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.\n\nThis package provides a collection of `sewing-kit` plugins and other utilities for using CSS. It is build with an emphasis on producing highly-cacheable CSS files in production, and defaults to using [CSS modules](https://github.com/css-modules/css-modules) to avoid CSS naming conflicts. It includes built-in support for using CSS in Webpack and Jest, and for processing CSS using PostCSS.\n\n## Installation\n\n```\nyarn add @sewing-kit/plugin-css --dev\n```\n\n## Plugins\n\n### `css()`\n\nThe `css` function returns a `sewing-kit` plugin. This plugin applies to a single web app or service (packages are not currently supported).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css());\n});\n```\n\nThis plugin will automatically configure a number of tools to handle CSS files imported in your application, including Webpack and Jest. It also adds a number of custom hooks for fine grained control over the configurations used.\n\n#### Webpack\n\nIf `@sewing-kit/plugin-webpack`’s `webpackHooks` plugin is included for this project, this plugin will use it to configure Webpack to support importing `.css` files. The nature of this support depends on the project and environment in which `webpack` is run:\n\n- In any build targeting node, CSS is extracted using the [`onlyLocals` option of `css-loader`](https://github.com/webpack-contrib/css-loader#onlylocals), which extracts mappings for [CSS modules](https://github.com/webpack-contrib/css-loader#modules) but otherwise discards the CSS file.\n- In a build targeting web in a development-like environment, CSS is extracted using `css-loader` and [`style-loader`](https://github.com/webpack-contrib/style-loader). Classes are extracted using [CSS modules](https://github.com/webpack-contrib/css-loader#modules) with a default identifier that should globally scope the final names of the resulting classes. Note that this can result in a flash of unstyled content during development if you do server-side rendering, as styles do not load until the JavaScript for the app has executed.\n- In a build targeting web in a production-like environment, CSS is extracted using `css-loader` and [`mini-css-extract-plugin`](https://github.com/webpack-contrib/mini-css-extract-plugin). This extracts CSS into dedicated files that will be split along the same boundaries as the JavaScript in your application.\n\nFor projects targeting the web, this plugin also adds a customized CSS minifier to Webpack that prevents some potentially dangerous optimizations that are otherwise done by default.\n\nYou can fine-tune many parts of the above configuration using the [`cssWebpackFileName`, `cssWebpackMiniExtractOptions`, `cssModuleClassNamePattern`, `cssWebpackLoaderOptions`, `cssWebpackLoaderModule`, `cssWebpackOptimizeOptions`, and `cssWebpackCacheDependencies` hooks provided by this plugin](#hooks). If you need to generate a Webpack rule for other CSS-like languages that require preprocessing, like Sass, you can use the [`createCSSWebpackRuleSet` utility provided by this plugin](#createCSSWebpackRuleSet).\n\nRegardless of the environment or project, this plugin will also configure [`postcss-loader`](https://github.com/postcss/postcss-loader) to run on `.css` files, and will include a default plugin based on [`postcss-preset-env`](https://preset-env.cssdb.org). If you want to provide custom configuration, you can do so with PostCSS config files as you normally would. You can also customize the `postcss-loader` configuration directly with the [`postcssPlugins`, `cssCustomValues`, `postcssEnvFeatures`, `postcssEnvPreserve`, `postcssEnvImportFrom`, `postcssEnvStage`, `cssWebpackPostcssLoaderOptions`, and `cssWebpackPostcssLoaderContext`](#hooks) hooks added by this plugin.\n\n#### Jest\n\nIf `@sewing-kit/plugin-jest`’s `jestHooks` plugin is also included for the project, this plugin will use it to configure Jest to treat CSS files as \"identity\" modules — a module where any imported value will be equal to the name of that import as a string. For example, when you write `import styles from './style.css';`, `styles.MyKlass` would be equal to `\"MyKlass\"`. This behavior is generally sufficient for unit tests, where CSS is not typically tested directly anyways.\n\nIf you want to add additional extensions to treat as stylesheets, you can customize the `cssModuleIdentityProxyExtensions` hook provided by this plugin.\n\n#### Options\n\nThe `css()` plugin accepts the following options:\n\n- `cssModules: boolean` (default: `true`). Determines whether this plugin will configure tools to treat imports of CSS files as CSS modules. Setting `cssModules: false` disables the `modules` option on `css-loader` for webpack builds.\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    app.use(css({cssModules: false}));\n  });\n  ```\n\n- `postcss: boolean | {[key: string]: object | boolean}` (default: `true`). Determines whether this plugin will use PostCSS when building this project. Defaults to `true`. If `true`, this plugin will include a default PostCSS plugin based on `postcss-preset-env` to compile your application’s CSS. If an object is passed instead of a boolean, that object should be a mapping of PostCSS plugin name to options, and will be used as the default set of PostCSS transformations to use. Additional plugins can be added with the [`postcssPlugins` hook](#hooks) or the [`postcssPlugins()` sewing-kit plugin](#postcssplugins).\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    // disables postcss processing entirely\n    app.use(css({postcss: false}));\n\n    // alternatively, this enables postcss, and uses this plugin/ options\n    // mapping for configuring PostCSS. Make sure you have any PostCSS\n    // dependencies you declare here installed in your project.\n    app.use(\n      css({\n        postcss: {\n          'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n          'my-company-postcss-plugin': true,\n        },\n      }),\n    );\n  });\n  ```\n\n- `id: string` (default: `'css'`). Used as a unique identifier for some configuration. Don’t change this unless you know what you’re doing.\n\n#### Hooks\n\nThis plugin adds the following hooks to `TestProjectConfigurationHooks`:\n\n- `cssModuleIdentityProxyExtensions`: an array of file extensions to treat as CSS files during tests. As documented below, this plugin will use the result of running this hook to map CSS files to a suitable \"noop\" module during tests, if you also include `@sewing-kit/plugin-jest`’s `jestHooks()` plugin.\n\n  ```tsx\n  import {createWebAppTestPlugin} from '@sewing-kit/config';\n\n  const plugin = createWebAppTestPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // In addition to the default .css, also provide a mock module for .scss\n      // files.\n      configure.cssModuleIdentityProxyExtensions!.hook((extensions) => [\n        ...extensions,\n        '.scss',\n      ]);\n    });\n  });\n  ```\n\nThis plugin adds the following hooks to `BuildProjectConfigurationHooks` and `DevProjectConfigurationHooks`:\n\n- `cssCustomValues`: an array of sources to import custom media from for the default PostCSS plugin. These values will be used by some CSS transformations to provide values in place of custom properties, which are not understood by older browsers. These sources are passed directly to PostCSS’s [`importFrom` option](https://github.com/csstools/postcss-preset-env#importfrom), and so can be a path to a CSS, JavaScript, or JSON file, or an object with `customMedia`, `customProperties`, `customSelectors`, or `environmentVariables` properties.\n\n  ```tsx\n  import * as path from 'path';\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssCustomValues!.hook((values) => [\n        ...values,\n        path.resolve('static/custom-properties.json'),\n      ]);\n    });\n  });\n  ```\n\n- `cssWebpackFileName`: the file name pattern to use when generating static CSS files. Defaults to a format that is optimized for immutably cached assets.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackFileName!.hook(() => 'static.css');\n    });\n  });\n  ```\n\n- `cssWebpackMiniExtractOptions`: options to use when constructing an instance of [`mini-css-extract-plugin`’s `MiniCssExtractPlugin`](https://github.com/webpack-contrib/mini-css-extract-plugin).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackMiniExtractOptions!.hook((options) => ({\n        ...options,\n        publicPath: '/custom/public/path/for/css',\n      }));\n    });\n  });\n  ```\n\n- `cssModuleClassNamePattern`: the pattern to use when generating CSS modules from imported CSS files. Defaults to a name that contains some hints to the original location in development, and otherwise to a short, randomly-generated hash.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // Prefix all CSS modules with \"x-\"\n      configure.cssModuleClassNamePattern!.hook(() => 'x-[hash:base64:5]');\n    });\n  });\n  ```\n\n- `cssWebpackLoaderModule`: the value to use for the [`modules` option in `css-loader`](https://github.com/webpack-contrib/css-loader#modules). By default, this plugin uses CSS modules with a configuration inferred from the `cssModuleClassNamePattern` and details about the project. You can either customize the options in this hook, or return `false` to disable CSS modules entirely.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderModule!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackLoaderOptions`: the options to use for `css-loader`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderOptions!.hook((options) => ({\n        ...options,\n        localsConvention: 'dashesOnly',\n      }));\n    });\n  });\n  ```\n\n- `postcssPlugins`: a mapping of PostCSS plugin package name to options, or to `true` if no custom options are required. If you do not specify any custom options, this plugin will tell PostCSS to follow its [default configuration lookup technique](https://github.com/postcss/postcss-loader#config-cascade) to determine the plugins to use on a given stylesheet. However, using this hook to declare your PostCSS configuration will automatically register the plugins you use as part of various cache keys, and will allow for easier custom configuration per build. The result of mapping the entries in this object to construct the plugin will be used for [`postcss-loader`’s `plugins` option](https://github.com/postcss/postcss-loader#plugins).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssPlugins!.hook(() => ({\n        // This object will be passed to the plugin:\n        //   require('postcss-preset-env')({stage: 3, autoprefixer: {grid: true}})\n        'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n        // We pass it an option *not* to minify, as this sewing-kit plugin will configure minification\n        // as part of Webpack instead.\n        'postcss-plugin-my-company': {minify: false},\n        // `true` is equivalent to an empty object.\n        'postcss-custom-plugin': true,\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvFeatures`: an object mapping the [allowed PostCSS transforms](https://github.com/csstools/postcss-preset-env#features) to its associated options, or to a boolean indicating that the transform should be disabled. This mapping is used to create the `features` option for the default PostCSS plugin; it does not have an effect if you do not use this default (for instance, because you passed a custom set of plugins as the `preset` option to `css()`).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvFeatures!.hook((features) => ({\n        ...features,\n        // Customize the handling of the focus pseudo class transpile behavior\n        'focus-visible-pseudo-class': false,\n        'focus-within-pseudo-class': {replaceWith: ['[focus-inside]']},\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvPreserve`: a boolean indicating whether the default PostCSS preset should preserve the modern syntax in the compiled asset where possible. Defaults to `true`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvPreserve!.hook(() => false);\n    });\n  });\n  ```\n\n- `postcssEnvStage`: determines the standardization stage of CSS features that will be transpiled. This is passed directly as the [`stage` option in `postcss-preset-env`](https://github.com/csstools/postcss-preset-env#stage). Defaults to `2`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvStage!.hook(() => 0);\n    });\n  });\n  ```\n\n- `postcssEnvGrid`: controls how CSS grid will be handled in builds that target older browsers. This option is passed directly to [`autoprefixer`’s `grid` option](https://github.com/postcss/autoprefixer#options). Defaults to `'autoplace'`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvGrid!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderContext`: the context to use for [`postcss-loader`’s configuration](https://github.com/postcss/postcss-loader#context-ctx). This allows you to pass details from the build to your PostCSS configuration. This is generally used instead of `postcssPlugins` if at all, as that hook allows you to directly set options for plugins without needing to rely on this additional context mechanism.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackPostcssLoaderContext!.hook(() => ({\n        // Here, we pass a custom bit of context that will be available to our plugin\n        // (declared in `postcss.config.js`).\n        'postcss-plugin-my-company': {minify: false},\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderOptions`: the options to use for `postcss-loader`. If you have no dedicated PostCSS config file, this hook allows you to specify [`plugins`](https://github.com/postcss/postcss-loader#plugins) directly (and `ident`, if you use function-based configuration).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // use preset-env in postcss\n      configure.cssWebpackPostcssLoaderOptions!.hook((options) => ({\n        ...options,\n        parser: 'sugarss',\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackOptimizeOptions`: the options to use for [`optimize-css-assets-webpack-plugin`](https://github.com/NMFR/optimize-css-assets-webpack-plugin), which is used for production minification of CSS when building with Webpack.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackOptimizeOptions!.hook((options) => ({\n        ...options,\n        cssProcessorPluginOptions: {\n          preset: ['advanced', {discardComments: {removeAll: true}}],\n        },\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackCacheDependencies`: a list of NPM packages to include when generating cache identifiers for CSS builds. You should include any PostCSS plugins you use in this list, as well as any packages you use for preprocessing, like `node-sass` (note that, if you use `@sewing-kit/plugin-sass`, this is done automatically for you).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackCacheDependencies!.hook((dependencies) => [\n        ...dependencies,\n        'postcss-plugin-my-company',\n      ]);\n    });\n  });\n  ```\n\n### `cssCustomValues()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a file or object providing custom values to use for older browsers, as documented for the `cssCustomValues` hook above. You can pass this plugin one such source, an array of sources, or a function that returns sources. This function can also be asynchronous, which can be useful if you need to read whether a particular source is on disk.\n\n```ts\nimport * as path from 'path';\nimport * as fs from 'fs-extra';\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssCustomValues} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssCustomValues(path.resolve('styles/styles.css')),\n    cssCustomValues(async () => {\n      const sources = [path.resolve('build/custom-values.js')];\n\n      if (await fs.exists(path.resolve('overrides/custom-values.json'))) {\n        sources.push(path.resolve('overrides/custom-values.json'));\n      }\n\n      return sources;\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`cssCustomValues` hook provided by the `css()` plugin](#hooks).\n\n### `postcssPlugins()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of PostCSS plugin name to its options. Alternatively, you can pass a function that returns this value, or a promise for such a value.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssPlugins} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    // A mapping of plugin => options\n    postcssPlugins({\n      'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n    }),\n    // Or a function returning the plugin configuration\n    postcssPlugins(() => ({\n      'postcss-plugin-my-company': {minify: false},\n    })),\n    // That function can also return a promise for the plugin configuration\n    postcssPlugins(async () =>\n      (await hasDependency('postcss-custom-plugin'))\n        ? {\n            'postcss-custom-plugin': true,\n          }\n        : {},\n    ),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssPlugins` hook provided by the `css()` plugin](#hooks).\n\n### `postcssEnvFeatures()`\n\nThe `postcssEnvFeatures` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of `postcss-preset-env` transforms to a boolean (indicating whether it is enabled or not) or an object (if the plugin accepts additional options). You can also pass a function that returns this mapping, optionally as a promise.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssEnvFeatures} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    postcssEnvFeatures({\n      'nesting-rules': true,\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssEnvFeatures` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleExtensions()`\n\nThe `cssModuleExtensions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with one or more extensions to treat as stylesheets. Files with these extensions will be [transformed in Jest as documented above](#jest).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleExtensions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css(), cssModuleExtensions(['.scss']));\n});\n```\n\nMore complex customizations of the extensions treated as CSS modules can be done in the [`cssModuleIdentityProxyExtensions` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleClassNamePattern()`\n\nThe `cssModuleClassNamePattern` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with a string representing the [pattern to use for CSS module class names](https://github.com/webpack-contrib/css-loader#localidentname). This plugin automatically uses a good default for all types of projects, so only change this if you have a particular need for the compiled CSS class names.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleClassNamePattern} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  // Will prefix the base64-hashed class names with a consistent string to make\n  // them easier to find in the DOM.\n  app.use(css(), cssModuleClassNamePattern('prefix__[hash:base64]'));\n});\n```\n\nMore complex customizations of the CSS module class name pattern can be done with the [`cssModuleClassNamePattern` hook provided by the `css()` plugin](#hooks).\n\n### `cssWebpackLoaderOptions()`\n\nThe `cssWebpackLoaderOptions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin can be called with additional options to pass to `css-loader`. You can also pass a function that returns these options, or a promise for the options. Be careful, as any values you pass here will directly overwrite the defaults provided by this plugin, and no deep merging is performed.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssWebpackLoaderOptions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssWebpackLoaderOptions({url: true}),\n    cssWebpackLoaderOptions(() => ({importLoaders: 2})),\n  );\n});\n```\n\nMore complex customizations of these options can be done with the [`cssWebpackLoaderModule` and `cssWebpackLoaderOptions` hooks provided by the `css()` plugin](#hooks).\n\n## Utilities\n\n### `createCSSWebpackRuleSet()`\n\nThe `createCSSWebpackRuleSet` function returns a promise for a webpack `RuleSet` that can be used to handle other file types that are treated as stylesheets. It configures all the loaders up to the `postcss-loader`, so additional loaders that compile a file down to CSS can be appended to the end.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {createCSSWebpackRuleSet} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin(\n  'MyPlugin',\n  ({project, api, hooks, options}) => {\n    hooks.configure.hook((configuration) => {\n      // This is a (slightly) simplified version of @sewing-kit/plugin-sass’s use of this\n      // utility to construct its own Webpack rule.\n      configuration.webpackRules?.hook(async (rules) => {\n        const use = await createCSSWebpackRuleSet({\n          // Several options are mandatory to get some of your plugin’s context...\n          api,\n          project,\n          configuration,\n          env: options.simulateEnv,\n          sourceMaps: options.sourceMaps,\n          // Whether PostCSS should be enabled or not. Defaults to true.\n          postcss: true,\n          // Whether to treat the resulting stylesheets as CSS modules. Defaults to true.\n          cssModules: true,\n          // A custom directory to store build caches in. Must **not** be an absolute path.\n          cacheDirectory: 'sass',\n          // Additional dependencies to include for Webpack’s cache-loader.\n          cacheDependencies: ['node-sass'],\n        });\n\n        return [\n          ...rules,\n          {\n            test: /\\.scss$/,\n            use: [...use, {loader: 'node-sass'}],\n          },\n        ];\n      });\n    });\n  },\n);\n```\n\n### `updatePostcssPlugin()`\n\nThe `updatePostcssPlugin` utility returns a function that will update the options for a PostCSS plugin. The resulting function should be passed to the `postcssPlugins` hook.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin with the option\n    // {webpack: true}. This will be merged with any existing options, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', {webpack: true}),\n    );\n  });\n});\n```\n\nThe second argument can also be a function that is called with the current configuration (or an empty object, if no configuration is present), and returns the new configuration to use.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin to add a nested\n    // features['nesting-rules'] = true. If we just passed {features: {'nesting-rules': true}},\n    // we would overwrite the existing `features`, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', (options) => ({\n        ...options,\n        features: {\n          ...(options.features ?? {}),\n          'nesting-rules': true,\n        },\n      })),\n    );\n  });\n});\n```\n\nInstead of a single plugin, the first argument can be an array of plugins instead. The same updating logic will be performed for each plugin, but only the first plugin will be added if none are already enabled. If you do not want any plugins to be added in the case where none are already enabled, you can pass `{addIfMissing: false}` as the third argument.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the postcss-preset-env plugin with the new browser\n    // option, but will not add it if it is missing.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin(\n        ['postcss-preset-env', require.resolve('postcss-preset-env')],\n        {browsers: ['>2%']},\n        {addIfMissing: false},\n      ),\n    );\n  });\n});\n```\n\n### `updatePostcssEnvPreset()`\n\nThis function can be used to update the default PostCSS plugin included for processing CSS, `@sewing-kit/plugin-css/postcss-preset`. The options for this PostCSS are currently the same as [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env#options), and are documented on in that project’s README.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssEnvPreset} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the default environment preset with these options.\n    // Note that the `autoprefixer` and `features` options are deeply merged\n    // with any existing values for those objects.\n    configuration.postcssPlugins?.hook(\n      updatePostcssEnvPreset({\n        preserve: false,\n        autoprefixer: {\n          flexbox: 'no-2009',\n        },\n        features: {\n          'nesting-rules': true,\n        },\n      }),\n    );\n  });\n});\n```\n","gitHead":"a58bb5d967a03b6bd1f17793b5b8ebc719cb7ec5","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.7-mandatory-extensions.0","@sewing-kit/plugin-jest":"^0.1.22-mandatory-extensions.0","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.10-mandatory-extensions.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.22-mandatory-extensions.0","@sewing-kit/plugin-webpack":"^0.1.10-mandatory-extensions.0"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.22-mandatory-extensions.0_1614637842883_0.572045010958498","host":"s3://npm-registry-packages"}},"0.1.22-sk0-sk1-hybrid.4":{"name":"@sewing-kit/plugin-css","version":"0.1.22-sk0-sk1-hybrid.4","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.22-sk0-sk1-hybrid.4","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"f500e9e335eaee89379c4337ea1ef9ba4cbcdb19","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.22-sk0-sk1-hybrid.4.tgz","fileCount":45,"integrity":"sha512-VyZl/XFaQsDq+rHF2gs8UvemkSZJOeNo+7EplSrQ1JroW5OqL+DxQkUuz2W9l2+3WL6IWlY9x/MsONRjhI0m1A==","signatures":[{"sig":"MEQCIH9TjZ2Vf2nOrOOgX9MZKzoBTOKWvxJ039vgJLLVGt0NAiAmRVeu3m1sWAS6/vpbcaiEy3c5iHpYq5GI+a4Jgys8ug==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":517474,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgPnj2CRA9TVsSAnZWagAAf6oP/1ISn55l9QnMRjFLFzuW\nswvOq88+XtCtmlnkO5a21yDm3w9CmLIcMklZ62wBIiW/d2sIfi2medCe2W73\nx5ohJgEWmW2JQo9aOSjQdL1OrMx15v7nU4fr+tswOxiqDEgc39a0Io918Ibl\nbZaI979VkMlFiUCBdDykNIT0GeV3Dv7LUaOOBhuGnttQ0klju4xafmJPL9B7\nSgcw4oJTQEiK4xKl8WbrtEVzOfkCSJW8NtWbnGILKqI1QSKeojlnMCpvUP+J\nwOjMNj1fyAGlkEk3mt9VbJTze4HxYmjPBtKiEn76cbyjm5bsZG0rWoDSLRdr\nu19GnXndvP4Y8aqTZsODKKgg0t64bKCwT9CdtS+MgFC+Qe8prHSrgsxqerEe\nOnPaSgRRe87VCWVBHi+sO9W8Vjnh07uW2s1w7fwMrqohreUMDax45/mo6dBz\nYYJkR2WeqciRnInL8q7Ll/cpcTIBP7MtBddNGdUYv6wn/vO3sI18KLCWSkto\nfwBMU9OypQtI29k6+scboxMGJyL+/e4a/oMRYGifOzw+7cf8JAaJDb/7tMV2\n99j5+KGjZhI0El6xWMHltnVBsIa7f7TZtyKm691jqF0XKvNsWIpDu8Bt2al0\nCa4CrK7NRjbX+3YZSE21TgDSSMnhJpaG3dFEohMtmmAKbaCAveOvJ2Flr9Hn\nGpKs\r\n=IaUG\r\n-----END PGP SIGNATURE-----\r\n"},"readme":"# `@sewing-kit/plugin-css`\n\n> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.\n\nThis package provides a collection of `sewing-kit` plugins and other utilities for using CSS. It is build with an emphasis on producing highly-cacheable CSS files in production, and defaults to using [CSS modules](https://github.com/css-modules/css-modules) to avoid CSS naming conflicts. It includes built-in support for using CSS in Webpack and Jest, and for processing CSS using PostCSS.\n\n## Installation\n\n```\nyarn add @sewing-kit/plugin-css --dev\n```\n\n## Plugins\n\n### `css()`\n\nThe `css` function returns a `sewing-kit` plugin. This plugin applies to a single web app or service (packages are not currently supported).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css());\n});\n```\n\nThis plugin will automatically configure a number of tools to handle CSS files imported in your application, including Webpack and Jest. It also adds a number of custom hooks for fine grained control over the configurations used.\n\n#### Webpack\n\nIf `@sewing-kit/plugin-webpack`’s `webpackHooks` plugin is included for this project, this plugin will use it to configure Webpack to support importing `.css` files. The nature of this support depends on the project and environment in which `webpack` is run:\n\n- In any build targeting node, CSS is extracted using the [`onlyLocals` option of `css-loader`](https://github.com/webpack-contrib/css-loader#onlylocals), which extracts mappings for [CSS modules](https://github.com/webpack-contrib/css-loader#modules) but otherwise discards the CSS file.\n- In a build targeting web in a development-like environment, CSS is extracted using `css-loader` and [`style-loader`](https://github.com/webpack-contrib/style-loader). Classes are extracted using [CSS modules](https://github.com/webpack-contrib/css-loader#modules) with a default identifier that should globally scope the final names of the resulting classes. Note that this can result in a flash of unstyled content during development if you do server-side rendering, as styles do not load until the JavaScript for the app has executed.\n- In a build targeting web in a production-like environment, CSS is extracted using `css-loader` and [`mini-css-extract-plugin`](https://github.com/webpack-contrib/mini-css-extract-plugin). This extracts CSS into dedicated files that will be split along the same boundaries as the JavaScript in your application.\n\nFor projects targeting the web, this plugin also adds a customized CSS minifier to Webpack that prevents some potentially dangerous optimizations that are otherwise done by default.\n\nYou can fine-tune many parts of the above configuration using the [`cssWebpackFileName`, `cssWebpackMiniExtractOptions`, `cssModuleClassNamePattern`, `cssWebpackLoaderOptions`, `cssWebpackLoaderModule`, `cssWebpackOptimizeOptions`, and `cssWebpackCacheDependencies` hooks provided by this plugin](#hooks). If you need to generate a Webpack rule for other CSS-like languages that require preprocessing, like Sass, you can use the [`createCSSWebpackRuleSet` utility provided by this plugin](#createCSSWebpackRuleSet).\n\nRegardless of the environment or project, this plugin will also configure [`postcss-loader`](https://github.com/postcss/postcss-loader) to run on `.css` files, and will include a default plugin based on [`postcss-preset-env`](https://preset-env.cssdb.org). If you want to provide custom configuration, you can do so with PostCSS config files as you normally would. You can also customize the `postcss-loader` configuration directly with the [`postcssPlugins`, `cssCustomValues`, `postcssEnvFeatures`, `postcssEnvPreserve`, `postcssEnvImportFrom`, `postcssEnvStage`, `cssWebpackPostcssLoaderOptions`, and `cssWebpackPostcssLoaderContext`](#hooks) hooks added by this plugin.\n\n#### Jest\n\nIf `@sewing-kit/plugin-jest`’s `jestHooks` plugin is also included for the project, this plugin will use it to configure Jest to treat CSS files as \"identity\" modules — a module where any imported value will be equal to the name of that import as a string. For example, when you write `import styles from './style.css';`, `styles.MyKlass` would be equal to `\"MyKlass\"`. This behavior is generally sufficient for unit tests, where CSS is not typically tested directly anyways.\n\nIf you want to add additional extensions to treat as stylesheets, you can customize the `cssModuleIdentityProxyExtensions` hook provided by this plugin.\n\n#### Options\n\nThe `css()` plugin accepts the following options:\n\n- `cssModules: boolean` (default: `true`). Determines whether this plugin will configure tools to treat imports of CSS files as CSS modules. Setting `cssModules: false` disables the `modules` option on `css-loader` for webpack builds.\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    app.use(css({cssModules: false}));\n  });\n  ```\n\n- `postcss: boolean | {[key: string]: object | boolean}` (default: `true`). Determines whether this plugin will use PostCSS when building this project. Defaults to `true`. If `true`, this plugin will include a default PostCSS plugin based on `postcss-preset-env` to compile your application’s CSS. If an object is passed instead of a boolean, that object should be a mapping of PostCSS plugin name to options, and will be used as the default set of PostCSS transformations to use. Additional plugins can be added with the [`postcssPlugins` hook](#hooks) or the [`postcssPlugins()` sewing-kit plugin](#postcssplugins).\n\n  ```ts\n  import {createWebApp} from '@sewing-kit/config';\n  import {css} from '@sewing-kit/plugin-css';\n\n  export default createWebApp((app) => {\n    // disables postcss processing entirely\n    app.use(css({postcss: false}));\n\n    // alternatively, this enables postcss, and uses this plugin/ options\n    // mapping for configuring PostCSS. Make sure you have any PostCSS\n    // dependencies you declare here installed in your project.\n    app.use(\n      css({\n        postcss: {\n          'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n          'my-company-postcss-plugin': true,\n        },\n      }),\n    );\n  });\n  ```\n\n- `id: string` (default: `'css'`). Used as a unique identifier for some configuration. Don’t change this unless you know what you’re doing.\n\n#### Hooks\n\nThis plugin adds the following hooks to `TestProjectConfigurationHooks`:\n\n- `cssModuleIdentityProxyExtensions`: an array of file extensions to treat as CSS files during tests. As documented below, this plugin will use the result of running this hook to map CSS files to a suitable \"noop\" module during tests, if you also include `@sewing-kit/plugin-jest`’s `jestHooks()` plugin.\n\n  ```tsx\n  import {createWebAppTestPlugin} from '@sewing-kit/config';\n\n  const plugin = createWebAppTestPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // In addition to the default .css, also provide a mock module for .scss\n      // files.\n      configure.cssModuleIdentityProxyExtensions!.hook((extensions) => [\n        ...extensions,\n        '.scss',\n      ]);\n    });\n  });\n  ```\n\nThis plugin adds the following hooks to `BuildProjectConfigurationHooks` and `DevProjectConfigurationHooks`:\n\n- `cssCustomValues`: an array of sources to import custom media from for the default PostCSS plugin. These values will be used by some CSS transformations to provide values in place of custom properties, which are not understood by older browsers. These sources are passed directly to PostCSS’s [`importFrom` option](https://github.com/csstools/postcss-preset-env#importfrom), and so can be a path to a CSS, JavaScript, or JSON file, or an object with `customMedia`, `customProperties`, `customSelectors`, or `environmentVariables` properties.\n\n  ```tsx\n  import * as path from 'path';\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssCustomValues!.hook((values) => [\n        ...values,\n        path.resolve('static/custom-properties.json'),\n      ]);\n    });\n  });\n  ```\n\n- `cssWebpackFileName`: the file name pattern to use when generating static CSS files. Defaults to a format that is optimized for immutably cached assets.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackFileName!.hook(() => 'static.css');\n    });\n  });\n  ```\n\n- `cssWebpackMiniExtractOptions`: options to use when constructing an instance of [`mini-css-extract-plugin`’s `MiniCssExtractPlugin`](https://github.com/webpack-contrib/mini-css-extract-plugin).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackMiniExtractOptions!.hook((options) => ({\n        ...options,\n        publicPath: '/custom/public/path/for/css',\n      }));\n    });\n  });\n  ```\n\n- `cssModuleClassNamePattern`: the pattern to use when generating CSS modules from imported CSS files. Defaults to a name that contains some hints to the original location in development, and otherwise to a short, randomly-generated hash.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // Prefix all CSS modules with \"x-\"\n      configure.cssModuleClassNamePattern!.hook(() => 'x-[hash:base64:5]');\n    });\n  });\n  ```\n\n- `cssWebpackLoaderModule`: the value to use for the [`modules` option in `css-loader`](https://github.com/webpack-contrib/css-loader#modules). By default, this plugin uses CSS modules with a configuration inferred from the `cssModuleClassNamePattern` and details about the project. You can either customize the options in this hook, or return `false` to disable CSS modules entirely.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderModule!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackLoaderOptions`: the options to use for `css-loader`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackLoaderOptions!.hook((options) => ({\n        ...options,\n        localsConvention: 'dashesOnly',\n      }));\n    });\n  });\n  ```\n\n- `postcssPlugins`: a mapping of PostCSS plugin package name to options, or to `true` if no custom options are required. If you do not specify any custom options, this plugin will tell PostCSS to follow its [default configuration lookup technique](https://github.com/postcss/postcss-loader#config-cascade) to determine the plugins to use on a given stylesheet. However, using this hook to declare your PostCSS configuration will automatically register the plugins you use as part of various cache keys, and will allow for easier custom configuration per build. The result of mapping the entries in this object to construct the plugin will be used for [`postcss-loader`’s `plugins` option](https://github.com/postcss/postcss-loader#plugins).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssPlugins!.hook(() => ({\n        // This object will be passed to the plugin:\n        //   require('postcss-preset-env')({stage: 3, autoprefixer: {grid: true}})\n        'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n        // We pass it an option *not* to minify, as this sewing-kit plugin will configure minification\n        // as part of Webpack instead.\n        'postcss-plugin-my-company': {minify: false},\n        // `true` is equivalent to an empty object.\n        'postcss-custom-plugin': true,\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvFeatures`: an object mapping the [allowed PostCSS transforms](https://github.com/csstools/postcss-preset-env#features) to its associated options, or to a boolean indicating that the transform should be disabled. This mapping is used to create the `features` option for the default PostCSS plugin; it does not have an effect if you do not use this default (for instance, because you passed a custom set of plugins as the `preset` option to `css()`).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvFeatures!.hook((features) => ({\n        ...features,\n        // Customize the handling of the focus pseudo class transpile behavior\n        'focus-visible-pseudo-class': false,\n        'focus-within-pseudo-class': {replaceWith: ['[focus-inside]']},\n      }));\n    });\n  });\n  ```\n\n- `postcssEnvPreserve`: a boolean indicating whether the default PostCSS preset should preserve the modern syntax in the compiled asset where possible. Defaults to `true`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvPreserve!.hook(() => false);\n    });\n  });\n  ```\n\n- `postcssEnvStage`: determines the standardization stage of CSS features that will be transpiled. This is passed directly as the [`stage` option in `postcss-preset-env`](https://github.com/csstools/postcss-preset-env#stage). Defaults to `2`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvStage!.hook(() => 0);\n    });\n  });\n  ```\n\n- `postcssEnvGrid`: controls how CSS grid will be handled in builds that target older browsers. This option is passed directly to [`autoprefixer`’s `grid` option](https://github.com/postcss/autoprefixer#options). Defaults to `'autoplace'`.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.postcssEnvGrid!.hook(() => false);\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderContext`: the context to use for [`postcss-loader`’s configuration](https://github.com/postcss/postcss-loader#context-ctx). This allows you to pass details from the build to your PostCSS configuration. This is generally used instead of `postcssPlugins` if at all, as that hook allows you to directly set options for plugins without needing to rely on this additional context mechanism.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackPostcssLoaderContext!.hook(() => ({\n        // Here, we pass a custom bit of context that will be available to our plugin\n        // (declared in `postcss.config.js`).\n        'postcss-plugin-my-company': {minify: false},\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackPostcssLoaderOptions`: the options to use for `postcss-loader`. If you have no dedicated PostCSS config file, this hook allows you to specify [`plugins`](https://github.com/postcss/postcss-loader#plugins) directly (and `ident`, if you use function-based configuration).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      // use preset-env in postcss\n      configure.cssWebpackPostcssLoaderOptions!.hook((options) => ({\n        ...options,\n        parser: 'sugarss',\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackOptimizeOptions`: the options to use for [`optimize-css-assets-webpack-plugin`](https://github.com/NMFR/optimize-css-assets-webpack-plugin), which is used for production minification of CSS when building with Webpack.\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackOptimizeOptions!.hook((options) => ({\n        ...options,\n        cssProcessorPluginOptions: {\n          preset: ['advanced', {discardComments: {removeAll: true}}],\n        },\n      }));\n    });\n  });\n  ```\n\n- `cssWebpackCacheDependencies`: a list of NPM packages to include when generating cache identifiers for CSS builds. You should include any PostCSS plugins you use in this list, as well as any packages you use for preprocessing, like `node-sass` (note that, if you use `@sewing-kit/plugin-sass`, this is done automatically for you).\n\n  ```tsx\n  import {createProjectBuildPlugin} from '@sewing-kit/config';\n\n  const plugin = createProjectBuildPlugin(({hooks}) => {\n    hooks.configure.hook((configure) => {\n      configure.cssWebpackCacheDependencies!.hook((dependencies) => [\n        ...dependencies,\n        'postcss-plugin-my-company',\n      ]);\n    });\n  });\n  ```\n\n### `cssCustomValues()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a file or object providing custom values to use for older browsers, as documented for the `cssCustomValues` hook above. You can pass this plugin one such source, an array of sources, or a function that returns sources. This function can also be asynchronous, which can be useful if you need to read whether a particular source is on disk.\n\n```ts\nimport * as path from 'path';\nimport * as fs from 'fs-extra';\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssCustomValues} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssCustomValues(path.resolve('styles/styles.css')),\n    cssCustomValues(async () => {\n      const sources = [path.resolve('build/custom-values.js')];\n\n      if (await fs.exists(path.resolve('overrides/custom-values.json'))) {\n        sources.push(path.resolve('overrides/custom-values.json'));\n      }\n\n      return sources;\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`cssCustomValues` hook provided by the `css()` plugin](#hooks).\n\n### `postcssPlugins()`\n\nThe `postcssPlugins` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of PostCSS plugin name to its options. Alternatively, you can pass a function that returns this value, or a promise for such a value.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssPlugins} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    // A mapping of plugin => options\n    postcssPlugins({\n      'postcss-preset-env': {stage: 3, autoprefixer: {grid: true}},\n    }),\n    // Or a function returning the plugin configuration\n    postcssPlugins(() => ({\n      'postcss-plugin-my-company': {minify: false},\n    })),\n    // That function can also return a promise for the plugin configuration\n    postcssPlugins(async () =>\n      (await hasDependency('postcss-custom-plugin'))\n        ? {\n            'postcss-custom-plugin': true,\n          }\n        : {},\n    ),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssPlugins` hook provided by the `css()` plugin](#hooks).\n\n### `postcssEnvFeatures()`\n\nThe `postcssEnvFeatures` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the [`css()` plugin](#css) as well. You pass this function a mapping of `postcss-preset-env` transforms to a boolean (indicating whether it is enabled or not) or an object (if the plugin accepts additional options). You can also pass a function that returns this mapping, optionally as a promise.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, postcssEnvFeatures} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    postcssEnvFeatures({\n      'nesting-rules': true,\n    }),\n  );\n});\n```\n\nMore complex customizations of the PostCSS plugins can be done with the [`postcssEnvFeatures` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleExtensions()`\n\nThe `cssModuleExtensions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with one or more extensions to treat as stylesheets. Files with these extensions will be [transformed in Jest as documented above](#jest).\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleExtensions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(css(), cssModuleExtensions(['.scss']));\n});\n```\n\nMore complex customizations of the extensions treated as CSS modules can be done in the [`cssModuleIdentityProxyExtensions` hook provided by the `css()` plugin](#hooks).\n\n### `cssModuleClassNamePattern()`\n\nThe `cssModuleClassNamePattern` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin should be called with a string representing the [pattern to use for CSS module class names](https://github.com/webpack-contrib/css-loader#localidentname). This plugin automatically uses a good default for all types of projects, so only change this if you have a particular need for the compiled CSS class names.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssModuleClassNamePattern} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  // Will prefix the base64-hashed class names with a consistent string to make\n  // them easier to find in the DOM.\n  app.use(css(), cssModuleClassNamePattern('prefix__[hash:base64]'));\n});\n```\n\nMore complex customizations of the CSS module class name pattern can be done with the [`cssModuleClassNamePattern` hook provided by the `css()` plugin](#hooks).\n\n### `cssWebpackLoaderOptions()`\n\nThe `cssWebpackLoaderOptions` function returns a `sewing-kit` plugin that applies to a project. To include this plugin, you **must** include the `css()` plugin as well. This plugin can be called with additional options to pass to `css-loader`. You can also pass a function that returns these options, or a promise for the options. Be careful, as any values you pass here will directly overwrite the defaults provided by this plugin, and no deep merging is performed.\n\n```ts\nimport {createWebApp} from '@sewing-kit/config';\nimport {css, cssWebpackLoaderOptions} from '@sewing-kit/plugin-css';\n\nexport default createWebApp((app) => {\n  app.use(\n    css(),\n    cssWebpackLoaderOptions({url: true}),\n    cssWebpackLoaderOptions(() => ({importLoaders: 2})),\n  );\n});\n```\n\nMore complex customizations of these options can be done with the [`cssWebpackLoaderModule` and `cssWebpackLoaderOptions` hooks provided by the `css()` plugin](#hooks).\n\n## Utilities\n\n### `createCSSWebpackRuleSet()`\n\nThe `createCSSWebpackRuleSet` function returns a promise for a webpack `RuleSet` that can be used to handle other file types that are treated as stylesheets. It configures all the loaders up to the `postcss-loader`, so additional loaders that compile a file down to CSS can be appended to the end.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {createCSSWebpackRuleSet} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin(\n  'MyPlugin',\n  ({project, api, hooks, options}) => {\n    hooks.configure.hook((configuration) => {\n      // This is a (slightly) simplified version of @sewing-kit/plugin-sass’s use of this\n      // utility to construct its own Webpack rule.\n      configuration.webpackRules?.hook(async (rules) => {\n        const use = await createCSSWebpackRuleSet({\n          // Several options are mandatory to get some of your plugin’s context...\n          api,\n          project,\n          configuration,\n          env: options.simulateEnv,\n          sourceMaps: options.sourceMaps,\n          // Whether PostCSS should be enabled or not. Defaults to true.\n          postcss: true,\n          // Whether to treat the resulting stylesheets as CSS modules. Defaults to true.\n          cssModules: true,\n          // A custom directory to store build caches in. Must **not** be an absolute path.\n          cacheDirectory: 'sass',\n          // Additional dependencies to include for Webpack’s cache-loader.\n          cacheDependencies: ['node-sass'],\n        });\n\n        return [\n          ...rules,\n          {\n            test: /\\.scss$/,\n            use: [...use, {loader: 'node-sass'}],\n          },\n        ];\n      });\n    });\n  },\n);\n```\n\n### `updatePostcssPlugin()`\n\nThe `updatePostcssPlugin` utility returns a function that will update the options for a PostCSS plugin. The resulting function should be passed to the `postcssPlugins` hook.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin with the option\n    // {webpack: true}. This will be merged with any existing options, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', {webpack: true}),\n    );\n  });\n});\n```\n\nThe second argument can also be a function that is called with the current configuration (or an empty object, if no configuration is present), and returns the new configuration to use.\n\n```ts\nimport {createProjectBuildPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectBuildPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the @my-company/postcss-plugin plugin to add a nested\n    // features['nesting-rules'] = true. If we just passed {features: {'nesting-rules': true}},\n    // we would overwrite the existing `features`, if any.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin('@my-company/postcss-plugin', (options) => ({\n        ...options,\n        features: {\n          ...(options.features ?? {}),\n          'nesting-rules': true,\n        },\n      })),\n    );\n  });\n});\n```\n\nInstead of a single plugin, the first argument can be an array of plugins instead. The same updating logic will be performed for each plugin, but only the first plugin will be added if none are already enabled. If you do not want any plugins to be added in the case where none are already enabled, you can pass `{addIfMissing: false}` as the third argument.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssPlugin} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the postcss-preset-env plugin with the new browser\n    // option, but will not add it if it is missing.\n    configuration.postcssPlugins?.hook(\n      updatePostcssPlugin(\n        ['postcss-preset-env', require.resolve('postcss-preset-env')],\n        {browsers: ['>2%']},\n        {addIfMissing: false},\n      ),\n    );\n  });\n});\n```\n\n### `updatePostcssEnvPreset()`\n\nThis function can be used to update the default PostCSS plugin included for processing CSS, `@sewing-kit/plugin-css/postcss-preset`. The options for this PostCSS are currently the same as [`postcss-preset-env`](https://github.com/csstools/postcss-preset-env#options), and are documented on in that project’s README.\n\n```ts\nimport {createProjectDevPlugin} from '@sewing-kit/config';\nimport {updatePostcssEnvPreset} from '@sewing-kit/plugin-css';\n\nconst plugin = createProjectDevPlugin('MyPlugin', ({hooks}) => {\n  hooks.configure.hook((configuration) => {\n    // This will update the default environment preset with these options.\n    // Note that the `autoprefixer` and `features` options are deeply merged\n    // with any existing values for those objects.\n    configuration.postcssPlugins?.hook(\n      updatePostcssEnvPreset({\n        preserve: false,\n        autoprefixer: {\n          flexbox: 'no-2009',\n        },\n        features: {\n          'nesting-rules': true,\n        },\n      }),\n    );\n  });\n});\n```\n","gitHead":"66bec50dbf92ef0f8ce2b3ea2b008da7d91c082d","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.7-sk0-sk1-hybrid.4","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.4","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.4","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"readmeFilename":"README.md","optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.22-sk0-sk1-hybrid.4","@sewing-kit/plugin-webpack":"^0.1.10-sk0-sk1-hybrid.4"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.22-sk0-sk1-hybrid.4_1614706933937_0.26913922474101026","host":"s3://npm-registry-packages"}},"0.1.22":{"name":"@sewing-kit/plugin-css","version":"0.1.22","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.22","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"1fda96525c3cea9aa3c8f57bca0bff21a7bf303c","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.22.tgz","fileCount":45,"integrity":"sha512-oBcZPTKQhKrzMqFAgYEAfR/26uyCllrePwBkn4w0yYAqgTWVBV2qHjHJDllzoMLV0RH0LTDoGJ386S4phILgkg==","signatures":[{"sig":"MEQCIBpxJdnzZ+FMZY3qOZCgdur9g4Il7UQUwlljlO3dyJI/AiA84hB4EuoyrAOEMVB4sKXlNz/B37ORnFrAezVnVqq2GQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":517424,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgP9uTCRA9TVsSAnZWagAACbwP/RzjwFgWpDWcQT1dfeD5\nG5JFAolF75lsGDgSOgFpSte9bDoK5pql8fJCS7tgoJaScKJMgbJhqO7uLp2M\nH56PbWgZKOXuc61mf2tmidx1JW5ck689VPng5ZjahDADjBoZXMiZmGGxdtom\nFrYK1jGXlMJiKniGV6+CbSZMrQIseRUH6BmxU5bzjvnCUyGhdIMWBrNAQkJ0\nC+mYuoH+QxocYLz807hsGNxC5QE7a7Ahy6ysnV70PZuwDvDEgIhkKRD+SZ2d\n2PAOIkAGnLyAobNKjbhACu43cTY7P0ddIvHdN+0UwrBRJgSFObc2xRrix3mA\na1ieGZnjxoTwrK+XSV63s7UzHQVBRtmPp2/n34J/qHw4t5XdlsIGqobd5N1U\nUbYHWsnvgO5NhXe+7wgKBBkdGTHbjRm3V7l0utR16luUogG2vLwxQBY1InlN\nL0Z49wS1KNEwMPjuLucNMa7PsbpB/zrJTVD1zeMjjzt/PF+xURrso5Dq4aDY\nemsRxGCfuw2LRtAKVEg1W+4xr2L0d7khbtrfMgb1j6hXSxFhpYJFHyW74IJU\nEZXf+CVItbry1l23sQg91NogPRGIzHpcr591AxDunjL9YNxtj+7cNx9rFCOR\nLqkqPsIxJeAjoMADiARd5NrVf6a0e3CC8vaCL1jnDSW28Sa/HjMD9nwNUZz/\n0MRQ\r\n=BcW7\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"cfd9415223b3ab3e561c52da2a9b31ec70fc7284","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.7","@sewing-kit/plugin-jest":"^0.1.22","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.10","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.22","@sewing-kit/plugin-webpack":"^0.1.10"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.22_1614797714346_0.450617988047185","host":"s3://npm-registry-packages"}},"0.1.23":{"name":"@sewing-kit/plugin-css","version":"0.1.23","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.23","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"aa6ed427cb24a9ed0cb5baf5ae4f9086a2674334","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.23.tgz","fileCount":46,"integrity":"sha512-2AiXRCrD3+eGEMdqL0Wi5wPTXJdtk+rKENA+y4nSDrMCArsNzxsAt4jvLl2Yb/miVdR9baJoWStWGcLpeRzEJg==","signatures":[{"sig":"MEUCIQDr4wynNp48kjeFGKcQfWhze9Haup05dJbZbnahfwyRRwIgVoA/1s8cp5ZSq3ZCbd+FWcysiAFJMPO8Y42iGK9ozRA=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":517818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgZJgGCRA9TVsSAnZWagAAhDAP/iZ5hBFKkxDRFoEh+E9Y\nG4GAsJRhX/gXB/STV7dy5Ag8mNcbnm6MLN2fVGtzonWB7FVaoffxPs7Ae7MX\nuU1aex/f/yScyQhSqBZOaV+NKAiGd64mPFADPoCLf3/yqrf5BMOmkxIbOpTx\nay/9pLqlNGwjC0cLydOk07rxX9nnmWIeKNogOtc6HOdcFCc8xbLIelNtg3d8\nfMIh7m5oud3IywoJ+tW7ocCN0MU5hTEteVeit3HM6whyOdpwq5RKV6wn0129\nvZ+xqiuR0qQJbkj/JhuqQLHE+Fi/G+ylJyqFzq712hk8dS76w/61vSQ6LHxM\nnl/+jVYSWPs1cNdqzLiycrrXIHwb9aPbQ7yVkS7J9AmXs2C2SdcHgTU7n6SK\n/pL0/Uogr7wJPm1m80dRqq6U6HaJiT39AxW8Coz6xlWDZxa0v9UZSqe1c4DJ\njRxqVDzWs8LrjrJoWJIVjEKcpWCEjYcrHwWBc7KEBEOIVsGBWAsNzJnaeRXz\nZck0VZfhNfgexf0qy/Cjj2jMpOuOqSOcnWBHUJzbuiNigZdzgfOAM5lI29EJ\nAhyisSQQGpr6SmHCxgePGgazOQUJLzebnxPX/wYhyNdbhbTi5nrhiEvhJrJ+\n9vRxr07JCmlrtmb408+ngQ1tlNmWtsiGVnDWIwZ+0CsMfc02nFFWFmpW7jHS\nICET\r\n=l4zg\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"21aa22517dc984dd2562a15cfb6547125c90ead2","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.8","@sewing-kit/plugin-jest":"^0.1.23","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.11","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.23","@sewing-kit/plugin-webpack":"^0.1.11"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.23_1617205253846_0.8322962114330894","host":"s3://npm-registry-packages"}},"0.1.24":{"name":"@sewing-kit/plugin-css","version":"0.1.24","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.24","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"30f29be7a9e77e9fa9482f1016098900866472ea","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.24.tgz","fileCount":46,"integrity":"sha512-X97OWXKdhujS0kEkxTSX11rxim8pOMXOEPDs3k6M8IrQ/qBhePw+hmICh73q/aUUQ+sj1xOH/D5AF5QD/Gz7pg==","signatures":[{"sig":"MEUCIDSFc5MfOhkB94NV4A0cvCDa6CEt+TjMnF9pfZ+d7S71AiEAsdS7ZJZE6rGVLgrxxGVr2D8w2lSSIofTBde+C1TF/H8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":518203,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbLsQCRA9TVsSAnZWagAA0KkP/23diyp3QsKMkY0ltBvB\nbvw/pe4UlLgEUh5g++5J1VUtJYHpx0Rb0MtNoNKt3+7p8FGjKJJjYFzC8JQx\nJhHeLHqMy0z49WRoCAUMksJr0WOi+ed38Oud919T0HwQco8H26cEpEbOIeJ+\n6/fHvIzMhjkPGS/C9QoCmqRtp9a/Gry8/f8Zywtqryk64FEVS/6DcKCS6RKl\nNLwrCHrqHZEJINz2sCKFhyNg1kWN4KC21rOtJOruOq0b2nlvFYOjYpETMDX9\nbC30hTo35h4JB87SDIzUQlm80oMrcswi9BnA4ePSR5mlNUjt2cILD1ZaPopk\ncqumUQL3S9IOm+/tIsxkai9y/HluQQJzuTaVUZU4DcIk2rc+HFiq7uEkKD6Q\ne+h9yWz0zkEGLzhYhevfJqvC1tphKYKZHSEg3iExBtrSv1mGMYrGUX29Z2t2\nHnJ7b4eqhoDL2GJgEZjS0fpi+irwKSnUNaQ2mhQxEewHZGMLcOr4dP4ewRIf\nU2ako3rqxLSh01Gj+TocR0D7UizjFAXTS8695Ra7ece1V3CZnY30+KBZER10\n7g+inF1t6km4cdVAM4v8ewvDhimDgbCAF4WpRGMZ9rHJIjcmrWp0Ud/ixwr4\nkSUhsG689Jz2x38XWLgRgCm5Paw2Y4PBt+A8gzfine4esSDDDfAlnzLZuuQE\nPRpz\r\n=MIY4\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"88b2abd0de97863b14edd4cc29c5c97aa977e778","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","webpack":">=4 <5","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.9","@sewing-kit/plugin-jest":"^0.1.24","mini-css-extract-plugin":"^0.9.0","@sewing-kit/plugin-webpack":"^0.1.12","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"optionalDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.24","@sewing-kit/plugin-webpack":"^0.1.12"},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.24_1617738512044_0.37040938575934135","host":"s3://npm-registry-packages"}},"0.1.25":{"name":"@sewing-kit/plugin-css","version":"0.1.25","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.25","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"46a2d5f70250c987e034008d6513d2f94f48fd90","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.25.tgz","fileCount":46,"integrity":"sha512-FF48zJgZ1SsFCB0HHNflrdDzE1K7YQvVMBKzAIPnaYlsRWPQwJ5jtSBx4gL/y9cMKZrng7SFtojPLr8fLy5rgA==","signatures":[{"sig":"MEUCIECFfdAPDAgTPXnRWNmmhQ+WmkfM85Egg4Do8LSCdr0lAiEAjlwJ3ePNODXViaFMyePVoUbzyRj1DeV8i+udDBUWKTI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":518568,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgbTyDCRA9TVsSAnZWagAAiScQAJUHfM2inbCmKsyXp8Kk\nByFskiStR3ufStPUpyQf2F5jLoiW48ynoepoFVGufWAUQO17oqMq3MqKKE46\nyl4Kp6PR4cHJn/uBfxjB6S0Jq4GvzeJxGjTbNllURpK6uLnU8lVGbeNJYFXb\n5YkzJFxqYhDTeEDJt0BpqVvv8XIFeLuiKzk4kVXqr/kH4euhYZ6qjDplA/X1\njpXKS3wmYlTFOLXVVqZOqngN1FsXtoqHrcl7B2O+rQbfZjUpy8fEOXLmh32N\nogro1ebSw2bKnGiZUbj/90fZFnIAK7AkUKfjHdmF5WOh2sGANeso1PGPrTFt\nUItnoDfUOyCF5Z0gmAztzgSbqW8IdzI9rzToiXdACuCXb9v/oBBT0FYaadSF\nbATVLfxFZLw7zotrDAoLccuRFbtsd0LtE3Q4vV7I77429nHXcXLV7KkV8s89\nSThdJ8ofvxMgxs1rHLR57jLd/7vAtMXXiQeYfxke+tYQRCD/CAg57PUu0Xjn\ndWP8kHotb3lXLBzM2W9SaRJRmtW9qOxTb1s+l+MrdOuEVoZB1/H/aYwAoShJ\nCAGqweO3lTNu1xCXSwbksqAFqllz287dpZmiX0iB+U9JyiQbZHORakIiUSC+\nt8UuQKxqcNmSajkaHgjcnkd1/Io2VTb45ICvSyySYdh5a+qTy05OchI1maqD\nwVHr\r\n=IfLS\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"d3d4cebe874076021bbe1c1280d70d89c1b5b5fd","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.0+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.0","dependencies":{"postcss":"^7.0.27","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.9","mini-css-extract-plugin":"^0.9.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.24","@sewing-kit/plugin-webpack":"^0.1.12"},"peerDependenciesMeta":{"webpack":{"optional":true},"@sewing-kit/plugin-jest":{"optional":true},"@sewing-kit/plugin-webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.25_1617771650829_0.13953276099506118","host":"s3://npm-registry-packages"}},"0.1.26":{"name":"@sewing-kit/plugin-css","version":"0.1.26","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.26","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"40a0213c9ae4d6571998cb5142802ea9b9f8d19c","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.26.tgz","fileCount":46,"integrity":"sha512-3TACFEFzEqvXRbpqrV2MtP0tYzJgTAbCmY+pizTCHYt/Whxnt5ueQcs5oVNdKTlBoCNglaSr3zYs6fva3okJVQ==","signatures":[{"sig":"MEYCIQCgm0pLAxgFWqPDxdcesBkjO/vyzjNS/Wq/XRXJxmVSvAIhAMEo6ZTnv7Qi9aOAKkx7K75VT2t2+ijDNI1qrejKlUPv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":518638,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgd1EoCRA9TVsSAnZWagAAV5UP/2kcPDlzTRykE9pOFrCV\n6JtwlIqJuDNmZnMUCeHXbP849k4LFlkrzCZQnWJeFmLiMQqeCOjRlW8GDi+R\nR0VxutrVUlgoKkWydy0yW8gNcRBWlMAk0myck06SgUmb2UEPgJzqK7u7yuHl\nXzLvzQk4hXsUaGac1KGSY0dP5BnsodmZsGTqAfAhkiAyJql0SXYBsRPNulb+\n/TJU7Mpt6+SRGC3STDmxdux98lM6RCPSIsyK6F41OdDg2wF9NyLlJCvwOELD\nhU0ZIkrVFaSUQTiAYieMzC0F5DLCIcTPu6FQ+23J6+FCCzBIM6wuYwlm8vSt\ntr5IxsDcs35P3geubESgjsGnw8vCnl9iNtis/klPH42gXGTd5UzVSO9uMHNw\n+FxcQSu9oc0x9WxcjMS+qwFn2f/BVxzuJYSjIiZfjzc8D1tjHz0OzOO99ME0\nEClJ7Z1nYFi6GUFCHpgoBEFR5BiqtTyie2fX5M6jiCaxCltQffrrthkBfiNF\najVGss3rmYIUKVHVqQofj3KkvDz8bnXVcbt2z21PB4irXRicXpVQ3XL+P1b/\npmRS4l1gGeJ/TYfVj3aTV51wWvQE8pSmH64gj9XcepHh5mXYFho4Crbph717\nsYzCyplzzpDHJ2CD3C/2tAElO5hz/HJnzVyQZkATC/VTE1oUjJ5/lnCSux28\nIKS4\r\n=zIBb\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"96bbda25e7461b4a484cfafdd79abde2e39dc12e","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.1","dependencies":{"postcss":"^7.0.27","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.10","mini-css-extract-plugin":"^0.9.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.24","@sewing-kit/plugin-webpack":"^0.1.12"},"peerDependenciesMeta":{"webpack":{"optional":true},"@sewing-kit/plugin-jest":{"optional":true},"@sewing-kit/plugin-webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.26_1618432295968_0.8329899519597004","host":"s3://npm-registry-packages"}},"0.1.27":{"name":"@sewing-kit/plugin-css","version":"0.1.27","license":"MIT","_id":"@sewing-kit/plugin-css@0.1.27","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"20a1ef84301ad1e6b510aec490b3200bcf3d03e8","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.1.27.tgz","fileCount":46,"integrity":"sha512-ffOk3lMjMKqwXgYAROWHmJ+whgsQutzoAzLt4f4fVPiCpQjSAHcN77tlLGFE2kPDaouX7P9s4E38BRKuXEHLNQ==","signatures":[{"sig":"MEYCIQDxvM7pQaBwacLhAHpKJJJHMJAB7fHU86PvNvqwE94xgwIhAPddX9hhpUJs+tFMKFh1vqXSlejOTsVK/ZP3BnxaHQQH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":518726,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJggEb8CRA9TVsSAnZWagAANBQP/iCE/8nDjBVW4RmG/srn\nlyycWqZp7gNYLHJLqATY1aszrpTXH+soD7CNErcCfvMUEjrT9odDG3cZVN4o\nGhtv9Zp44xh8S42J2HKq6dQVs8zNkLr9WKvQXVltNtGFVI9u1xfdGKG0KqN+\ndK5ir7U4u0HFj6wV/O0EqN+/xoJermnvjSrzl8auTV0gaF71PJ2UNDazWAFG\nnEUCIS7T2oNQqojz8vuNCohH5ugAE+ZxhEVa6uU032y5H0fU0Fmd8IxY2LJu\ncpnVlOu9jjcVA98JT2oBv+15Wd+wmxrJvwPnKlaPpiyjqDFGZPTKMddMMs/7\nMPlYkSr7TgzYDKiUXwwm0tsl6fk2dBsIlZpyM8n81i6KxVnt05TrGN5t/8Cq\noH9ouzUlIHMbJVsXnPjiUOS93MN1Qbjk2Oor0syiSbXWaYSv0Zj3C0jMjmQ9\nccQWGWsssgAfV4a4cgywi21CgM/tIbKxd2FYoEP4p4jWMyhLqQcmyTxixFIt\nL+oKZGnuuEVTTPII1hb5vNa0zZIUXdxc8dcbdh4v7Zy9HhoGuTsuQh2BzMGR\nmJDjX272iY7Daz7LVHAm7NZX8OV3cC1ikIOmgHQMZltdCojfR67dj/xJvtCH\nX0wGRsz6ch8t0OubphjHckwgV/gViunlyhwewhm0ekGFi+IJvFGpUOjPDOXr\nbYYe\r\n=CLpo\r\n-----END PGP SIGNATURE-----\r\n"},"gitHead":"f76c40160c96848dcf44b7cf16822340f4a4d308","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v10.24.1+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"10.24.1","dependencies":{"postcss":"^7.0.27","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.1.10","mini-css-extract-plugin":"^0.9.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.24","@sewing-kit/plugin-webpack":"^0.1.12"},"peerDependenciesMeta":{"webpack":{"optional":true},"@sewing-kit/plugin-jest":{"optional":true},"@sewing-kit/plugin-webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.1.27_1619019515833_0.4692055329175242","host":"s3://npm-registry-packages"}},"0.2.0-alpha.1":{"name":"@sewing-kit/plugin-css","version":"0.2.0-alpha.1","license":"MIT","_id":"@sewing-kit/plugin-css@0.2.0-alpha.1","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"d7a72b9897a1f5781a793e8806efcbfc05f49cf7","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.2.0-alpha.1.tgz","fileCount":47,"integrity":"sha512-COp2li0b5n3FZ9uwb+JDyBgAsS624qLpS8zRupAbiprzwr1Xmv10A1NCf5bau42+8qNDi54kSrnCJsJygz9ltw==","signatures":[{"sig":"MEYCIQDpSlDfFMLwGBhisoz97vVUoli0Y40seCr0qZhd4DSeiAIhAJR2wzI/hdWWmlZS3DyAjUoLv52ND8oRTwIFxDrXHASJ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":513665,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgpFVICRA9TVsSAnZWagAAbn4QAKAfn1HFwnyjI0X2AgKt\nQmDCjsnAy/y4l4+j+S9Vfwt5dkvIG3Yqv68+XadkGAF3bnHrCbYqmp6dHGzA\n3Z4TvNhaH0Xuw4+jfOjPdeYP3YFV/S3//++qUdhvaZ78btZejZQ6gSKc+aBK\nsab8ChAYroRsacgJRHOWJCmUuvZtM7gs1QSk7CPLdyWUyymt0L5/NaS1XS9y\nbPbb5aBQTGDIgEFHf51w9Lp0gJ7m7q3yJT4ZGyes8AHQpHCxviq+USJA7ICx\nEPjZneH5ikwhZyjtTzQ7d6CKSUPzNwfJvLMlcrBjIs2ESGR9JipR8qH60QQ4\nSxwcr9oxSjKz+zvR0VhYrCyF6Gk7HOFozzurtypJZr5omzeIJ+Qw+l8M991V\nX9TUn6VoOQohf8d+nMmQob4IFZS0060krAQYfjRnTx3Uf8E3Cp6IFG4724Ee\nMCPp0OR6D+etFW4qPJzxkFaSQeGgYIezbdNeP+mMp79028YMAxJm7VJqAiuA\nf/u7ByIcGyJeDesvhGyFlzy9KfmASms6OaNHay87u768zjLTIqE3uPoo2m6i\n64wxwYtLBofrU8bdltgihyrBINvlSatZ4TH5tthDL5X3ZL45Dn8KJdNAt6/V\nnrjbZZsPlDe/8N2f9F9htPzWKF0eIGNQTJCCvDwnjS+ZpwAkLcXng0+Usfan\neM0R\r\n=mnC1\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":"^12.22.0 || >=14.17.0"},"gitHead":"aabbbc30e295acfdb823e2e37c4b862e5c44b68e","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"postcss":"^7.0.27","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.2.0-alpha.1","mini-css-extract-plugin":"^0.9.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.24","@sewing-kit/plugin-webpack":"^0.1.12"},"peerDependenciesMeta":{"webpack":{"optional":true},"@sewing-kit/plugin-jest":{"optional":true},"@sewing-kit/plugin-webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.2.0-alpha.1_1621382471596_0.6392891068523343","host":"s3://npm-registry-packages"}},"0.2.0":{"name":"@sewing-kit/plugin-css","version":"0.2.0","license":"MIT","_id":"@sewing-kit/plugin-css@0.2.0","maintainers":[{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"bc39c99783f349ce0d6ef0aa23edcdae8096efde","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.2.0.tgz","fileCount":47,"integrity":"sha512-aq+8BADbkRYyrNDpLvb3O73fLT76SLXnQ/1jUczW4oX5Sy8kzthYoD05nsw8WTQlp9BFYCvZ8KrS/dbd7qhjFw==","signatures":[{"sig":"MEQCIGhxqO3UuSgiqoZCrG22N+1iwsU3tk8b5PuxvcQE51rYAiApDOaUDxbQQSwMRd0RG+Y3Hj7Ww+8l3Ajr9FeD0iPVPA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":516099,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgptFICRA9TVsSAnZWagAABgQQAIdEEi/puY02TobW3c2Z\nY/FcwGPPSvSoFECl0usiF60sDUtJPHBoLo2Aw80Btwy3lxGEX/kLD/rd/2WN\nb9pafR6TiaS0uEEHgpt5uk4S9U0WgDq18kY00MEdsz5CpyoSNGGMzwUwmVsz\nWCJPuNeOM/k6Vkx4kBWBrqS6lgWmwI6rYlkEg+ruEPd74tU1sVlQVLKegbKQ\n1yFn0gMysHRjvCaDwdImh8KKyqhIcalDvDwGcMzGc8gF3hcCtCvbh6zKCRfL\nWaEQBD3CqVqClABfcRb4tkVAsK/fntVT55dyKhhxEpu+Hqpxp2sV0U0DViMX\nbF3VcXH0vAYW+W3Ndc1e4/bey76ayhqEfooKhevUd3uGgnj9bwM14hO45RZL\n3GrjT7KqcZ1M/Cd7rmsWXCV2lQSJYpR6HphS4aRvDn2EYkHVe4tN4gU4tspT\nskfm/g+K0XXHhjlMeahWWRzo60S18YP1e8RCeqTiLZaWVhIQ38b7Una1C/zd\nWz+M0qk6xEZt0eVZu57MpdLeVW4QYqUY5y5TdCfxSK5+dVTNh5fAmAk6ddZz\napdiP6q5WuJ8nvhpMCv+RWcobDAbWJiRx4+u7n704C0FzjqnBlRh+c4Wt80q\nWocEBK6fW3PoyAh/6YOz2e3kLgjziUXCp7Z7fy8BD1sYlJ9seyVQT0cNknQc\napJr\r\n=+KO6\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=12.14.0"},"gitHead":"c96a65cc1a6304570802d1fe737924c00a896cc3","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"postcss":"^7.0.27","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.2.0","mini-css-extract-plugin":"^0.9.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.24","@sewing-kit/plugin-webpack":"^0.1.12"},"peerDependenciesMeta":{"webpack":{"optional":true},"@sewing-kit/plugin-jest":{"optional":true},"@sewing-kit/plugin-webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.2.0_1621545285333_0.2575283436787026","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@sewing-kit/plugin-css","version":"0.2.1","license":"MIT","_id":"@sewing-kit/plugin-css@0.2.1","maintainers":[{"name":"bpscott","email":"ben@reload.me.uk"},{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"dist":{"shasum":"00f821c8e791913304756ad057266aa2689d3141","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.2.1.tgz","fileCount":47,"integrity":"sha512-Ze9uBkjOf3dd6ySAahNTTZSyFjGRLG5a0HJiqoQFI1h9HaVD9/FifKGNfMiy4kTvwU6PzrpakWgFnhH9adLM7g==","signatures":[{"sig":"MEQCIA0LjPxtm2m/im6bUEoh0XCMnYi4ItQBvubTCqKyhkkWAiADIWop1UlUcSNA3xYPZI9fcMBjalQKIXeWSV//q8kqfA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":521818,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJgzPsiCRA9TVsSAnZWagAAzEgP/2Rko+puMu/6e/vSjdMi\naeuyBNq/HhsUGK8xo+yeKb94ZzRTSQabOw/FLaF01ZBZPrWh/i4GfUnibiJB\n7NORWUIJOE216+wiyW//YPDUeM4Et4xiXUn5AJjZczkSfAK1KTbVpgklZgTn\neIfzWvl9o8fRnCVxDUXczuoo7b4RGnkBvVCUVhM9xyOb6Qxk4JcwacoQkXjo\npWr4FK03y3uO00YhpqLB/kasDpCfcYdFlovubZNMv+mt5HvQ/xnFL0bhoGH2\nPJ3HA4ChV4PpVUISKNLXU6GWvPVH6HDbTx0vWBe8wmjkNXHcnbqIn5KoACY4\n94RBmW/iG7DbvuzvIssrgedOX0cN4hSAXZOzJcnJCXqf8ybAakuFxyseSCM+\nHam326tVtY08mTBe7GXlS0xBohd+MqbCjAueWbMi+qc/ZCKsY+1E2y0cYjc9\nUnAgtYT960qcLV7ZrsRjijgNWwLaziYXVpIG0JL7nObIUyxXCOIhGkFHL0EA\nQW1kIuHkhoLJ7ZqB9H1h7yeX3ZvQPMTAUkLXjZeePr0QkRMxAW2S9cDM4++M\nND70Z+4ZxBoxHpqbS3cbIVbv09Y47CfSthfS0Sugf3CI7IR44cBM6yf0b4hV\nnSJ3L1Ha50rM+T/Xl4qg6nDWT4EU9f9fs+7QaxQ6V0ky4wa9pP5c9T05xW2I\n/dsz\r\n=8CKA\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=12.14.0"},"gitHead":"9cfc862ccab84def42b1609c66951c07ca2825f6","scripts":{"build":"tsc --p tsconfig.json"},"_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","description":"> New to `sewing-kit`? [This guide](TODO) explains what `sewing-kit` is, how it’s organized, and how to use it in a project. Read through that overview if you haven’t already — it should help to clarify how to use the tools documented below.","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","dependencies":{"postcss":"^7.0.27","css-loader":"^3.5.2","style-loader":"^1.1.4","postcss-loader":"^3.0.0","postcss-preset-env":"^6.7.0","@sewing-kit/plugins":"^0.2.1","mini-css-extract-plugin":"^0.9.0","@types/mini-css-extract-plugin":"^0.9.1","optimize-css-assets-webpack-plugin":"^5.0.3","@types/optimize-css-assets-webpack-plugin":"^5.0.1"},"publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"peerDependencies":{"webpack":">=4 <5","@sewing-kit/plugin-jest":"^0.1.24","@sewing-kit/plugin-webpack":"^0.1.12"},"peerDependenciesMeta":{"webpack":{"optional":true},"@sewing-kit/plugin-jest":{"optional":true},"@sewing-kit/plugin-webpack":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.2.1_1624046370062_0.7849956124877833","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@sewing-kit/plugin-css","version":"0.3.0","author":{"name":"Shopify Inc."},"license":"MIT","_id":"@sewing-kit/plugin-css@0.3.0","maintainers":[{"name":"bpscott","email":"ben@reload.me.uk"},{"name":"lemonmade","email":"chrismsauve@gmail.com"},{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},{"name":"ismail.syed","email":"ismail.syed@shopify.com"}],"homepage":"https://github.com/Shopify/sewing-kit-next/blob/main/packages/plugin-css/README.md","bugs":{"url":"https://github.com/Shopify/sewing-kit-next/issues"},"dist":{"shasum":"49d45718137506130cf893cc4fa391706fa140e8","tarball":"https://registry.npmjs.org/@sewing-kit/plugin-css/-/plugin-css-0.3.0.tgz","fileCount":5,"integrity":"sha512-A+xsUuvSfiF48vqR7Es0jypHhBKheK7q7XKg1Xotja3feyguvOqoWuq55GDSZLIyPn3baJKYeF3DX7eP8vTYZg==","signatures":[{"sig":"MEYCIQC5UYuYb9EO/Pa7skXxWIjpSNn7S5O0mcov2bgBwC3n1QIhALvrrfoyfDavS7x/JBKJkHr4tUSy9SeVBpfUrri+q/OW","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":3706,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJg1hxsCRA9TVsSAnZWagAAGcIP/iWUo4/06cvFCHqh5VYM\niUXJch86udJoU5bHjinTSYXWHfjQmLmeoy9NXoYmq9NsPFuptz2/0Azb9dJV\nKrypZHIcKYDOr/j7cO6/H4qc3fVst/uBPecrcLlUNaahEK6yvTVPiXvfJ2Jp\ntZSuSmFWgEVHfTY1LCa6Ys15ouhvav25fAsiwtM9mBb2+Lplg1IgRuZnaySr\nI3lpcdr3Sh5rIzFG7/DxwpRIZUhpPL+mES3t/2ixhsrO4FTJMOLr/Oxdgvdq\nZz+nTI2I5OZXSfEd+oeSkCVPJUO5uF09V3syzfNLKjv8diXvs/WDfJTLTg1N\nImqGBsQinjKIXBGmZwmH68s8EbCXWfrVKtZmnMPQMYGJAHmHHn2bRZGXvwB9\ndSAyaizuU8J8rMWc0fM1FHZvSApW2wvMJ1Ov0LyVXY1eJbtRNGBEzXLO5KXL\n7OICvTUUI135xxxI10uHsYlFSrJEjMi4+xL2JNx8Xsh2PDF8S531DN1eAvnV\nSkqYPJR6l0uS8BnrHJNsozXg/cs2LvqVZHvhLvtVgK+CBUJv4D75CSwsb8uC\n63WYS6JD74t3Y/RVYlFOJcLsPQZ5zndhYI0frN9Yo8Vj3XTqN8WVskVbCYI0\nlIShA0tYYTkzXYKWMHeX7D0H7rNwGgGUu/J0jdZfB5jGrYYS/q8vMbO0vZPy\nYQyB\r\n=d+7Q\r\n-----END PGP SIGNATURE-----\r\n"},"engines":{"node":">=12.14.0"},"gitHead":"f203715b068554e581bc87e2a499c4b9fb811ea2","_npmUser":{"name":"shopify-dep","email":"npmjs+shopify-dep@shopify.com"},"deprecated":"Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.","repository":{"url":"git+https://github.com/Shopify/sewing-kit-next.git","type":"git","directory":"packages/plugin-css"},"_npmVersion":"lerna/3.22.1/node@v12.22.1+x64 (linux)","description":"sewing-kit-next technology plugin for CSS","directories":{},"sideEffects":false,"_nodeVersion":"12.22.1","publishConfig":{"access":"public","@sewing-kit:registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/plugin-css_0.3.0_1624644715754_0.9309169997681599","host":"s3://npm-registry-packages"}}},"time":{"created":"2020-01-12T15:15:18.773Z","modified":"2025-01-29T22:10:10.944Z","0.0.1":"2020-01-12T15:15:19.221Z","0.0.2":"2020-01-12T16:18:46.288Z","0.0.3":"2020-01-12T16:22:45.424Z","0.0.4":"2020-01-12T17:22:18.241Z","0.0.5":"2020-03-28T16:52:49.345Z","0.0.6":"2020-03-28T17:59:01.319Z","0.0.7":"2020-03-28T22:30:30.714Z","0.0.8":"2020-03-28T22:33:48.711Z","0.0.9":"2020-04-25T18:09:40.249Z","0.0.10":"2020-04-25T18:28:42.662Z","0.0.11":"2020-04-25T19:07:02.432Z","0.0.12":"2020-04-25T19:25:09.017Z","0.0.13":"2020-05-02T18:02:02.629Z","0.0.14":"2020-05-02T19:21:21.207Z","0.0.15":"2020-05-02T19:51:05.696Z","0.0.16":"2020-05-02T22:03:48.994Z","0.0.17":"2020-05-02T23:12:21.682Z","0.0.18":"2020-05-18T03:11:24.586Z","0.0.19":"2020-05-25T00:06:28.092Z","0.1.0":"2020-05-25T03:53:38.926Z","0.1.1":"2020-06-13T00:15:10.688Z","0.1.2":"2020-06-19T19:33:18.561Z","0.1.3":"2020-06-23T17:46:25.148Z","0.1.4":"2020-06-26T15:49:07.667Z","0.1.5":"2020-06-26T16:04:08.056Z","0.1.6":"2020-06-26T16:34:37.577Z","0.1.7":"2020-06-26T17:47:10.982Z","0.1.8":"2020-06-27T02:04:07.480Z","0.1.9":"2020-06-27T02:27:21.373Z","0.1.10":"2020-06-27T02:36:38.723Z","0.1.11":"2020-06-27T03:36:02.285Z","0.1.12":"2020-06-27T17:34:51.763Z","0.1.13":"2020-06-28T01:37:27.981Z","0.1.14":"2020-06-28T02:06:05.091Z","0.1.15":"2020-06-28T02:26:58.247Z","0.1.16":"2020-06-28T02:47:26.712Z","0.1.17":"2020-06-28T03:12:38.718Z","0.1.18":"2020-07-23T02:14:37.728Z","0.1.19-alpha.0":"2020-08-25T23:31:19.529Z","0.1.19":"2020-08-26T18:11:36.218Z","0.1.20":"2020-09-16T14:38:57.480Z","0.1.21":"2020-10-02T19:22:40.663Z","0.1.22-sk0-sk1-hybrid.0":"2021-02-24T20:51:47.052Z","0.1.22-sk0-sk1-hybrid.1":"2021-02-24T21:43:25.161Z","0.1.22-sk0-sk1-hybrid.2":"2021-03-01T16:22:35.395Z","0.1.22-sk0-sk1-hybrid.3":"2021-03-01T17:20:57.594Z","0.1.22-mandatory-extensions.0":"2021-03-01T22:30:43.357Z","0.1.22-sk0-sk1-hybrid.4":"2021-03-02T17:42:14.210Z","0.1.22":"2021-03-03T18:55:14.712Z","0.1.23":"2021-03-31T15:40:53.985Z","0.1.24":"2021-04-06T19:48:32.205Z","0.1.25":"2021-04-07T05:00:50.969Z","0.1.26":"2021-04-14T20:31:36.105Z","0.1.27":"2021-04-21T15:38:35.974Z","0.2.0-alpha.1":"2021-05-19T00:01:11.768Z","0.2.0":"2021-05-20T21:14:45.566Z","0.2.1":"2021-06-18T19:59:30.196Z","0.3.0":"2021-06-25T18:11:55.875Z"},"bugs":{"url":"https://github.com/Shopify/sewing-kit-next/issues"},"author":{"name":"Shopify Inc."},"license":"MIT","homepage":"https://github.com/Shopify/sewing-kit-next/blob/main/packages/plugin-css/README.md","repository":{"url":"git+https://github.com/Shopify/sewing-kit-next.git","type":"git","directory":"packages/plugin-css"},"description":"sewing-kit-next technology plugin for CSS","maintainers":[{"email":"chrismsauve@gmail.com","name":"lemonmade"}],"readme":"# `@sewing-kit/plugin-css`\n\nThis package has been removed. Per technology and partial config plugins have been removed as we do not believe they are the right abstraction.\n","readmeFilename":"README.md"}