message: Bump Doctocat to v2

diff:
"now-build": "yarn run build"
},
"dependencies": {
- "@primer/gatsby-theme-doctocat": "1.7.0",
+ "@primer/gatsby-theme-doctocat": "^2.0.0",
"gatsby": "^2.24.63",
"react": "^16.13.1",
"react-dom": "^16.13.1"

diff:
"@babel/traverse" "^7.10.4"
"@babel/types" "^7.10.4"
-"@babel/helpers@7.9.2":
- version "7.9.2"
- resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f"
- integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA==
- dependencies:
- "@babel/template" "^7.8.3"
- "@babel/traverse" "^7.9.0"
- "@babel/types" "^7.9.0"
-
"@babel/helpers@^7.10.4":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.10.4.tgz#2abeb0d721aff7c0a97376b9e1f6f65d7a475044"
core-js-pure "^3.0.0"
regenerator-runtime "^0.13.4"
-"@babel/runtime@7.9.2":
- version "7.9.2"
- resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.9.2.tgz#d90df0583a3a252f09aaa619665367bae518db06"
- integrity sha512-NE2DtOdufG7R5vnfQUTehdTfNycfUANEtCa9PssN9O/xmTzP4E08UI797ixaei6hBEVL9BI/PsdJS5x7mWoB9Q==
- dependencies:
- regenerator-runtime "^0.13.4"
-
-"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.7.2", "@babel/runtime@^7.7.6", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7":
+"@babel/runtime@^7.0.0", "@babel/runtime@^7.10.2", "@babel/runtime@^7.10.3", "@babel/runtime@^7.2.0", "@babel/runtime@^7.4.5", "@babel/runtime@^7.5.1", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4":
version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.5.tgz#303d8bd440ecd5a491eae6117fd3367698674c5c"
integrity sha512-otddXKhdNn7d0ptoFRHtMLa8LqDxLYwTjB4nYgM1yy5N6gU/MUf8zqyyLltCH3yAVitBzmwK4us+DD0l/MauAg==
dependencies:
regenerator-runtime "^0.13.4"
+"@babel/runtime@^7.6.2":
+ version "7.15.4"
+ resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.15.4.tgz#fd17d16bfdf878e6dd02d19753a39fa8a8d9c84a"
+ integrity sha512-99catp6bHCaxr4sJ/DbTGgHS4+Rs2RVd2g7iOap6SLGPDknRK9ztKNsE/Fg6QhSeh1FGE5f6gHGQmvvn3I3xhw==
+ dependencies:
+ regenerator-runtime "^0.13.4"
+
"@babel/standalone@^7.11.6":
version "7.11.6"
resolved "https://registry.yarnpkg.com/@babel/standalone/-/standalone-7.11.6.tgz#2ea3c9463c8b1d04ee2dacc5ac4b81674cec2967"
integrity sha512-Ye1pj3fN76OWlJyi+Ocy1kTr1BNs5vFWHsq2oKPp3lB4Q0r2WrHi+n/Y2w3sZK+1QSKAkDXTp12tCuBprBHZ1w==
-"@babel/template@^7.10.4", "@babel/template@^7.4.0", "@babel/template@^7.8.3":
+"@babel/template@^7.10.4", "@babel/template@^7.4.0":
version "7.10.4"
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.10.4.tgz#3251996c4200ebc71d1a8fc405fba940f36ba278"
integrity sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==
"@babel/parser" "^7.10.4"
"@babel/types" "^7.10.4"
-"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0", "@babel/traverse@^7.9.0":
+"@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.10.5", "@babel/traverse@^7.4.3", "@babel/traverse@^7.7.0":
version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.10.5.tgz#77ce464f5b258be265af618d8fddf0536f20b564"
integrity sha512-yc/fyv2gUjPqzTz0WHeRJH2pv7jA9kA7mBX2tXl/x5iOE81uaVPuGPtaYk7wmkx4b67mQ7NqI8rmT2pF47KYKQ==
globals "^11.1.0"
lodash "^4.17.19"
-"@babel/types@^7.0.0", "@babel/types@^7.10.3", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0", "@babel/types@^7.9.0":
+"@babel/types@^7.0.0", "@babel/types@^7.10.3", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.3.0", "@babel/types@^7.4.0", "@babel/types@^7.4.4", "@babel/types@^7.7.0":
version "7.10.5"
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.5.tgz#d88ae7e2fde86bfbfe851d4d81afa70a997b5d15"
integrity sha512-ixV66KWfCI6GKoA/2H9v6bQdbfXEwwpOdQ8cRvb4F+eyvhlaHxWFMQB4+3d9QFJXZsiiiqVrewNV0DFEQpyT4Q==
resolved "https://registry.yarnpkg.com/@primer/component-metadata/-/component-metadata-0.4.0.tgz#44b7d7b1285bea41c2a88621fd17f2c777a4c5e9"
integrity sha512-yppmDSSDrN2CHwjq3h+RWhfpjehFQAx21JcEipYyNTp0f/kC+iazFVNCKZE6DOavAxv003ti7QIrp+QkPT9tpg==
-"@primer/components@^20.0.0":
- version "20.0.0"
- resolved "https://registry.yarnpkg.com/@primer/components/-/components-20.0.0.tgz#643bd7d719af28d6cdf446909255ee04e9f47014"
- integrity sha512-OpnBJDB+7Rw8NK7p/UlJx3B6uGjRSVKtbEUAE+BjTYAD5wrjSnWKTgBqnorTzPcmstDAxC6GNtmsukyyk3lMHA==
+"@primer/components@^30.0.0":
+ version "30.3.0"
+ resolved "https://registry.yarnpkg.com/@primer/components/-/components-30.3.0.tgz#e62d10bd891699f8455b297f4577ed9c58de4334"
+ integrity sha512-5W2WQtTzBsGE12+SIcc49RlosgkoamFDMkwNh5kKuQq1Ni9fXjxfWQaykh8CaWydcywMfnZbPcESKnuu+KfLZQ==
dependencies:
- "@babel/helpers" "7.9.2"
- "@babel/runtime" "7.9.2"
- "@primer/octicons-react" "^10.0.0"
- "@primer/primitives" "3.0.0"
- "@reach/dialog" "0.3.0"
+ "@primer/octicons-react" "^13.0.0"
+ "@primer/primitives" "4.8.1"
+ "@radix-ui/react-polymorphic" "0.0.14"
+ "@react-aria/ssr" "3.1.0"
"@styled-system/css" "5.1.5"
- "@styled-system/prop-types" "5.1.2"
- "@styled-system/props" "5.1.4"
+ "@styled-system/props" "5.1.5"
"@styled-system/theme-get" "5.1.2"
- "@testing-library/react" "9.4.0"
- "@types/styled-components" "^4.4.0"
- "@types/styled-system" "5.1.2"
- babel-plugin-macros "2.8.0"
- babel-polyfill "6.26.0"
- classnames "^2.2.5"
- details-element-polyfill "2.4.0"
- jest-axe "3.2.0"
- polished "3.5.2"
- react "^16.10.2"
- react-is "16.10.2"
- styled-system "5.1.2"
-
-"@primer/gatsby-theme-doctocat@1.7.0":
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/@primer/gatsby-theme-doctocat/-/gatsby-theme-doctocat-1.7.0.tgz#57a8617a77807a87154137225095d9216585c5aa"
- integrity sha512-c+HqWXniGTl738Lxc8qJYbQEnqJihpQZwYhBmW+jdiNLf5bOYJugXYHr5HpeCsqeKczvt/tUlPJBHhTN/B2PIA==
+ "@types/history" "4.7.8"
+ "@types/styled-components" "5.1.11"
+ "@types/styled-system" "5.1.12"
+ "@types/styled-system__css" "5.0.16"
+ "@types/styled-system__theme-get" "5.0.1"
+ classnames "2.3.1"
+ color2k "1.2.4"
+ deepmerge "4.2.2"
+ focus-visible "5.2.0"
+ styled-system "5.1.5"
+
+"@primer/gatsby-theme-doctocat@^2.0.0":
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/@primer/gatsby-theme-doctocat/-/gatsby-theme-doctocat-2.0.0.tgz#4e9d7b74642cda1c31dd9fd29be2c5a0ee2e0a0c"
+ integrity sha512-TeskQMyjvrWtXXKNPbcBItHsjLTmziV9R9+I/MKgJhB9GuBadjHL6siOO8vh0lo6OHT/CUPUEqBnwn0LV76ANQ==
dependencies:
"@babel/preset-env" "^7.5.5"
"@babel/preset-react" "^7.0.0"
"@mdx-js/mdx" "^1.0.21"
"@mdx-js/react" "^1.0.21"
"@primer/component-metadata" "^0.4.0"
- "@primer/components" "^20.0.0"
- "@primer/octicons-react" "^11.0.0"
+ "@primer/components" "^30.0.0"
+ "@primer/octicons-react" "^16.0.0"
"@styled-system/theme-get" "^5.0.12"
"@testing-library/jest-dom" "^4.1.0"
"@testing-library/react" "^9.1.3"
styled-system "^5.0.18"
worker-loader "^3.0.2"
-"@primer/octicons-react@^10.0.0":
- version "10.0.0"
- resolved "https://registry.yarnpkg.com/@primer/octicons-react/-/octicons-react-10.0.0.tgz#82f0d64b4276778fb51468afac00aa0c420ad230"
- integrity sha512-I+m7Srg/Ivo5VuXoKwKCJ6YJya+lr6EVzp/WGnDlwBSpy0m4WfYAmZigt3A0i4JMqgLRFDlK+8AgqT66E9bOOw==
+"@primer/octicons-react@^13.0.0":
+ version "13.0.0"
+ resolved "https://registry.yarnpkg.com/@primer/octicons-react/-/octicons-react-13.0.0.tgz#a7f2288fd9cf9cabc1e75553a0dd9f00d74b68c1"
+ integrity sha512-j5XppNRCvgaMZLPsVvvmp6GSh7P5pq6PUbsfLNBWi2Kz3KYDeoGDWbPr5MjoxFOGUn6Hjnt6qjHPRxahd11vLQ==
-"@primer/octicons-react@^11.0.0":
- version "11.0.0"
- resolved "https://registry.yarnpkg.com/@primer/octicons-react/-/octicons-react-11.0.0.tgz#8171177a55d944c9e6b491c43f2957e86191cfa5"
- integrity sha512-lHEoFVhTyyjxIDJJgVQBJGsEU4BywFbpHuBPDM8jpqYszGcYaV3zCLWNCUaQgLfzl3lRBUXc+pMrzT5qRXLftg==
+"@primer/octicons-react@^16.0.0":
+ version "16.0.0"
+ resolved "https://registry.yarnpkg.com/@primer/octicons-react/-/octicons-react-16.0.0.tgz#964cf7eac896cf2afdc79dcdd900e6f7471424be"
+ integrity sha512-1/DszHbG39lJO5w5el/Eej3Qu2TW0ecDDeYGq5T1cwNsgCWgJmtk2bmyPYJRQyRtGzRQQ8db03E8OeM7ATPSbQ==
-"@primer/primitives@3.0.0":
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/@primer/primitives/-/primitives-3.0.0.tgz#ccfb324b478b2373733535ec49f8de29e238c55d"
- integrity sha512-ISXB43vcA+kg5pmGtGo3lPlHmY5Mg9nLhliePJu3Y5aP7g28TO+9cC99gL240pZHYsO0aVyU26WZwUXn6UIqJQ==
+"@primer/primitives@4.8.1":
+ version "4.8.1"
+ resolved "https://registry.yarnpkg.com/@primer/primitives/-/primitives-4.8.1.tgz#05f76e47f67018514fd54b35ca615b9d27ef2a46"
+ integrity sha512-mgr6+EKpn4DixuhLt3drk7QmNQO8M7RYONWovg1nkV7p56jklhDLfZmp1luLUee37eQGAxx3ToStL6gqINFjnQ==
+
+"@radix-ui/react-polymorphic@0.0.14":
+ version "0.0.14"
+ resolved "https://registry.yarnpkg.com/@radix-ui/react-polymorphic/-/react-polymorphic-0.0.14.tgz#fc6cefee6686db8c5a7ff14c8c1b9b5abdee325b"
+ integrity sha512-9nsMZEDU3LeIUeHJrpkkhZVxu/9Fc7P2g2I3WR+uA9mTbNC3hGaabi0dV6wg0CfHb+m4nSs1pejbE/5no3MJTA==
"@reach/alert@0.10.3":
version "0.10.3"
prop-types "^15.7.2"
tslib "^1.11.2"
-"@reach/component-component@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@reach/component-component/-/component-component-0.3.0.tgz#ccf593e26132cbec0ad92774b80356dcf544d5c5"
- integrity sha512-E93eOotshNv8dnXtOA/f7fMqGUJFTakBG1zEqmBo6BeLJhgP9t9wQrnkiyoU4HL/ou5LYfou8G4P3wQXbDoFFg==
- dependencies:
- prop-types "^15.7.2"
-
"@reach/descendants@^0.10.3":
version "0.10.5"
resolved "https://registry.yarnpkg.com/@reach/descendants/-/descendants-0.10.5.tgz#2611174e9e9b326dba548356221e2f8c8f5c8612"
react-remove-scroll "^2.3.0"
tslib "^1.11.2"
-"@reach/dialog@0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@reach/dialog/-/dialog-0.3.0.tgz#4c2037d4164193a09efcc359ba51c20652091142"
- integrity sha512-m994HoNlpwJSPBkTi3IVTJpKQ+Gbc5yOa7RawSYPBuScpxeigFEYpE1CCIz/KhS6hVf4St+iymohWBCGjO34RQ==
- dependencies:
- "@reach/component-component" "^0.3.0"
- "@reach/portal" "^0.3.0"
- "@reach/utils" "^0.3.0"
- prop-types "^15.7.2"
- react-focus-lock "^2.1.0"
- react-remove-scroll "^2.0.4"
-
"@reach/menu-button@0.10.3":
version "0.10.3"
resolved "https://registry.yarnpkg.com/@reach/menu-button/-/menu-button-0.10.3.tgz#6e72cd122e16f28c4b15a140f329be256adc72c8"
"@reach/utils" "0.10.5"
tslib "^2.0.0"
-"@reach/portal@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@reach/portal/-/portal-0.3.0.tgz#2f44180026830679dd1dd9d5e3b807f637fe96bf"
- integrity sha512-et9AeykzUaCuGnkzViQRxe4FjQQp4PPm1nMZqizX4KnsVwvi66PpKCE7hC3Gsh2036lGl0xtqmuRW+dTVSjb2A==
- dependencies:
- "@reach/component-component" "^0.3.0"
-
"@reach/rect@0.10.5", "@reach/rect@^0.10.3":
version "0.10.5"
resolved "https://registry.yarnpkg.com/@reach/rect/-/rect-0.10.5.tgz#ba68722f155b146c6790e7d10a97dca1fd7ab14e"
tslib "^2.0.0"
warning "^4.0.3"
-"@reach/utils@^0.3.0":
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/@reach/utils/-/utils-0.3.0.tgz#2098181aab751f2275cacf219b02a6a8b455be85"
- integrity sha512-dQA1acyNpwqy5ia5yt1lNjaAhm9rrzSurFtlJPoz7ARVPMV1yZ0yfmNotMwwgVbE5q1HnONqszK7oagH86m7Qw==
-
"@reach/visually-hidden@^0.10.2":
version "0.10.4"
resolved "https://registry.yarnpkg.com/@reach/visually-hidden/-/visually-hidden-0.10.4.tgz#ab390db0adf759393af4d856f84375468b1df676"
dependencies:
tslib "^2.0.0"
+"@react-aria/ssr@3.1.0":
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/@react-aria/ssr/-/ssr-3.1.0.tgz#b7163e6224725c30121932a8d1422ef91d1fab22"
+ integrity sha512-RxqQKmE8sO7TGdrcSlHTcVzMP450hqowtBSd2bBS9oPlcokVkaGq28c3Rwa8ty5ctw4EBCjXqjP7xdcKMGDzug==
+ dependencies:
+ "@babel/runtime" "^7.6.2"
+
"@sheerun/mutationobserver-shim@^0.3.2":
version "0.3.3"
resolved "https://registry.yarnpkg.com/@sheerun/mutationobserver-shim/-/mutationobserver-shim-0.3.3.tgz#5405ee8e444ed212db44e79351f0c70a582aae25"
dependencies:
"@styled-system/core" "^5.1.2"
-"@styled-system/border@^5.1.2", "@styled-system/border@^5.1.5":
+"@styled-system/border@^5.1.5":
version "5.1.5"
resolved "https://registry.yarnpkg.com/@styled-system/border/-/border-5.1.5.tgz#0493d4332d2b59b74bb0d57d08c73eb555761ba6"
integrity sha512-JvddhNrnhGigtzWRCVuAHepniyVi6hBlimxWDVAdcTuk7aRn9BYJUwfHslURtwYFsF5FoEs8Zmr1oZq2M1AP0A==
dependencies:
"@styled-system/core" "^5.1.2"
-"@styled-system/prop-types@5.1.2":
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/@styled-system/prop-types/-/prop-types-5.1.2.tgz#252898644aa277fcdb1bb916c3b354c78b78155a"
- integrity sha512-q2hnuZrOjZdCRYvSoMF5VIDRfpqPHDSgqajoMH0iy7BszPAkZZcIC7L4PzJTIcGSBrB9OJTBitWo9s7N60tgtA==
- dependencies:
- prop-types "^15.7.2"
-
-"@styled-system/props@5.1.4":
- version "5.1.4"
- resolved "https://registry.yarnpkg.com/@styled-system/props/-/props-5.1.4.tgz#a0b76bb3be64cb152db3db33a031f33a43977bab"
- integrity sha512-ysQJ6YFhWbnbMaG11RSqXPbOePUl6vEPkcSz1WiySSu4vvh7OQl5UPdkSnYS1E35kSkomSpO5drbFtWRrA+o7Q==
+"@styled-system/props@5.1.5":
+ version "5.1.5"
+ resolved "https://registry.yarnpkg.com/@styled-system/props/-/props-5.1.5.tgz#f50bf40e8fc8393726f06cbcd096a39a7d779ce4"
+ integrity sha512-FXhbzq2KueZpGaHxaDm8dowIEWqIMcgsKs6tBl6Y6S0njG9vC8dBMI6WSLDnzMoSqIX3nSKHmOmpzpoihdDewg==
dependencies:
- styled-system "^5.1.4"
+ styled-system "^5.1.5"
"@styled-system/shadow@^5.1.2":
version "5.1.2"
dependencies:
"@styled-system/core" "^5.1.2"
-"@styled-system/variant@^5.1.2", "@styled-system/variant@^5.1.5":
+"@styled-system/variant@^5.1.5":
version "5.1.5"
resolved "https://registry.yarnpkg.com/@styled-system/variant/-/variant-5.1.5.tgz#8446d8aad06af3a4c723d717841df2dbe4ddeafd"
integrity sha512-Yn8hXAFoWIro8+Q5J8YJd/mP85Teiut3fsGVR9CAxwgNfIAiqlYxsk5iHU7VHJks/0KjL4ATSjmbtCDC/4l1qw==
dom-accessibility-api "^0.4.6"
pretty-format "^25.5.0"
-"@testing-library/dom@^6.11.0", "@testing-library/dom@^6.15.0":
+"@testing-library/dom@^6.15.0":
version "6.16.0"
resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-6.16.0.tgz#04ada27ed74ad4c0f0d984a1245bb29b1fd90ba9"
integrity sha512-lBD88ssxqEfz0wFL6MeUyyWZfV/2cjEZZV3YRpb2IoJRej/4f1jB0TzqIOznTpfR1r34CNesrubxwIlAQ8zgPA==
pretty-format "^24.0.0"
redent "^3.0.0"
-"@testing-library/react@9.4.0":
- version "9.4.0"
- resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.4.0.tgz#b021ac8cb987c8dc54c6841875f745bf9b2e88e5"
- integrity sha512-XdhDWkI4GktUPsz0AYyeQ8M9qS/JFie06kcSnUVcpgOwFjAu9vhwR83qBl+lw9yZWkbECjL8Hd+n5hH6C0oWqg==
- dependencies:
- "@babel/runtime" "^7.7.6"
- "@testing-library/dom" "^6.11.0"
- "@types/testing-library__react" "^9.1.2"
-
"@testing-library/react@^9.1.3":
version "9.5.0"
resolved "https://registry.yarnpkg.com/@testing-library/react/-/react-9.5.0.tgz#71531655a7890b61e77a1b39452fbedf0472ca5e"
resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.7.tgz#613957d900fab9ff84c8dfb24fa3eef0c2a40896"
integrity sha512-2xtoL22/3Mv6a70i4+4RB7VgbDDORoWwjcqeNysojZA0R7NK17RbY5Gof/2QiFfJgX+KkWghbwJ+d/2SB8Ndzg==
+"@types/history@4.7.8":
+ version "4.7.8"
+ resolved "https://registry.yarnpkg.com/@types/history/-/history-4.7.8.tgz#49348387983075705fe8f4e02fb67f7daaec4934"
+ integrity sha512-S78QIYirQcUoo6UJZx9CSP0O2ix9IaeAXwQi26Rhr/+mg7qqPy8TzaxHSUut7eGjL8WmLccT7/MXf304WjqHcA==
+
"@types/hoist-non-react-statics@*":
version "3.3.1"
resolved "https://registry.yarnpkg.com/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.1.tgz#1124aafe5118cb591977aeb1ceaaed1070eb039f"
dependencies:
"@types/react" "*"
-"@types/react-native@*":
- version "0.63.2"
- resolved "https://registry.yarnpkg.com/@types/react-native/-/react-native-0.63.2.tgz#428a4d71351ccbc31ab170b5f32477c7ce78dfd7"
- integrity sha512-oxbp084lUsZvwfdWmWxKjJAuqEraQDRf+cE/JgwmrHQMguSrmgIHZ3xkeoQ5FYnW5NHIPpHudB3BbjL1Zn3vnA==
- dependencies:
- "@types/react" "*"
-
"@types/react@*":
version "16.9.43"
resolved "https://registry.yarnpkg.com/@types/react/-/react-16.9.43.tgz#c287f23f6189666ee3bebc2eb8d0f84bcb6cdb6b"
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e"
integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw==
-"@types/styled-components@^4.4.0":
- version "4.4.3"
- resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-4.4.3.tgz#74dd00ad760845a98890a8539361d8afc32059de"
- integrity sha512-U0udeNOZBfUkJycmGJwmzun0FBt11rZy08weVQmE2xfUNAbX8AGOEWxWna2d+qAUKxKgMlcG+TZT0+K2FfDcnQ==
+"@types/styled-components@5.1.11":
+ version "5.1.11"
+ resolved "https://registry.yarnpkg.com/@types/styled-components/-/styled-components-5.1.11.tgz#a3a1bc0f2cdad7318d8ce219ee507e6b353503b5"
+ integrity sha512-u8g3bSw9KUiZY+S++gh+LlURGraqBe3MC5I5dygrNjGDHWWQfsmZZRTJ9K9oHU2CqWtxChWmJkDI/gp+TZPQMw==
dependencies:
"@types/hoist-non-react-statics" "*"
"@types/react" "*"
- "@types/react-native" "*"
- csstype "^2.2.0"
+ csstype "^3.0.2"
-"@types/styled-system@5.1.2":
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/@types/styled-system/-/styled-system-5.1.2.tgz#d75c40bc4a3bb0d0022eb3dcae58854129e9dd32"
- integrity sha512-Byh33qthYnI6+qS0TRr4vqd+N/ax6ic1NFE6ZA16xuVr/EvYvSB8+diEP1lTSE7sP/MTdQpl+KaONREnyalDUA==
+"@types/styled-system@5.1.12":
+ version "5.1.12"
+ resolved "https://registry.yarnpkg.com/@types/styled-system/-/styled-system-5.1.12.tgz#4f3ca8da3dffe3c5a6cc3b2a97f51b41464c104a"
+ integrity sha512-7x4BYKKfK9QewfsFC2x5r9BK/OrfX+JF/1P21jKPMHruawDw9gvG7bTZgTVk6YkzDO2JUlsk4i8hdiAepAhD0g==
+ dependencies:
+ csstype "^3.0.2"
+
+"@types/styled-system__css@5.0.16":
+ version "5.0.16"
+ resolved "https://registry.yarnpkg.com/@types/styled-system__css/-/styled-system__css-5.0.16.tgz#cae75cef03dfa1020703e842a8b1c14d8f9a8f33"
+ integrity sha512-Cji5miCIpR27m8yzH6y3cLU6106N4GVyPgUhBQ4nL7VxgoeAtRdAriKdGTnRgJzSpT3HyB7h5G//cDWOl0M1jQ==
dependencies:
- csstype "^2.6.4"
+ csstype "^3.0.2"
+
+"@types/styled-system__theme-get@5.0.1":
+ version "5.0.1"
+ resolved "https://registry.yarnpkg.com/@types/styled-system__theme-get/-/styled-system__theme-get-5.0.1.tgz#c3884e8f15641603503dc1d49f9d282dce11e5fb"
+ integrity sha512-+i4VZ5wuYKMU8oKPmUlzc9r2RhpSNOK061Khtrr7X0sOQEcIyhUtrDusuMkp5ZR3D05Xopn3zybTPyUSQkKGAA==
"@types/testing-library__dom@*":
version "7.5.0"
@@ -3148,11 +3109,6 @@ aws4@^1.8.0:
resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.10.0.tgz#a17b3a8ea811060e74d47d306122400ad4497ae2"
integrity sha512-3YDiu347mtVtjpyV3u5kVqQLP242c06zwDOgpeRnybmXlYYsLbtTrUBUm8i8srONt+FWobl5aibnU1030PeeuA==
-axe-core@3.3.1:
- version "3.3.1"
- resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.3.1.tgz#3d1fa78cca8ead1b78c350581501e4e37b97b826"
- integrity sha512-gw1T0JptHPF4AdLLqE8yQq3Z7YvsYkpFmFWd84r6hnq/QoKRr8icYHFumhE7wYl5TVIHgVlchMyJsAYh0CfwCQ==
-
axe-core@^3.5.4:
version "3.5.5"
resolved "https://registry.yarnpkg.com/axe-core/-/axe-core-3.5.5.tgz#84315073b53fa3c0c51676c588d59da09a192227"
@@ -3315,7 +3271,7 @@ babel-plugin-lodash@3.3.4:
lodash "^4.17.10"
require-package-name "^2.0.1"
-babel-plugin-macros@2.8.0, babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.2.2, babel-plugin-macros@^2.8.0:
+babel-plugin-macros@^2.0.0, babel-plugin-macros@^2.2.2, babel-plugin-macros@^2.8.0:
version "2.8.0"
resolved "https://registry.yarnpkg.com/babel-plugin-macros/-/babel-plugin-macros-2.8.0.tgz#0f958a7cc6556b1e65344465d99111a1e5e10138"
integrity sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==
@@ -3362,15 +3318,6 @@ babel-plugin-transform-react-remove-prop-types@^0.4.24:
resolved "https://registry.yarnpkg.com/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz#f2edaf9b4c6a5fbe5c1d678bfb531078c1555f3a"
integrity sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==
-babel-polyfill@6.26.0:
- version "6.26.0"
- resolved "https://registry.yarnpkg.com/babel-polyfill/-/babel-polyfill-6.26.0.tgz#379937abc67d7895970adc621f284cd966cf2153"
- integrity sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=
- dependencies:
- babel-runtime "^6.26.0"
- core-js "^2.5.0"
- regenerator-runtime "^0.10.5"
-
babel-preset-gatsby@^0.5.10:
version "0.5.10"
resolved "https://registry.yarnpkg.com/babel-preset-gatsby/-/babel-preset-gatsby-0.5.10.tgz#3f55f542ece75c286e70d3783e69d90af3e73bbb"
@@ -4034,7 +3981,7 @@ chalk@1.1.3, chalk@^1.1.3:
strip-ansi "^3.0.0"
supports-color "^2.0.0"
-chalk@2.4.2, chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
+chalk@^2.0.0, chalk@^2.0.1, chalk@^2.1.0, chalk@^2.4.1, chalk@^2.4.2:
version "2.4.2"
resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424"
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
@@ -4239,10 +4186,10 @@ class-utils@^0.3.5:
isobject "^3.0.0"
static-extend "^0.1.1"
-classnames@^2.2.5:
- version "2.2.6"
- resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce"
- integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q==
+classnames@2.3.1:
+ version "2.3.1"
+ resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e"
+ integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA==
clean-stack@^2.0.0:
version "2.2.0"
@@ -4399,6 +4346,11 @@ color-string@^1.5.2:
color-name "^1.0.0"
simple-swizzle "^0.2.2"
+color2k@1.2.4:
+ version "1.2.4"
+ resolved "https://registry.yarnpkg.com/color2k/-/color2k-1.2.4.tgz#af34950ac58e23cf224a01cb8dd0c9911a79605e"
+ integrity sha512-DiwdBwc0BryPFFXoCrW8XQGXl2rEtMToODybxZjKnN5IJXt/tV/FsN02pCK/b7KcWvJEioz3c74lQSmayFvS4Q==
+
color@^3.0.0, color@^3.1.2:
version "3.1.2"
resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
@@ -4695,7 +4647,7 @@ core-js@^1.0.0:
resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636"
integrity sha1-ZSKUwUZR2yj6k70tX/KYOk8IxjY=
-core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0:
+core-js@^2.4.0, core-js@^2.4.1:
version "2.6.11"
resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c"
integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg==
@@ -5073,11 +5025,16 @@ cssstyle@^1.0.0:
dependencies:
cssom "0.3.x"
-csstype@^2.2.0, csstype@^2.5.7, csstype@^2.6.4:
+csstype@^2.2.0, csstype@^2.5.7:
version "2.6.13"
resolved "https://registry.yarnpkg.com/csstype/-/csstype-2.6.13.tgz#a6893015b90e84dd6e85d0e3b442a1e84f2dbe0f"
integrity sha512-ul26pfSQTZW8dcOnD2iiJssfXw0gdNVX9IJDH/X3K5DGPfj+fUYe3kB+swUY6BF3oZDxaID3AJt+9/ojSAE05A==
+csstype@^3.0.2:
+ version "3.0.9"
+ resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.9.tgz#6410af31b26bd0520933d02cbc64fce9ce3fbf0b"
+ integrity sha512-rpw6JPxK6Rfg1zLOYCSwle2GFOOsnjmDYDaBwEcwoOg4qlsIVCN789VkBZDJAGi4T07gI4YSutR43t9Zz4Lzuw==
+
currently-unhandled@^0.4.1:
version "0.4.1"
resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea"
@@ -5210,16 +5167,16 @@ deep-is@~0.1.3:
resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34"
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=
+deepmerge@4.2.2, deepmerge@^4.0.0:
+ version "4.2.2"
+ resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
+ integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
+
deepmerge@^2.1.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170"
integrity sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA==
-deepmerge@^4.0.0:
- version "4.2.2"
- resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955"
- integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
-
default-gateway@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b"
@@ -5324,7 +5281,7 @@ detab@2.0.3, detab@^2.0.0:
dependencies:
repeat-string "^1.5.4"
-details-element-polyfill@2.4.0, details-element-polyfill@^2.4.0:
+details-element-polyfill@^2.4.0:
version "2.4.0"
resolved "https://registry.yarnpkg.com/details-element-polyfill/-/details-element-polyfill-2.4.0.tgz#e0622adef7902662faf27b4ab8acba5dc4e3a6e6"
integrity sha512-jnZ/m0+b1gz3EcooitqL7oDEkKHEro659dt8bWB/T/HjiILucoQhHvvi5MEOAIFJXxxO+rIYJ/t3qCgfUOSU5g==
@@ -6619,6 +6576,11 @@ focus-lock@^0.7.0:
resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.7.0.tgz#b2bfb0ca7beacc8710a1ff74275fe0dc60a1d88a"
integrity sha512-LI7v2mH02R55SekHYdv9pRHR9RajVNyIJ2N5IEkWbg7FT5ZmJ9Hw4mWxHeEUcd+dJo0QmzztHvDvWcc7prVFsw==
+focus-visible@5.2.0:
+ version "5.2.0"
+ resolved "https://registry.yarnpkg.com/focus-visible/-/focus-visible-5.2.0.tgz#3a9e41fccf587bd25dcc2ef045508284f0a4d6b3"
+ integrity sha512-Rwix9pBtC1Nuy5wysTmKy+UjbDJpIfg8eHjw0rjZ1mX4GNLz1Bmd16uDpI3Gk1i70Fgcs8Csg2lPm8HULFg9DQ==
+
follow-redirects@1.5.10:
version "1.5.10"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a"
@@ -9025,16 +8987,6 @@ iterall@^1.2.1, iterall@^1.2.2:
resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.3.0.tgz#afcb08492e2915cbd8a0884eb93a8c94d0d72fea"
integrity sha512-QZ9qOMdF+QLHxy1QIpUHUU1D5pS2CG2P69LF6L6CPjPYA/XMOmKV3PZpawHoAjHNyB0swdVTRxdYT4tbBbxqwg==
-jest-axe@3.2.0:
- version "3.2.0"
- resolved "https://registry.yarnpkg.com/jest-axe/-/jest-axe-3.2.0.tgz#0f7a0132565289432936421cf38b7b8504690835"
- integrity sha512-QSQwSwG72/cpmhJU0fBsaUUvu9mb2uAqhccGQVG6JbIV8sK+aIXh8hYl7vxraMF/I6soQod1aqSdD/j7LjpVFQ==
- dependencies:
- axe-core "3.3.1"
- chalk "2.4.2"
- jest-matcher-utils "24.8.0"
- lodash.merge "4.6.2"
-
jest-changed-files@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-24.9.0.tgz#08d8c15eb79a7fa3fc98269bc14b451ee82f8039"
@@ -9086,7 +9038,7 @@ jest-config@^24.9.0:
pretty-format "^24.9.0"
realpath-native "^1.1.0"
-jest-diff@^24.0.0, jest-diff@^24.8.0, jest-diff@^24.9.0:
+jest-diff@^24.0.0, jest-diff@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-24.9.0.tgz#931b7d0d5778a1baf7452cb816e325e3724055da"
integrity sha512-qMfrTs8AdJE2iqrTp0hzh7kTd2PQWrsFyj9tORoKmu32xjPjeE4NyjVRDz8ybYwqS2ik8N4hsIpiVTyFeo2lBQ==
@@ -9147,7 +9099,7 @@ jest-environment-node@^24.9.0:
jest-mock "^24.9.0"
jest-util "^24.9.0"
-jest-get-type@^24.8.0, jest-get-type@^24.9.0:
+jest-get-type@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-24.9.0.tgz#1684a0c8a50f2e4901b6644ae861f579eed2ef0e"
integrity sha512-lUseMzAley4LhIcpSP9Jf+fTrQ4a1yHQwLNeeVa2cEmbCGeoZAtYPOIv8JaxLD/sUpKxetKGP+gsHl8f8TSj8Q==
@@ -9206,16 +9158,6 @@ jest-leak-detector@^24.9.0:
jest-get-type "^24.9.0"
pretty-format "^24.9.0"
-jest-matcher-utils@24.8.0:
- version "24.8.0"
- resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.8.0.tgz#2bce42204c9af12bde46f83dc839efe8be832495"
- integrity sha512-lex1yASY51FvUuHgm0GOVj7DCYEouWSlIYmCW7APSqB9v8mXmKSn5+sWVF0MhuASG0bnYY106/49JU1FZNl5hw==
- dependencies:
- chalk "^2.0.1"
- jest-diff "^24.8.0"
- jest-get-type "^24.8.0"
- pretty-format "^24.8.0"
-
jest-matcher-utils@^24.0.0, jest-matcher-utils@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-24.9.0.tgz#f5b3661d5e628dffe6dd65251dfdae0e87c3a073"
@@ -9829,7 +9771,7 @@ lodash.memoize@^4.1.2:
resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe"
integrity sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=
-lodash.merge@4.6.2, lodash.merge@^4.4.0:
+lodash.merge@^4.4.0:
version "4.6.2"
resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a"
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
@@ -11570,13 +11512,6 @@ pnp-webpack-plugin@^1.6.4:
dependencies:
ts-pnp "^1.1.6"
-polished@3.5.2:
- version "3.5.2"
- resolved "https://registry.yarnpkg.com/polished/-/polished-3.5.2.tgz#ca132b8cd68f7ffa95ae9d423f03e7a14fda1062"
- integrity sha512-vWoRDg3gY5RQBtUfcj9MRN10VCIf4EkdUikGxyXItg2Hnwk+eIVtdBiLajN0ldFeT3Vq4r/QNbjrQdhqBKrTug==
- dependencies:
- "@babel/runtime" "^7.8.7"
-
popmotion@9.0.0-beta-8:
version "9.0.0-beta-8"
resolved "https://registry.yarnpkg.com/popmotion/-/popmotion-9.0.0-beta-8.tgz#f5a709f11737734e84f2a6b73f9bcf25ee30c388"
@@ -12006,7 +11941,7 @@ pretty-error@^2.1.1:
renderkid "^2.0.1"
utila "~0.4"
-pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.8.0, pretty-format@^24.9.0:
+pretty-format@^24.0.0, pretty-format@^24.3.0, pretty-format@^24.9.0:
version "24.9.0"
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-24.9.0.tgz#12fac31b37019a4eea3c11aa9a959eb7628aa7c9"
integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==
@@ -12385,7 +12320,7 @@ react-fast-compare@^2.0.1, react-fast-compare@^2.0.2:
resolved "https://registry.yarnpkg.com/react-fast-compare/-/react-fast-compare-2.0.4.tgz#e84b4d455b0fec113e0402c329352715196f81f9"
integrity sha512-suNP+J1VU1MWFKcyt7RtjiSWUjvidmQSlqu+eHslq+342xCbGTYmC0mEhPCOHxlW0CywylOC1u2DFAT+bv4dBw==
-react-focus-lock@^2.1.0, react-focus-lock@^2.3.1:
+react-focus-lock@^2.3.1:
version "2.4.1"
resolved "https://registry.yarnpkg.com/react-focus-lock/-/react-focus-lock-2.4.1.tgz#e842cc93da736b5c5d331799012544295cbcee4f"
integrity sha512-c5ZP56KSpj9EAxzScTqQO7bQQNPltf/W1ZEBDqNDOV1XOIwvAyHX0O7db9ekiAtxyKgnqZjQlLppVg94fUeL9w==
@@ -12445,11 +12380,6 @@ react-icons@^3.0.1:
dependencies:
camelcase "^5.0.0"
-react-is@16.10.2:
- version "16.10.2"
- resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab"
- integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==
-
react-is@^16.12.0, react-is@^16.6.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4, react-is@^16.9.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
@@ -12522,7 +12452,7 @@ react-remove-scroll-bar@^2.1.0:
react-style-singleton "^2.1.0"
tslib "^1.0.0"
-react-remove-scroll@^2.0.4, react-remove-scroll@^2.3.0:
+react-remove-scroll@^2.3.0:
version "2.3.0"
resolved "https://registry.yarnpkg.com/react-remove-scroll/-/react-remove-scroll-2.3.0.tgz#3af06fe2f7130500704b676cdef94452c08fe593"
integrity sha512-UqVimLeAe+5EHXKfsca081hAkzg3WuDmoT9cayjBegd6UZVhlTEchleNp9J4TMGkb/ftLve7ARB5Wph+HJ7A5g==
@@ -12554,7 +12484,7 @@ react-style-singleton@^2.1.0:
invariant "^2.2.4"
tslib "^1.0.0"
-react@^16.10.2, react@^16.13.1, react@^16.8.0:
+react@^16.13.1, react@^16.8.0:
version "16.13.1"
resolved "https://registry.yarnpkg.com/react/-/react-16.13.1.tgz#2e818822f1a9743122c063d6410d85c1e3afe48e"
integrity sha512-YMZQQq32xHLX0bz5Mnibv1/LHb3Sqzngu7xstSM+vrkE5Kzr9xE0yMByK5kMoTK30YVJE61WfbxIFFvfeDKT1w==
@@ -12744,11 +12674,6 @@ regenerate@^1.4.0:
resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.1.tgz#cad92ad8e6b591773485fbe05a485caf4f457e6f"
integrity sha512-j2+C8+NtXQgEKWk49MMP5P/u2GhnahTtVkRIHr5R5lVRlbKvmQ+oS+A5aLKWp2ma5VkT8sh6v+v4hbH0YHR66A==
-regenerator-runtime@^0.10.5:
- version "0.10.5"
- resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz#336c3efc1220adcedda2c9fab67b5a7955a33658"
- integrity sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=
-
regenerator-runtime@^0.11.0:
version "0.11.1"
resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz#be05ad7f9bf7d22e056f9726cee5017fbf19e2e9"
@@ -14357,26 +14282,7 @@ styled-components@^4.3.2:
stylis-rule-sheet "^0.0.10"
supports-color "^5.5.0"
-styled-system@5.1.2:
- version "5.1.2"
- resolved "https://registry.yarnpkg.com/styled-system/-/styled-system-5.1.2.tgz#26a105a4b9110874b5857bb34de20dada8695130"
- integrity sha512-gbiohoqYYtvg9Q6nA3EagQSouHI9ylmcKUHHaUvCQrPpnPeJlUJAvj9vfyDgsJjw/oBogggfojF1X9EShfPffg==
- dependencies:
- "@styled-system/background" "^5.1.2"
- "@styled-system/border" "^5.1.2"
- "@styled-system/color" "^5.1.2"
- "@styled-system/core" "^5.1.2"
- "@styled-system/flexbox" "^5.1.2"
- "@styled-system/grid" "^5.1.2"
- "@styled-system/layout" "^5.1.2"
- "@styled-system/position" "^5.1.2"
- "@styled-system/shadow" "^5.1.2"
- "@styled-system/space" "^5.1.2"
- "@styled-system/typography" "^5.1.2"
- "@styled-system/variant" "^5.1.2"
- object-assign "^4.1.1"
-
-styled-system@^5.0.18, styled-system@^5.1.4:
+styled-system@5.1.5, styled-system@^5.0.18, styled-system@^5.1.5:
version "5.1.5"
resolved "https://registry.yarnpkg.com/styled-system/-/styled-system-5.1.5.tgz#e362d73e1dbb5641a2fd749a6eba1263dc85075e"
integrity sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==

original_message: Bump Doctocat to v2 (#850)


message:
Remove CSS utilities from Blankslate
* Remove CSS utilities from Blankslate
Also change the HTML structure and tweak styles to better match
Primer CSS.
This is part of the effort to remove all usages of utility classes to
improve consistency and prevent specificity bugs.

change_type: MODIFY

diff:
@@ -30,6 +30,12 @@ The category for changes related to documentation, testing and tooling. Also, fo
## main
+### Updates
+
+- Remove CSS utilities from Blankslate
+
+ _Hector Garcia_
+
## 0.0.68
### Updates

diff:
<%= heading %>
<%= description %>
+ <% if primary_action.present? %>
+

<%= primary_action %>
+

+ <% end %>
<% if secondary_action.present? %>
-

+

<%= secondary_action %>

<% end %>

diff:
@@ -26,20 +26,19 @@ module Primer
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
renders_one :visual, types: {
icon: lambda { |**system_arguments|
- system_arguments[:mb] = 3
system_arguments[:size] ||= :medium
system_arguments[:classes] = class_names("blankslate-icon", system_arguments[:classes])
Primer::OcticonComponent.new(**system_arguments)
},
spinner: lambda { |**system_arguments|
- system_arguments[:mb] = 3
+ system_arguments[:classes] = class_names("blankslate-image", system_arguments[:classes])
Primer::SpinnerComponent.new(**system_arguments)
},
image: lambda { |**system_arguments|
- system_arguments[:mb] = 3
system_arguments[:size] = "56x56"
+ system_arguments[:classes] = class_names("blankslate-image", system_arguments[:classes])
Primer::Image.new(**system_arguments)
}
@@ -52,8 +51,7 @@ module Primer
renders_one :heading, lambda { |tag:, **system_arguments|
deny_tag_argument(**system_arguments)
system_arguments[:tag] = tag
- system_arguments[:mb] = 1
- system_arguments[:classes] = class_names("h2", system_arguments[:classes])
+ system_arguments[:classes] = class_names("blankslate-heading", system_arguments[:classes])
Primer::HeadingComponent.new(**system_arguments)
}
@@ -66,7 +64,7 @@ module Primer
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
renders_one :description, lambda { |**system_arguments|
deny_tag_argument(**system_arguments)
- system_arguments[:tag] = :div
+ system_arguments[:tag] = :p
Primer::BaseComponent.new(**system_arguments)
}
@@ -82,7 +80,6 @@ module Primer
deny_tag_argument(**system_arguments)
system_arguments[:tag] = :a
system_arguments[:href] = href
- system_arguments[:mt] = 5
system_arguments[:size] = :medium
system_arguments[:scheme] ||= :primary
@@ -98,8 +95,6 @@ module Primer
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
renders_one :secondary_action, lambda { |href:, **system_arguments|
system_arguments[:href] = href
- # Padding is needed to increase touch area.
- system_arguments[:p] = 3
Primer::LinkComponent.new(**system_arguments)
}

diff:
- ".avatar-more"
- ".avatar-small"
- ".blankslate"
+- ".blankslate-action"
+- ".blankslate-heading"
- ".blankslate-icon"
+- ".blankslate-image"
- ".blankslate-narrow"
- ".blankslate-spacious"
- ".border"
- ".form-control"
- ".gutter-condensed"
- ".gutter-lg"
-- ".h2"
- ".hidden-text-expander"
- ".inline"
- ".left-0"
- ".list-style-none"
- ".markdown-body"
- ".mb-0"
-- ".mb-1"
- ".mb-2"
-- ".mb-3"
- ".menu"
- ".menu-heading"
- ".menu-item"
- ".mr-2"
- ".mr-n1"
- ".mt-2"
-- ".mt-3"
- ".mt-5"
- ".mx-auto"
- ".no-underline"

diff:
@@ -11,7 +11,7 @@ class PrimerBetaBlankslateTest < Minitest::Test
end
assert_selector("div.blankslate")
- assert_selector("h3.h2", text: "Title")
+ assert_selector("h3.blankslate-heading", text: "Title")
refute_selector(".blankslate-narrow")
refute_selector(".blankslate-spacious")
end

license: MIT License

original_message:
Remove CSS utilities from Blankslate (#1000)

* Remove CSS utilities from Blankslate

Also change the HTML structure and tweak styles to better match
Primer CSS.
This is part of the effort to remove all usages of utility classes to
improve consistency and prevent specificity bugs.


message:
Improve last example on the PopoverComponent docs
* Improve last example on the PopoverComponent docs
This is part of the efforts to increase consistency with Primer CSS.

diff:
@@ -36,6 +36,10 @@ The category for changes related to documentation, testing and tooling. Also, fo
_Hector Garcia_
+- Improve last example on the PopoverComponent docs
+
+ _Hector Garcia_
+
### Bug Fixes
- Fix live reloading during local docs development.

diff:
@@ -88,20 +88,16 @@ module Primer
# <% end %>
# <% end %>
#
- # @example With HTML body
+ # @example With multiple elements in the body
# <%= render Primer::PopoverComponent.new do |component| %>
# <% component.heading do %>
# Activity feed
# <% end %>
# <% component.body(caret: :left) do %>
#
This is the Popover body.

- #

- # This is using HTML.
- #

- #
Thing #1

- #
Thing #2

- #

- #

+ # <%= render Primer::ButtonComponent.new(type: :submit) do %>
+ # Got it!
+ # <% end %>
# <% end %>
# <% end %>
#

original_message:
Improve last example on the PopoverComponent docs (#1005)

* Improve last example on the PopoverComponent docs

This is part of the efforts to increase consistency with Primer CSS.


message: release 0.0.68

diff:
@@ -30,6 +30,8 @@ The category for changes related to documentation, testing and tooling. Also, fo
## main
+## 0.0.68
+
### Updates
- Restricts children for AutoComplete API to prevent accessibility violations and misuse

diff:
PATH
remote: .
specs:
- primer_view_components (0.0.67)
+ primer_view_components (0.0.68)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
octicons (~> 16)
@@ -118,7 +118,7 @@ GEM
racc (~> 1.4)
nokogiri (1.12.5-x86_64-darwin)
racc (~> 1.4)
- octicons (16.3.0)
+ octicons (16.3.1)
parallel (1.21.0)
parser (3.0.2.0)
ast (~> 2.4.1)

diff:
@@ -5,7 +5,7 @@ module Primer
module VERSION
MAJOR = 0
MINOR = 0
- PATCH = 67
+ PATCH = 68
STRING = [MAJOR, MINOR, PATCH].join(".")
end

diff:
{
"name": "@primer/view-components",
- "version": "0.0.67",
+ "version": "0.0.68",
"description": "ViewComponents for the Primer Design System",
"main": "app/assets/javascripts/primer_view_components.js",
"module": "app/components/primer/primer.js",


message:
Fix sequence of content in Subhead
* Fix sequence of content in Subhead
When a heading, description, and action are rendered in the Subhead
component, the content now follows logical order on screen readers.
* Update changelog

diff:
@@ -77,6 +77,10 @@ The category for changes related to documentation, testing and tooling. Also, fo
_Cameron Dutro_
+- Fix sequence of content in Subhead.
+
+ _Hector Garcia_
+
### Deprecations
- Deprecate `Tooltip` component.

diff:
<%= render Primer::BaseComponent.new(**@system_arguments) do %>
<%= heading %>
- <%= actions %>
<%= description %>
+ <%= actions %>
<% end %>

original_message:
Fix sequence of content in Subhead (#1024)

* Fix sequence of content in Subhead

When a heading, description, and action are rendered in the Subhead
component, the content now follows logical order on screen readers.

* Update changelog


message:
Fix missing `@primer/components` dependency
* Fix missing `@primer/components` dependency
Replaced with `@primer/react` as `@primer/components` has been renamed.
* docs: build docs
* Update changelog

diff:
@@ -54,6 +54,12 @@ The category for changes related to documentation, testing and tooling. Also, fo
_Jon Rohan_
+### Bug Fixes
+
+- Fix missing @primer/components dependency.
+
+ _Hector Garcia_
+
## 0.0.68
### Updates

diff:
import React from 'react'
-import {Box, DropdownMenu, DropdownButton, ThemeProvider} from '@primer/components'
+import { Box, DropdownMenu, DropdownButton, ThemeProvider } from '@primer/react'
import primitives from '@primer/primitives'
const THEMES = Object.keys(primitives.colors)

diff:
-import {Link} from '@primer/components'
+import { Link } from '@primer/react'
import StatusLabel from '@primer/gatsby-theme-doctocat/src/components/status-label'
import Table from '@primer/gatsby-theme-doctocat/src/components/table'
import { graphql, Link as GatsbyLink, useStaticQuery } from 'gatsby'

diff:
history "5.0.0"
styled-system "5.1.5"
+"@primer/react@^34.7.0":
+ version "34.7.0"
+ resolved "https://registry.yarnpkg.com/@primer/react/-/react-34.7.0.tgz#b06b6ad24f54366c3a722c14ad54160378176055"
+ integrity sha512-sYS/cezy7PcbI+ZAn30Euls/FVF6/RifEtmlzv6wUHvisTJZQDWxDhWA5A2M+T+1z29ymOpFVagHPKNPAd7R+g==
+ dependencies:
+ "@primer/behaviors" "1.1.0"
+ "@primer/octicons-react" "16.1.1"
+ "@primer/primitives" "7.1.1"
+ "@radix-ui/react-polymorphic" "0.0.14"
+ "@react-aria/ssr" "3.1.0"
+ "@styled-system/css" "5.1.5"
+ "@styled-system/props" "5.1.5"
+ "@styled-system/theme-get" "5.1.2"
+ "@types/styled-components" "5.1.11"
+ "@types/styled-system" "5.1.12"
+ "@types/styled-system__css" "5.0.16"
+ "@types/styled-system__theme-get" "5.0.1"
+ classnames "2.3.1"
+ color2k "1.2.4"
+ deepmerge "4.2.2"
+ focus-visible "5.2.0"
+ history "5.0.0"
+ styled-system "5.1.5"
+
"@radix-ui/react-polymorphic@0.0.14":
version "0.0.14"
resolved "https://registry.yarnpkg.com/@radix-ui/react-polymorphic/-/react-polymorphic-0.0.14.tgz#fc6cefee6686db8c5a7ff14c8c1b9b5abdee325b"

original_message:
Fix missing `@primer/components` dependency (#1051)

* Fix missing `@primer/components` dependency

Replaced with `@primer/react` as `@primer/components` has been renamed.

* docs: build docs

* Update changelog

Co-authored-by: Actions Auto Build <actions@github.com>


message: Add `Tooltip` support to `Button`

diff:
@@ -36,6 +36,10 @@ The category for changes related to documentation, testing and tooling. Also, fo
_Cameron Dutro_
+- Add `Tooltip` support to `Button`.
+
+ _Hector Garcia_
+
### Bug Fixes
- Ensure tooltip arrow position and tooltip width is correct.

diff:
<%= render Primer::BaseButton.new(**@system_arguments) do -%>
<%= leading_visual %><%= trimmed_content %><%= trailing_visual %><%= primer_octicon("triangle-down", ml: 2, mr: -1) if @dropdown %>
+ <%= tooltip %>
<% end -%>

diff:
@@ -56,6 +56,23 @@ module Primer
}
alias counter trailing_visual_counter # remove alias when all buttons are migrated to new slot names
+ # `Tooltip` that appears on mouse hover or keyboard focus over the button. Use tooltips sparingly and as a last resort.
+ # **Important:** This tooltip defaults to `type: :description`. In a few scenarios, `type: :label` may be more appropriate.
+ # Consult the <%= link_to_component(Primer::Alpha::Tooltip) %> documentation for more information.
+ #
+ # @param type [Symbol] (:description) <%= one_of(Primer::Alpha::Tooltip::TYPE_OPTIONS) %>
+ # @param system_arguments [Hash] Same arguments as <%= link_to_component(Primer::Alpha::Tooltip) %>.
+ renders_one :tooltip, lambda { |**system_arguments|
+ raise ArgumentError, "Buttons with a tooltip must have a unique `id` set on the `Button`." if @id.blank? && !Rails.env.production?
+
+ @system_arguments = system_arguments
+
+ @system_arguments[:for_id] = @id
+ @system_arguments[:type] ||= :description
+
+ Primer::Alpha::Tooltip.new(**@system_arguments)
+ }
+
# @example Schemes
# <%= render(Primer::ButtonComponent.new) { "Default" } %>
# <%= render(Primer::ButtonComponent.new(scheme: :primary)) { "Primary" } %>
@@ -96,6 +113,15 @@ module Primer
# Button
# <% end %>
#
+ # @example With tooltip
+ # @description
+ # Use tooltips sparingly and as a last resort. Consult the <%= link_to_component(Primer::Alpha::Tooltip) %> documentation for more information.
+ # @code
+ # <%= render(Primer::ButtonComponent.new(id: "button-with-tooltip")) do |c| %>
+ # <% c.tooltip(text: "Tooltip text") %>
+ # Button
+ # <% end %>
+ #
# @param scheme [Symbol] <%= one_of(Primer::ButtonComponent::SCHEME_OPTIONS) %>
# @param variant [Symbol] DEPRECATED. <%= one_of(Primer::ButtonComponent::SIZE_OPTIONS) %>
# @param size [Symbol] <%= one_of(Primer::ButtonComponent::SIZE_OPTIONS) %>
@@ -118,6 +144,9 @@ module Primer
@dropdown = dropdown
@system_arguments = system_arguments
+
+ @id = @system_arguments[:id]
+
@system_arguments[:classes] = class_names(
system_arguments[:classes],
SCHEME_MAPPINGS[fetch_or_fallback(SCHEME_OPTIONS, scheme, DEFAULT_SCHEME)],

diff:
@@ -96,7 +96,8 @@ namespace :docs do
Primer::TimeAgoComponent,
Primer::Alpha::UnderlinePanels,
Primer::Alpha::TabPanels,
- Primer::Alpha::Tooltip
+ Primer::Alpha::Tooltip,
+ Primer::ButtonComponent
]
all_components = Primer::Component.descendants - [Primer::BaseComponent]

diff:
@@ -19,6 +19,24 @@ class Primer::ButtonComponentStories < ViewComponent::Storybook::Stories
end
end
+ story(:with_tooltip) do
+ controls do
+ select(:scheme, Primer::ButtonComponent::SCHEME_OPTIONS, :primary)
+ select(:size, Primer::ButtonComponent::SIZE_OPTIONS, :medium)
+ select(:tag, Primer::BaseButton::TAG_OPTIONS, :button)
+ select(:type, Primer::BaseButton::TYPE_OPTIONS, :button)
+ text(:id, "button-with-tooltip")
+ group_item false
+ dropdown false
+ disabled false
+ end
+
+ content do |c|
+ c.tooltip(text: "Tooltip text")
+ "Click me"
+ end
+ end
+
story(:with_leading_visual) do
controls do
select(:scheme, Primer::ButtonComponent::SCHEME_OPTIONS, :primary)

original_message: Add `Tooltip` support to `Button` (#1058)


message: Add `Tooltip` support to `Link`

diff:
@@ -40,6 +40,10 @@ The category for changes related to documentation, testing and tooling. Also, fo
_Hector Garcia_
+- Add `Tooltip` support to `Link`.
+
+ _Hector Garcia_
+
### Bug Fixes
- Ensure tooltip arrow position and tooltip width is correct.

change_type: ADD

diff:
+<%= render Primer::BaseComponent.new(**@system_arguments) do %>
+ <%= content %>
+ <%= tooltip %>
+<% end %>

diff:
@@ -15,6 +15,23 @@ module Primer
DEFAULT_TAG = :a
TAG_OPTIONS = [DEFAULT_TAG, :span].freeze
+ # `Tooltip` that appears on mouse hover or keyboard focus over the link. Use tooltips sparingly and as a last resort.
+ # **Important:** This tooltip defaults to `type: :description`. In a few scenarios, `type: :label` may be more appropriate.
+ # Consult the <%= link_to_component(Primer::Alpha::Tooltip) %> documentation for more information.
+ #
+ # @param type [Symbol] (:description) <%= one_of(Primer::Alpha::Tooltip::TYPE_OPTIONS) %>
+ # @param system_arguments [Hash] Same arguments as <%= link_to_component(Primer::Alpha::Tooltip) %>.
+ renders_one :tooltip, lambda { |**system_arguments|
+ raise ArgumentError, "Links with a tooltip must have a unique `id` set on the `LinkComponent`." if @id.blank? && !Rails.env.production?
+
+ @system_arguments = system_arguments
+
+ @system_arguments[:for_id] = @id
+ @system_arguments[:type] ||= :description
+
+ Primer::Alpha::Tooltip.new(**@system_arguments)
+ }
+
# @example Default
# <%= render(Primer::LinkComponent.new(href: "#")) { "Link" } %>
#
@@ -31,6 +48,15 @@ module Primer
# @example Span as link
# <%= render(Primer::LinkComponent.new(tag: :span)) { "Span as a link" } %>
#
+ # @example With tooltip
+ # @description
+ # Use tooltips sparingly and as a last resort. Consult the <%= link_to_component(Primer::Alpha::Tooltip) %> documentation for more information.
+ # @code
+ # <%= render(Primer::LinkComponent.new(href: "#", id: "link-with-tooltip")) do |c| %>
+ # <% c.tooltip(text: "Tooltip text") %>
+ # Link
+ # <% end %>
+ #
# @param tag [String] <%= one_of(Primer::LinkComponent::TAG_OPTIONS) %>
# @param href [String] URL to be used for the Link. Required if tag is `:a`. If the requirements are not met an error will be raised in non production environments. In production, an empty link element will be rendered.
# @param scheme [Symbol] <%= one_of(Primer::LinkComponent::SCHEME_MAPPINGS.keys) %>
@@ -39,6 +65,9 @@ module Primer
# @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
def initialize(href: nil, tag: DEFAULT_TAG, scheme: DEFAULT_SCHEME, muted: false, underline: true, **system_arguments)
@system_arguments = system_arguments
+
+ @id = @system_arguments[:id]
+
@system_arguments[:tag] = fetch_or_fallback(TAG_OPTIONS, tag, DEFAULT_TAG)
@system_arguments[:href] = href
@system_arguments[:classes] = class_names(
@@ -50,10 +79,6 @@ module Primer
)
end
- def call
- render(Primer::BaseComponent.new(**@system_arguments)) { content }
- end
-
def before_render
raise ArgumentError, "href is required when using <a> tag" if @system_arguments[:tag] == :a && @system_arguments[:href].nil? && !Rails.env.production?
end

diff:
@@ -97,7 +97,8 @@ namespace :docs do
Primer::Alpha::UnderlinePanels,
Primer::Alpha::TabPanels,
Primer::Alpha::Tooltip,
- Primer::ButtonComponent
+ Primer::ButtonComponent,
+ Primer::LinkComponent
]
all_components = Primer::Component.descendants - [Primer::BaseComponent]

diff:
@@ -16,4 +16,20 @@ class Primer::LinkComponentStories < ViewComponent::Storybook::Stories
"This is a link!"
end
end
+
+ story(:with_tooltip) do
+ controls do
+ href "https://github.com/"
+ muted false
+ underline true
+ text(:id, "link-with-tooltip")
+ select(:scheme, Primer::LinkComponent::SCHEME_MAPPINGS.keys, Primer::LinkComponent::DEFAULT_SCHEME)
+ select(:tag, Primer::LinkComponent::TAG_OPTIONS, Primer::LinkComponent::DEFAULT_TAG)
+ end
+
+ content do |c|
+ c.tooltip(text: "Tooltip text")
+ "This is a link!"
+ end
+ end
end

original_message: Add `Tooltip` support to `Link` (#1069)


message: release 0.0.70

diff:
@@ -30,6 +30,8 @@ The category for changes related to documentation, testing and tooling. Also, fo
## main
+## 0.0.70
+
### New
- Add `Tooltip` support to `Button`.

diff:
PATH
remote: .
specs:
- primer_view_components (0.0.69)
+ primer_view_components (0.0.70)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
octicons (>= 17.0.0)

diff:
@@ -20,7 +20,7 @@ GIT
PATH
remote: ..
specs:
- primer_view_components (0.0.69)
+ primer_view_components (0.0.70)
actionview (>= 5.0.0)
activesupport (>= 5.0.0)
octicons (>= 17.0.0)

diff:
@@ -5,7 +5,7 @@ module Primer
module VERSION
MAJOR = 0
MINOR = 0
- PATCH = 69
+ PATCH = 70
STRING = [MAJOR, MINOR, PATCH].join(".")
end

diff:
{
"name": "@primer/view-components",
- "version": "0.0.69",
+ "version": "0.0.70",
"description": "ViewComponents for the Primer Design System",
"main": "app/assets/javascripts/primer_view_components.js",
"module": "app/components/primer/primer.js",


diff:
"wingrunr21.vscode-ruby",
"mutantdino.resourcemonitor"
],
- "forwardPorts": [4000, 5000, 5400],
- "appPort": [4000, 5000, 5400],
+ "forwardPorts": [
+ 4000,
+ 5000,
+ 5400
+ ],
+ "appPort": [
+ 4000,
+ 5000,
+ 5400
+ ],
"portsAttributes": {
"4000": {
"label": "web"
"5400": {
"label": "doctocat"
}
+ },
+ "codespaces": {
+ "repositories": [
+ {
+ "name": "primer/css",
+ "permissions": {
+ "contents": "read",
+ }
+ }
+ ]
}
}
\ No newline at end of file

diff:
sudo cp --force .devcontainer/welcome-message.txt /usr/local/etc/vscode-dev-containers/first-run-notice.txt
script/setup
+
+script_folder="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
+workspaces_folder="$(cd "${script_folder}/.." && pwd)"
+
+cd "${workspaces_folder}"
+if [ ! -d "$1" ]; then
+ git clone "https://github.com/primer/css"
+else
+ echo "Already cloned $1"
+fi

original_message: Configure .devcontainer to download primer/css on post-create (#1089)


message: Fix post-create-command

diff:
@@ -7,8 +7,4 @@ script_folder="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
workspaces_folder="$(cd "${script_folder}/.." && pwd)"
cd "${workspaces_folder}"
-if [ ! -d "$1" ]; then
git clone "https://github.com/primer/css"
-else
- echo "Already cloned $1"
-fi

original_message: Fix post-create-command (#1093)


message: Fix post-create-command.sh css folder

diff:
@@ -4,7 +4,7 @@ sudo cp --force .devcontainer/welcome-message.txt /usr/local/etc/vscode-dev-cont
script/setup
script_folder="$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)"
-workspaces_folder="$(cd "${script_folder}/.." && pwd)"
+workspaces_folder="$(cd "${script_folder}/../.." && pwd)"
cd "${workspaces_folder}"
git clone "https://github.com/primer/css"

original_message: Fix post-create-command.sh css folder (#1094)


diff:
@@ -77,4 +77,7 @@ Rails.application.configure do
# Uncomment if you wish to allow Action Cable access from any origin.
# config.action_cable.disable_request_forgery_protection = true
+
+ # Unblock codespaces githubpreview.dev domain
+ config.hosts << /.*githubpreview\.dev/
end

original_message: Unblock codespaces githubpreview.dev domain (#1305)


diff:
@@ -19,7 +19,7 @@ Rails.application.configure do
# Enable server timing
config.server_timing = true
- config.hotwire_livereload.listen_paths << "/workspaces/css/src/"
+ config.hotwire_livereload.listen_paths << "/workspaces/css/src/" if File.exist?("/workspaces/css/src")
config.hotwire_livereload.listen_paths << Rails.root.join("../app/assets/javascripts")
config.hotwire_livereload.force_reload_paths << Rails.root.join("../app/assets/javascripts")

original_message:
Only listten to /workspaces path if it exists (#1317)

Co-authored-by: Katie Langerman <langermank@github.com>

Co-authored-by: Katie Langerman <langermank@github.com>


message: Ignore .d.ts file in chokidar

old_path: Procfile

new_path: Procfile

diff:
rails: cd demo; bin/rails s -p 4000
doctocat: cd docs; npm run develop
-assets: npx chokidar "app/components/**/*.pcss" "app/components/**/*.ts" -c "npm run build:css && npm run build:js"
+assets: npx chokidar "app/components/**/*.pcss" "app/components/**/*!(.d).ts" -c "npm run build:css && npm run build:js"

original_message: Ignore .d.ts file in chokidar (#1431)


diff:
+---
+'@primer/view-components': patch
+---
+
+Fix bug where clicking inside dialog, but finishing click outside, dismisses dialog

diff:
@@ -12,10 +12,11 @@ const overlayStack: ModalDialogElement[] = []
function clickHandler(event: Event) {
const target = event.target as HTMLElement
const button = target?.closest('button')
+ if (!button) return
// If the user is clicking a valid dialog trigger
let dialogId = button?.getAttribute('data-show-dialog-id')
- if (button && dialogId) {
+ if (dialogId) {
event.stopPropagation()
const dialog = document.getElementById(dialogId)
if (dialog instanceof ModalDialogElement) {
@@ -24,24 +25,10 @@ function clickHandler(event: Event) {
return
}
}
-
// Find the top level dialog that is open.
const topLevelDialog = overlayStack[overlayStack.length - 1]
if (!topLevelDialog) return
- // Check if the click happened outside the boundary of the top level dialog
- const clickOutsideDialog = !target.closest(`#${topLevelDialog.getAttribute('id')}`)
-
- // Only close dialog if it's a click outside the dialog and the dialog has a
- // button?
- if (!button) {
- if (clickOutsideDialog) {
- overlayStack.pop()
- topLevelDialog.close()
- }
- return
- }
-
dialogId = button.getAttribute('data-close-dialog-id')
if (dialogId === topLevelDialog.id) {
overlayStack.pop()
@@ -55,6 +42,32 @@ function clickHandler(event: Event) {
}
}
+function mousedownHandler(event: Event) {
+ const target = event.target as HTMLElement
+ if (target?.closest('button')) return
+
+ // Find the top level dialog that is open.
+ const topLevelDialog = overlayStack[overlayStack.length - 1]
+ if (!topLevelDialog) return
+
+ // Check if the mousedown happened outside the boundary of the top level dialog
+ const mouseDownOutsideDialog = !target.closest(`#${topLevelDialog.getAttribute('id')}`)
+
+ // Only close dialog if it's a click outside the dialog and the dialog has a button?
+ if (mouseDownOutsideDialog) {
+ target.ownerDocument.addEventListener(
+ 'mouseup',
+ (upEvent: Event) => {
+ if (upEvent.target === target) {
+ overlayStack.pop()
+ topLevelDialog.close()
+ }
+ },
+ {once: true}
+ )
+ }
+}
+
export class ModalDialogElement extends HTMLElement {
//TODO: Do we remove the abortController from focusTrap?
#focusAbortController = new AbortController()
@@ -109,6 +122,7 @@ export class ModalDialogElement extends HTMLElement {
if (!this.hasAttribute('role')) this.setAttribute('role', 'dialog')
document.addEventListener('click', clickHandler)
+ document.addEventListener('mousedown', mousedownHandler)
this.addEventListener('keydown', e => this.#keydown(e))
}

diff:
@@ -112,6 +112,21 @@ module Primer
show_divider: show_divider
})
end
+
+ # @label Dialog with text input
+ #
+ # @param title [String] text
+ # @param subtitle [String] text
+ # @param button_text [String] text
+ # @param show_divider [Boolean] toggle
+ def with_text_input(title: "Test Dialog", subtitle: nil, button_text: "Show Dialog", show_divider: true)
+ render_with_template(locals: {
+ title: title,
+ subtitle: subtitle,
+ button_text: button_text,
+ show_divider: show_divider
+ })
+ end
end
end
end

diff:
+<%= render(Primer::Alpha::Dialog.new(id: "dialog-one", title: title, subtitle: subtitle, visually_hide_title: false)) do |d| %>
+ <% d.show_button { button_text } %>
+ <% d.body do %>
+
Dialog One!

+
+ <form>
+ <input type="text" value="Some text goes in here">
+ </form>
+ <% end %>
+<% end %>

original_message: Use a mouseup mousedown event to guard accidental clicks dismissing dialog (#1754)


message: upgrade button component in dialog

diff:
+---
+"@primer/view-components": patch
+---
+
+Update `with_show_button` slot to use `Primer::Beta::Button` instead of `Primer::ButtonComponent`.

diff: Binary files a/.playwright/screenshots/previews.test.ts-snapshots/primer/alpha/dialog/default.png and b/.playwright/screenshots/previews.test.ts-snapshots/primer/alpha/dialog/default.png differ

diff: Binary files a/.playwright/screenshots/previews.test.ts-snapshots/primer/alpha/dialog/focused.png and b/.playwright/screenshots/previews.test.ts-snapshots/primer/alpha/dialog/focused.png differ

diff:
@@ -51,14 +51,14 @@ module Primer
# Optional button to open the dialog.
#
- # @param system_arguments [Hash] The same arguments as <%= link_to_component(Primer::ButtonComponent) %>.
+ # @param system_arguments [Hash] The same arguments as <%= link_to_component(Primer::Beta::Button) %>.
renders_one :show_button, lambda { |**system_arguments|
system_arguments[:classes] = class_names(
system_arguments[:classes]
)
system_arguments[:id] = "dialog-show-#{@system_arguments[:id]}"
system_arguments[:data] = (system_arguments[:data] || {}).merge({ "show-dialog-id": @system_arguments[:id] })
- Primer::ButtonComponent.new(**system_arguments)
+ Primer::Beta::Button.new(**system_arguments)
}
# Header content.

original_message:
upgrade button component in dialog (#1753)

Co-authored-by: Jon Rohan <rohan@github.com>


diff:
@@ -9,7 +9,7 @@ reviewers:
approvers:
- "@russelb"
creation-date: 2020-08-26
-last-updated: 2020-08-26
+last-updated: 2022-01-06
status: informational
---
@@ -131,6 +131,7 @@ Ports are assumed to be used on all nodes in all clusters unless otherwise speci
| 4180 | machine-config-daemon oauth-proxy | node ||
| 8797 | machine-config-daemon | node | 4.0 | metrics |
| 9259 | cluster-cloud-controller-manager-operator | cluster infra | 4.9 | healthz, control plane only |
+| 9260 | cluster-cloud-controller-manager-operator-config-sync | cluster infra | 4.10 | healthz, control plane only |
| 9443 | kube-controller-manager | workloads || recovery-controller |
| 9977 | etcd | etcd || ? |
| 10248 | kubelet | node || healthz |

license: Apache License 2.0

repo: openshift/enhancements

original_message:
Fix CCCMO related ports in port registry

Related CCCMO pr:
https://github.com/openshift/cluster-cloud-controller-manager-operator/pull/164


message: AWS IMDSv2 support proposal document

diff:
+---
+title: aws-imdsv2-support
+authors:
+ - "@lobziik"
+reviewers:
+ - "@patrickdillon"
+ - "@JoelSpeed"
+approvers:
+ - "@patrickdillon"
+ - "@JoelSpeed"
+creation-date: 2022-03-28
+last-updated: 2022-03-28
+tracking-link:
+ - [OCPCLOUD-1436](https://issues.redhat.com/browse/OCPCLOUD-1436)
+---
+
+# Support AWS IMDSv2 for EC2 machines
+
+## Summary
+
+For increasing security and add protection against open firewalls, reverse proxies, and SSRF vulnerabilities Amazon introduced
+[enhancements to the EC2 Instance Metadata Service](http://aws.amazon.com/blogs/security/defense-in-depth-open-firewalls-reverse-proxies-ssrf-vulnerabilities-ec2-instance-metadata-service/)
+(IMDSv2). It is a session-based interaction method with Instance Metadata Service (IMDS), in other words,
+all requests to `http://169.254.169.254` will require prior PUT requests for obtaining token and such token must be used in further requests.
+This document describes and proposes several interfaces for configuring IMDS behaviour for newly created machines via Machine API and
+during the installation procedure.
+
+## Motivation
+
+By adding mechanisms for configuring IMDS behaviour we will allow our end-users to enhance the security of their clusters and simplify Amazon [recommended best practices](https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-standards-fsbp-controls.html#fsbp-ec2-8) implementation.
+At this point, IMDSv2 enablement might be done manually via AWS console, but providing such settings on Machine API is a quite loud request from our end-users.
+
+### Goals
+
+- provide mechanisms to enable/enforce IMDSv2 for newly created machines via Machine API
+- provide mechanisms to enable/enforce IMDSv2 for master machines during installation procedure for newly created clusters
+
+### Non-Goals
+
+- perform automated migration between using IMDSv1 and IMDSv2 for existing infrastructure
+
+## Proposal
+
+- Add new options into install-config for the OCP installation program which will be passed as metadata service settings during virtual machines creation
+- Extend [AWSMachineProviderConfig](https://github.com/openshift/api/blob/1a6fa2913810101176a1d776f899fc4781b3fa50/machine/v1beta1/types_awsprovider.go#L12) by adding metadata service parameters
+- Pass metadata service parameters to AWS during new machines creation
+
+### User Stories
+
+- As an OpenShift cluster administrator, I would like to enforce IMDSv2 usage during an OCP cluster deployment procedure.
+- As an OpenShift cluster administrator, I would like to enforce IMDSv2 usage for newly created machines in my cluster via MachineSets configuration.
+- As an OpenShift cluster administrator, I would like to change IMDS interaction settings for newly created machines in my cluster.
+
+### API Extensions
+
+#### AWSMachineProviderConfig changes
+
+MachineAPI design mostly replicates parameters which [AWS API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html) consumes.
+
+```go
+type AWSMachineProviderConfig struct {
+ // Existing fields will not be modified
+ ...
+ // MetadataServiceOptions allows users to configure instance metadata service interaction options.
+ // If nothing specified, default AWS IMDS settings will be applied.
+ // https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html
+ // +optional
+ MetadataServiceOptions *MetadataServiceOptions `json:"metadataServiceOptions,omitempty"`
+}
+```
+
+```go
+
+type InstanceMetadataHTTPTokens string
+
+const (
+ // InstanceMetadataHTTPTokensRequired enforces sending of a signed token header with any instance metadata retrieval (GET) requests.
+ // Enforces IMDSv2 usage.
+ InstanceMetadataHTTPTokensRequired = "required"
+ // InstanceMetadataHTTPTokensOptional allows IMDSv1 usage along with IMDSv2
+ InstanceMetadataHTTPTokensOptional = "optional"
+)
+
+// MetadataServiceOptions defines the options available to a user when configuring
+// Instance Metadata Service (IMDS) Options.
+type MetadataServiceOptions struct {
+ // HTTPTokens determines whether or not the host requires the use of authentication when interacting with the metadata service.
+ // When using authentication, this enforces v2 interaction method (IMDSv2) with the metadata service.
+ // When omitted, this means the user has no opinion and the value is left to the platform to choose a good
+ // +kubebuilder:validation:Enum=required;optional
+ // +optional
+ HTTPTokens InstanceMetadataHTTPTokens `json:"httpTokens,omitempty"`
+}
+```
+
+### Implementation Details/Notes/Constraints
+
+#### Install Config changes
+
+For supporting IMDSv2 during installation we could extend install-config with aws specific `metadataService`
+section in the installer configuration.
+
+Example (origin is the [aws installation doc](https://docs.openshift.com/container-platform/4.10/installing/installing_aws/installing-aws-customizations.html#installation-aws-config-yaml_installing-aws-customizations)):
+
+```yaml
+apiVersion: v1
+baseDomain: example.com
+controlPlane:
+ hyperthreading: Enabled
+ name: master
+ platform:
+ aws:
+ zones:
+ - us-west-2a
+ - us-west-2b
+ rootVolume:
+ iops: 4000
+ size: 500
+ type: io1
+ metadataService: # proposed section
+ httpTokens: required
+ type: m5.xlarge
+ replicas: 3
+compute:
+- hyperthreading: Enabled
+ name: worker
+ platform:
+ aws:
+ rootVolume:
+ iops: 2000
+ size: 500
+ type: io1
+ metadataService: # proposed section
+ httpTokens: required
+ type: c5.4xlarge
+ zones:
+ - us-west-2c
+ replicas: 3
+metadata:
+ name: test-cluster
+networking:
+ clusterNetwork:
+ - cidr: 10.128.0.0/14
+ hostPrefix: 23
+ machineNetwork:
+ - cidr: 10.0.0.0/16
+ networkType: OpenShiftSDN
+ serviceNetwork:
+ - 172.30.0.0/16
+platform:
+ aws:
+ region: us-west-2
+ userTags:
+ adminContact: jdoe
+ costCenter: 7536
+ amiID: ami-96c6f8f7
+ serviceEndpoints:
+ - name: ec2
+ url: https://vpce-id.ec2.us-west-2.vpce.amazonaws.com
+fips: false
+sshKey: ssh-ed25519 AAAA...
+pullSecret: '{"auths": ...}'
+```
+
+#### Installer changes
+
+In order to support the changes described in the paragraph above some changes in the installer should be made:
+1. Internal structures should be extended for storing metadata service options from the installer config.
+2. Values for control plane machines should be piped down to terraform configs for passing it to AWS API during master machines creation. AWS terraform provider already [support such parameters](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/instance#metadata-options)
+3. Values for worker machines should be used for rendering proper MAPI MachineSet manifests in case of IPI installation.
+
+#### AWS Machine API provider changes
+
+Parameters described in *API Extensions* sections should be taken and passed to AWS API during new EC2 instance creation.
+AWS SDK which we use already supports [such](https://pkg.go.dev/github.com/aws/aws-sdk-go@v1.38.23/service/ec2#RunInstancesInput) [parameters](https://pkg.go.dev/github.com/aws/aws-sdk-go@v1.38.23/service/ec2#InstanceMetadataOptionsRequest).
+
+#### AWS Termination handler changes
+
+AWS specific [terimination handler](https://docs.openshift.com/container-platform/4.6/machine_management/creating_machinesets/creating-machineset-aws.html#machineset-non-guaranteed-instance_creating-machineset-aws)
+which relies on interaction with IMDS should be patched in order to support IMDSv2 for MAPI spot instances.
+
+### Risks and Mitigations
+
+#### Openshift components might rely on IMDS interactions
+Some openshift components might rely on interactions with IMDS.
+Enforcing a session-based interaction procedure might break it and required changes in order to support IMDSv2.
+
+#### User workloads might rely on IMDS interactions
+Some user workloads might not support IMDSv2. Such workloads will be broken on per-vm basis in the case of IMDSv2 enforcement.
+
+## Design Details
+
+### Open Questions
+
+- Should we enforce IMDSv2 (prohibit IMDSv1) for newly created clusters?
+
+### Test Plan
+
+Openshift e2e suite should be sufficient to prove the common safety of such changes.
+
+Aws-specific tests for exercising new API fields should be added to the Machine API e2e test suite.
+Specifically, a MachineSet creation with enabled IMDSv2 with a future check that machines are there and operable should be enough.
+
+Presumably, an extra CI job should be required for exercise installer changes.
+IMDSv2 should be enabled during installation time in the install-config, then the openshift conformance e2e test suite should be executed.
+
+### Graduation Criteria
+
+Addition of API fields to Machine API implies that the feature is GA from the beginning, no graduation criteria are required.
+Addition of AWS-specific optional parameters to the installer config presumably does not require additional graduation criteria as well.
+
+#### Dev Preview -> Tech Preview
+
+N/A
+
+#### Tech Preview -> GA
+
+N/A
+
+#### Removing a deprecated feature
+
+This enhancement does not describe the removal of a deprecated feature.
+
+### Upgrade / Downgrade Strategy
+
+Existing clusters being upgraded will not have any undesired effect as this these features do not interfere with any other one and require additional configuration to be enabled.
+
+Once configured, on a downgrade, the Machine API components will not know about the new fields, and as such, they will ignore IMDS parameters if specified.
+Machines created with the IMDS parameters configured will be unaffected, persisted, and stay as it was.
+
+### Version Skew Strategy
+
+Since it is an optional aws-specific feature of Machine API, version discrepancy with other components should not have any negative effect.
+
+### Operational Aspects of API Extensions
+
+#### Failure Modes
+
+Enforcing IMDSv2 might lead to end-user workloads degradation in the case of such workloads relying on an old mechanism
+of interaction with the AWS Instance Metadata service.
+This already was discussed in the Risks section.
+
+#### Support Procedures
+
+- If some component relies on IMDS interaction and does not support IMDSv2, it will receive `401 Unauthorized` response on each IMDS request.
+ * Such errors handling expecting to have no difference with networking/bad requests issues and should be treated accordingly on a per-component basis.
+
+## Implementation History
+
+- https://github.com/coreos/ignition/pull/1154
+- https://github.com/openshift/machine-config-operator/pull/2988
+
+## Future Implementation
+
+In the future, we may wish to add additional [metadata service parameters](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataOptions.html),
+such as `HttpPutResponseHopLimit` and `InstanceMetadataTags`.
+This will require further API extension and respective controllers/installer changes.
+
+## Drawbacks
+
+N/A
+
+## Alternatives
+
+Do not provide any additional knobs in MachineAPI and in install-config, leave users to deal with it themselves manually
+via AWS interfaces (web-console, cli)
+
+## Infrastructure Needed
+
+Additional CI job for exercise new options in install config.

original_message: AWS IMDSv2 support proposal document


message: Align api definitions with actual API changes, upd history

diff:
@@ -9,7 +9,7 @@ approvers:
- "@patrickdillon"
- "@JoelSpeed"
creation-date: 2022-03-28
-last-updated: 2022-03-28
+last-updated: 2022-04-05
tracking-link:
- [OCPCLOUD-1436](https://issues.redhat.com/browse/OCPCLOUD-1436)
---
@@ -65,7 +65,7 @@ type AWSMachineProviderConfig struct {
// If nothing specified, default AWS IMDS settings will be applied.
// https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html
// +optional
- MetadataServiceOptions *MetadataServiceOptions `json:"metadataServiceOptions,omitempty"`
+ MetadataServiceOptions MetadataServiceOptions `json:"metadataServiceOptions,omitempty"`
}
```
@@ -87,6 +87,7 @@ type MetadataServiceOptions struct {
// HTTPTokens determines whether or not the host requires the use of authentication when interacting with the metadata service.
// When using authentication, this enforces v2 interaction method (IMDSv2) with the metadata service.
// When omitted, this means the user has no opinion and the value is left to the platform to choose a good
+ // default, which is subject to change over time. The current default is optional.
// +kubebuilder:validation:Enum=required;optional
// +optional
HTTPTokens InstanceMetadataHTTPTokens `json:"httpTokens,omitempty"`
@@ -249,6 +250,7 @@ This already was discussed in the Risks section.
- https://github.com/coreos/ignition/pull/1154
- https://github.com/openshift/machine-config-operator/pull/2988
+- https://github.com/openshift/api/pull/1156
## Future Implementation


diff:
@@ -54,9 +54,12 @@ At this point, IMDSv2 enablement might be done manually via AWS console, but pro
### API Extensions
#### AWSMachineProviderConfig changes
+A new optional field will be added to the `AWSMachineProviderConfig` struct `MetadataServiceOptions`.
-MachineAPI design mostly replicates parameters which [AWS API](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html) consumes.
+`MetadataServiceOptions` will be a struct with single `Authentication` field at this point.
+Also, a new `MetadataServiceAuthentication` type that describes the possible values for the `Authentication` field on `MetadataServiceOptions` will be added.
+The concrete changes to the `AWSMachineProviderConfig` outlined below:
```go
type AWSMachineProviderConfig struct {
// Existing fields will not be modified
@@ -70,27 +73,28 @@ type AWSMachineProviderConfig struct {
```
```go
-
-type InstanceMetadataHTTPTokens string
+type MetadataServiceAuthentication string
const (
- // InstanceMetadataHTTPTokensRequired enforces sending of a signed token header with any instance metadata retrieval (GET) requests.
+ // MetadataServiceAuthenticationRequired enforces sending of a signed token header with any instance metadata retrieval (GET) requests.
// Enforces IMDSv2 usage.
- InstanceMetadataHTTPTokensRequired = "required"
- // InstanceMetadataHTTPTokensOptional allows IMDSv1 usage along with IMDSv2
- InstanceMetadataHTTPTokensOptional = "optional"
+ MetadataServiceAuthenticationRequired = "Required"
+ // MetadataServiceAuthenticationOptional allows IMDSv1 usage along with IMDSv2
+ MetadataServiceAuthenticationOptional = "Optional"
)
// MetadataServiceOptions defines the options available to a user when configuring
// Instance Metadata Service (IMDS) Options.
type MetadataServiceOptions struct {
- // HTTPTokens determines whether or not the host requires the use of authentication when interacting with the metadata service.
+ // Authentication determines whether or not the host requires the use of authentication when interacting with the metadata service.
// When using authentication, this enforces v2 interaction method (IMDSv2) with the metadata service.
// When omitted, this means the user has no opinion and the value is left to the platform to choose a good
// default, which is subject to change over time. The current default is optional.
- // +kubebuilder:validation:Enum=required;optional
+ // At this point this field represents `HttpTokens` parameter from `InstanceMetadataOptionsRequest` structure in AWS EC2 API
+ // https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InstanceMetadataOptionsRequest.html
+ // +kubebuilder:validation:Enum=Required;Optional
// +optional
- HTTPTokens InstanceMetadataHTTPTokens `json:"httpTokens,omitempty"`
+ Authentication MetadataServiceAuthentication `json:"authentication,omitempty"`
}
```
@@ -119,7 +123,7 @@ controlPlane:
size: 500
type: io1
metadataService: # proposed section
- httpTokens: required
+ authentication: Required
type: m5.xlarge
replicas: 3
compute:
@@ -132,7 +136,7 @@ compute:
size: 500
type: io1
metadataService: # proposed section
- httpTokens: required
+ authentication: Required
type: c5.4xlarge
zones:
- us-west-2c

original_message:
Update according API review.

For more info see PR to opensift/api:
https://github.com/openshift/api/pull/1156


message: Upd metadata section, add approvers, revise reviewers

diff:
@@ -6,28 +6,30 @@ authors:
reviewers:
- "@dhellmann"
- "@mhrivnak"
-- "@rvanderp3" - SPLAT, installer flexibility initiative
-- "@deads2k" - API change, KCM, library-go
-- "@JoelSpeed" - cluster infra
-- "@jsafrane" - cluster storage operator
-- "@sinnykumari" - machine config operator
-- "@danwinship" - openshift networking
+ - "@rvanderp3"
+ - "@mtulio"
+ - "@deads2k"
+ - "@JoelSpeed"
+ - "@sinnykumari"
+ - "@danwinship"
approvers:
-- TBD
+ - "@dhellmann"
+ - "@deads2k"
+ - "@bparees"
api-approvers:
- "@deads2k"
- "@JoelSpeed"
creation-date: 2022-09-06
last-updated: 2022-09-06
tracking-link:
-- [OCPPLAN-9429](https://issues.redhat.com/browse/OCPPLAN-9429)
-- [OCPPLAN-8156](https://issues.redhat.com/browse/OCPPLAN-8156)
+ - https://issues.redhat.com/browse/OCPPLAN-9429
+ - https://issues.redhat.com/browse/OCPPLAN-8156
see-also:
-- [KEP-2392 Cloud Controller Manager](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cloud-provider/2392-cloud-controller-manager)
-- [OCP infrastructure provider onboarding guide](https://docs.providers.openshift.org/overview/)
-- [Out-of-tree cloud provider integration support](https://github.com/openshift/enhancements/blob/master/enhancements/cloud-integration/out-of-tree-provider-support.md)
-- [Platform Operators Proposal](https://github.com/openshift/enhancements/blob/master/enhancements/olm/platform-operators.md)
-- [Capabilites selection](https://github.com/openshift/enhancements/blob/master/enhancements/installer/component-selection.md)
+ - "[KEP-2392 Cloud Controller Manager](https://github.com/kubernetes/enhancements/tree/master/keps/sig-cloud-provider/2392-cloud-controller-manager)"
+ - "[OCP infrastructure provider onboarding guide](https://docs.providers.openshift.org/overview/)"
+ - "[Out-of-tree cloud provider integration support](https://github.com/openshift/enhancements/blob/master/enhancements/cloud-integration/out-of-tree-provider-support.md)"
+ - "[Platform Operators Proposal](https://github.com/openshift/enhancements/blob/master/enhancements/olm/platform-operators.md)"
+ - "[Capabilites selection](https://github.com/openshift/enhancements/blob/master/enhancements/installer/component-selection.md)"
---
# Introduce new platform type "External" in the OpenShift specific Infrastructure resource


message: Add win team, some rephrases, elaborate library-go section

diff:
@@ -12,6 +12,7 @@ reviewers:
- "@JoelSpeed"
- "@sinnykumari"
- "@danwinship"
+ - "@openshift/openshift-team-windows-containers"
approvers:
- "@dhellmann"
- "@deads2k"
@@ -112,11 +113,11 @@ OpenShift can not be disabled and still requires a signal about an underlying pl
One of the possible examples of the interaction of the capabilities with the "External" platform type would be the MachineAPI and the Machine Api Operator.
At this point, the MachineAPI has no use in running if there is no machine controller (which is heavily cloud-provider dependent).
-"External" platform type will serve as a signal in the scenario when machine-api capability is enabled and the cluster deployer
-going to satisfy the machine controller requirement. In this case, machine-api-operator would know what to do and deploy
-only generic cloud-independent controllers (such as machine-healthcheck, machineset, and node-link controllers), such
-behaviour will simplify initial cloud-platform enablement and will reduce the necessity of reverse-engineering and replicating a work
-which was already done by Red Hat engineers.
+When the platform type is set to "External", and the machine-api capability is enabled,
+that will cause Machine API operator to deploy only generic cloud-independent controllers (such as machine-healthcheck, machineset, and node-link controllers).
+The platform-specific components would be deployed through a separate mechanism.
+Such behaviour will simplify initial cloud-platform enablement and will reduce the necessity of reverse-engineering
+and replicating work that was already done by Red Hat engineers.
### User Stories
@@ -169,7 +170,7 @@ During [initial implementation](#implementation-phases) we must ensure that all
In the future, we will need to change the behavior of OpenShift components to be able to receive supplemental provider-specific components from an infrastructure provider
or, if a component manages something else (i.e. kubelet, kcm), adjust its behaviour (set `--cloud-provider=external` arg to kubelet for example).
-Specific component changes will be described in details within separate enhancement documents on a per-component basis.
+Specific component changes will be described in detail within separate enhancement documents on a per-component basis.
#### Machine Config Operator
@@ -211,8 +212,13 @@ however this is a subject for the upcoming design work.
Significant part of the code around PlatformType handling lives in the ["openshift/library-go"](https://github.com/openshift/library-go/blob/e1213f6ec5d10aa4aa8a4cac2780b1dc674c0396/pkg/operator/configobserver/cloudprovider/observe_cloudprovider.go).
-For the moment, this code is responsible for the decision around kubelet and kcm flags. Precisely, [IsCloudProviderExternal](https://github.com/openshift/library-go/blob/e1213f6ec5d10aa4aa8a4cac2780b1dc674c0396/pkg/operator/configobserver/cloudprovider/observe_cloudprovider.go#L154) function
-is used for decisions around kubelet and KCM flags (within MCO and KCMO respectively). Also, this code is used for the decision-making about CCM operator engagement.
+Currently, this code is responsible for the decision around kubelet and kcm flags. Precisely, [IsCloudProviderExternal](https://github.com/openshift/library-go/blob/e1213f6ec5d10aa4aa8a4cac2780b1dc674c0396/pkg/operator/configobserver/cloudprovider/observe_cloudprovider.go#L154) function
+is used for decisions around kubelet and KCM flags (within MCO and KCMO respectively).
+Also, this code is used for the decision-making about CCM operator engagement.
+
+This piece should be changed to react appropriately to the "External" platform type. During the first phases, it will need
+to behave the same as in the case of the "None" platform type. Then, in upcoming phases,
+it will need to respect additional parameters from the "External" platform spec down the road.
#### Machine Api Operator
@@ -223,7 +229,7 @@ Machine Api Operator is responsible for deploying and maintaining the set of mac
- machine health check controller
- machine controller
-From the list above, the only "machine" controller is cloud-provider dependent, however, for now, Machine Api Operator
+From the list above, only the "machine controller" is cloud-provider dependent, however, for now, Machine Api Operator
won't deploy anything if it encounters "None" or an unrecognized platform type.
In the future, "External" platform type would serve as a signal for Machine Api Operator to deploy only provider-agnostic
@@ -237,7 +243,7 @@ Cluster Storage Operator will go to no-op state if it encounters PlatformType "N
At this point, nothing requires storage to be there during cluster installation, and storage (CSI) drivers might be supplemented
later via OLM or some other way as day two operation.
-No particular changes in regards to the "External" platform type introduction are not expected there.
+No particular changes in regards to the "External" platform type introduction are expected there.
#### Cloud Credential Operator
@@ -259,7 +265,7 @@ into no-op mode if it encounters an unrecognized platform.
#### Cluster Image Registry Operator
For image registry a [storage backend config decision](https://github.com/openshift/cluster-image-registry-operator/blob/99474318db709a6d17d06468b90cdf0dc0fd2b87/pkg/storage/storage.go#L157) is platform specific.
-With the "None" platform type CIRO goes into no-op state, which means that no registry won't deploy in such case.
+With the "None" platform type CIRO goes into no-op state, which means that no registry will be deploy in such case.
The image registry configures with EmptyDir storage for unknown platform type at the moment.
Image Registry storage options might be configured to use PVC-backed or external storage systems


message: Elaborate a motivation section a bit, add a note about capabilities for the MAPIO

diff:
@@ -96,13 +96,17 @@ a new cloud provider and mostly impossible without Red Hat engineering engagemen
Since a lot of infrastructure related components (such as [CCCMO](https://github.com/openshift/cluster-cloud-controller-manager-operator), [Machine API operator](https://github.com/openshift/machine-api-operator), [Machine Config Operator](https://github.com/openshift/machine-config-operator), and so on)
require information about, at least, the presence of an underlying cloud provider, the "None" platform does not fit well as a signal in such a situation.
-Having a special, built-in, and somewhat generic platform type that will signal about the presence of an underlying infrastructure platform without
+A special, built-in, and somewhat generic platform type that will signal about the presence of an underlying infrastructure platform without
platform-specific details will help to reduce the number of changes across OCP repositories
and simplify the initial integration work for non-Red Hat contributors.
+Such a new ability will allow smaller / regional cloud providers to build and test their integration with the OpenShift
+with considerably less effort.
-Examples of difficulties that are present today due to having a predefined list of platforms:
-- No defined mechanism to set `--cloud-provider=external` arg to kubelet/KCM/apiserver without merges and further revendoring of "openshift/api"
-- No way to extend machine-api and deliver a new provider without merges to "openshift/machine-api-operator" and "openshift/api" repos
+Additionally, there are difficulties that are present today due to having a predefined list of platforms.
+A few examples:
+- No defined mechanism to set `--cloud-provider=external` arg to kubelet/KCM/apiserver without merges and further revendoring of "openshift/api",
+ at the moment decision-making here is tied to the PlatformType.
+- No way to extend machine-api and deliver a new provider without merges to "openshift/machine-api-operator" and "openshift/api" repos.
### Conjunction with Capabilities
@@ -232,7 +236,8 @@ Machine Api Operator is responsible for deploying and maintaining the set of mac
From the list above, only the "machine controller" is cloud-provider dependent, however, for now, Machine Api Operator
won't deploy anything if it encounters "None" or an unrecognized platform type.
-In the future, "External" platform type would serve as a signal for Machine Api Operator to deploy only provider-agnostic
+In the future, "External" platform type, in conjunction with an enabled capability,
+would serve as a signal for Machine Api Operator to deploy only provider-agnostic
controllers, which would leave room for the user to supplement only the machine controller and not to reverse engineer and
replicate everything that MAO does.


message: Extend CCCMO section

diff:
@@ -244,10 +244,18 @@ described in the [API Extensions](#api-extensions) section down below.
#### Cluster Cloud Controller Manager Operator
Responsible for deploying platform-specific Cloud Controller Manager as well as for handling a number of OpenShift's
-specific peculiarities (such as populating proxy settings for CCMs, sync credentials and so on).
+specific peculiarities (such as populating proxy settings for CCMs, sync credentials, and so on).
+
+The code from the [library-go](#library-go) using for decision-making about operator engagement.
+In case library-go's [IsCloudProviderExternal](https://github.com/openshift/library-go/blob/e1213f6ec5d10aa4aa8a4cac2780b1dc674c0396/pkg/operator/configobserver/cloudprovider/observe_cloudprovider.go#L154) function
+indicates that cloud provider is external and the operator encounters a platform which it is not aware of it will go into 'Degraded' state.
During the first phases of the "External" platform type enablement, this operator should be just disabled.
-In the future, when the delivery mechanism for CCMs will be defined, the operator might be engaged for deploying a user-provided cloud controller manager,
+This might be done with changes within the [library-go](#library-go) and further dependency updates or, better,
+by adding a respective check within the operator itself.
+
+In the future, when the delivery mechanism for CCMs will be defined,
+the operator might be engaged for deploying a user-provided cloud controller manager,
however this is a subject for the upcoming design work.
#### Machine Api Operator

original_message: Extend CCCMO section


message: Update header, extend "Future work" section

diff:
@@ -8,11 +8,11 @@ reviewers:
- "@mhrivnak"
- "@rvanderp3"
- "@mtulio"
- - "@deads2k"
- - "@JoelSpeed"
- - "@sinnykumari"
- - "@danwinship"
- - "@Miciah"
+ - "@deads2k, to review library-go, KCMO related parts andopenshift/api changes"
+ - "@JoelSpeed, to review CCM, MAPO related parts and openshift/api changes"
+ - "@sinnykumari, to review MCO related parts"
+ - "@danwinship, to review CNO related parts"
+ - "@Miciah, to review Ingress related parts"
- "@openshift/openshift-team-windows-containers"
approvers:
- "@dhellmann"
@@ -32,6 +32,7 @@ see-also:
- "[Out-of-tree cloud provider integration support](https://github.com/openshift/enhancements/blob/master/enhancements/cloud-integration/out-of-tree-provider-support.md)"
- "[Platform Operators Proposal](https://github.com/openshift/enhancements/blob/master/enhancements/olm/platform-operators.md)"
- "[Capabilites selection](https://github.com/openshift/enhancements/blob/master/enhancements/installer/component-selection.md)"
+ - "[Bare metal in-cluster network infrastructure](https://github.com/openshift/enhancements/blob/ce4d303db807622687159eb9d3248285a003fabb/enhancements/network/baremetal-networking.md)"
---
# Introduce new platform type "External" in the OpenShift specific Infrastructure resource
@@ -147,6 +148,8 @@ There are several topics in this area that would be wise to defer for upcoming p
1. Define missing capabilities and their concrete behaviour, for example, add a "capability" for machine-api
2. Precisely define the reaction of the operators listed below for the "External" platform type
3. Define and document concrete mechanism for supplement cluster with provider-specific components during installation time (CCM, MAPI controller, DNS controller)
+4. Research the necessity for engagement and api extension for ["on-prem"-like in-cluster network infrastructure](https://github.com/openshift/enhancements/blob/ce4d303db807622687159eb9d3248285a003fabb/enhancements/network/baremetal-networking.md) for the "External" platform.
+ This will depend on demand from partner cloud providers and their cloud capabilities (the presence of a load-balancer-like concept, for example).
### Background


message: Update API according feedback, extend "Answered Questions" section to capture discussions outcome

diff:
@@ -374,23 +374,23 @@ type CloudControllerManagerMode string
const (
// Cloud Controller Manager is enabled and expected to be supplied.
// Signaling MCO to set `--cloud-provider=external` flag to the kubelets.
- CloudControllerManagerEnabled CloudControllerManagerMode = "Enabled"
+ CloudControllerManagerExternal CloudControllerManagerState = "External"
// No Cloud Controller Manager is expected to be supplied.
// Signaling MCO not to set `--cloud-provider` flag to the kubelets.
- CloudControllerManagerDisabled CloudControllerManagerMode = "Disabled"
+ CloudControllerManagerNone CloudControllerManagerState = "None"
)
type CloudControllerManagerSettings struct {
- // Mode determines whether or not an external Cloud Controller Manager is expected to
+ // State determines whether or not an external Cloud Controller Manager is expected to
// be presented in the cluster.
// For engaging an external Cloud Controller Manager, certain flags are expected to be set to the kubelets.
// https://kubernetes.io/docs/tasks/administer-cluster/running-cloud-controller/#running-cloud-controller-manager
//
- // When enabled, the respective operator (machine config operator) should set `--cloud-provider=external` flag to the kubelet.
+ // When set to "External", the respective operator (machine config operator) should set `--cloud-provider=external` flag to the kubelet.
// When omitted or disabled, no `cloud-provider` flag should be set.
- // +kubebuilder:validation:Enum=Enabled;Disabled
+ // +kubebuilder:validation:Enum=External;None
// +optional
- Mode CloudControllerManagerMode `json:"mode,omitempty"`
+ State CloudControllerManagerMode `json:"state,omitempty"`
}
@@ -452,16 +452,41 @@ codebase would be mostly out of our control.
- Should we explicitly communicate that the "External" platform is something that we do not support yet?
-- Should we invest in preparing workflows that will perform UPI with the "None"/"External" platform types installation
- on the AWS or GCP, or existed vSphere-based workflows would be enough?
-
### Answered question
-Q: Should we gate the "External" platform addition behind the feature gate by generating separate CRD for TPNU clusters?
-A: There seems to be a soft consensus that we do not need to gate these changes behind Tech Preview if it is not necessary.
+**Q**: Should we gate the "External" platform addition behind the feature gate by generating separate CRD for TPNU clusters?
+
+**A**: There seems to be a soft consensus that we do not need to gate these changes behind Tech Preview if it is not necessary.
Due to operators intended to react on the "External" platform the same as for the "None" one during the first phases,
gating these API extensions does not seem needed.
-Related discussion: https://github.com/openshift/enhancements/pull/1234#discussion_r968935259
+
+Related discussion: [1](https://github.com/openshift/enhancements/pull/1234#discussion_r968935259)
+
+---
+**Q**: Should we invest in preparing workflows that will perform UPI with the "None"/"External" platform types installation
+on the AWS or GCP, or existing vSphere-based workflows would be enough?
+
+**A**: Adding a job on one additional cloud platform to ensure that the "External" platform type works as intended looks reasonable now,
+but we should mainly rely on in-repo functional tests on a per-component basis and avoid engaging of e2e workflows as much as possible.
+
+Related discussions: [1](https://github.com/openshift/enhancements/pull/1234#discussion_r968934725), [2](https://github.com/openshift/enhancements/pull/1234#discussion_r968936500).
+
+---
+**Q**: Do we need an API for the MAPI components similar to the proposed [CCM one](#api-extensions)
+to allow users to choose how the MAPI components are deployed.
+
+**A**: We do not see an absolute necessity to add such API knobs right now. For the moment combination of the
+"External" platform and an enabled MAPI capability look like a sufficient signal.
+By the nature of the [capabilities mechanism](https://github.com/openshift/enhancements/blob/master/enhancements/installer/component-selection.md#summary)(i.e., no MAO deployment, no MAPI CRDs),
+if Machine API operator running and detects the "External" platform, that is the signal to it that *someone* is going to run a machine controller.
+
+Given that capabilities "API" is already added and in use, introducing additional knobs which will interfere with that
+would mean more code changes and the necessity of establishing a mechanism for communicating with users (i.e., what should handle such API if MAPI is disabled by the capabilities mechanism).
+
+However, if during upcoming phases, we will discover a need to add an API field specifically to help a user install their machine API controller,
+we could update this EP, or a new enhancement document should be created to provide a proper exploration of interaction with capabilities and other operation modes.
+
+Related discussions: [1](https://github.com/openshift/enhancements/pull/1234#issuecomment-1271896532)
### Test Plan