From 8f72aa538f229571ee5e2b85066288c4841c6426 Mon Sep 17 00:00:00 2001 From: Marcelo Date: Mon, 16 Aug 2021 21:14:11 -0400 Subject: [PATCH 01/45] update next --- package.json | 2 +- yarn.lock | 403 ++++++++++++--------------------------------------- 2 files changed, 96 insertions(+), 309 deletions(-) diff --git a/package.json b/package.json index 4b7ad87..4a49516 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "start": "next start" }, "dependencies": { - "next": "^11.0.1", + "next": "^11.1.0", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/yarn.lock b/yarn.lock index 6cb7cbf..ce096d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,11 +9,21 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/helper-plugin-utils@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" + integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== + "@babel/helper-validator-identifier@^7.14.5": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== +"@babel/helper-validator-identifier@^7.14.9": + version "7.14.9" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" + integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + "@babel/highlight@^7.10.4": version "7.14.5" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" @@ -23,6 +33,13 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/plugin-syntax-jsx@7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" + integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + "@babel/runtime@7.12.5": version "7.12.5" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.5.tgz#410e7e487441e1b360c29be715d870d9b985882e" @@ -37,13 +54,12 @@ dependencies: regenerator-runtime "^0.13.4" -"@babel/types@7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.8.3.tgz#5a383dffa5416db1b73dedffd311ffd0788fb31c" - integrity sha512-jBD+G8+LWpMBBWvVcdr4QysjUE4mU/syrhN17o1u3gx0/WzJB1kwiVZAXRtWbsIPOwW8pF/YJV5+nmetPzepXg== +"@babel/types@7.15.0": + version "7.15.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" + integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== dependencies: - esutils "^2.0.2" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" "@hapi/accept@5.0.2": @@ -66,20 +82,25 @@ resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.2.0.tgz#f3933a44e365864f4dad5db94158106d511e8131" integrity sha512-sqKVVVOe5ivCaXDWivIJYVSaEgdQK9ul7a4Kity5Iw7u9+wBAPbX1RMSnLLmp7O4Vzj0WOWwMAJsTL00xwaNug== -"@next/env@11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-11.0.1.tgz#6dc96ac76f1663ab747340e907e8933f190cc8fd" - integrity sha512-yZfKh2U6R9tEYyNUrs2V3SBvCMufkJ07xMH5uWy8wqcl5gAXoEw6A/1LDqwX3j7pUutF9d1ZxpdGDA3Uag+aQQ== +"@napi-rs/triples@^1.0.3": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c" + integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA== + +"@next/env@11.1.0": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@next/env/-/env-11.1.0.tgz#cae83d8e0a65aa9f2af3368f8269ffd9d911746a" + integrity sha512-zPJkMFRenSf7BLlVee8987G0qQXAhxy7k+Lb/5hLAGkPVHAHm+oFFeL+2ipbI2KTEFlazdmGY0M+AlLQn7pWaw== -"@next/polyfill-module@11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.0.1.tgz#ca2a110c1c44672cbcff6c2b983f0c0549d87291" - integrity sha512-Cjs7rrKCg4CF4Jhri8PCKlBXhszTfOQNl9AjzdNy4K5jXFyxyoSzuX2rK4IuoyE+yGp5A3XJCBEmOQ4xbUp9Mg== +"@next/polyfill-module@11.1.0": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.1.0.tgz#ee6b9117a1f9bb137479dfa51d5a9e38e066a62f" + integrity sha512-64EgW8SzJRQls2yJ5DkuljRxgE24o2kYtX/ghTkPUJYsfidHMWzQGwg26IgRbb/uHqTd1G0W5UkKag+Nt8TWaQ== -"@next/react-dev-overlay@11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.0.1.tgz#3c481e83347255abd466dcf7e59ac8a79a0d7fd6" - integrity sha512-lvUjMVpLsgzADs9Q8wtC5LNqvfdN+M0BDMSrqr04EDWAyyX0vURHC9hkvLbyEYWyh+WW32pwjKBXdkMnJhoqMg== +"@next/react-dev-overlay@11.1.0": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.1.0.tgz#8d4e8020a4cbdacbca431a0bf40c4d28187083af" + integrity sha512-h+ry0sTk1W3mJw+TwEf91aqLbBJ5oqAsxfx+QryqEItNtfW6zLSSjxkyTYTqX8DkgSssQQutQfATkzBVgOR+qQ== dependencies: "@babel/code-frame" "7.12.11" anser "1.4.9" @@ -93,10 +114,17 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -"@next/react-refresh-utils@11.0.1": - version "11.0.1" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.0.1.tgz#a7509f22b6f70c13101a26573afd295295f1c020" - integrity sha512-K347DM6Z7gBSE+TfUaTTceWvbj0B6iNAsFZXbFZOlfg3uyz2sbKpzPYYFocCc27yjLaS8OfR8DEdS2mZXi8Saw== +"@next/react-refresh-utils@11.1.0": + version "11.1.0" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.1.0.tgz#60c3c7b127a5dab8b0a2889a7dcf8a90d2c4e592" + integrity sha512-g5DtFTpLTGa36iy9DuZawtJeitI11gysFGKPQQqy+mNbSFazguArcJ10gAYFlbqpIi4boUamWNI5mAoSPx3kog== + +"@node-rs/helper@1.2.1": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@node-rs/helper/-/helper-1.2.1.tgz#e079b05f21ff4329d82c4e1f71c0290e4ecdc70c" + integrity sha512-R5wEmm8nbuQU0YGGmYVjEc0OHtYsuXdpRG+Ut/3wZ9XAvQWyThN08bTh2cBJgoZxHQUPtvRfeQuxcAgLuiBISg== + dependencies: + "@napi-rs/triples" "^1.0.3" "@types/node@*": version "16.0.1" @@ -108,21 +136,6 @@ a11y-focus-store@^1.0.0: resolved "https://registry.yarnpkg.com/a11y-focus-store/-/a11y-focus-store-1.0.0.tgz#ae52561cb86ae6c2904c1a4abf2e5820bf5305b0" integrity sha1-rlJWHLhq5sKQTBpKvy5YIL9TBbA= -airbnb-prop-types@^2.16.0: - version "2.16.0" - resolved "https://registry.yarnpkg.com/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz#b96274cefa1abb14f623f804173ee97c13971dc2" - integrity sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg== - dependencies: - array.prototype.find "^2.1.1" - function.prototype.name "^1.1.2" - is-regex "^1.1.0" - object-is "^1.1.2" - object.assign "^4.1.0" - object.entries "^1.1.2" - prop-types "^15.7.2" - prop-types-exact "^1.2.0" - react-is "^16.13.1" - animation-bus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/animation-bus/-/animation-bus-0.2.0.tgz#43854c2c9463fb82c664eff0e19b9733081150fa" @@ -176,14 +189,6 @@ aria-hidden@^1.1.2: dependencies: tslib "^1.0.0" -array.prototype.find@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/array.prototype.find/-/array.prototype.find-2.1.1.tgz#3baca26108ca7affb08db06bf0be6cb3115a969c" - integrity sha512-mi+MYNJYLTx2eNYy+Yh6raoQacCsNeeMUaspFPh9Y141lFSsWxxB8V9mM2ye+eqiRs917J6/pJ4M9ZPzenWckA== - dependencies: - define-properties "^1.1.3" - es-abstract "^1.17.4" - asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -227,11 +232,6 @@ available-typed-arrays@^1.0.2: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9" integrity sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA== -babel-plugin-syntax-jsx@6.18.0: - version "6.18.0" - resolved "https://registry.yarnpkg.com/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946" - integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY= - base64-js@^1.0.2: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" @@ -592,19 +592,19 @@ css.escape@1.5.1: resolved "https://registry.yarnpkg.com/css.escape/-/css.escape-1.5.1.tgz#42e27d4fa04ae32f931a4b4d4191fa9cddee97cb" integrity sha1-QuJ9T6BK4y+TGktNQZH6nN3ul8s= -cssnano-preset-simple@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-2.0.0.tgz#b55e72cb970713f425560a0e141b0335249e2f96" - integrity sha512-HkufSLkaBJbKBFx/7aj5HmCK9Ni/JedRQm0mT2qBzMG/dEuJOLnMt2lK6K1rwOOyV4j9aSY+knbW9WoS7BYpzg== +cssnano-preset-simple@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssnano-preset-simple/-/cssnano-preset-simple-3.0.0.tgz#e95d0012699ca2c741306e9a3b8eeb495a348dbe" + integrity sha512-vxQPeoMRqUT3c/9f0vWeVa2nKQIHFpogtoBvFdW4GQ3IvEJ6uauCP6p3Y5zQDLFcI7/+40FTgX12o7XUL0Ko+w== dependencies: caniuse-lite "^1.0.30001202" -cssnano-simple@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-2.0.0.tgz#930d9dcd8ba105c5a62ce719cb00854da58b5c05" - integrity sha512-0G3TXaFxlh/szPEG/o3VcmCwl0N3E60XNb9YZZijew5eIs6fLjJuOPxQd9yEBaX2p/YfJtt49i4vYi38iH6/6w== +cssnano-simple@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssnano-simple/-/cssnano-simple-3.0.0.tgz#a4b8ccdef4c7084af97e19bc5b93b4ecf211e90f" + integrity sha512-oU3ueli5Dtwgh0DyeohcIEE00QVfbPR3HzyXdAl89SfnQG3y0/qcpfLVW+jPIh3/rgMZGwuW96rejZGaYE9eUg== dependencies: - cssnano-preset-simple "^2.0.0" + cssnano-preset-simple "^3.0.0" csstype@^3.0.2: version "3.0.8" @@ -670,14 +670,6 @@ dom-helpers@^5.0.1: "@babel/runtime" "^7.8.7" csstype "^3.0.2" -dom-serializer@0: - version "0.2.2" - resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51" - integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g== - dependencies: - domelementtype "^2.0.1" - entities "^2.0.0" - dom-serializer@^1.0.1: version "1.3.2" resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.3.2.tgz#6206437d32ceefaec7161803230c7a20bc1b4d91" @@ -697,11 +689,6 @@ domain-browser@^1.1.1: resolved "https://registry.yarnpkg.com/domain-browser/-/domain-browser-1.2.0.tgz#3d31f50191a6749dd1375a7f522e823d42e54eda" integrity sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA== -domelementtype@1, domelementtype@^1.3.1: - version "1.3.1" - resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f" - integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w== - domelementtype@^2.0.1, domelementtype@^2.1.0, domelementtype@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.2.0.tgz#9a0b6c2782ed6a1c7323d42267183df9bd8b1d57" @@ -714,13 +701,6 @@ domhandler@4.0.0: dependencies: domelementtype "^2.1.0" -domhandler@^2.3.0: - version "2.4.2" - resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803" - integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA== - dependencies: - domelementtype "1" - domhandler@^4.0.0, domhandler@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.2.0.tgz#f9768a5f034be60a89a27c2e4d0f74eba0d8b059" @@ -728,15 +708,7 @@ domhandler@^4.0.0, domhandler@^4.2.0: dependencies: domelementtype "^2.2.0" -domutils@^1.5.1: - version "1.7.0" - resolved "https://registry.yarnpkg.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a" - integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg== - dependencies: - dom-serializer "0" - domelementtype "1" - -domutils@^2.4.4, domutils@^2.5.2: +domutils@^2.4.4: version "2.7.0" resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.7.0.tgz#8ebaf0c41ebafcf55b0b72ec31c56323712c5442" integrity sha512-8eaHa17IwJUPAiB+SoTYBo5mCdeMgdcAoXJ59m6DT1vw+5iLS3gNoqYaRowaBKtGVrOF1Jz4yDTgYKLK2kvfJg== @@ -775,53 +747,12 @@ encoding@0.1.13, encoding@^0.1.11: dependencies: iconv-lite "^0.6.2" -entities@^1.1.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56" - integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w== - entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== -enzyme-adapter-react-16@^1.11.0: - version "1.15.6" - resolved "https://registry.yarnpkg.com/enzyme-adapter-react-16/-/enzyme-adapter-react-16-1.15.6.tgz#fd677a658d62661ac5afd7f7f541f141f8085901" - integrity sha512-yFlVJCXh8T+mcQo8M6my9sPgeGzj85HSHi6Apgf1Cvq/7EL/J9+1JoJmJsRxZgyTvPMAqOEpRSu/Ii/ZpyOk0g== - dependencies: - enzyme-adapter-utils "^1.14.0" - enzyme-shallow-equal "^1.0.4" - has "^1.0.3" - object.assign "^4.1.2" - object.values "^1.1.2" - prop-types "^15.7.2" - react-is "^16.13.1" - react-test-renderer "^16.0.0-0" - semver "^5.7.0" - -enzyme-adapter-utils@^1.14.0: - version "1.14.0" - resolved "https://registry.yarnpkg.com/enzyme-adapter-utils/-/enzyme-adapter-utils-1.14.0.tgz#afbb0485e8033aa50c744efb5f5711e64fbf1ad0" - integrity sha512-F/z/7SeLt+reKFcb7597IThpDp0bmzcH1E9Oabqv+o01cID2/YInlqHbFl7HzWBl4h3OdZYedtwNDOmSKkk0bg== - dependencies: - airbnb-prop-types "^2.16.0" - function.prototype.name "^1.1.3" - has "^1.0.3" - object.assign "^4.1.2" - object.fromentries "^2.0.3" - prop-types "^15.7.2" - semver "^5.7.1" - -enzyme-shallow-equal@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.4.tgz#b9256cb25a5f430f9bfe073a84808c1d74fced2e" - integrity sha512-MttIwB8kKxypwHvRynuC3ahyNc+cFbR8mjVIltnmzQ0uKGqmsfO4bfBuLxb0beLNPhjblUEYvEbsg+VSygvF1Q== - dependencies: - has "^1.0.3" - object-is "^1.1.2" - -es-abstract@^1.17.4, es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2, es-abstract@^1.18.2: +es-abstract@^1.18.0-next.1, es-abstract@^1.18.0-next.2: version "1.18.3" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.3.tgz#25c4c3380a27aa203c44b2b685bba94da31b63e0" integrity sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw== @@ -867,11 +798,6 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - etag@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -890,11 +816,6 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" -exenv@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/exenv/-/exenv-1.2.2.tgz#2ae78e85d9894158670b03d47bec1f03bd91bb9d" - integrity sha1-KueOhdmJQVhnCwPUe+wfA72Ru50= - fbjs@^0.8.16: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" @@ -959,21 +880,6 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== -function.prototype.name@^1.1.2, function.prototype.name@^1.1.3: - version "1.1.4" - resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.4.tgz#e4ea839b9d3672ae99d0efd9f38d9191c5eaac83" - integrity sha512-iqy1pIotY/RmhdFZygSSlW0wko2yxkSCKqsuv4pr8QESohpYyG/Z7B/XXvPRKTJS//960rgguE5mSRUsDdaJrQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - functions-have-names "^1.2.2" - -functions-have-names@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.2.tgz#98d93991c39da9361f8e50b337c4f6e41f120e21" - integrity sha512-bLgc3asbWdwPbx2mNk2S49kmJCuQeu0nfmaOgbs8WIyzzkw3r4htszdIi9Q9EMezDPTYuJx2wvjZ/EwgAthpnA== - get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -1091,7 +997,7 @@ html-dom-parser@1.0.0: domhandler "4.0.0" htmlparser2 "6.0.0" -html-react-parser@^1.2.4, html-react-parser@^1.2.6: +html-react-parser@^1.2.4: version "1.2.6" resolved "https://registry.yarnpkg.com/html-react-parser/-/html-react-parser-1.2.6.tgz#610b9bbcdcf51cdfabf644a83ac3815b1d485436" integrity sha512-C1bm5OwmXxv1KJg5EqDMUCDO3lVsMNCfc1H/aEk8iJb4qek7ZzdYy9dUR0ciuPoRZBsGJpyHa/UzZ0Lw3DHnMQ== @@ -1111,28 +1017,6 @@ htmlparser2@6.0.0: domutils "^2.4.4" entities "^2.0.0" -htmlparser2@^3.9.0: - version "3.10.1" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f" - integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ== - dependencies: - domelementtype "^1.3.1" - domhandler "^2.3.0" - domutils "^1.5.1" - entities "^1.1.1" - inherits "^2.0.1" - readable-stream "^3.1.1" - -htmlparser2@^6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/htmlparser2/-/htmlparser2-6.1.0.tgz#c4d762b6c3371a05dbe65e94ae43a9f845fb8fb7" - integrity sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A== - dependencies: - domelementtype "^2.0.1" - domhandler "^4.0.0" - domutils "^2.5.2" - entities "^2.0.0" - http-errors@1.7.3: version "1.7.3" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.3.tgz#6c619e4f9c60308c38519498c14fbb10aacebb06" @@ -1291,7 +1175,7 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-regex@^1.1.0, is-regex@^1.1.3: +is-regex@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== @@ -1402,11 +1286,6 @@ lodash.throttle@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= -lodash@^4.17.13: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -1468,10 +1347,10 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -nanoid@^3.1.22: - version "3.1.23" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.23.tgz#f744086ce7c2bc47ee0a8472574d5c78e4183a81" - integrity sha512-FiB0kzdP0FFVGDKlRLEQ1BgDzU87dy5NnzjeW9YZNt+/c3+q82EQDUwniSAUxp/F0gFNI1ZhKU1FqYsMuqZVnw== +nanoid@^3.1.23: + version "3.1.25" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" + integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== native-url@0.3.4: version "0.3.4" @@ -1487,17 +1366,18 @@ next-connect@^0.10.1: dependencies: trouter "^3.1.0" -next@^11.0.1: - version "11.0.1" - resolved "https://registry.yarnpkg.com/next/-/next-11.0.1.tgz#b8e3914d153aaf7143cb98c09bcd3c8230eeb17a" - integrity sha512-yR7be7asNbvpVNpi6xxEg28wZ7Gqmj1nOt0sABH9qORmF3+pms2KZ7Cng33oK5nqPIzEEFJD0pp2PCe3/ueMIg== +next@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/next/-/next-11.1.0.tgz#767d4c4fa0b9b0c768cdbd6c9f03dd86b5d701c0" + integrity sha512-GHBk/c7Wyr6YbFRFZF37I0X7HKzkHHI8pur/loyXo5AIE8wdkbGPGO0ds3vNAO6f8AxZAKGCRYtAzoGlVLoifA== dependencies: "@babel/runtime" "7.12.5" "@hapi/accept" "5.0.2" - "@next/env" "11.0.1" - "@next/polyfill-module" "11.0.1" - "@next/react-dev-overlay" "11.0.1" - "@next/react-refresh-utils" "11.0.1" + "@next/env" "11.1.0" + "@next/polyfill-module" "11.1.0" + "@next/react-dev-overlay" "11.1.0" + "@next/react-refresh-utils" "11.1.0" + "@node-rs/helper" "1.2.1" assert "2.0.0" ast-types "0.13.2" browserify-zlib "0.2.0" @@ -1508,7 +1388,7 @@ next@^11.0.1: chokidar "3.5.1" constants-browserify "1.0.0" crypto-browserify "3.12.0" - cssnano-simple "2.0.0" + cssnano-simple "3.0.0" domain-browser "4.19.0" encoding "0.1.13" etag "1.8.1" @@ -1525,9 +1405,8 @@ next@^11.0.1: p-limit "3.1.0" path-browserify "1.0.1" pnp-webpack-plugin "1.6.4" - postcss "8.2.13" + postcss "8.2.15" process "0.11.10" - prop-types "15.7.2" querystring-es3 "0.2.1" raw-body "2.4.1" react-is "17.0.2" @@ -1535,7 +1414,7 @@ next@^11.0.1: stream-browserify "3.0.0" stream-http "3.1.1" string_decoder "1.3.0" - styled-jsx "3.3.2" + styled-jsx "4.0.0" timers-browserify "2.0.12" tty-browserify "0.0.1" use-subscription "1.5.1" @@ -1612,7 +1491,7 @@ object-inspect@^1.10.3: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== -object-is@^1.0.1, object-is@^1.1.2: +object-is@^1.0.1: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== @@ -1625,7 +1504,7 @@ object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -object.assign@^4.1.0, object.assign@^4.1.2: +object.assign@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== @@ -1635,34 +1514,6 @@ object.assign@^4.1.0, object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" -object.entries@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.entries/-/object.entries-1.1.4.tgz#43ccf9a50bc5fd5b649d45ab1a579f24e088cafd" - integrity sha512-h4LWKWE+wKQGhtMjZEBud7uLGhqyLwj8fpHOarZhD2uY3C9cRtk57VQ89ke3moByLXMedqs3XCHzyb4AmA2DjA== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - -object.fromentries@^2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.4.tgz#26e1ba5c4571c5c6f0890cef4473066456a120b8" - integrity sha512-EsFBshs5RUUpQEY1D4q/m59kMfz4YJvxuNCJcv/jWwOJr34EaVnG11ZrZa0UHB3wnzV1wx8m58T4hQL8IuNXlQ== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.0-next.2" - has "^1.0.3" - -object.values@^1.1.2: - version "1.1.4" - resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.4.tgz#0d273762833e816b693a637d30073e7051535b30" - integrity sha512-TnGo7j4XSnKQoK3MfvkzqKCi0nVe/D9I9IjwTNYdb/fxYHpjrluHVOgw0AF6jrRFGMPHdfuidR09tIDiIvnaSg== - dependencies: - call-bind "^1.0.2" - define-properties "^1.1.3" - es-abstract "^1.18.2" - os-browserify@0.3.0, os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -1775,13 +1626,13 @@ pnp-webpack-plugin@1.6.4: dependencies: ts-pnp "^1.1.6" -postcss@8.2.13: - version "8.2.13" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.13.tgz#dbe043e26e3c068e45113b1ed6375d2d37e2129f" - integrity sha512-FCE5xLH+hjbzRdpbRb1IMCvPv9yZx2QnDarBEYSN0N0HYk+TcXsEhwdFcFb+SRWOKzKGErhIEbBK2ogyLdTtfQ== +postcss@8.2.15: + version "8.2.15" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.2.15.tgz#9e66ccf07292817d226fc315cbbf9bc148fbca65" + integrity sha512-2zO3b26eJD/8rb106Qu2o7Qgg52ND5HPjcyQiK2B98O388h43A448LCslC0dI2P97wCAQRJsFvwTRcXxTKds+Q== dependencies: colorette "^1.2.2" - nanoid "^3.1.22" + nanoid "^3.1.23" source-map "^0.6.1" postscribe@^2.0.8: @@ -1813,16 +1664,7 @@ promise@^7.1.1: dependencies: asap "~2.0.3" -prop-types-exact@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/prop-types-exact/-/prop-types-exact-1.2.0.tgz#825d6be46094663848237e3925a98c6e944e9869" - integrity sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA== - dependencies: - has "^1.0.3" - object.assign "^4.1.0" - reflect.ownkeys "^0.2.0" - -prop-types@15.7.2, prop-types@^15.5.8, prop-types@^15.6.2, prop-types@^15.7.2: +prop-types@^15.5.8, prop-types@^15.6.2: version "15.7.2" resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== @@ -1964,13 +1806,6 @@ react-full-screen@^1.0.1: dependencies: fscreen "^1.0.2" -react-html-parser@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/react-html-parser/-/react-html-parser-2.0.2.tgz#6dbe1ddd2cebc1b34ca15215158021db5fc5685e" - integrity sha512-XeerLwCVjTs3njZcgCOeDUqLgNIt/t+6Jgi5/qPsO/krUWl76kWKXMeVs2LhY2gwM6X378DkhLjur0zUQdpz0g== - dependencies: - htmlparser2 "^3.9.0" - react-images@^1.2.0-beta.6: version "1.2.0-beta.7" resolved "https://registry.yarnpkg.com/react-images/-/react-images-1.2.0-beta.7.tgz#8a5804f8a5d08a25e64180eecb43a77d4e023e16" @@ -1991,7 +1826,7 @@ react-is@17.0.2: resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== -react-is@^16.13.1, react-is@^16.8.1, react-is@^16.8.6: +react-is@^16.8.1: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -2010,11 +1845,6 @@ react-property@1.0.1: resolved "https://registry.yarnpkg.com/react-property/-/react-property-1.0.1.tgz#4ae4211557d0a0ae050a71aa8ad288c074bea4e6" integrity sha512-1tKOwxFn3dXVomH6pM9IkLkq2Y8oh+fh/lYW3MJ/B03URswUTqttgckOlbxY2XHF3vPG6uanSc4dVsLW/wk3wQ== -react-proptype-conditional-require@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/react-proptype-conditional-require/-/react-proptype-conditional-require-1.0.4.tgz#69c2d5741e6df5e08f230f36bbc2944ee1222555" - integrity sha1-acLVdB5t9eCPIw82u8KUTuEiJVU= - react-refresh@0.8.3: version "0.8.3" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.8.3.tgz#721d4657672d400c5e3c75d063c4a85fb2d5d68f" @@ -2048,16 +1878,6 @@ react-style-singleton@^2.1.0, react-style-singleton@^2.1.1: invariant "^2.2.4" tslib "^1.0.0" -react-test-renderer@^16.0.0-0: - version "16.14.0" - resolved "https://registry.yarnpkg.com/react-test-renderer/-/react-test-renderer-16.14.0.tgz#e98360087348e260c56d4fe2315e970480c228ae" - integrity sha512-L8yPjqPE5CZO6rKsKXRO/rVPiaCOy0tQQJbC+UjPNlobl5mad59lvPjwFsQHTvL03caVDIVr9x9/OSgDe6I5Eg== - dependencies: - object-assign "^4.1.1" - prop-types "^15.6.2" - react-is "^16.8.6" - scheduler "^0.19.1" - react-transition-group@^4.4.1: version "4.4.2" resolved "https://registry.yarnpkg.com/react-transition-group/-/react-transition-group-4.4.2.tgz#8b59a56f09ced7b55cbd53c36768b922890d5470" @@ -2068,16 +1888,6 @@ react-transition-group@^4.4.1: loose-envify "^1.4.0" prop-types "^15.6.2" -react-twitter-embed@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/react-twitter-embed/-/react-twitter-embed-3.0.3.tgz#a534132d4bbec812a63e3899dc716de2bfc3cec2" - integrity sha512-kF1Srlb1TqnZUqKA0FC4I/E+m+RUBCMZeU20hDRzmYLAjR1EA/6tr/PMZ22s7rd6wjQpIBLXNZjt0rfUpY8Chw== - dependencies: - enzyme-adapter-react-16 "^1.11.0" - exenv "^1.2.2" - react-proptype-conditional-require "^1.0.4" - scriptjs "^2.5.9" - react-view-pager@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/react-view-pager/-/react-view-pager-0.6.0.tgz#6c6be04b0cc3b907b5ceafec7b2ab6e7228df650" @@ -2111,7 +1921,7 @@ readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6: string_decoder "~1.1.1" util-deprecate "~1.0.1" -readable-stream@^3.1.1, readable-stream@^3.5.0, readable-stream@^3.6.0: +readable-stream@^3.5.0, readable-stream@^3.6.0: version "3.6.0" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== @@ -2127,11 +1937,6 @@ readdirp@~3.5.0: dependencies: picomatch "^2.2.1" -reflect.ownkeys@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz#749aceec7f3fdf8b63f927a04809e90c5c0b3460" - integrity sha1-dJrO7H8/34tj+SegSAnpDFwLNGA= - regenerator-runtime@^0.13.4: version "0.13.7" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz#cac2dacc8a1ea675feaabaeb8ae833898ae46f55" @@ -2177,14 +1982,6 @@ sass@^1.32.11: dependencies: chokidar ">=3.0.0 <4.0.0" -scheduler@^0.19.1: - version "0.19.1" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.19.1.tgz#4f3e2ed2c1a7d65681f4c854fa8c5a1ccb40f196" - integrity sha512-n/zwRWRYSUj0/3g/otKDRPMh6qv2SYMWNq85IEa8iZyAv8od9zDYpGSnpBEjNgcMNq6Scbu5KfIPxNF72R/2EA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" @@ -2193,16 +1990,6 @@ scheduler@^0.20.2: loose-envify "^1.1.0" object-assign "^4.1.1" -scriptjs@^2.5.9: - version "2.5.9" - resolved "https://registry.yarnpkg.com/scriptjs/-/scriptjs-2.5.9.tgz#343915cd2ec2ed9bfdde2b9875cd28f59394b35f" - integrity sha512-qGVDoreyYiP1pkQnbnFAUIS5AjenNwwQBdl7zeos9etl+hYKWahjRTfzAZZYBv5xNHx7vNKCmaLDQZ6Fr2AEXg== - -semver@^5.7.0, semver@^5.7.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - semver@^6.0.0: version "6.3.0" resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" @@ -2372,13 +2159,13 @@ style-to-object@0.3.0: dependencies: inline-style-parser "0.1.1" -styled-jsx@3.3.2: - version "3.3.2" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-3.3.2.tgz#2474601a26670a6049fb4d3f94bd91695b3ce018" - integrity sha512-daAkGd5mqhbBhLd6jYAjYBa9LpxYCzsgo/f6qzPdFxVB8yoGbhxvzQgkC0pfmCVvW3JuAEBn0UzFLBfkHVZG1g== +styled-jsx@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-4.0.0.tgz#f7b90e7889d0a4f4635f8d1ae9ac32f3acaedc57" + integrity sha512-2USeoWMoJ/Lx5s2y1PxuvLy/cz2Yrr8cTySV3ILHU1Vmaw1bnV7suKdblLPjnyhMD+qzN7B1SWyh4UZTARn/WA== dependencies: - "@babel/types" "7.8.3" - babel-plugin-syntax-jsx "6.18.0" + "@babel/plugin-syntax-jsx" "7.14.5" + "@babel/types" "7.15.0" convert-source-map "1.7.0" loader-utils "1.2.3" source-map "0.7.3" From f010f275307eb82740c316d6500c9697c6d5f220 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Sun, 15 May 2022 13:47:21 -0400 Subject: [PATCH 02/45] update next --- package.json | 2 +- yarn.lock | 164 +++++++++++++++++---------------------------------- 2 files changed, 56 insertions(+), 110 deletions(-) diff --git a/package.json b/package.json index 5749e17..559c298 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "start": "next start" }, "dependencies": { - "next": "^11.1.1", + "next": "11.1.3", "react": "^17.0.2", "react-dom": "^17.0.2" }, diff --git a/yarn.lock b/yarn.lock index d5ded48..18bddb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -52,16 +52,6 @@ resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== dependencies: -<<<<<<< HEAD - regenerator-runtime "^0.13.4" - -"@babel/types@7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" - integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== - dependencies: -======= ->>>>>>> hotfix/2.8.1 "@babel/helper-validator-identifier" "^7.14.9" to-fast-properties "^2.0.0" @@ -90,37 +80,20 @@ resolved "https://registry.yarnpkg.com/@napi-rs/triples/-/triples-1.0.3.tgz#76d6d0c3f4d16013c61e45dfca5ff1e6c31ae53c" integrity sha512-jDJTpta+P4p1NZTFVLHJ/TLFVYVcOqv6l8xwOeBKNPMgY/zDYH/YH7SJbvrr/h1RcS9GzbPcLKGzpuK9cV56UA== -<<<<<<< HEAD -"@next/env@11.1.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@next/env/-/env-11.1.0.tgz#cae83d8e0a65aa9f2af3368f8269ffd9d911746a" - integrity sha512-zPJkMFRenSf7BLlVee8987G0qQXAhxy7k+Lb/5hLAGkPVHAHm+oFFeL+2ipbI2KTEFlazdmGY0M+AlLQn7pWaw== - -"@next/polyfill-module@11.1.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.1.0.tgz#ee6b9117a1f9bb137479dfa51d5a9e38e066a62f" - integrity sha512-64EgW8SzJRQls2yJ5DkuljRxgE24o2kYtX/ghTkPUJYsfidHMWzQGwg26IgRbb/uHqTd1G0W5UkKag+Nt8TWaQ== - -"@next/react-dev-overlay@11.1.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.1.0.tgz#8d4e8020a4cbdacbca431a0bf40c4d28187083af" - integrity sha512-h+ry0sTk1W3mJw+TwEf91aqLbBJ5oqAsxfx+QryqEItNtfW6zLSSjxkyTYTqX8DkgSssQQutQfATkzBVgOR+qQ== -======= -"@next/env@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/env/-/env-11.1.1.tgz#d403282accbe8795aa2341f0e02c2e8bfc92bfb0" - integrity sha512-UEAzlfKofotLmj9LIgNixAfXpRck9rt/1CU9Q4ZtNDueGBJQP3HUzPHlrLChltWY2TA5MOzDQGL82H0a3+i5Ag== - -"@next/polyfill-module@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.1.1.tgz#89d5a70685a52a0fad79f05a1f97a6b15cc727aa" - integrity sha512-9FyVSnz00WGdlLsgc2w1xL1Lm/Q25y6FYIyA+1WlJvT6LA2lbR78GKiHgedzUvrAatVGAcg/Og+d0d7B4tsJOg== - -"@next/react-dev-overlay@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.1.1.tgz#3cd99202a85412bada8ba9c8e3f4cf7c19294b24" - integrity sha512-CXc/A0DbSk5VXYu4+zr0fHm52Zh/LhPlLyVPEctJOZL64ccxkls5xGoXvgolJCku9L0pLjJzvdfAmhNLOp5dyw== ->>>>>>> hotfix/2.8.1 +"@next/env@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/env/-/env-11.1.3.tgz#dc698e00259242012955e43a40788fcf21ba9e37" + integrity sha512-5+vaeooJuWmICSlmVaAC8KG3O8hwKasACVfkHj58xQuCB5SW0TKW3hWxgxkBuefMBn1nM0yEVPKokXCsYjBtng== + +"@next/polyfill-module@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/polyfill-module/-/polyfill-module-11.1.3.tgz#95163973fe19f1827da32703d1fcb8198fb2c79a" + integrity sha512-7yr9cr4a0SrBoVE8psxXWK1wTFc8UzsY8Wc2cWGL7qA0hgtqACHaXC47M1ByJB410hFZenGrpE+KFaT1unQMyw== + +"@next/react-dev-overlay@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-11.1.3.tgz#5d08336931e48ebdb07d82b566223d0ee5941d2a" + integrity sha512-zIwtMliSUR+IKl917ToFNB+0fD7bI5kYMdjHU/UEKpfIXAZPnXRHHISCvPDsczlr+bRsbjlUFW1CsNiuFedeuQ== dependencies: "@babel/code-frame" "7.12.11" anser "1.4.9" @@ -134,37 +107,30 @@ stacktrace-parser "0.1.10" strip-ansi "6.0.0" -<<<<<<< HEAD -"@next/react-refresh-utils@11.1.0": - version "11.1.0" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.1.0.tgz#60c3c7b127a5dab8b0a2889a7dcf8a90d2c4e592" - integrity sha512-g5DtFTpLTGa36iy9DuZawtJeitI11gysFGKPQQqy+mNbSFazguArcJ10gAYFlbqpIi4boUamWNI5mAoSPx3kog== -======= -"@next/react-refresh-utils@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.1.1.tgz#8d1a5432a53c9f987503d5ab07d3241230afb33f" - integrity sha512-j186y+lWc8BHAuysAWvlOqO9Bp7E3BLK/d/Ju3W2sP5BCH5ZLyLG/p308zSy/O0MGTag0B038ZA1dCy/msouRQ== - -"@next/swc-darwin-arm64@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.1.tgz#ea9a76bcff00945df29a81bc43b3b22dd0a6cb53" - integrity sha512-KyB0aLpfQ+B2dsyGYpkM0ZwK3PV0t4C4b9yjgQc1VoTVnIjzXdDPnNOuVvmD849ZNOHfj3x8e2rlbxkj0lPm3A== - -"@next/swc-darwin-x64@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.1.tgz#95838e9116897ae734d02fdbbfa601b6f52adaf3" - integrity sha512-B3ZXgrGx0bQplbrk2oggPjKPPsmyg8Fl0PJLMTVQ+erQ8g1m5QzyS9P6tB3SiIZa180JgENuguTHlVK5qEj4UA== - -"@next/swc-linux-x64-gnu@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.1.tgz#42c4973213a880977ebdfad01474217d7d71e8c2" - integrity sha512-qvZL7gSKF+E+GZ3L1XiTnE3cOh9rk0wkqimT/q+wwcZA4E720Lu4lrT79I3HPuj6i/JPgGvmNskcnYrDeaoFaw== - -"@next/swc-win32-x64-msvc@11.1.1": - version "11.1.1" - resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.1.tgz#1ffcbd01a0155fa8558f7aefffea1066e9bebe74" - integrity sha512-jhnCiA1De1L+kA0gmHG1AJijHoxOcrETWziDWy8fcqSrM1NlC4aJ5Mnu6k0QMcM9MnmXTA4TQZOEv3kF7vhJUQ== ->>>>>>> hotfix/2.8.1 +"@next/react-refresh-utils@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-11.1.3.tgz#fc2c1a4f2403db1a0179d31caa0a4cc811b8ab58" + integrity sha512-144kD8q2nChw67V3AJJlPQ6NUJVFczyn10bhTynn9o2rY5DEnkzuBipcyMuQl2DqfxMkV7sn+yOCOYbrLCk9zg== + +"@next/swc-darwin-arm64@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-arm64/-/swc-darwin-arm64-11.1.3.tgz#062eb7871048fdb313304e42ace5f91402dbc39f" + integrity sha512-TwP4krjhs+uU9pesDYCShEXZrLSbJr78p12e7XnLBBaNf20SgWLlVmQUT9gX9KbWan5V0sUbJfmcS8MRNHgYuA== + +"@next/swc-darwin-x64@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/swc-darwin-x64/-/swc-darwin-x64-11.1.3.tgz#8bd515768d02e4c1e0cd80d33f3f29456ee890ee" + integrity sha512-ZSWmkg/PxccHFNUSeBdrfaH8KwSkoeUtewXKvuYYt7Ph0yRsbqSyNIvhUezDua96lApiXXq6EL2d1THfeWomvw== + +"@next/swc-linux-x64-gnu@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-11.1.3.tgz#40030577e6ee272afb0080b45468bea73208f46d" + integrity sha512-PrTBN0iZudAuj4jSbtXcdBdmfpaDCPIneG4Oms4zcs93KwMgLhivYW082Mvlgx9QVEiRm7+RkFpIVtG/i7JitA== + +"@next/swc-win32-x64-msvc@11.1.3": + version "11.1.3" + resolved "https://registry.yarnpkg.com/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-11.1.3.tgz#2951cbc127f6ea57032a241fb94439cddb5d2482" + integrity sha512-mRwbscVjRoHk+tDY7XbkT5d9FCwujFIQJpGp0XNb1i5OHCSDO8WW/C9cLEWS4LxKRbIZlTLYg1MTXqLQkvva8w== "@node-rs/helper@1.2.1": version "1.2.1" @@ -1395,15 +1361,9 @@ ms@2.0.0: integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= nanoid@^3.1.23: -<<<<<<< HEAD - version "3.1.25" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.25.tgz#09ca32747c0e543f0e1814b7d3793477f9c8e152" - integrity sha512-rdwtIXaXCLFAQbnfqDRnI6jaRHp9fTcYBjtFKE8eezcZ7LuLjhUaQGNeMXf1HmRoCH32CLz6XwX0TtxEOS/A3Q== -======= version "3.2.0" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" integrity sha512-fmsZYa9lpn69Ad5eDn7FMcnnSR+8R34W9qJEijxYhTbfOWzr22n1QxCMzXLK+ODyW2973V3Fux959iQoUxzUIA== ->>>>>>> hotfix/2.8.1 native-url@0.3.4: version "0.3.4" @@ -1419,31 +1379,17 @@ next-connect@^0.10.1: dependencies: trouter "^3.1.0" -<<<<<<< HEAD -next@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/next/-/next-11.1.0.tgz#767d4c4fa0b9b0c768cdbd6c9f03dd86b5d701c0" - integrity sha512-GHBk/c7Wyr6YbFRFZF37I0X7HKzkHHI8pur/loyXo5AIE8wdkbGPGO0ds3vNAO6f8AxZAKGCRYtAzoGlVLoifA== -======= -next@^11.1.1: - version "11.1.1" - resolved "https://registry.yarnpkg.com/next/-/next-11.1.1.tgz#ca15c6d6b4b4bf8c3e859f7fc4f9657ce59bcb63" - integrity sha512-vfLJDkwAHsZUho5R1K4w49nfYhftUMWNmeNSjCtulOvnRBuEFb7ROyRZOQk7f29rMz02eLQrPZ9yiAmPsexL2g== ->>>>>>> hotfix/2.8.1 +next@11.1.3: + version "11.1.3" + resolved "https://registry.yarnpkg.com/next/-/next-11.1.3.tgz#0226b283cb9890e446aea759db8a867de2b279ef" + integrity sha512-ud/gKmnKQ8wtHC+pd1ZiqPRa7DdgulPkAk94MbpsspfNliwZkYs9SIYWhlLSyg+c661LzdUI2nZshvrtggSYWA== dependencies: "@babel/runtime" "7.15.3" "@hapi/accept" "5.0.2" -<<<<<<< HEAD - "@next/env" "11.1.0" - "@next/polyfill-module" "11.1.0" - "@next/react-dev-overlay" "11.1.0" - "@next/react-refresh-utils" "11.1.0" -======= - "@next/env" "11.1.1" - "@next/polyfill-module" "11.1.1" - "@next/react-dev-overlay" "11.1.1" - "@next/react-refresh-utils" "11.1.1" ->>>>>>> hotfix/2.8.1 + "@next/env" "11.1.3" + "@next/polyfill-module" "11.1.3" + "@next/react-dev-overlay" "11.1.3" + "@next/react-refresh-utils" "11.1.3" "@node-rs/helper" "1.2.1" assert "2.0.0" ast-types "0.13.2" @@ -1481,7 +1427,7 @@ next@^11.1.1: stream-browserify "3.0.0" stream-http "3.1.1" string_decoder "1.3.0" - styled-jsx "4.0.0" + styled-jsx "4.0.1" timers-browserify "2.0.12" tty-browserify "0.0.1" use-subscription "1.5.1" @@ -1489,10 +1435,10 @@ next@^11.1.1: vm-browserify "1.1.2" watchpack "2.1.1" optionalDependencies: - "@next/swc-darwin-arm64" "11.1.1" - "@next/swc-darwin-x64" "11.1.1" - "@next/swc-linux-x64-gnu" "11.1.1" - "@next/swc-win32-x64-msvc" "11.1.1" + "@next/swc-darwin-arm64" "11.1.3" + "@next/swc-darwin-x64" "11.1.3" + "@next/swc-linux-x64-gnu" "11.1.3" + "@next/swc-win32-x64-msvc" "11.1.3" node-fetch@2.6.1: version "2.6.1" @@ -2231,10 +2177,10 @@ style-to-object@0.3.0: dependencies: inline-style-parser "0.1.1" -styled-jsx@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-4.0.0.tgz#f7b90e7889d0a4f4635f8d1ae9ac32f3acaedc57" - integrity sha512-2USeoWMoJ/Lx5s2y1PxuvLy/cz2Yrr8cTySV3ILHU1Vmaw1bnV7suKdblLPjnyhMD+qzN7B1SWyh4UZTARn/WA== +styled-jsx@4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/styled-jsx/-/styled-jsx-4.0.1.tgz#ae3f716eacc0792f7050389de88add6d5245b9e9" + integrity sha512-Gcb49/dRB1k8B4hdK8vhW27Rlb2zujCk1fISrizCcToIs+55B4vmUM0N9Gi4nnVfFZWe55jRdWpAqH1ldAKWvQ== dependencies: "@babel/plugin-syntax-jsx" "7.14.5" "@babel/types" "7.15.0" From d09d24179db55c286a96314c4f7f2e17a704b900 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Tue, 17 May 2022 07:54:32 -0400 Subject: [PATCH 03/45] add gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index c49637c..6d9f848 100644 --- a/.gitignore +++ b/.gitignore @@ -34,3 +34,5 @@ yarn-error.log* # vercel .vercel + +secrets.json From 8e8d33d145fd5e483667eaf289d33122442fc9c3 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Tue, 17 May 2022 23:11:44 -0400 Subject: [PATCH 04/45] initial auth --- functions/getRecords.js | 34 ++++++ keys.json | 12 ++ package.json | 1 + pages/index.js | 7 +- yarn.lock | 245 +++++++++++++++++++++++++++++++++++++++- 5 files changed, 297 insertions(+), 2 deletions(-) create mode 100644 functions/getRecords.js create mode 100644 keys.json diff --git a/functions/getRecords.js b/functions/getRecords.js new file mode 100644 index 0000000..d509560 --- /dev/null +++ b/functions/getRecords.js @@ -0,0 +1,34 @@ +const { google } = require('googleapis'); +const keys = require('../keys.json'); + +export default async function getRecords() { + const scopes = ['https://www.googleapis.com/auth/spreadsheets']; + + const client = new google.auth.JWT( + keys.client_email, + null, + keys.private_key, + scopes + ); + + client.authorize((error, tokens) => { + if (error) { + console.log(error); + return; + } else { + console.log('Connected!'); + return getData(client); + } + }); +} +export async function getData(client) { + const googleSheetApi = google.sheets({ version: 'v4', auth: client }); + const readOptions = { + spreadsheetId: '14n8UmDvGP1aV0mbfBHh73YgsbmtMtVN82fvs2FsdJds', + range: '2022!A1:E5', + }; + + let dataFromSheet = await googleSheetApi.spreadsheets.values.get(readOptions); + let allRecords = dataFromSheet.data.values; + return allRecords; +} diff --git a/keys.json b/keys.json new file mode 100644 index 0000000..bcddb5b --- /dev/null +++ b/keys.json @@ -0,0 +1,12 @@ +{ + "type": "service_account", + "project_id": "quantum-lambda-248402", + "private_key_id": "5d197ae9cc48eda0d1195b70b0a54fa196db5423", + "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+9Ml4JSRrr76e\nrnJti9CEmXmaOBd+s9+sekonW3a43SKk/9sWNYL9s7blkaCpLXfDd9CzjenNE4ZS\nshxlH1tLQgv7443lVmxFK25VTDYLjhBwVSNFrfLA20UdRrlPJRtfatA3T5aayDJr\nyt66sEMJycc3Zy/OF7BVq8bi5xOCPpvtv7gO0clC0naj+rjEiHVDEG1VE66cdnG0\npkQIHvMjePo5TpCLoUTHNigr9VRp2ymA7epHL48K5Kh8XGsUJWbT++bwvIpIIS9r\nrqYyGdogp4DPiGIY01KcvOMb8nLF8PM9g8y5/bDGXNJ6PUFtn7HKUeLpzoAI+a0C\n2EzADYqlAgMBAAECggEAFpKTGjuxwXUF4HYYmrBzVqlZwYwt4tFaeGYATAS41QN2\n6/A+srJiqKDM1vhO+JCiXp3UMtVstMxBDZd2WdHKFexZxE3S4TBFHiwTH8whe14w\nvUajI8J7Nqb01ZAdqahmQvI6aL9kuyk9JJbXm1PoqMiMXxU4hnEwbAAhQ4MzQCr4\nCt+7Ozct9/uNRPGmVLtoGiO02+9o0YQRYlu44LdkmC8G0kahSmYguwLbjunBkM51\nfk6eFQsr+IzSc6Hg/48sIDNwWLcMOWEWha9pMgywke5QnsEthDWecZUBKlfeLNux\nZIU8yOUOjHyHhX25M1J1KSErBO8kUjN20X6+Y6aNwQKBgQDwBg2Gg7edRV95w1EP\n5ntYNIFNh6pMWUJNwQcp7LhQhTWS5N+/BL8WAeH1q7dvQKWeUn0RPN9+5xIDPnR4\ni/KG0G9WubutngKwiZ6jhTkib1cYh1MgIOuPy8pPZx0mbQ6LuRaOMUYBzrgmkG11\n3JvcD1ut5vmSeadpaopvH3QKkQKBgQDLqqLj46Y+ZAlu/7HYgXe46Y4RG/Nr0KPm\n77f6I1Kh+KduStW8Lce+DK/P99q+g0GP6iIOOJFCrM0o8cJjKwoCPHePx7pHngOq\nk3vOriMmkkFrc7wr8pShkPUhOhHaSOUbE7joSDgEClgbG/dLUS7o4IXqQoEVkOoj\ncYYURVTA1QKBgQCDX9zBVpEGrPTwMZ7J5C54/ewUIoBs36Ix6shgAyhzMiY7q7hn\n1lI82nTyQbXaV/kOqjm4WKg/znwGeIXJgVgSwD1gq7J0+fqg5AKHoCDAn059p3wx\nJrOodjPauCa1ZJXEll8pHwEhdiNHQGAZVdGdZm6YxcaujJW8VktFPWMHcQKBgHsk\n33y/RuNuhS2yOQxZq9QIk7fQmKxV6ORXiXwbI3l/6WyMnxM68wz8islKad7Lajbk\nMFc86MfRx/K7yvc/LLwRZ5FuCDoJVtoqdq+PJv3JbPjVb69661eNWEoQ3H6JmM14\nbVM1Z3k57+/kRvApVB3Gs/Hi6D3r80Ye/B0Blq9JAoGBANVLegW5FPe44jtT+5sT\na97PKBUawsLb3Qf4ZuW1e+hoR/GxCo58hOBPhOhTT59recMr0mDh1/d9V6soR5RU\nd0I/TQR2SjAWMu2wVxRwe5XakKXxw2pMDztEXOgHFvDv6j/51cjI76GDMOe9k36I\nMeAn19kkrzpQ236koU6Yrtks\n-----END PRIVATE KEY-----\n", + "client_email": "website@quantum-lambda-248402.iam.gserviceaccount.com", + "client_id": "107240193741555009802", + "auth_uri": "https://accounts.google.com/o/oauth2/auth", + "token_uri": "https://oauth2.googleapis.com/token", + "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", + "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/website%40quantum-lambda-248402.iam.gserviceaccount.com" +} diff --git a/package.json b/package.json index 559c298..8e0daad 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "start": "next start" }, "dependencies": { + "googleapis": "^100.0.0", "next": "11.1.3", "react": "^17.0.2", "react-dom": "^17.0.2" diff --git a/pages/index.js b/pages/index.js index 241c856..6029b11 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,9 +1,10 @@ import Layout from 'components/Layout/Layout'; import Blocks from 'components/Blocks/Blocks'; import { getData } from 'functions/getData'; +import getRecords from 'functions/getRecords'; const Blog = (props) => { - const { posts, frontPage } = props; + const { posts, frontPage, members } = props; const blocks = frontPage[0].blockData.map((block, index) => { const blockProps = { ...block, @@ -11,6 +12,7 @@ const Blog = (props) => { }; return ; }); + console.log('index', members); return ( { }; export async function getStaticProps() { + const members = (await getRecords()) || []; const allData = (await getData()) || {}; const { frontPage = [], @@ -38,7 +41,9 @@ export async function getStaticProps() { footerMenu, subscribeMenu, socialMenu, + members, }, + revalidate: 30, }; } diff --git a/yarn.lock b/yarn.lock index 18bddb5..2f852d9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -149,6 +149,20 @@ a11y-focus-store@^1.0.0: resolved "https://registry.yarnpkg.com/a11y-focus-store/-/a11y-focus-store-1.0.0.tgz#ae52561cb86ae6c2904c1a4abf2e5820bf5305b0" integrity sha1-rlJWHLhq5sKQTBpKvy5YIL9TBbA= +abort-controller@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/abort-controller/-/abort-controller-3.0.0.tgz#eaf54d53b62bae4138e809ca225c8439a6efb392" + integrity sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg== + dependencies: + event-target-shim "^5.0.0" + +agent-base@6: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + animation-bus@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/animation-bus/-/animation-bus-0.2.0.tgz#43854c2c9463fb82c664eff0e19b9733081150fa" @@ -202,6 +216,11 @@ aria-hidden@^1.1.2: dependencies: tslib "^1.0.0" +arrify@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-2.0.1.tgz#c9655e9331e0abcd588d2a7cad7e9956f66701fa" + integrity sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug== + asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" @@ -245,7 +264,7 @@ available-typed-arrays@^1.0.2: resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9" integrity sha512-SA5mXJWrId1TaQjfxUYghbqQ/hYioKmLJvPJyDuYRtXXenFNMjj4hSSt1Cf1xsuXSXrtxrVC5Ot4eU6cOtBDdA== -base64-js@^1.0.2: +base64-js@^1.0.2, base64-js@^1.3.0: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== @@ -255,6 +274,11 @@ big.js@^5.2.2: resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== +bignumber.js@^9.0.0: + version "9.0.2" + resolved "https://registry.yarnpkg.com/bignumber.js/-/bignumber.js-9.0.2.tgz#71c6c6bed38de64e24a65ebe16cfcf23ae693673" + integrity sha512-GAcQvbpsM0pUb0zw1EI0KhQEZ+lRwR5fYaAp3vPOYuP7aDvGy6cVN6XHLauvF8SOga2y0dcLcjt3iQDTSEliyw== + binary-extensions@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" @@ -364,6 +388,11 @@ browserslist@4.16.6: escalade "^3.1.1" node-releases "^1.1.71" +buffer-equal-constant-time@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz#f8e71132f7ffe6e01a5c9697a4c6f3e48d5cc819" + integrity sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA== + buffer-xor@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/buffer-xor/-/buffer-xor-1.0.3.tgz#26e61ed1422fb70dd42e6e36729ed51d855fe8d9" @@ -636,6 +665,13 @@ debug@2: dependencies: ms "2.0.0" +debug@4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -730,6 +766,13 @@ domutils@^2.4.4: domelementtype "^2.2.0" domhandler "^4.2.0" +ecdsa-sig-formatter@1.0.11, ecdsa-sig-formatter@^1.0.11: + version "1.0.11" + resolved "https://registry.yarnpkg.com/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz#ae0f0fa2d85045ef14a817daa3ce9acd0489e5bf" + integrity sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ== + dependencies: + safe-buffer "^5.0.1" + electron-to-chromium@^1.3.723: version "1.3.769" resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.769.tgz#73ad7e3f2d435810b6f8b29617ec344c782fcbed" @@ -816,6 +859,11 @@ etag@1.8.1: resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc= +event-target-shim@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/event-target-shim/-/event-target-shim-5.0.1.tgz#5d4d3ebdf9583d63a5333ce2deb7480ab2b05789" + integrity sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ== + events@^3.0.0: version "3.3.0" resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" @@ -829,6 +877,16 @@ evp_bytestokey@^1.0.0, evp_bytestokey@^1.0.3: md5.js "^1.3.4" safe-buffer "^5.1.1" +extend@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +fast-text-encoding@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" + integrity sha512-dtm4QZH9nZtcDt8qJiOH9fcQd1NAgi+K1O2DbE6GG1PPCK/BWfOH3idCTRQ4ImXRUOyopDEgDEnVEE7Y/2Wrig== + fbjs@^0.8.16: version "0.8.17" resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" @@ -893,6 +951,25 @@ function-bind@^1.1.1: resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== +gaxios@^4.0.0: + version "4.3.3" + resolved "https://registry.yarnpkg.com/gaxios/-/gaxios-4.3.3.tgz#d44bdefe52d34b6435cc41214fdb160b64abfc22" + integrity sha512-gSaYYIO1Y3wUtdfHmjDUZ8LWaxJQpiavzbF5Kq53akSzvmVg0RfyOcFDbO1KJ/KCGRFz2qG+lS81F0nkr7cRJA== + dependencies: + abort-controller "^3.0.0" + extend "^3.0.2" + https-proxy-agent "^5.0.0" + is-stream "^2.0.0" + node-fetch "^2.6.7" + +gcp-metadata@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/gcp-metadata/-/gcp-metadata-4.3.1.tgz#fb205fe6a90fef2fd9c85e6ba06e5559ee1eefa9" + integrity sha512-x850LS5N7V1F3UcV7PoupzGsyD6iVwTVvsh3tbXfkctZnBnjW5yu5z1/3k3SehF7TyoTIe78rJs02GMMy+LF+A== + dependencies: + gaxios "^4.0.0" + json-bigint "^1.0.0" + get-intrinsic@^1.0.2, get-intrinsic@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" @@ -939,11 +1016,62 @@ glob-to-regexp@^0.4.1: resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== +google-auth-library@^7.0.2, google-auth-library@^7.14.0: + version "7.14.1" + resolved "https://registry.yarnpkg.com/google-auth-library/-/google-auth-library-7.14.1.tgz#e3483034162f24cc71b95c8a55a210008826213c" + integrity sha512-5Rk7iLNDFhFeBYc3s8l1CqzbEBcdhwR193RlD4vSNFajIcINKI8W8P0JLmBpwymHqqWbX34pJDQu39cSy/6RsA== + dependencies: + arrify "^2.0.0" + base64-js "^1.3.0" + ecdsa-sig-formatter "^1.0.11" + fast-text-encoding "^1.0.0" + gaxios "^4.0.0" + gcp-metadata "^4.2.0" + gtoken "^5.0.4" + jws "^4.0.0" + lru-cache "^6.0.0" + +google-p12-pem@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/google-p12-pem/-/google-p12-pem-3.1.4.tgz#123f7b40da204de4ed1fbf2fd5be12c047fc8b3b" + integrity sha512-HHuHmkLgwjdmVRngf5+gSmpkyaRI6QmOg77J8tkNBHhNEI62sGHyw4/+UkgyZEI7h84NbWprXDJ+sa3xOYFvTg== + dependencies: + node-forge "^1.3.1" + +googleapis-common@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/googleapis-common/-/googleapis-common-5.1.0.tgz#845a79471c787e522e03c50d415467140e9e356a" + integrity sha512-RXrif+Gzhq1QAzfjxulbGvAY3FPj8zq/CYcvgjzDbaBNCD6bUl+86I7mUs4DKWHGruuK26ijjR/eDpWIDgNROA== + dependencies: + extend "^3.0.2" + gaxios "^4.0.0" + google-auth-library "^7.14.0" + qs "^6.7.0" + url-template "^2.0.8" + uuid "^8.0.0" + +googleapis@^100.0.0: + version "100.0.0" + resolved "https://registry.yarnpkg.com/googleapis/-/googleapis-100.0.0.tgz#baeeba7877ee7dd3250643b3803c4a9c24bcf8dd" + integrity sha512-RToFQGY54B756IDbjdyjb1vWFmn03bYpXHB2lIf0eq2UBYsIbYOLZ0kqSomfJnpclEukwEmMF7Jn6Wsev871ew== + dependencies: + google-auth-library "^7.0.2" + googleapis-common "^5.0.2" + graceful-fs@^4.1.2: version "4.2.6" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +gtoken@^5.0.4: + version "5.3.2" + resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" + integrity sha512-gkvEKREW7dXWF8NV8pVrKfW7WqReAmjjkMBh6lNCCGOM4ucS0r0YyXXl0r/9Yj8wcW/32ISkfc8h5mPTDbtifQ== + dependencies: + gaxios "^4.0.0" + google-p12-pem "^3.1.3" + jws "^4.0.0" + has-bigints@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.0.1.tgz#64fe6acb020673e3b78db035a5af69aa9d07b113" @@ -1046,6 +1174,14 @@ https-browserify@1.0.0, https-browserify@^1.0.0: resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= +https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + hyphenate-style-name@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/hyphenate-style-name/-/hyphenate-style-name-1.0.4.tgz#691879af8e220aea5750e8827db4ef62a54e361d" @@ -1201,6 +1337,11 @@ is-stream@^1.0.1: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + is-string@^1.0.5, is-string@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.6.tgz#3fe5d5992fb0d93404f32584d4b0179a71b54a5f" @@ -1261,6 +1402,13 @@ jest-worker@27.0.0-next.5: resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== +json-bigint@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-bigint/-/json-bigint-1.0.0.tgz#ae547823ac0cad8398667f8cd9ef4730f5b01ff1" + integrity sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ== + dependencies: + bignumber.js "^9.0.0" + json5@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" @@ -1268,6 +1416,23 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +jwa@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" + integrity sha512-jrZ2Qx916EA+fq9cEAeCROWPTfCwi1IVHqT2tapuqLEVVDKFDENFw1oL+MwrTvH6msKxsd1YTDVw6uKEcsrLEA== + dependencies: + buffer-equal-constant-time "1.0.1" + ecdsa-sig-formatter "1.0.11" + safe-buffer "^5.0.1" + +jws@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jws/-/jws-4.0.0.tgz#2d4e8cf6a318ffaa12615e9dec7e86e6c97310f4" + integrity sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg== + dependencies: + jwa "^2.0.0" + safe-buffer "^5.0.1" + loader-utils@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" @@ -1306,6 +1471,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + make-dir@^3.0.2: version "3.1.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" @@ -1360,6 +1532,11 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + nanoid@^3.1.23: version "3.2.0" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" @@ -1453,6 +1630,18 @@ node-fetch@^1.0.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.6.7: + version "2.6.7" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" + integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== + dependencies: + whatwg-url "^5.0.0" + +node-forge@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + node-html-parser@1.4.9: version "1.4.9" resolved "https://registry.yarnpkg.com/node-html-parser/-/node-html-parser-1.4.9.tgz#3c8f6cac46479fae5800725edb532e9ae8fd816c" @@ -1509,6 +1698,11 @@ object-inspect@^1.10.3: resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.10.3.tgz#c2aa7d2d09f50c99375704f7a0adf24c5782d369" integrity sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw== +object-inspect@^1.9.0: + version "1.12.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.0.tgz#6e2c120e868fd1fd18cb4f18c31741d0d6e776f0" + integrity sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g== + object-is@^1.0.1: version "1.1.5" resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" @@ -1718,6 +1912,13 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +qs@^6.7.0: + version "6.10.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" + integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ== + dependencies: + side-channel "^1.0.4" + querystring-es3@0.2.1, querystring-es3@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/querystring-es3/-/querystring-es3-0.2.1.tgz#9ec61f79049875707d69414596fd907a4d711e73" @@ -2048,6 +2249,15 @@ shell-quote@1.7.2: resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.2.tgz#67a7d02c76c9da24f99d20808fcaded0e0e04be2" integrity sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + source-map@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" @@ -2270,6 +2480,11 @@ tr46@^1.0.1: dependencies: punycode "^2.1.0" +tr46@~0.0.3: + version "0.0.3" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" + integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= + trouter@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/trouter/-/trouter-3.2.0.tgz#a9c510fce21b8e659a28732c9de9d82871efe8df" @@ -2327,6 +2542,11 @@ unpipe@1.0.0: resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw= +url-template@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/url-template/-/url-template-2.0.8.tgz#fc565a3cccbff7730c775f5641f9555791439f21" + integrity sha1-/FZaPMy/93MMd19WQflVV5FDnyE= + url@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1" @@ -2386,6 +2606,11 @@ util@^0.11.0: dependencies: inherits "2.0.3" +uuid@^8.0.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + vary@^1: version "1.1.2" resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" @@ -2404,6 +2629,11 @@ watchpack@2.1.1: glob-to-regexp "^0.4.1" graceful-fs "^4.1.2" +webidl-conversions@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-3.0.1.tgz#24534275e2a7bc6be7bc86611cc16ae0a5654871" + integrity sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE= + webidl-conversions@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" @@ -2414,6 +2644,14 @@ whatwg-fetch@>=0.10.0: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.6.2.tgz#dced24f37f2624ed0281725d51d0e2e3fe677f8c" integrity sha512-bJlen0FcuU/0EMLrdbJ7zOnW6ITZLrZMIarMUVmdKtsGvZna8vxKYaexICWPfZ8qwf9fzNq+UEIZrnSaApt6RA== +whatwg-url@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-5.0.0.tgz#966454e8765462e37644d3626f6742ce8b70965d" + integrity sha1-lmRU6HZUYuN2RNNib2dCzotwll0= + dependencies: + tr46 "~0.0.3" + webidl-conversions "^3.0.0" + whatwg-url@^7.0.0: version "7.1.0" resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" @@ -2459,6 +2697,11 @@ xtend@^4.0.0, xtend@^4.0.2: resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + yocto-queue@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" From 0b0a744f479c257c8cef6cca92da00515cbc07f3 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Tue, 17 May 2022 23:22:04 -0400 Subject: [PATCH 05/45] auth to google --- functions/getRecords.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/functions/getRecords.js b/functions/getRecords.js index d509560..8a78cf6 100644 --- a/functions/getRecords.js +++ b/functions/getRecords.js @@ -17,9 +17,10 @@ export default async function getRecords() { return; } else { console.log('Connected!'); - return getData(client); } }); + + return getData(client); } export async function getData(client) { const googleSheetApi = google.sheets({ version: 'v4', auth: client }); From cecc42d52eb7008496811040e70ca0c1ffb4db85 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Wed, 18 May 2022 08:54:14 -0400 Subject: [PATCH 06/45] add initial format --- components/Blocks/Form/Form.js | 2 +- components/Blocks/Hubspot/Forms.js | 4 +--- components/Blocks/InstaFeed/InstaFeed.js | 2 +- functions/formatRecords.js | 9 +++++++++ functions/getRecords.js | 6 ++++-- pages/index.js | 4 +++- 6 files changed, 19 insertions(+), 8 deletions(-) create mode 100644 functions/formatRecords.js diff --git a/components/Blocks/Form/Form.js b/components/Blocks/Form/Form.js index c478784..9711d54 100644 --- a/components/Blocks/Form/Form.js +++ b/components/Blocks/Form/Form.js @@ -67,7 +67,7 @@ const Form = (props) => { handleServerResponse(true, 'Obrigado por enviar essa mensagem.'); }) .catch((error) => { - console.log('error', error); + console.error('error', error); handleServerResponse(false, 'Error!'); }); }; diff --git a/components/Blocks/Hubspot/Forms.js b/components/Blocks/Hubspot/Forms.js index bebcbf6..224b859 100644 --- a/components/Blocks/Hubspot/Forms.js +++ b/components/Blocks/Hubspot/Forms.js @@ -69,8 +69,6 @@ const HubSpotForms = (props) => { }, }); - console.log(raw); - const requestOptions = { method: 'POST', headers: myHeaders, @@ -87,7 +85,7 @@ const HubSpotForms = (props) => { response.status === 200 && setFormStatus(true); }) .catch((error) => { - console.log('error', error); + console.error('error', error); }); }; diff --git a/components/Blocks/InstaFeed/InstaFeed.js b/components/Blocks/InstaFeed/InstaFeed.js index 4fa866e..fe199fa 100644 --- a/components/Blocks/InstaFeed/InstaFeed.js +++ b/components/Blocks/InstaFeed/InstaFeed.js @@ -8,7 +8,7 @@ const InstaFeed = (props) => { const isThumbnail = imageType === 'thumbnail'; if (isError) { - console.log(isError); + console.error(isError); return

Error!

; } if (isLoading) return

Loading ...

; diff --git a/functions/formatRecords.js b/functions/formatRecords.js new file mode 100644 index 0000000..23ef1c4 --- /dev/null +++ b/functions/formatRecords.js @@ -0,0 +1,9 @@ +const formatRecords = (records) => { + const header = records[0]; + const rows = records.slice(1); + const formatedRecords = records; + + return formatedRecords; +}; + +export default formatRecords; diff --git a/functions/getRecords.js b/functions/getRecords.js index 8a78cf6..39f4d38 100644 --- a/functions/getRecords.js +++ b/functions/getRecords.js @@ -1,4 +1,5 @@ const { google } = require('googleapis'); +// TODO: Move this to ENV const keys = require('../keys.json'); export default async function getRecords() { @@ -20,9 +21,10 @@ export default async function getRecords() { } }); - return getData(client); + return await getData(client); } -export async function getData(client) { + +async function getData(client) { const googleSheetApi = google.sheets({ version: 'v4', auth: client }); const readOptions = { spreadsheetId: '14n8UmDvGP1aV0mbfBHh73YgsbmtMtVN82fvs2FsdJds', diff --git a/pages/index.js b/pages/index.js index 6029b11..9431920 100644 --- a/pages/index.js +++ b/pages/index.js @@ -2,6 +2,7 @@ import Layout from 'components/Layout/Layout'; import Blocks from 'components/Blocks/Blocks'; import { getData } from 'functions/getData'; import getRecords from 'functions/getRecords'; +import formatRecords from 'functions/formatRecords'; const Blog = (props) => { const { posts, frontPage, members } = props; @@ -12,7 +13,8 @@ const Blog = (props) => { }; return ; }); - console.log('index', members); + + console.log(formatRecords(members)); return ( Date: Wed, 18 May 2022 08:57:32 -0400 Subject: [PATCH 07/45] remove secrets --- functions/getRecords.js | 2 +- keys.json | 12 ------------ 2 files changed, 1 insertion(+), 13 deletions(-) delete mode 100644 keys.json diff --git a/functions/getRecords.js b/functions/getRecords.js index 39f4d38..50c4757 100644 --- a/functions/getRecords.js +++ b/functions/getRecords.js @@ -1,6 +1,6 @@ const { google } = require('googleapis'); // TODO: Move this to ENV -const keys = require('../keys.json'); +const keys = require('../secrets.json'); export default async function getRecords() { const scopes = ['https://www.googleapis.com/auth/spreadsheets']; diff --git a/keys.json b/keys.json deleted file mode 100644 index bcddb5b..0000000 --- a/keys.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "type": "service_account", - "project_id": "quantum-lambda-248402", - "private_key_id": "5d197ae9cc48eda0d1195b70b0a54fa196db5423", - "private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQC+9Ml4JSRrr76e\nrnJti9CEmXmaOBd+s9+sekonW3a43SKk/9sWNYL9s7blkaCpLXfDd9CzjenNE4ZS\nshxlH1tLQgv7443lVmxFK25VTDYLjhBwVSNFrfLA20UdRrlPJRtfatA3T5aayDJr\nyt66sEMJycc3Zy/OF7BVq8bi5xOCPpvtv7gO0clC0naj+rjEiHVDEG1VE66cdnG0\npkQIHvMjePo5TpCLoUTHNigr9VRp2ymA7epHL48K5Kh8XGsUJWbT++bwvIpIIS9r\nrqYyGdogp4DPiGIY01KcvOMb8nLF8PM9g8y5/bDGXNJ6PUFtn7HKUeLpzoAI+a0C\n2EzADYqlAgMBAAECggEAFpKTGjuxwXUF4HYYmrBzVqlZwYwt4tFaeGYATAS41QN2\n6/A+srJiqKDM1vhO+JCiXp3UMtVstMxBDZd2WdHKFexZxE3S4TBFHiwTH8whe14w\nvUajI8J7Nqb01ZAdqahmQvI6aL9kuyk9JJbXm1PoqMiMXxU4hnEwbAAhQ4MzQCr4\nCt+7Ozct9/uNRPGmVLtoGiO02+9o0YQRYlu44LdkmC8G0kahSmYguwLbjunBkM51\nfk6eFQsr+IzSc6Hg/48sIDNwWLcMOWEWha9pMgywke5QnsEthDWecZUBKlfeLNux\nZIU8yOUOjHyHhX25M1J1KSErBO8kUjN20X6+Y6aNwQKBgQDwBg2Gg7edRV95w1EP\n5ntYNIFNh6pMWUJNwQcp7LhQhTWS5N+/BL8WAeH1q7dvQKWeUn0RPN9+5xIDPnR4\ni/KG0G9WubutngKwiZ6jhTkib1cYh1MgIOuPy8pPZx0mbQ6LuRaOMUYBzrgmkG11\n3JvcD1ut5vmSeadpaopvH3QKkQKBgQDLqqLj46Y+ZAlu/7HYgXe46Y4RG/Nr0KPm\n77f6I1Kh+KduStW8Lce+DK/P99q+g0GP6iIOOJFCrM0o8cJjKwoCPHePx7pHngOq\nk3vOriMmkkFrc7wr8pShkPUhOhHaSOUbE7joSDgEClgbG/dLUS7o4IXqQoEVkOoj\ncYYURVTA1QKBgQCDX9zBVpEGrPTwMZ7J5C54/ewUIoBs36Ix6shgAyhzMiY7q7hn\n1lI82nTyQbXaV/kOqjm4WKg/znwGeIXJgVgSwD1gq7J0+fqg5AKHoCDAn059p3wx\nJrOodjPauCa1ZJXEll8pHwEhdiNHQGAZVdGdZm6YxcaujJW8VktFPWMHcQKBgHsk\n33y/RuNuhS2yOQxZq9QIk7fQmKxV6ORXiXwbI3l/6WyMnxM68wz8islKad7Lajbk\nMFc86MfRx/K7yvc/LLwRZ5FuCDoJVtoqdq+PJv3JbPjVb69661eNWEoQ3H6JmM14\nbVM1Z3k57+/kRvApVB3Gs/Hi6D3r80Ye/B0Blq9JAoGBANVLegW5FPe44jtT+5sT\na97PKBUawsLb3Qf4ZuW1e+hoR/GxCo58hOBPhOhTT59recMr0mDh1/d9V6soR5RU\nd0I/TQR2SjAWMu2wVxRwe5XakKXxw2pMDztEXOgHFvDv6j/51cjI76GDMOe9k36I\nMeAn19kkrzpQ236koU6Yrtks\n-----END PRIVATE KEY-----\n", - "client_email": "website@quantum-lambda-248402.iam.gserviceaccount.com", - "client_id": "107240193741555009802", - "auth_uri": "https://accounts.google.com/o/oauth2/auth", - "token_uri": "https://oauth2.googleapis.com/token", - "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", - "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/website%40quantum-lambda-248402.iam.gserviceaccount.com" -} From 5490f0ea61db79662c54799e921ec4f44cbeec40 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Fri, 20 May 2022 08:38:31 -0400 Subject: [PATCH 08/45] format items --- functions/formatRecords.js | 9 +++++++-- functions/getRecords.js | 13 ++++--------- pages/index.js | 6 +++++- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/functions/formatRecords.js b/functions/formatRecords.js index 23ef1c4..736d90a 100644 --- a/functions/formatRecords.js +++ b/functions/formatRecords.js @@ -1,7 +1,12 @@ const formatRecords = (records) => { const header = records[0]; - const rows = records.slice(1); - const formatedRecords = records; + const rows = records.slice(1).filter((item) => item[0]); + + const formatedRecords = rows.map((row) => { + return header.reduce((accumulator, element, index) => { + return { ...accumulator, [element]: row[index] }; + }, {}); + }); return formatedRecords; }; diff --git a/functions/getRecords.js b/functions/getRecords.js index 50c4757..f2eb343 100644 --- a/functions/getRecords.js +++ b/functions/getRecords.js @@ -2,7 +2,7 @@ const { google } = require('googleapis'); // TODO: Move this to ENV const keys = require('../secrets.json'); -export default async function getRecords() { +export default async function getRecords(options) { const scopes = ['https://www.googleapis.com/auth/spreadsheets']; const client = new google.auth.JWT( @@ -21,17 +21,12 @@ export default async function getRecords() { } }); - return await getData(client); + return await getData(client, options); } -async function getData(client) { +async function getData(client, options) { const googleSheetApi = google.sheets({ version: 'v4', auth: client }); - const readOptions = { - spreadsheetId: '14n8UmDvGP1aV0mbfBHh73YgsbmtMtVN82fvs2FsdJds', - range: '2022!A1:E5', - }; - - let dataFromSheet = await googleSheetApi.spreadsheets.values.get(readOptions); + let dataFromSheet = await googleSheetApi.spreadsheets.values.get(options); let allRecords = dataFromSheet.data.values; return allRecords; } diff --git a/pages/index.js b/pages/index.js index 9431920..751cf98 100644 --- a/pages/index.js +++ b/pages/index.js @@ -27,7 +27,11 @@ const Blog = (props) => { }; export async function getStaticProps() { - const members = (await getRecords()) || []; + const members = + (await getRecords({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Companies!A1:AB', + })) || []; const allData = (await getData()) || {}; const { frontPage = [], From 622452e0443c316b50211aebe3834faaf3bb3a6a Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Mon, 23 May 2022 11:22:12 -0400 Subject: [PATCH 09/45] add partners block --- .../Blocks/BusinessCard/BusinessCard.jsx | 18 ++++++++++ components/Blocks/Partners/Partners.js | 30 ++++++++++++++++ .../{formatRecords.js => getPartners.js} | 10 ++++-- functions/getRecords.js | 7 ++-- functions/ramdomArray.js | 6 ++++ pages/index.js | 11 +++--- styles/_card.scss | 36 +++++++++++++++++++ styles/_utils.scss | 26 ++++++++++++++ 8 files changed, 132 insertions(+), 12 deletions(-) create mode 100644 components/Blocks/BusinessCard/BusinessCard.jsx create mode 100644 components/Blocks/Partners/Partners.js rename functions/{formatRecords.js => getPartners.js} (60%) create mode 100644 functions/ramdomArray.js diff --git a/components/Blocks/BusinessCard/BusinessCard.jsx b/components/Blocks/BusinessCard/BusinessCard.jsx new file mode 100644 index 0000000..e319e59 --- /dev/null +++ b/components/Blocks/BusinessCard/BusinessCard.jsx @@ -0,0 +1,18 @@ +import Image from 'next/image'; + +const BusinessCard = (props) => { + const { title, description, image } = props; + return ( +
+
+ {image && } +
+
+
{title}
+
{description}
+
+
+ ); +}; + +export default BusinessCard; diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js new file mode 100644 index 0000000..6a4bed6 --- /dev/null +++ b/components/Blocks/Partners/Partners.js @@ -0,0 +1,30 @@ +import { useState, useEffect } from 'react'; +import getPartners from 'functions/getPartners'; +import BusinessCard from '../BusinessCard/BusinessCard'; +import randomArray from 'functions/ramdomArray'; + +const Partners = (props) => { + const [partners, setPartners] = useState(); + + useEffect(() => { + setPartners(randomArray(getPartners(props.data))); + }, []); + + if (!partners) return
loading...
; + + return ( +
+
+

Parceiros

+
+
+
+ {partners.map((item) => ( + + ))} +
+
+
+ ); +}; +export default Partners; diff --git a/functions/formatRecords.js b/functions/getPartners.js similarity index 60% rename from functions/formatRecords.js rename to functions/getPartners.js index 736d90a..7e7e039 100644 --- a/functions/formatRecords.js +++ b/functions/getPartners.js @@ -1,4 +1,4 @@ -const formatRecords = (records) => { +const getPartners = (records) => { const header = records[0]; const rows = records.slice(1).filter((item) => item[0]); @@ -8,7 +8,11 @@ const formatRecords = (records) => { }, {}); }); - return formatedRecords; + const filteredRecords = formatedRecords.filter( + (item) => item.active === 'TRUE' + ); + + return filteredRecords; }; -export default formatRecords; +export default getPartners; diff --git a/functions/getRecords.js b/functions/getRecords.js index f2eb343..e7d6ace 100644 --- a/functions/getRecords.js +++ b/functions/getRecords.js @@ -26,7 +26,8 @@ export default async function getRecords(options) { async function getData(client, options) { const googleSheetApi = google.sheets({ version: 'v4', auth: client }); - let dataFromSheet = await googleSheetApi.spreadsheets.values.get(options); - let allRecords = dataFromSheet.data.values; - return allRecords; + const dataFromSheet = await googleSheetApi.spreadsheets.values.get(options); + const allRecords = dataFromSheet.data.values; + const normalizedRecords = allRecords.filter((item) => item[0][0]); + return normalizedRecords; } diff --git a/functions/ramdomArray.js b/functions/ramdomArray.js new file mode 100644 index 0000000..ae7e023 --- /dev/null +++ b/functions/ramdomArray.js @@ -0,0 +1,6 @@ +// @see https://dev.to/codebubb/how-to-shuffle-an-array-in-javascript-2ikj + +const randomArray = (array) => { + return array.sort((a, b) => 0.5 - Math.random()); +}; +export default randomArray; diff --git a/pages/index.js b/pages/index.js index 751cf98..ec87632 100644 --- a/pages/index.js +++ b/pages/index.js @@ -2,10 +2,10 @@ import Layout from 'components/Layout/Layout'; import Blocks from 'components/Blocks/Blocks'; import { getData } from 'functions/getData'; import getRecords from 'functions/getRecords'; -import formatRecords from 'functions/formatRecords'; +import Partners from 'components/Blocks/Partners/Partners'; const Blog = (props) => { - const { posts, frontPage, members } = props; + const { posts, frontPage, partners } = props; const blocks = frontPage[0].blockData.map((block, index) => { const blockProps = { ...block, @@ -14,20 +14,19 @@ const Blog = (props) => { return ; }); - console.log(formatRecords(members)); - return ( + {blocks} ); }; export async function getStaticProps() { - const members = + const partners = (await getRecords({ spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', range: 'Companies!A1:AB', @@ -47,7 +46,7 @@ export async function getStaticProps() { footerMenu, subscribeMenu, socialMenu, - members, + partners, }, revalidate: 30, diff --git a/styles/_card.scss b/styles/_card.scss index 89643da..dd58bb6 100644 --- a/styles/_card.scss +++ b/styles/_card.scss @@ -69,3 +69,39 @@ .card .link-more { display: none; } + +.card--business { + border-radius: 0; + + .card-img-top { + border-radius: 0; + height: unset; + margin: 0.5rem; + + div, + img { + border-radius: 0; + background-color: white; + object-fit: contain; + height: unset; + } + } + + @media (min-width: 768px) { + flex-direction: row; + + .card-img-top { + width: 150px; + + img { + width: 150px; + } + overflow: hidden; + position: relative; + } + + .card-body { + font-size: 1rem; + } + } +} diff --git a/styles/_utils.scss b/styles/_utils.scss index 49baa9f..5bbf948 100644 --- a/styles/_utils.scss +++ b/styles/_utils.scss @@ -1,6 +1,11 @@ // // Utils // + +.hidden { + display: none; +} + .rounded { border-radius: var(--border-radius); } @@ -15,3 +20,24 @@ -webkit-box-orient: vertical; overflow: hidden; } + +.grid { + display: grid; + gap: 2rem; +} + +.grid--nogap { + gap: none; +} + +@media (min-width: 768px) { + .grid-1 { + grid-template-columns: 1fr; + } + .grid-2 { + grid-template-columns: 1fr 1fr; + } + .grid-3 { + grid-template-columns: 1fr 1fr 1fr; + } +} From 9770e39a6152b7f76679f4bc700baa5dfc38a693 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Mon, 23 May 2022 11:46:03 -0400 Subject: [PATCH 10/45] refactor business card --- .../Blocks/BusinessCard/BusinessCard.jsx | 7 ++++--- components/Blocks/Partners/Partners.js | 19 +++++++++++++++++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/components/Blocks/BusinessCard/BusinessCard.jsx b/components/Blocks/BusinessCard/BusinessCard.jsx index e319e59..8765970 100644 --- a/components/Blocks/BusinessCard/BusinessCard.jsx +++ b/components/Blocks/BusinessCard/BusinessCard.jsx @@ -1,11 +1,12 @@ import Image from 'next/image'; const BusinessCard = (props) => { - const { title, description, image } = props; + const { title, description, image, membership } = props; + const hasImage = image && membership; return (
-
- {image && } +
+ {hasImage && }
{title}
diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index 6a4bed6..b72edd3 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -3,11 +3,23 @@ import getPartners from 'functions/getPartners'; import BusinessCard from '../BusinessCard/BusinessCard'; import randomArray from 'functions/ramdomArray'; +const getGold = (data) => { + const partners = getPartners(data); + return randomArray(partners.filter((item) => item.membership)); +}; + +const getSilver = (data) => { + const partners = getPartners(data); + return randomArray(partners.filter((item) => !item.membership)); +}; + const Partners = (props) => { + const [partnersGold, setPartnersGold] = useState(); const [partners, setPartners] = useState(); useEffect(() => { - setPartners(randomArray(getPartners(props.data))); + setPartnersGold(getGold(props.data)); + setPartners(getSilver(props.data)); }, []); if (!partners) return
loading...
; @@ -19,7 +31,10 @@ const Partners = (props) => {
- {partners.map((item) => ( + {partnersGold?.map((item) => ( + + ))} + {partners?.map((item) => ( ))}
From 3a4961a2e083345768ba2452fa31c7b2be7b3e44 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Tue, 24 May 2022 00:08:12 -0400 Subject: [PATCH 11/45] add filter to gold --- .../{BusinessCard.jsx => BusinessCard.js} | 2 +- components/Blocks/Partners/Partners.js | 71 +++++++++++++------ functions/filterData.js | 4 ++ functions/getPartners.js | 12 ++++ functions/handleCheck.js | 6 ++ pages/index.js | 11 +-- pages/parceiros.js | 49 +++++++++++++ styles.scss | 1 + styles/_buttons.scss | 5 ++ styles/_card.scss | 1 + styles/_partners.scss | 11 +++ 11 files changed, 140 insertions(+), 33 deletions(-) rename components/Blocks/BusinessCard/{BusinessCard.jsx => BusinessCard.js} (88%) create mode 100644 functions/filterData.js create mode 100644 functions/handleCheck.js create mode 100644 pages/parceiros.js create mode 100644 styles/_partners.scss diff --git a/components/Blocks/BusinessCard/BusinessCard.jsx b/components/Blocks/BusinessCard/BusinessCard.js similarity index 88% rename from components/Blocks/BusinessCard/BusinessCard.jsx rename to components/Blocks/BusinessCard/BusinessCard.js index 8765970..112fdd5 100644 --- a/components/Blocks/BusinessCard/BusinessCard.jsx +++ b/components/Blocks/BusinessCard/BusinessCard.js @@ -6,7 +6,7 @@ const BusinessCard = (props) => { return (
- {hasImage && } + {hasImage && }
{title}
diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index b72edd3..982c72f 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -1,27 +1,32 @@ +import filterData from 'functions/filterData'; +import { getGold, getSilver } from 'functions/getPartners'; +import handleCheck from 'functions/handleCheck'; import { useState, useEffect } from 'react'; -import getPartners from 'functions/getPartners'; import BusinessCard from '../BusinessCard/BusinessCard'; -import randomArray from 'functions/ramdomArray'; - -const getGold = (data) => { - const partners = getPartners(data); - return randomArray(partners.filter((item) => item.membership)); -}; - -const getSilver = (data) => { - const partners = getPartners(data); - return randomArray(partners.filter((item) => !item.membership)); -}; const Partners = (props) => { + const { data } = props; const [partnersGold, setPartnersGold] = useState(); const [partners, setPartners] = useState(); + const [categories, setCategories] = useState(); + const [checked, setChecked] = useState([]); + + const handleFilter = () => { + if (checked.length) + return setPartnersGold(filterData(getGold(data), checked)); + return setPartnersGold(getGold(data)); + }; useEffect(() => { - setPartnersGold(getGold(props.data)); - setPartners(getSilver(props.data)); + setPartnersGold(getGold(data)); + setPartners(getSilver(data)); + setCategories(props.categories); }, []); + useEffect(() => { + handleFilter(); + }, [checked, setChecked]); + if (!partners) return
loading...
; return ( @@ -29,14 +34,36 @@ const Partners = (props) => {

Parceiros

-
-
- {partnersGold?.map((item) => ( - - ))} - {partners?.map((item) => ( - - ))} +
+
+
+
+ Selecione as categorias + {categories.map((category, index) => ( +
+ + setChecked(handleCheck(category[1], checked)) + } + /> + +
+ ))} +
+
+
+
+
+ {partnersGold?.map((item) => ( + + ))} + {partners?.map((item) => ( + + ))} +
diff --git a/functions/filterData.js b/functions/filterData.js new file mode 100644 index 0000000..5c5c014 --- /dev/null +++ b/functions/filterData.js @@ -0,0 +1,4 @@ +const filterData = (tableData, filters) => { + return tableData.filter((item) => [...filters].includes(item.category)); +}; +export default filterData; diff --git a/functions/getPartners.js b/functions/getPartners.js index 7e7e039..07c6b01 100644 --- a/functions/getPartners.js +++ b/functions/getPartners.js @@ -1,3 +1,15 @@ +import randomArray from './ramdomArray'; + +export const getGold = (data) => { + const partners = getPartners(data); + return randomArray(partners.filter((item) => item.membership)); +}; + +export const getSilver = (data) => { + const partners = getPartners(data); + return randomArray(partners.filter((item) => !item.membership)); +}; + const getPartners = (records) => { const header = records[0]; const rows = records.slice(1).filter((item) => item[0]); diff --git a/functions/handleCheck.js b/functions/handleCheck.js new file mode 100644 index 0000000..910dd40 --- /dev/null +++ b/functions/handleCheck.js @@ -0,0 +1,6 @@ +const handleCheck = (id, checked) => { + const hasId = checked.includes(id); + if (!hasId) return [...checked, id]; + return [...checked].filter((item) => item !== id); +}; +export default handleCheck; diff --git a/pages/index.js b/pages/index.js index ec87632..4b3ebea 100644 --- a/pages/index.js +++ b/pages/index.js @@ -1,11 +1,9 @@ import Layout from 'components/Layout/Layout'; import Blocks from 'components/Blocks/Blocks'; import { getData } from 'functions/getData'; -import getRecords from 'functions/getRecords'; -import Partners from 'components/Blocks/Partners/Partners'; const Blog = (props) => { - const { posts, frontPage, partners } = props; + const { posts, frontPage } = props; const blocks = frontPage[0].blockData.map((block, index) => { const blockProps = { ...block, @@ -19,18 +17,12 @@ const Blog = (props) => { pageTitle={`Sua comunidade Brasileira em Ottawa-Gatineau!`} {...props} > - {blocks} ); }; export async function getStaticProps() { - const partners = - (await getRecords({ - spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', - range: 'Companies!A1:AB', - })) || []; const allData = (await getData()) || {}; const { frontPage = [], @@ -46,7 +38,6 @@ export async function getStaticProps() { footerMenu, subscribeMenu, socialMenu, - partners, }, revalidate: 30, diff --git a/pages/parceiros.js b/pages/parceiros.js new file mode 100644 index 0000000..481fe7a --- /dev/null +++ b/pages/parceiros.js @@ -0,0 +1,49 @@ +import Layout from 'components/Layout/Layout'; +import Blocks from 'components/Blocks/Blocks'; +import { getData } from 'functions/getData'; +import getRecords from 'functions/getRecords'; +import Partners from 'components/Blocks/Partners/Partners'; + +const Parceiros = (props) => { + const { partners, categories } = props; + + return ( + + + + ); +}; + +export async function getStaticProps() { + const partners = + (await getRecords({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Companies!A1:AB', + })) || []; + const categories = + (await getRecords({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Categories!A1:AB', + })) || []; + const allData = (await getData()) || {}; + const { + headerMenu = [], + footerMenu = [], + subscribeMenu = [], + socialMenu = [], + } = allData; + return { + props: { + headerMenu, + footerMenu, + subscribeMenu, + socialMenu, + partners, + categories, + }, + + revalidate: 30, + }; +} + +export default Parceiros; diff --git a/styles.scss b/styles.scss index b83271e..ee614e3 100644 --- a/styles.scss +++ b/styles.scss @@ -10,3 +10,4 @@ @import 'styles/card'; @import 'styles/content'; @import 'styles/forms'; +@import 'styles/partners'; diff --git a/styles/_buttons.scss b/styles/_buttons.scss index 21d7d61..1d79a99 100644 --- a/styles/_buttons.scss +++ b/styles/_buttons.scss @@ -73,3 +73,8 @@ box-shadow: 0 0 0 0.2rem rgba(130, 138, 145, 0.5); } } + +.btn--small { + font-size: 1rem; + padding: 0.25rem 0.5rem; +} diff --git a/styles/_card.scss b/styles/_card.scss index dd58bb6..5b8bfea 100644 --- a/styles/_card.scss +++ b/styles/_card.scss @@ -77,6 +77,7 @@ border-radius: 0; height: unset; margin: 0.5rem; + background-color: white; div, img { diff --git a/styles/_partners.scss b/styles/_partners.scss new file mode 100644 index 0000000..26983ec --- /dev/null +++ b/styles/_partners.scss @@ -0,0 +1,11 @@ +.partners { + &__grid { + display: grid; + grid-template-columns: 1fr; + gap: 4rem; + + @media (min-width: 768px) { + grid-template-columns: 200px 1fr; + } + } +} From f1ed7abf687d5a15daa826ea2e59286646483307 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Tue, 24 May 2022 00:12:43 -0400 Subject: [PATCH 12/45] add filter to silver --- components/Blocks/Partners/Partners.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index 982c72f..2e66536 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -12,9 +12,13 @@ const Partners = (props) => { const [checked, setChecked] = useState([]); const handleFilter = () => { - if (checked.length) - return setPartnersGold(filterData(getGold(data), checked)); - return setPartnersGold(getGold(data)); + if (checked.length) { + setPartnersGold(filterData(getGold(data), checked)); + setPartners(filterData(getSilver(data), checked)); + } else { + setPartnersGold(getGold(data)); + setPartners(getSilver(data)); + } }; useEffect(() => { From bbded939e42c7e1f5839fc8b5d76f9cef2041a2e Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Tue, 24 May 2022 00:16:20 -0400 Subject: [PATCH 13/45] add initial values --- components/Blocks/Partners/Partners.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index 2e66536..f1af0b2 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -6,6 +6,8 @@ import BusinessCard from '../BusinessCard/BusinessCard'; const Partners = (props) => { const { data } = props; + const initialGold = getGold(data); + const initialSilver = getSilver(data); const [partnersGold, setPartnersGold] = useState(); const [partners, setPartners] = useState(); const [categories, setCategories] = useState(); @@ -13,17 +15,17 @@ const Partners = (props) => { const handleFilter = () => { if (checked.length) { - setPartnersGold(filterData(getGold(data), checked)); - setPartners(filterData(getSilver(data), checked)); + setPartnersGold(filterData(initialGold, checked)); + setPartners(filterData(initialSilver, checked)); } else { - setPartnersGold(getGold(data)); - setPartners(getSilver(data)); + setPartnersGold(initialGold); + setPartners(initialSilver); } }; useEffect(() => { - setPartnersGold(getGold(data)); - setPartners(getSilver(data)); + setPartnersGold(initialGold); + setPartners(initialSilver); setCategories(props.categories); }, []); From fa6aa2de5ed7a51069a3acfd9f27eb9a0d39d347 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Wed, 25 May 2022 08:47:17 -0400 Subject: [PATCH 14/45] update filters --- components/Blocks/Partners/Partners.js | 60 +++++++++----------- components/Blocks/Partners/PartnersFilter.js | 37 ++++++++++++ styles/_partners.scss | 12 ++-- 3 files changed, 70 insertions(+), 39 deletions(-) create mode 100644 components/Blocks/Partners/PartnersFilter.js diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index f1af0b2..8aa671b 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -1,8 +1,8 @@ import filterData from 'functions/filterData'; import { getGold, getSilver } from 'functions/getPartners'; -import handleCheck from 'functions/handleCheck'; import { useState, useEffect } from 'react'; import BusinessCard from '../BusinessCard/BusinessCard'; +import PartnersFilter from './PartnersFilter'; const Partners = (props) => { const { data } = props; @@ -35,42 +35,38 @@ const Partners = (props) => { if (!partners) return
loading...
; + const filtersProps = { + categories, + setCategories, + }; + return (
-

Parceiros

+

Parceiros

-
-
-
-
- Selecione as categorias - {categories.map((category, index) => ( -
- - setChecked(handleCheck(category[1], checked)) - } - /> - -
+ +
+ {partnersGold.length > 0 && ( + <> +

Membros

+
+ {partnersGold.map((item) => ( + + ))} +
+ + )} + {partners.length > 0 && ( + <> +

Comunidade

+
+ {partners.map((item) => ( + ))} -
-
-
-
-
- {partnersGold?.map((item) => ( - - ))} - {partners?.map((item) => ( - - ))} -
-
+
+ + )}
); diff --git a/components/Blocks/Partners/PartnersFilter.js b/components/Blocks/Partners/PartnersFilter.js new file mode 100644 index 0000000..a365dec --- /dev/null +++ b/components/Blocks/Partners/PartnersFilter.js @@ -0,0 +1,37 @@ +import handleCheck from 'functions/handleCheck'; + +const PartnersFilter = ({ categories, setChecked }) => { + if (!categories?.length) return false; + + return ( +
+
+

Filtros

+
+
+
+ Categorias +
+
+ + +
+ {categories.map((category, index) => ( +
+ setChecked(handleCheck(category[1], checked))} + /> + +
+ ))} +
+
+
+
+ ); +}; + +export default PartnersFilter; diff --git a/styles/_partners.scss b/styles/_partners.scss index 26983ec..10fa2e6 100644 --- a/styles/_partners.scss +++ b/styles/_partners.scss @@ -1,11 +1,9 @@ .partners { - &__grid { - display: grid; - grid-template-columns: 1fr; - gap: 4rem; + &__filter { + // position: relative; + } - @media (min-width: 768px) { - grid-template-columns: 200px 1fr; - } + &__list { + // position: absolute; } } From 06bab76e61285907c82dd6a65bbe5e21bce1dfcb Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Wed, 25 May 2022 21:09:46 -0400 Subject: [PATCH 15/45] add initial filter styles --- components/Blocks/Partners/Partners.js | 26 ++------ components/Blocks/Partners/PartnersFilter.js | 57 ++++++++++------- components/Blocks/Partners/PartnersGroup.js | 15 +++++ styles/_buttons.scss | 11 ++++ styles/_partners.scss | 64 +++++++++++++++++++- 5 files changed, 127 insertions(+), 46 deletions(-) create mode 100644 components/Blocks/Partners/PartnersGroup.js diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index 8aa671b..8be2184 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -1,8 +1,8 @@ import filterData from 'functions/filterData'; import { getGold, getSilver } from 'functions/getPartners'; import { useState, useEffect } from 'react'; -import BusinessCard from '../BusinessCard/BusinessCard'; import PartnersFilter from './PartnersFilter'; +import PartnersGroup from './PartnersGroup'; const Partners = (props) => { const { data } = props; @@ -36,6 +36,8 @@ const Partners = (props) => { if (!partners) return
loading...
; const filtersProps = { + checked, + setChecked, categories, setCategories, }; @@ -47,26 +49,8 @@ const Partners = (props) => {
- {partnersGold.length > 0 && ( - <> -

Membros

-
- {partnersGold.map((item) => ( - - ))} -
- - )} - {partners.length > 0 && ( - <> -

Comunidade

-
- {partners.map((item) => ( - - ))} -
- - )} + +
); diff --git a/components/Blocks/Partners/PartnersFilter.js b/components/Blocks/Partners/PartnersFilter.js index a365dec..de56c26 100644 --- a/components/Blocks/Partners/PartnersFilter.js +++ b/components/Blocks/Partners/PartnersFilter.js @@ -1,33 +1,46 @@ +import { useState } from 'react'; import handleCheck from 'functions/handleCheck'; -const PartnersFilter = ({ categories, setChecked }) => { +const PartnersFilter = ({ categories, checked, setChecked }) => { + const [isOpen, setIsOpen] = useState(false); + if (!categories?.length) return false; return (
-
-

Filtros

-
+
Filtros
-
- Categorias -
-
- - -
- {categories.map((category, index) => ( -
- setChecked(handleCheck(category[1], checked))} - /> - +
+ + + + {isOpen && ( +
+
+ +
- ))} -
+ {categories.map((category, index) => ( +
+ + setChecked(handleCheck(category[1], checked)) + } + /> + +
+ ))} +
+ )}
diff --git a/components/Blocks/Partners/PartnersGroup.js b/components/Blocks/Partners/PartnersGroup.js new file mode 100644 index 0000000..be3511d --- /dev/null +++ b/components/Blocks/Partners/PartnersGroup.js @@ -0,0 +1,15 @@ +import BusinessCard from '../BusinessCard/BusinessCard'; +const PartnersGroup = ({ title, partners }) => { + if (!partners.length) return false; + return ( +
+ {title &&

{title}

} +
+ {partners?.map((item) => ( + + ))} +
+
+ ); +}; +export default PartnersGroup; diff --git a/styles/_buttons.scss b/styles/_buttons.scss index 1d79a99..ba8f17d 100644 --- a/styles/_buttons.scss +++ b/styles/_buttons.scss @@ -78,3 +78,14 @@ font-size: 1rem; padding: 0.25rem 0.5rem; } + +.btn--clear { + padding: 0; + margin: 0; + font-weight: unset; + font-size: 1rem; + border: none; + display: inline-block; + border: none; + border-radius: 0; +} diff --git a/styles/_partners.scss b/styles/_partners.scss index 10fa2e6..40340be 100644 --- a/styles/_partners.scss +++ b/styles/_partners.scss @@ -1,9 +1,67 @@ .partners { &__filter { - // position: relative; + position: relative; + border: solid 2px var(--grey-light); + border-radius: 1rem; + padding: 0 1rem; + display: flex; + align-items: center; + gap: 2rem; + margin-bottom: 1rem; } - &__list { - // position: absolute; + &__filter-title { + font-size: 1rem; + font-weight: 700; + } + + &__list-container { + position: relative; + } + + &__list-items { + position: absolute; + top: 0rem; + left: -1rem; + z-index: 10; + background-color: var(--white); + border: solid 2px var(--grey-light); + border-top: none; + border-radius: 1rem; + border-top-left-radius: 0; + border-top-right-radius: 0; + padding: 0 1rem 1rem 1rem; + display: flex; + gap: 0.25rem; + flex-direction: column; + } + + &__list-title { + display: flex; + align-items: center; + padding: 0; + margin: 0; + + button { + height: 3rem; + + &:focus { + box-shadow: none; + color: var(--green); + font-weight: 700; + } + } + } + + &__list-item { + white-space: nowrap; + display: flex; + align-items: center; + gap: 0.5rem; + font-size: 1rem; + + label { + margin: 0; + } } } From 9af81bd6ba1978ac0e5e4b0f723104c8d62cd752 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Wed, 25 May 2022 22:11:50 -0400 Subject: [PATCH 16/45] add filter styles --- components/Blocks/Partners/PartnersFilter.js | 18 ++++++++++-------- hooks/useOnClickOutside.js | 20 ++++++++++++++++++++ styles/_partners.scss | 5 +---- styles/_typhography.scss | 10 ++++++++++ 4 files changed, 41 insertions(+), 12 deletions(-) create mode 100644 hooks/useOnClickOutside.js diff --git a/components/Blocks/Partners/PartnersFilter.js b/components/Blocks/Partners/PartnersFilter.js index de56c26..e4333f1 100644 --- a/components/Blocks/Partners/PartnersFilter.js +++ b/components/Blocks/Partners/PartnersFilter.js @@ -1,20 +1,25 @@ -import { useState } from 'react'; +import { useState, useRef } from 'react'; import handleCheck from 'functions/handleCheck'; +import useOnClickOutside from 'hooks/useOnClickOutside'; const PartnersFilter = ({ categories, checked, setChecked }) => { const [isOpen, setIsOpen] = useState(false); + const hasCategories = categories?.length; + const hasItem = (item) => checked.includes(item); + const ref = useRef(); + useOnClickOutside(ref, () => setIsOpen(false)); - if (!categories?.length) return false; + if (!hasCategories) return false; return (
Filtros
-
+
- - {isOpen && ( -
- {categories.map((category, index) => ( -
- - setChecked(handleCheck(category[1], checked)) - } - defaultChecked={hasItem(category[1])} - /> - -
- ))} -
- )} -
-
+
{title}
+ +
); }; diff --git a/components/Blocks/Partners/PartnersFilterList.js b/components/Blocks/Partners/PartnersFilterList.js new file mode 100644 index 0000000..fe1ff18 --- /dev/null +++ b/components/Blocks/Partners/PartnersFilterList.js @@ -0,0 +1,52 @@ +import { useRef } from 'react'; +import handleCheck from 'functions/handleCheck'; +import useOnClickOutside from 'hooks/useOnClickOutside'; + +const PartnersFilterList = ({ + title = 'Items', + setIsOpen, + isOpen, + setChecked, + checked, + list, +}) => { + if (!list?.length) return false; + + const hasItem = (item) => checked.includes(item); + const ref = useRef(); + useOnClickOutside(ref, () => setIsOpen(false)); + + return ( +
+
+ + + + {isOpen && ( +
+ {list.map((listItem, index) => ( +
+ setChecked(handleCheck(listItem[1], checked))} + defaultChecked={hasItem(listItem[1])} + /> + +
+ ))} +
+ )} +
+
+ ); +}; + +export default PartnersFilterList; diff --git a/components/Blocks/Partners/PartnersTags.js b/components/Blocks/Partners/PartnersTags.js new file mode 100644 index 0000000..3b4465b --- /dev/null +++ b/components/Blocks/Partners/PartnersTags.js @@ -0,0 +1,24 @@ +const PartnersTags = ({ tags, setTags }) => { + const hasTags = tags?.length > 0; + const removeTag = (id) => { + return setTags(tags.filter((tag) => tag !== id)); + }; + + if (!hasTags) return false; + + return ( +
+ {tags.map((item, index) => ( + + ))} +
+ ); +}; + +export default PartnersTags; diff --git a/styles/_partners.scss b/styles/_partners.scss index 6a5572f..0a520b8 100644 --- a/styles/_partners.scss +++ b/styles/_partners.scss @@ -5,7 +5,7 @@ border: solid 2px var(--grey-light); border-radius: 1rem; padding: 0 1rem; - display: flex; + display: inline-flex; align-items: center; gap: 2rem; margin-bottom: 1rem; @@ -61,4 +61,28 @@ margin: 0; } } + + &__filter-tags { + display: flex; + gap: 0.5rem; + margin-right: -0.5rem; + } + + &__filter-tag { + height: 100%; + background-color: var(--grey-clear); + padding: 0.25rem 1rem; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + + &:first-child { + border-top-left-radius: 0.5rem; + border-bottom-left-radius: 0.5rem; + } + &:last-child { + border-top-right-radius: 0.5rem; + border-bottom-right-radius: 0.5rem; + } + } } From fb0bfb45fb1fdcf7e0646b4a1b3ef3b40241b6bd Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Fri, 27 May 2022 09:00:14 -0400 Subject: [PATCH 18/45] tags: add initial styles --- components/Blocks/Partners/PartnersFilter.js | 10 +++++++--- components/Blocks/Partners/PartnersTags.js | 4 ++-- styles/_partners.scss | 17 ++++++++--------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/components/Blocks/Partners/PartnersFilter.js b/components/Blocks/Partners/PartnersFilter.js index b6708f9..ce39512 100644 --- a/components/Blocks/Partners/PartnersFilter.js +++ b/components/Blocks/Partners/PartnersFilter.js @@ -25,9 +25,13 @@ const PartnersFilter = ({ return (
-
{title}
- - +
+
{title}
+ +
+
+ +
); }; diff --git a/components/Blocks/Partners/PartnersTags.js b/components/Blocks/Partners/PartnersTags.js index 3b4465b..aec11cc 100644 --- a/components/Blocks/Partners/PartnersTags.js +++ b/components/Blocks/Partners/PartnersTags.js @@ -10,11 +10,11 @@ const PartnersTags = ({ tags, setTags }) => {
{tags.map((item, index) => ( ))}
diff --git a/styles/_partners.scss b/styles/_partners.scss index 0a520b8..00f1097 100644 --- a/styles/_partners.scss +++ b/styles/_partners.scss @@ -1,6 +1,6 @@ .partners { font-size: 1rem; - &__filter { + &__filter-header { position: relative; border: solid 2px var(--grey-light); border-radius: 1rem; @@ -64,6 +64,7 @@ &__filter-tags { display: flex; + flex-wrap: wrap; gap: 0.5rem; margin-right: -0.5rem; } @@ -75,14 +76,12 @@ white-space: nowrap; overflow: hidden; text-overflow: ellipsis; + } - &:first-child { - border-top-left-radius: 0.5rem; - border-bottom-left-radius: 0.5rem; - } - &:last-child { - border-top-right-radius: 0.5rem; - border-bottom-right-radius: 0.5rem; - } + &__filter-close { + font-size: 0.75rem; + margin-left: 0.5rem; + color: var(--green); + font-weight: 700; } } From 44ae647dee874fd42d944129b61727e444795e84 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Wed, 1 Jun 2022 09:04:00 -0400 Subject: [PATCH 19/45] card: add more styles --- .../Blocks/BusinessCard/BusinessCard.js | 26 +++++++++++++++++++ package.json | 1 + styles/_card.scss | 11 ++++++++ styles/_partners.scss | 7 ++--- yarn.lock | 11 +++++--- 5 files changed, 48 insertions(+), 8 deletions(-) diff --git a/components/Blocks/BusinessCard/BusinessCard.js b/components/Blocks/BusinessCard/BusinessCard.js index ea5fc44..6197709 100644 --- a/components/Blocks/BusinessCard/BusinessCard.js +++ b/components/Blocks/BusinessCard/BusinessCard.js @@ -1,4 +1,5 @@ import Image from 'next/image'; +import { BsWhatsapp, BsFacebook, BsInstagram } from 'react-icons/bs'; const BusinessCard = (props) => { const { @@ -28,6 +29,31 @@ const BusinessCard = (props) => {
{title}
{description}
+
+ {address &&
{address}
} + {email && ( +
+ {email} +
+ )} + {phone && ( +
+ {phone} +
+ )} + {website && ( + + )} +
+ + + +
+
); diff --git a/package.json b/package.json index 8e0daad..df33d99 100644 --- a/package.json +++ b/package.json @@ -19,6 +19,7 @@ "cors": "^2.8.5", "next-connect": "^0.10.1", "postscribe": "^2.0.8", + "react-icons": "^4.4.0", "react-images": "^1.2.0-beta.6", "sass": "^1.32.11", "swr": "^0.5.6" diff --git a/styles/_card.scss b/styles/_card.scss index 5b8bfea..dc42b44 100644 --- a/styles/_card.scss +++ b/styles/_card.scss @@ -88,6 +88,17 @@ } } + .card-meta { + padding-top: 1rem; + } + + .card-social { + display: flex; + width: 100%; + padding-top: 1rem; + gap: 0.5rem; + } + @media (min-width: 768px) { flex-direction: row; diff --git a/styles/_partners.scss b/styles/_partners.scss index 00f1097..bc11f9e 100644 --- a/styles/_partners.scss +++ b/styles/_partners.scss @@ -21,16 +21,13 @@ &__list-items { position: absolute; - top: 0rem; + top: 0.25rem; left: -1rem; z-index: 10; background-color: var(--white); border: solid 2px var(--grey-light); - border-top: none; border-radius: 1rem; - border-top-left-radius: 0; - border-top-right-radius: 0; - padding: 0 1rem 1rem 1rem; + padding: 1rem; display: flex; gap: 0.25rem; flex-direction: column; diff --git a/yarn.lock b/yarn.lock index 2f852d9..3334c01 100644 --- a/yarn.lock +++ b/yarn.lock @@ -295,9 +295,9 @@ bn.js@^5.0.0, bn.js@^5.1.1: integrity sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw== bootstrap@^4.6.0: - version "4.6.0" - resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.0.tgz#97b9f29ac98f98dfa43bf7468262d84392552fd7" - integrity sha512-Io55IuQY3kydzHtbGvQya3H+KorS/M9rSNyfCGCg9WZ4pyT/lCxIlpJgG1GXW/PswzC84Tr2fBYi+7+jFVQQBw== + version "4.6.1" + resolved "https://registry.yarnpkg.com/bootstrap/-/bootstrap-4.6.1.tgz#bc25380c2c14192374e8dec07cf01b2742d222a2" + integrity sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og== bowser@^1.7.3: version "1.9.4" @@ -2025,6 +2025,11 @@ react-full-screen@^1.0.1: dependencies: fscreen "^1.0.2" +react-icons@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/react-icons/-/react-icons-4.4.0.tgz#a13a8a20c254854e1ec9aecef28a95cdf24ef703" + integrity sha512-fSbvHeVYo/B5/L4VhB7sBA1i2tS8MkT0Hb9t2H1AVPkwGfVHLJCqyr2Py9dKMxsyM63Eng1GkdZfbWj+Fmv8Rg== + react-images@^1.2.0-beta.6: version "1.2.0-beta.7" resolved "https://registry.yarnpkg.com/react-images/-/react-images-1.2.0-beta.7.tgz#8a5804f8a5d08a25e64180eecb43a77d4e023e16" From bd01ec29467e5e0003be486b07a35ac76f9894b1 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Thu, 2 Jun 2022 08:55:07 -0400 Subject: [PATCH 20/45] card: add stules --- .../Blocks/BusinessCard/BusinessCard.js | 70 ++++++++----------- .../Blocks/BusinessCard/BusinessCardFooter.js | 67 ++++++++++++++++++ functions/getPhoneNumber.js | 2 + functions/getSocialLink.js | 2 + styles/_card.scss | 62 +++++++++------- styles/_partners.scss | 9 ++- 6 files changed, 144 insertions(+), 68 deletions(-) create mode 100644 components/Blocks/BusinessCard/BusinessCardFooter.js create mode 100644 functions/getPhoneNumber.js create mode 100644 functions/getSocialLink.js diff --git a/components/Blocks/BusinessCard/BusinessCard.js b/components/Blocks/BusinessCard/BusinessCard.js index 6197709..1c01e1f 100644 --- a/components/Blocks/BusinessCard/BusinessCard.js +++ b/components/Blocks/BusinessCard/BusinessCard.js @@ -1,13 +1,25 @@ import Image from 'next/image'; -import { BsWhatsapp, BsFacebook, BsInstagram } from 'react-icons/bs'; +import BusinessCardFooter from './BusinessCardFooter'; -const BusinessCard = (props) => { - const { - active, - title, - description, - image, - membership, +const BusinessCard = ({ + active, + title, + description, + image, + membership, + address, + category, + email, + facebook, + instagram, + phone, + website, + whatsapp, +}) => { + if (active !== 'TRUE') return false; + + const hasImage = image && membership; + const footerProps = { address, category, email, @@ -16,45 +28,21 @@ const BusinessCard = (props) => { phone, website, whatsapp, - } = props; - - if (active !== 'TRUE') return false; + iconSize: `1.2rem`, + }; - const hasImage = image && membership; return (
-
- {hasImage && } -
-
{title}
-
{description}
-
- {address &&
{address}
} - {email && ( -
- {email} -
- )} - {phone && ( -
- {phone} -
- )} - {website && ( - - )} -
- - - -
+
+ {hasImage && } +
+
+
{title}
+
{description}
+
); }; diff --git a/components/Blocks/BusinessCard/BusinessCardFooter.js b/components/Blocks/BusinessCard/BusinessCardFooter.js new file mode 100644 index 0000000..42fd087 --- /dev/null +++ b/components/Blocks/BusinessCard/BusinessCardFooter.js @@ -0,0 +1,67 @@ +import getPhoneNumer from 'functions/getPhoneNumber'; +import getSocialLink from 'functions/getSocialLink'; +import { BsWhatsapp, BsFacebook, BsInstagram } from 'react-icons/bs'; + +const BusinessCardFooter = ({ + address, + category, + email, + facebook, + instagram, + phone, + website, + whatsapp, + iconSize, +}) => { + return ( +
+
+ {address &&
{address}
} + {email && ( +
+ {email} +
+ )} + {phone && ( +
+ {phone} +
+ )} + {website && ( + + )} +
+ {whatsapp && ( + + + + )} + {facebook && ( + + + + )} + {instagram && ( + + + + )} +
+
+
+ ); +}; +export default BusinessCardFooter; diff --git a/functions/getPhoneNumber.js b/functions/getPhoneNumber.js new file mode 100644 index 0000000..2de3a96 --- /dev/null +++ b/functions/getPhoneNumber.js @@ -0,0 +1,2 @@ +const getPhoneNumer = (phone) => phone.replace(/[^\d.]/g, ''); +export default getPhoneNumer; diff --git a/functions/getSocialLink.js b/functions/getSocialLink.js new file mode 100644 index 0000000..5264234 --- /dev/null +++ b/functions/getSocialLink.js @@ -0,0 +1,2 @@ +const getSocialLink = (url) => url.replace('@', ''); +export default getSocialLink; diff --git a/styles/_card.scss b/styles/_card.scss index dc42b44..0d322bf 100644 --- a/styles/_card.scss +++ b/styles/_card.scss @@ -39,8 +39,6 @@ .card-img-top { background-color: var(--grey-neutral); - height: 250px; - width: 100%; border-top-left-radius: 1rem; border-top-right-radius: 1rem; overflow: hidden; @@ -70,50 +68,62 @@ display: none; } +// BUSINESS CARD +// ======================= + .card--business { border-radius: 0; + display: grid; + gap: 1rem; + padding: 1.5rem; + + .card-body { + padding: 0; + display: flex; + gap: 1rem; + } + + .card-title { + margin: 0; + } .card-img-top { border-radius: 0; - height: unset; - margin: 0.5rem; - background-color: white; + padding: 0; + width: fit-content; + background-color: unset; div, img { border-radius: 0; background-color: white; object-fit: contain; - height: unset; + width: 80px; + height: 80px; } - } - .card-meta { - padding-top: 1rem; + @media (min-width: 768px) { + div, + img { + width: unset; + height: unset; + } + } } .card-social { - display: flex; - width: 100%; padding-top: 1rem; + display: flex; gap: 0.5rem; } - @media (min-width: 768px) { - flex-direction: row; - - .card-img-top { - width: 150px; - - img { - width: 150px; - } - overflow: hidden; - position: relative; - } + .card-icon { + fill: var(--green); + } - .card-body { - font-size: 1rem; - } + .card-footer { + background: none; + border: none; + padding: 0; } } diff --git a/styles/_partners.scss b/styles/_partners.scss index bc11f9e..5905a61 100644 --- a/styles/_partners.scss +++ b/styles/_partners.scss @@ -1,5 +1,12 @@ .partners { - font-size: 1rem; + font-size: 0.9rem; + @media (min-width: 768px) { + font-size: 1rem; + } + + &__filter { + padding-bottom: 1rem; + } &__filter-header { position: relative; border: solid 2px var(--grey-light); From 3c6eb7166fa05665a62bfffb21665df3c87170cd Mon Sep 17 00:00:00 2001 From: Marcelo Freitas Date: Thu, 2 Jun 2022 18:12:17 -0400 Subject: [PATCH 21/45] Update .env.example --- .env.example | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.example b/.env.example index c48b7de..a935846 100644 --- a/.env.example +++ b/.env.example @@ -1,4 +1,4 @@ NEXT_PUBLIC_FORM_KEY= NEXT_PUBLIC_HUBSPOT= NEXT_PUBLIC_HUBSPOT_SITE= -NEXT_PUBLIC_WORDPRESS_URL=https://brinca-2021.herokuapp.com +NEXT_PUBLIC_WORDPRESS_URL=http://marceloglacial.com/brinca From d702adfcf92813e737af11dcd84e1496182dce74 Mon Sep 17 00:00:00 2001 From: dutraneto Date: Sat, 4 Jun 2022 09:54:33 -0400 Subject: [PATCH 22/45] Create apadrinhar page --- .env | 4 ++++ .env.example | 4 ---- pages/apadrinhar.js | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 43 insertions(+), 4 deletions(-) create mode 100644 .env delete mode 100644 .env.example create mode 100644 pages/apadrinhar.js diff --git a/.env b/.env new file mode 100644 index 0000000..d0a0c20 --- /dev/null +++ b/.env @@ -0,0 +1,4 @@ +NEXT_PUBLIC_FORM_KEY= +NEXT_PUBLIC_HUBSPOT=7bfec0f7-e3e7-49d8-a0c8-7ae04fe7bad1 +NEXT_PUBLIC_HUBSPOT_SITE=7882714 +NEXT_PUBLIC_WORDPRESS_URL=http://marceloglacial.com/brinca diff --git a/.env.example b/.env.example deleted file mode 100644 index a935846..0000000 --- a/.env.example +++ /dev/null @@ -1,4 +0,0 @@ -NEXT_PUBLIC_FORM_KEY= -NEXT_PUBLIC_HUBSPOT= -NEXT_PUBLIC_HUBSPOT_SITE= -NEXT_PUBLIC_WORDPRESS_URL=http://marceloglacial.com/brinca diff --git a/pages/apadrinhar.js b/pages/apadrinhar.js new file mode 100644 index 0000000..21667bc --- /dev/null +++ b/pages/apadrinhar.js @@ -0,0 +1,39 @@ +import Layout from 'components/Layout/Layout' +import Main from 'components/Main/Main' +import Link from 'next/link' + +const Apadrinhar = (props) => { + return ( + +
+
+

Apadrinhe um recém-chegado ao Canada!

+
+
+

Todos nós, que vivemos em um novo país, certamente fomos ajudados por alguém em algum momento da nossa chegada. São muitos os desafios, desde burocracias como carteira de habilitação, cartão de saúde até coisas mais simples, como escolher marca de sabão no supermercado. Temos que aprender tudo novamente e o choque cultural pode ser amenizado quando encontramos compatriotas dispostos a nos ajudar nesse processo.

+
+
+

Pensando em facilitar o encontro entre essas pessoas na comunidade, a BRINCA criou o projeto de apadrinhamento. Através de um cadastro simples, selecionamos os perfis que mais se adequam e o contato entre padrinho e apadrinhado é feito. A partir daí os dois lados poderão combinar a melhor forma de comunicação e periodicidade dos encontros. Não há limites!

+
+
+

Queremos criar uma comunidade cada vez mais forte e unida, e acreditamos que esse link possa criar laços fortes entre as pessoas. Aquele que foi ajudado pode ser o que ajuda no futuro, e assim todos ganham.

+
+
+

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

+
+
+
+
+

Quero apadrinhar:

+
+

Para ser um padrinho ou madrinha, você precisa estar morando há pelo menos 3 anos no Canadá e ter disponibilidade e boa vontade para responder às mais diversas questões de famílias que estão chegando ou que chegaram recentemente em Ottawa e região.

+

Você estará lidando com sonhos e ansiedades, então se você é do tipo que vê o WhatsApp a cada três dias, talvez essa não seja a melhor opção de voluntariado pra você.

+

Preencha os dados abaixo e aguarde o nosso contato em breve!

+
+
+
+
+ ) +} + +export default Apadrinhar From 3adc97e781ab5e7544cff40a9556c4d87f370dbb Mon Sep 17 00:00:00 2001 From: dutraneto Date: Sat, 4 Jun 2022 10:23:06 -0400 Subject: [PATCH 23/45] Split Padrinho component out to reusing --- components/Padrinho/PadrinhoContent.js | 28 ++++++++++++++++++ pages/apadrinhar.js | 39 ++++++++------------------ 2 files changed, 39 insertions(+), 28 deletions(-) create mode 100644 components/Padrinho/PadrinhoContent.js diff --git a/components/Padrinho/PadrinhoContent.js b/components/Padrinho/PadrinhoContent.js new file mode 100644 index 0000000..4066a0b --- /dev/null +++ b/components/Padrinho/PadrinhoContent.js @@ -0,0 +1,28 @@ +import Link from 'next/link' + +const PadrinhosContent = (props) => { + + const { title } = props + + return ( +
+

{title}

+
+
+

Todos nós, que vivemos em um novo país, certamente fomos ajudados por alguém em algum momento da nossa chegada. São muitos os desafios, desde burocracias como carteira de habilitação, cartão de saúde até coisas mais simples, como escolher marca de sabão no supermercado. Temos que aprender tudo novamente e o choque cultural pode ser amenizado quando encontramos compatriotas dispostos a nos ajudar nesse processo.

+
+
+

Pensando em facilitar o encontro entre essas pessoas na comunidade, a BRINCA criou o projeto de apadrinhamento. Através de um cadastro simples, selecionamos os perfis que mais se adequam e o contato entre padrinho e apadrinhado é feito. A partir daí os dois lados poderão combinar a melhor forma de comunicação e periodicidade dos encontros. Não há limites!

+
+
+

Queremos criar uma comunidade cada vez mais forte e unida, e acreditamos que esse link possa criar laços fortes entre as pessoas. Aquele que foi ajudado pode ser o que ajuda no futuro, e assim todos ganham.

+
+
+

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

+
+
+
+ ) +} + +export default PadrinhosContent diff --git a/pages/apadrinhar.js b/pages/apadrinhar.js index 21667bc..48ae88a 100644 --- a/pages/apadrinhar.js +++ b/pages/apadrinhar.js @@ -1,37 +1,20 @@ import Layout from 'components/Layout/Layout' import Main from 'components/Main/Main' -import Link from 'next/link' + +import PadrinhoContent from 'components/Padrinho/PadrinhoContent' const Apadrinhar = (props) => { return ( -
-
-

Apadrinhe um recém-chegado ao Canada!

-
-
-

Todos nós, que vivemos em um novo país, certamente fomos ajudados por alguém em algum momento da nossa chegada. São muitos os desafios, desde burocracias como carteira de habilitação, cartão de saúde até coisas mais simples, como escolher marca de sabão no supermercado. Temos que aprender tudo novamente e o choque cultural pode ser amenizado quando encontramos compatriotas dispostos a nos ajudar nesse processo.

-
-
-

Pensando em facilitar o encontro entre essas pessoas na comunidade, a BRINCA criou o projeto de apadrinhamento. Através de um cadastro simples, selecionamos os perfis que mais se adequam e o contato entre padrinho e apadrinhado é feito. A partir daí os dois lados poderão combinar a melhor forma de comunicação e periodicidade dos encontros. Não há limites!

-
-
-

Queremos criar uma comunidade cada vez mais forte e unida, e acreditamos que esse link possa criar laços fortes entre as pessoas. Aquele que foi ajudado pode ser o que ajuda no futuro, e assim todos ganham.

-
-
-

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

-
-
-
-
-

Quero apadrinhar:

-
-

Para ser um padrinho ou madrinha, você precisa estar morando há pelo menos 3 anos no Canadá e ter disponibilidade e boa vontade para responder às mais diversas questões de famílias que estão chegando ou que chegaram recentemente em Ottawa e região.

-

Você estará lidando com sonhos e ansiedades, então se você é do tipo que vê o WhatsApp a cada três dias, talvez essa não seja a melhor opção de voluntariado pra você.

-

Preencha os dados abaixo e aguarde o nosso contato em breve!

-
-
-
+ +
+

Quero apadrinhar:

+
+

Para ser um padrinho ou madrinha, você precisa estar morando há pelo menos 3 anos no Canadá e ter disponibilidade e boa vontade para responder às mais diversas questões de famílias que estão chegando ou que chegaram recentemente em Ottawa e região.

+

Você estará lidando com sonhos e ansiedades, então se você é do tipo que vê o WhatsApp a cada três dias, talvez essa não seja a melhor opção de voluntariado pra você.

+

Preencha os dados abaixo e aguarde o nosso contato em breve!

+
+
) } From 30ee8937a6a21d55210709b9be3dfc011ca73311 Mon Sep 17 00:00:00 2001 From: dutraneto Date: Sat, 4 Jun 2022 11:50:55 -0400 Subject: [PATCH 24/45] Rename files --- .env | 4 ---- 1 file changed, 4 deletions(-) delete mode 100644 .env diff --git a/.env b/.env deleted file mode 100644 index d0a0c20..0000000 --- a/.env +++ /dev/null @@ -1,4 +0,0 @@ -NEXT_PUBLIC_FORM_KEY= -NEXT_PUBLIC_HUBSPOT=7bfec0f7-e3e7-49d8-a0c8-7ae04fe7bad1 -NEXT_PUBLIC_HUBSPOT_SITE=7882714 -NEXT_PUBLIC_WORDPRESS_URL=http://marceloglacial.com/brinca From b3b3583e0ef4a318bf79b5f7a93439abe3e7be7a Mon Sep 17 00:00:00 2001 From: dutraneto Date: Sat, 4 Jun 2022 11:56:03 -0400 Subject: [PATCH 25/45] Add .env.example back --- .env.example | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 .env.example diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a935846 --- /dev/null +++ b/.env.example @@ -0,0 +1,4 @@ +NEXT_PUBLIC_FORM_KEY= +NEXT_PUBLIC_HUBSPOT= +NEXT_PUBLIC_HUBSPOT_SITE= +NEXT_PUBLIC_WORDPRESS_URL=http://marceloglacial.com/brinca From 5632e45e85698314f5273bf3302067d6a65b45a5 Mon Sep 17 00:00:00 2001 From: dutraneto Date: Sun, 5 Jun 2022 20:54:00 -0400 Subject: [PATCH 26/45] Render 'Formulario Padrinho' form --- pages/apadrinhar.js | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/pages/apadrinhar.js b/pages/apadrinhar.js index 48ae88a..1f2aec9 100644 --- a/pages/apadrinhar.js +++ b/pages/apadrinhar.js @@ -1,13 +1,18 @@ import Layout from 'components/Layout/Layout' import Main from 'components/Main/Main' - import PadrinhoContent from 'components/Padrinho/PadrinhoContent' +import Alert from 'components/Alert/Alert' +import HubSpotForms from 'components/Blocks/Hubspot/Forms' + +const Apadrinhar = () => { + const attrs = { + formID: process.env.NEXT_PUBLIC_HUBSPOT_PADRINHO || '' + } -const Apadrinhar = (props) => { return ( -
+

Quero apadrinhar:

Para ser um padrinho ou madrinha, você precisa estar morando há pelo menos 3 anos no Canadá e ter disponibilidade e boa vontade para responder às mais diversas questões de famílias que estão chegando ou que chegaram recentemente em Ottawa e região.

@@ -15,6 +20,9 @@ const Apadrinhar = (props) => {

Preencha os dados abaixo e aguarde o nosso contato em breve!

+ { + attrs.formID ? : + } ) } From df7c147b9a17dbb775641f64728c63cf930807f7 Mon Sep 17 00:00:00 2001 From: marceloglacial Date: Mon, 6 Jun 2022 15:07:27 -0400 Subject: [PATCH 27/45] filter: change filter --- .../Blocks/BusinessCard/BusinessCardFooter.js | 6 +- components/Blocks/Partners/Partners.js | 74 +++++++++---------- components/Blocks/Partners/PartnersTags.js | 36 +++++---- functions/filterData.js | 5 +- functions/getPhoneNumber.js | 4 +- functions/slugfy.js | 12 +++ pages/parceiros/[slug].js | 62 ++++++++++++++++ pages/{parceiros.js => parceiros/index.js} | 1 - styles/_card.scss | 4 + styles/_partners.scss | 7 +- styles/_utils.scss | 12 +++ 11 files changed, 156 insertions(+), 67 deletions(-) create mode 100644 functions/slugfy.js create mode 100644 pages/parceiros/[slug].js rename pages/{parceiros.js => parceiros/index.js} (95%) diff --git a/components/Blocks/BusinessCard/BusinessCardFooter.js b/components/Blocks/BusinessCard/BusinessCardFooter.js index 42fd087..05eb829 100644 --- a/components/Blocks/BusinessCard/BusinessCardFooter.js +++ b/components/Blocks/BusinessCard/BusinessCardFooter.js @@ -1,4 +1,4 @@ -import getPhoneNumer from 'functions/getPhoneNumber'; +import getPhoneNumber from 'functions/getPhoneNumber'; import getSocialLink from 'functions/getSocialLink'; import { BsWhatsapp, BsFacebook, BsInstagram } from 'react-icons/bs'; @@ -24,7 +24,7 @@ const BusinessCardFooter = ({ )} {phone && ( )} {website && ( @@ -37,7 +37,7 @@ const BusinessCardFooter = ({
{whatsapp && ( diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index 8be2184..707a869 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -1,56 +1,50 @@ import filterData from 'functions/filterData'; import { getGold, getSilver } from 'functions/getPartners'; +import Link from 'next/link'; import { useState, useEffect } from 'react'; import PartnersFilter from './PartnersFilter'; import PartnersGroup from './PartnersGroup'; +import PartnersTags from './PartnersTags'; const Partners = (props) => { - const { data } = props; - const initialGold = getGold(data); - const initialSilver = getSilver(data); - const [partnersGold, setPartnersGold] = useState(); - const [partners, setPartners] = useState(); - const [categories, setCategories] = useState(); - const [checked, setChecked] = useState([]); + const { data, filter } = props; + const partnersGold = filterData(getGold(data), filter); + const partnersSilver = filterData(getSilver(data), filter); + const tags = props.categories.map((item) => item[1]); - const handleFilter = () => { - if (checked.length) { - setPartnersGold(filterData(initialGold, checked)); - setPartners(filterData(initialSilver, checked)); - } else { - setPartnersGold(initialGold); - setPartners(initialSilver); - } - }; - - useEffect(() => { - setPartnersGold(initialGold); - setPartners(initialSilver); - setCategories(props.categories); - }, []); - - useEffect(() => { - handleFilter(); - }, [checked, setChecked]); - - if (!partners) return
loading...
; - - const filtersProps = { - checked, - setChecked, - categories, - setCategories, - }; + const hasPartners = partnersGold && partnersSilver; + if (!hasPartners) return
loading...
; return (
-
-

Parceiros

-
- + {!filter && ( +
+

Parceiros

+

+ Aqui você encontra produtos e serviços de brasileiros para + brasileiros +

+

+ Quer ver sua empresa aqui também?{' '} + Clique aqui para preencher + o formulário ou envie um e-mail para{' '} + business@brinca.ca com + logotipo, nome da empresa, endereço, telefone, e-mail, site e + descrição de sua empresa e/ou serviço em uma frase, além do e-mail + cadastrado como membro da BRINCA. +

+

+ + Atenção: A BRINCA não se responsabiliza por produtos ou serviços + anunciados nesta página. + +

+
+ )} +
- +
); diff --git a/components/Blocks/Partners/PartnersTags.js b/components/Blocks/Partners/PartnersTags.js index aec11cc..4188895 100644 --- a/components/Blocks/Partners/PartnersTags.js +++ b/components/Blocks/Partners/PartnersTags.js @@ -1,22 +1,28 @@ -const PartnersTags = ({ tags, setTags }) => { - const hasTags = tags?.length > 0; - const removeTag = (id) => { - return setTags(tags.filter((tag) => tag !== id)); - }; +// @see https://gist.github.com/codeguy/6684588 +// @TODO https://github.com/lovell/limax + +import slugify from 'functions/slugfy'; +import Link from 'next/link'; +const PartnersTags = ({ tags, filter }) => { + const hasTags = tags?.length > 0; if (!hasTags) return false; return ( -
- {tags.map((item, index) => ( - - ))} +
+
+

Categorias

+
+
+ + Todas + + {tags.map((item, index) => ( + + {item} + + ))} +
); }; diff --git a/functions/filterData.js b/functions/filterData.js index 5c5c014..ed865e3 100644 --- a/functions/filterData.js +++ b/functions/filterData.js @@ -1,4 +1,7 @@ +import slugify from './slugfy'; + const filterData = (tableData, filters) => { - return tableData.filter((item) => [...filters].includes(item.category)); + if (!filters) return tableData; + return tableData.filter((item) => filters.includes(slugify(item.category))); }; export default filterData; diff --git a/functions/getPhoneNumber.js b/functions/getPhoneNumber.js index 2de3a96..83c2b16 100644 --- a/functions/getPhoneNumber.js +++ b/functions/getPhoneNumber.js @@ -1,2 +1,2 @@ -const getPhoneNumer = (phone) => phone.replace(/[^\d.]/g, ''); -export default getPhoneNumer; +const getPhoneNumber = (phone) => phone.replace(/[^\d.]/g, ''); +export default getPhoneNumber; diff --git a/functions/slugfy.js b/functions/slugfy.js new file mode 100644 index 0000000..1961898 --- /dev/null +++ b/functions/slugfy.js @@ -0,0 +1,12 @@ +const slugify = (text) => { + return text + .toString() // Cast to string (optional) + .normalize('NFKD') // The normalize() using NFKD method returns the Unicode Normalization Form of a given string. + .toLowerCase() // Convert the string to lowercase letters + .trim() // Remove whitespace from both sides of a string (optional) + .replace(/\s+/g, '-') // Replace spaces with - + .replace(/[^\w\-]+/g, '') // Remove all non-word chars + .replace(/\-\-+/g, '-') // Replace multiple - with single - + .replace(/\-$/g, ''); // Remove trailing - +}; +export default slugify; diff --git a/pages/parceiros/[slug].js b/pages/parceiros/[slug].js new file mode 100644 index 0000000..d0a8b87 --- /dev/null +++ b/pages/parceiros/[slug].js @@ -0,0 +1,62 @@ +import Layout from 'components/Layout/Layout'; +import { getData } from 'functions/getData'; +import getRecords from 'functions/getRecords'; +import Partners from 'components/Blocks/Partners/Partners'; +import slugify from 'functions/slugfy'; + +const ParceirosTag = (props) => { + const { partners, categories, params } = props; + + return ( + + + + ); +}; + +export async function getStaticPaths() { + const categories = + (await getRecords({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Categories!A1:AB', + })) || []; + + const paths = categories.map((item) => ({ + params: { slug: slugify(item[1]) }, + })); + return { paths, fallback: 'blocking' }; +} + +export async function getStaticProps({ params }) { + const partners = + (await getRecords({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Companies!A1:AB', + })) || []; + const categories = + (await getRecords({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Categories!A1:AB', + })) || []; + const allData = (await getData()) || {}; + const { + headerMenu = [], + footerMenu = [], + subscribeMenu = [], + socialMenu = [], + } = allData; + return { + props: { + headerMenu, + footerMenu, + subscribeMenu, + socialMenu, + partners, + categories, + params, + }, + + revalidate: 30, + }; +} +export default ParceirosTag; diff --git a/pages/parceiros.js b/pages/parceiros/index.js similarity index 95% rename from pages/parceiros.js rename to pages/parceiros/index.js index 481fe7a..9f3f61a 100644 --- a/pages/parceiros.js +++ b/pages/parceiros/index.js @@ -1,5 +1,4 @@ import Layout from 'components/Layout/Layout'; -import Blocks from 'components/Blocks/Blocks'; import { getData } from 'functions/getData'; import getRecords from 'functions/getRecords'; import Partners from 'components/Blocks/Partners/Partners'; diff --git a/styles/_card.scss b/styles/_card.scss index 0d322bf..da74dc7 100644 --- a/styles/_card.scss +++ b/styles/_card.scss @@ -76,6 +76,10 @@ display: grid; gap: 1rem; padding: 1.5rem; + font-size: 0.9rem; + @media (min-width: 768px) { + font-size: 1rem; + } .card-body { padding: 0; diff --git a/styles/_partners.scss b/styles/_partners.scss index 5905a61..74ab247 100644 --- a/styles/_partners.scss +++ b/styles/_partners.scss @@ -1,12 +1,9 @@ .partners { - font-size: 0.9rem; - @media (min-width: 768px) { - font-size: 1rem; - } - &__filter { padding-bottom: 1rem; + font-size: 1rem; } + &__filter-header { position: relative; border: solid 2px var(--grey-light); diff --git a/styles/_utils.scss b/styles/_utils.scss index 5bbf948..5826cbb 100644 --- a/styles/_utils.scss +++ b/styles/_utils.scss @@ -41,3 +41,15 @@ grid-template-columns: 1fr 1fr 1fr; } } + +.gap { + gap: 1rem; + + &--1 { + gap: 1rem; + } + + &--2 { + gap: 2rem; + } +} From 9960f100c6dffcb2b0ca7981db256a0a2a9084b8 Mon Sep 17 00:00:00 2001 From: dutraneto Date: Mon, 6 Jun 2022 15:13:35 -0400 Subject: [PATCH 28/45] Separate Padrinho form from apadrinhamento page --- components/Padrinho/PadrinhoContent.js | 2 +- pages/apadrinhamento.js | 17 +++++++++++++++ pages/apadrinhar.js | 30 -------------------------- 3 files changed, 18 insertions(+), 31 deletions(-) create mode 100644 pages/apadrinhamento.js delete mode 100644 pages/apadrinhar.js diff --git a/components/Padrinho/PadrinhoContent.js b/components/Padrinho/PadrinhoContent.js index 4066a0b..83ea0dc 100644 --- a/components/Padrinho/PadrinhoContent.js +++ b/components/Padrinho/PadrinhoContent.js @@ -18,7 +18,7 @@ const PadrinhosContent = (props) => {

Queremos criar uma comunidade cada vez mais forte e unida, e acreditamos que esse link possa criar laços fortes entre as pessoas. Aquele que foi ajudado pode ser o que ajuda no futuro, e assim todos ganham.

-

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

+

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

diff --git a/pages/apadrinhamento.js b/pages/apadrinhamento.js new file mode 100644 index 0000000..a427143 --- /dev/null +++ b/pages/apadrinhamento.js @@ -0,0 +1,17 @@ +import Layout from 'components/Layout/Layout' +import PadrinhoContent from 'components/Padrinho/PadrinhoContent' +import Button from 'components/Button/Button' + +const Apadrinhamento = (props) => { + return ( + + +
+
+
+ ) +} + +export default Apadrinhamento diff --git a/pages/apadrinhar.js b/pages/apadrinhar.js deleted file mode 100644 index 1f2aec9..0000000 --- a/pages/apadrinhar.js +++ /dev/null @@ -1,30 +0,0 @@ -import Layout from 'components/Layout/Layout' -import Main from 'components/Main/Main' -import PadrinhoContent from 'components/Padrinho/PadrinhoContent' -import Alert from 'components/Alert/Alert' -import HubSpotForms from 'components/Blocks/Hubspot/Forms' - -const Apadrinhar = () => { - const attrs = { - formID: process.env.NEXT_PUBLIC_HUBSPOT_PADRINHO || '' - } - - return ( - - -
-

Quero apadrinhar:

-
-

Para ser um padrinho ou madrinha, você precisa estar morando há pelo menos 3 anos no Canadá e ter disponibilidade e boa vontade para responder às mais diversas questões de famílias que estão chegando ou que chegaram recentemente em Ottawa e região.

-

Você estará lidando com sonhos e ansiedades, então se você é do tipo que vê o WhatsApp a cada três dias, talvez essa não seja a melhor opção de voluntariado pra você.

-

Preencha os dados abaixo e aguarde o nosso contato em breve!

-
-
- { - attrs.formID ? : - } -
- ) -} - -export default Apadrinhar From f4d6f7d2a31f5ae061672de1c61ef9fc962e4c57 Mon Sep 17 00:00:00 2001 From: dutraneto Date: Mon, 6 Jun 2022 16:33:50 -0400 Subject: [PATCH 29/45] Add getStaticProps to pull up nav and footer --- pages/apadrinhamento.js | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) diff --git a/pages/apadrinhamento.js b/pages/apadrinhamento.js index a427143..cbc6dab 100644 --- a/pages/apadrinhamento.js +++ b/pages/apadrinhamento.js @@ -1,17 +1,41 @@ import Layout from 'components/Layout/Layout' import PadrinhoContent from 'components/Padrinho/PadrinhoContent' import Button from 'components/Button/Button' +import { getData } from 'functions/getData'; const Apadrinhamento = (props) => { + const { headerMenu } = props + return ( - + -
+
+
) } +export async function getStaticProps() { + const allData = (await getData()) || {}; + const { + frontPage = [], + headerMenu = [], + footerMenu = [], + subscribeMenu = [], + socialMenu = [], + } = allData; + return { + props: { + frontPage, + headerMenu, + footerMenu, + subscribeMenu, + socialMenu, + }, + revalidate: 30, + }; +} + export default Apadrinhamento From 2da0e8a4358bb571404b732f7ddb1d19807ef450 Mon Sep 17 00:00:00 2001 From: dutraneto Date: Mon, 6 Jun 2022 17:14:08 -0400 Subject: [PATCH 30/45] Rename Padrinho file. Move buttons out to Padrinho file --- components/Padrinho/Padrinho.js | 24 ++++++++++++++++++++++ components/Padrinho/PadrinhoContent.js | 28 -------------------------- pages/apadrinhamento.js | 9 ++------- 3 files changed, 26 insertions(+), 35 deletions(-) create mode 100644 components/Padrinho/Padrinho.js delete mode 100644 components/Padrinho/PadrinhoContent.js diff --git a/components/Padrinho/Padrinho.js b/components/Padrinho/Padrinho.js new file mode 100644 index 0000000..fd1e8d6 --- /dev/null +++ b/components/Padrinho/Padrinho.js @@ -0,0 +1,24 @@ +import Link from 'next/link' +import Button from 'components/Button/Button' + +const Padrinho = (props) => { + const { title } = props + + return ( +
+
+

{title}

+

Todos nós, que vivemos em um novo país, certamente fomos ajudados por alguém em algum momento da nossa chegada. São muitos os desafios, desde burocracias como carteira de habilitação, cartão de saúde até coisas mais simples, como escolher marca de sabão no supermercado. Temos que aprender tudo novamente e o choque cultural pode ser amenizado quando encontramos compatriotas dispostos a nos ajudar nesse processo.

+

Pensando em facilitar o encontro entre essas pessoas na comunidade, a BRINCA criou o projeto de apadrinhamento. Através de um cadastro simples, selecionamos os perfis que mais se adequam e o contato entre padrinho e apadrinhado é feito. A partir daí os dois lados poderão combinar a melhor forma de comunicação e periodicidade dos encontros. Não há limites!

+

Queremos criar uma comunidade cada vez mais forte e unida, e acreditamos que esse link possa criar laços fortes entre as pessoas. Aquele que foi ajudado pode ser o que ajuda no futuro, e assim todos ganham.

+

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

+
+
+
+
+ ) +} + +export default Padrinho diff --git a/components/Padrinho/PadrinhoContent.js b/components/Padrinho/PadrinhoContent.js deleted file mode 100644 index 83ea0dc..0000000 --- a/components/Padrinho/PadrinhoContent.js +++ /dev/null @@ -1,28 +0,0 @@ -import Link from 'next/link' - -const PadrinhosContent = (props) => { - - const { title } = props - - return ( -
-

{title}

-
-
-

Todos nós, que vivemos em um novo país, certamente fomos ajudados por alguém em algum momento da nossa chegada. São muitos os desafios, desde burocracias como carteira de habilitação, cartão de saúde até coisas mais simples, como escolher marca de sabão no supermercado. Temos que aprender tudo novamente e o choque cultural pode ser amenizado quando encontramos compatriotas dispostos a nos ajudar nesse processo.

-
-
-

Pensando em facilitar o encontro entre essas pessoas na comunidade, a BRINCA criou o projeto de apadrinhamento. Através de um cadastro simples, selecionamos os perfis que mais se adequam e o contato entre padrinho e apadrinhado é feito. A partir daí os dois lados poderão combinar a melhor forma de comunicação e periodicidade dos encontros. Não há limites!

-
-
-

Queremos criar uma comunidade cada vez mais forte e unida, e acreditamos que esse link possa criar laços fortes entre as pessoas. Aquele que foi ajudado pode ser o que ajuda no futuro, e assim todos ganham.

-
-
-

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

-
-
-
- ) -} - -export default PadrinhosContent diff --git a/pages/apadrinhamento.js b/pages/apadrinhamento.js index cbc6dab..387701f 100644 --- a/pages/apadrinhamento.js +++ b/pages/apadrinhamento.js @@ -1,6 +1,5 @@ import Layout from 'components/Layout/Layout' -import PadrinhoContent from 'components/Padrinho/PadrinhoContent' -import Button from 'components/Button/Button' +import Padrinho from 'components/Padrinho/Padrinho' import { getData } from 'functions/getData'; const Apadrinhamento = (props) => { @@ -8,11 +7,7 @@ const Apadrinhamento = (props) => { return ( - -
-
+
) } From fef0c1cfe3bdb805e5599c4e2b7e9469d2e67d3a Mon Sep 17 00:00:00 2001 From: dutraneto Date: Mon, 6 Jun 2022 17:23:27 -0400 Subject: [PATCH 31/45] Replace Link to anchor tag --- components/Padrinho/Padrinho.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/components/Padrinho/Padrinho.js b/components/Padrinho/Padrinho.js index fd1e8d6..b27e8f4 100644 --- a/components/Padrinho/Padrinho.js +++ b/components/Padrinho/Padrinho.js @@ -1,4 +1,3 @@ -import Link from 'next/link' import Button from 'components/Button/Button' const Padrinho = (props) => { @@ -11,7 +10,7 @@ const Padrinho = (props) => {

Todos nós, que vivemos em um novo país, certamente fomos ajudados por alguém em algum momento da nossa chegada. São muitos os desafios, desde burocracias como carteira de habilitação, cartão de saúde até coisas mais simples, como escolher marca de sabão no supermercado. Temos que aprender tudo novamente e o choque cultural pode ser amenizado quando encontramos compatriotas dispostos a nos ajudar nesse processo.

Pensando em facilitar o encontro entre essas pessoas na comunidade, a BRINCA criou o projeto de apadrinhamento. Através de um cadastro simples, selecionamos os perfis que mais se adequam e o contato entre padrinho e apadrinhado é feito. A partir daí os dois lados poderão combinar a melhor forma de comunicação e periodicidade dos encontros. Não há limites!

Queremos criar uma comunidade cada vez mais forte e unida, e acreditamos que esse link possa criar laços fortes entre as pessoas. Aquele que foi ajudado pode ser o que ajuda no futuro, e assim todos ganham.

-

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

+

Para participar do nosso projeto é só clicar no link abaixo e fazer o seu cadastro, ou envie um e-mail para padrinho@brinca.ca. Este é um trabalho 100% voluntário e coordenado também por voluntários, portanto, você não precisa pagar nada.

-
+ handleSubmit(e, formData)}> {fields.map((item, index) => ( { type='submit' value={isLoading ? 'Enviando ...' : 'Enviar'} className={`btn btn-primary`} - onClick={(e) => handleSubmit(e, formData)} disabled={isLoading} />
@@ -84,25 +83,28 @@ const fields = [ id: 'id', label: 'Nome da Empresa', type: 'textfield', - validate: false, + validate: { required: true }, }, { id: 'category', label: 'Categoria', type: 'textfield', validate: false, + validate: { required: true }, }, { id: 'description', label: 'Descrição', type: 'textarea', validate: false, + validate: { required: true }, }, { id: 'description', label: 'Endereço', type: 'textfield', validate: false, + validate: { required: true }, }, { id: 'membership', @@ -126,6 +128,7 @@ const fields = [ id: 'website', label: 'Website', type: 'url', + placeholder: 'http://', validate: false, }, { @@ -147,6 +150,7 @@ const fields = [ label: 'E-mail de contato', type: 'email', validate: false, + validate: { required: true }, }, { id: 'image', From 6d7faa109b081382506a1ef54d22d23ce15bc99d Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 01:48:12 -0400 Subject: [PATCH 35/45] forms: initial google append --- functions/postRecord.js | 31 ---- pages/api/submit.js | 42 ++++++ pages/parceiros/[slug].js | 4 +- pages/parceiros/cadastro.js | 287 +++++++++++++++++++++--------------- pages/parceiros/index.js | 2 +- 5 files changed, 215 insertions(+), 151 deletions(-) delete mode 100644 functions/postRecord.js create mode 100644 pages/api/submit.js diff --git a/functions/postRecord.js b/functions/postRecord.js deleted file mode 100644 index 7aa82de..0000000 --- a/functions/postRecord.js +++ /dev/null @@ -1,31 +0,0 @@ -// const { google } = require('googleapis'); -const keys = require('../secrets.json'); - -export default async function postRecord(options) { - const scopes = ['https://www.googleapis.com/auth/spreadsheets']; - - const client = new google.auth.JWT( - keys.client_email, - null, - keys.private_key, - scopes - ); - - client.authorize((error) => { - if (error) { - console.log(error); - return; - } else { - console.log('Connected!'); - } - }); - - return await updateData(client, options); -} - -async function updateData(client, options) { - const googleSheetApi = google.sheets({ version: 'v4', auth: client }); - const res = await googleSheetApi.spreadsheets.values.append(options); - console.log(res.data); - return res.data; -} diff --git a/pages/api/submit.js b/pages/api/submit.js new file mode 100644 index 0000000..500fa6b --- /dev/null +++ b/pages/api/submit.js @@ -0,0 +1,42 @@ +// @see https://dev.to/solomon04/collect-form-submissions-with-nextjs-google-sheets-264j + +import { google } from 'googleapis'; +const keys = require('../../secrets.json'); + +export default async function handler(req, res) { + const scopes = ['https://www.googleapis.com/auth/spreadsheets']; + + const client = new google.auth.JWT( + keys.client_email, + null, + keys.private_key, + scopes + ); + + client.authorize((error) => { + if (error) { + console.log(error); + return; + } else { + console.log('Connected!'); + } + }); + + const options = [[...Object.values(req.body)]]; + return await getData(client, options, res); +} + +async function getData(client, options, res) { + const googleSheetApi = google.sheets({ version: 'v4', auth: client }); + const response = await googleSheetApi.spreadsheets.values.append({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Test', + valueInputOption: 'USER_ENTERED', + requestBody: { + values: options, + }, + }); + return res.status(201).json({ + data: response.data, + }); +} diff --git a/pages/parceiros/[slug].js b/pages/parceiros/[slug].js index e5bdad5..2119bcc 100644 --- a/pages/parceiros/[slug].js +++ b/pages/parceiros/[slug].js @@ -30,7 +30,7 @@ export async function getStaticPaths() { const categories = (await getRecords({ spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', - range: 'Categories!A1:AB', + range: 'Categories', })) || []; const paths = categories.map((item) => ({ @@ -48,7 +48,7 @@ export async function getStaticProps({ params }) { const categories = (await getRecords({ spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', - range: 'Categories!A1:AB', + range: 'Categories', })) || []; const allData = (await getData()) || {}; const { diff --git a/pages/parceiros/cadastro.js b/pages/parceiros/cadastro.js index 262f569..adb7eaf 100644 --- a/pages/parceiros/cadastro.js +++ b/pages/parceiros/cadastro.js @@ -2,54 +2,165 @@ import { useState, useEffect } from 'react'; import Layout from 'components/Layout/Layout'; import { getData } from 'functions/getData'; import FormField from 'components/Blocks/Form/components/FormField'; -import postRecord from 'functions/postRecord'; +import getRecords from 'functions/getRecords'; const Parceiros = (props) => { - const [formData, setFormData] = useState({}); + const [formData, setFormData] = useState({ ...headers }); + const [status, setStatus] = useState(); const [isLoading, setIsLoading] = useState(false); + + const fields = [ + { + id: 'title', + label: 'Nome da Empresa', + type: 'textfield', + validate: { required: true }, + }, + { + id: 'category', + label: 'Categoria', + type: 'textfield', + answers: {}, + validate: { required: false }, + }, + { + id: 'description', + label: 'Descrição', + type: 'textarea', + validate: false, + validate: { required: false }, + }, + { + id: 'description', + label: 'Endereço', + type: 'textfield', + validate: false, + validate: { required: false }, + }, + { + id: 'membership', + label: 'E-mail de membro', + type: 'email', + validate: false, + }, + { + id: 'phone', + label: 'Telefone', + type: 'phoneNumber', + validate: false, + }, + { + id: 'whatsapp', + label: 'Whatsapp', + type: 'phoneNumber', + validate: false, + }, + { + id: 'website', + label: 'Website', + type: 'url', + placeholder: 'http://', + validate: false, + }, + { + id: 'instagram', + label: 'Instagram', + type: 'textfield', + placeholder: '@', + validate: false, + }, + { + id: 'facebook', + label: 'Facebook', + type: 'textfield', + placeholder: '@', + validate: false, + }, + { + id: 'email', + label: 'E-mail de contato', + type: 'email', + validate: false, + validate: { required: false }, + }, + { + id: 'image', + label: 'Logo da empresa', + type: 'file', + validate: false, + }, + ]; + const handleOnChange = (e) => setFormData({ ...formData, [e.target.id]: e.target.value }); - const handleSubmit = (e, data) => { + const handleSubmit = async (e) => { e.preventDefault(); setIsLoading(true); - return postRecord(data); + const rawResponse = await fetch('/api/submit', { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify(formData), + }); + const content = await rawResponse.json(); + if (content?.data?.updates?.updatedRows) { + setStatus(true); + setFormData({ ...headers }); + } else { + setStatus(false); + } }; + const content = status ? ( +
+

Seu cadastro foi efetuado com sucesso!

+

+ A diretoria do Brinca entrará em contato para finalizar a aprovação + final e exibição na lista de parceiros. +

+

Obrigado!

+
+ ) : ( + <> +

Quer ver sua empresa aqui também?

+

+ Preencha o formulário abaixo ou envie um e-mail para{' '} + business@brinca.ca com logotipo, + nome da empresa, endereço, telefone, e-mail, site e descrição de sua + empresa e/ou serviço em uma frase, além do e-mail cadastrado como membro + da BRINCA. +

+
+ Atenção: A BRINCA não se responsabiliza por produtos ou serviços + anunciados nesta página. +
+ handleSubmit(e, formData)}> + {fields.map((item, index) => ( + handleOnChange(e)} + /> + ))} +
+ +
+ + + ); + return (
-

Cadastro

-
-

Quer ver sua empresa aqui também?

-

- Preencha o formulário abaixo ou envie um e-mail para{' '} - business@brinca.ca com - logotipo, nome da empresa, endereço, telefone, e-mail, site e - descrição de sua empresa e/ou serviço em uma frase, além do e-mail - cadastrado como membro da BRINCA. -

-
- Atenção: A BRINCA não se responsabiliza por produtos ou serviços - anunciados nesta página. -
-
-
handleSubmit(e, formData)}> - {fields.map((item, index) => ( - handleOnChange(e)} - /> - ))} -
- -
- +

Parceiros - Cadastro

+
{content}
); @@ -57,6 +168,11 @@ const Parceiros = (props) => { export async function getStaticProps() { const allData = (await getData()) || {}; + const categories = + (await getRecords({ + spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + range: 'Categories', + })) || []; const { headerMenu = [], @@ -70,6 +186,7 @@ export async function getStaticProps() { footerMenu, subscribeMenu, socialMenu, + categories, }, revalidate: 30, @@ -78,84 +195,20 @@ export async function getStaticProps() { export default Parceiros; -const fields = [ - { - id: 'id', - label: 'Nome da Empresa', - type: 'textfield', - validate: { required: true }, - }, - { - id: 'category', - label: 'Categoria', - type: 'textfield', - validate: false, - validate: { required: true }, - }, - { - id: 'description', - label: 'Descrição', - type: 'textarea', - validate: false, - validate: { required: true }, - }, - { - id: 'description', - label: 'Endereço', - type: 'textfield', - validate: false, - validate: { required: true }, - }, - { - id: 'membership', - label: 'E-mail de membro', - type: 'email', - validate: false, - }, - { - id: 'phone', - label: 'Telefone', - type: 'phoneNumber', - validate: false, - }, - { - id: 'whatsapp', - label: 'Whatsapp', - type: 'phoneNumber', - validate: false, - }, - { - id: 'website', - label: 'Website', - type: 'url', - placeholder: 'http://', - validate: false, - }, - { - id: 'instagram', - label: 'Instagram', - type: 'textfield', - placeholder: '@', - validate: false, - }, - { - id: 'facebook', - label: 'Facebook', - type: 'textfield', - placeholder: '@', - validate: false, - }, - { - id: 'email', - label: 'E-mail de contato', - type: 'email', - validate: false, - validate: { required: true }, - }, - { - id: 'image', - label: 'Logo da empresa', - type: 'file', - validate: false, - }, -]; +// TODO: Make dynamic +const headers = { + id: '', + title: '', + active: '', + category: '', + description: '', + membership: '', + address: '', + phone: '', + whatsapp: '', + website: '', + instagram: '', + facebook: '', + email: '', + image: '', +}; diff --git a/pages/parceiros/index.js b/pages/parceiros/index.js index c68d3ae..cbdcd4d 100644 --- a/pages/parceiros/index.js +++ b/pages/parceiros/index.js @@ -37,7 +37,7 @@ export async function getStaticProps() { const categories = (await getRecords({ spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', - range: 'Categories!A1:AB', + range: 'Categories', })) || []; const allData = (await getData()) || {}; const { From 4b533eebbf435356f82ba0721684cdc9dd33da71 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 08:52:42 -0400 Subject: [PATCH 36/45] forms: add dropdown --- .../Blocks/Form/components/FormDropdown.js | 31 +++++++++++++++++++ .../Blocks/Form/components/FormField.js | 4 ++- .../Blocks/Form/components/FormSelect.js | 7 +++-- pages/parceiros/cadastro.js | 14 +++++++-- 4 files changed, 50 insertions(+), 6 deletions(-) create mode 100644 components/Blocks/Form/components/FormDropdown.js diff --git a/components/Blocks/Form/components/FormDropdown.js b/components/Blocks/Form/components/FormDropdown.js new file mode 100644 index 0000000..2774838 --- /dev/null +++ b/components/Blocks/Form/components/FormDropdown.js @@ -0,0 +1,31 @@ +const FormDropDown = (props) => { + const { id, name, label, value, required, options } = + props.attributes || props; + const { handleOnChange } = props; + return ( +
+ + +
+ ); +}; +export default FormDropDown; diff --git a/components/Blocks/Form/components/FormField.js b/components/Blocks/Form/components/FormField.js index 3ecca02..280f01f 100644 --- a/components/Blocks/Form/components/FormField.js +++ b/components/Blocks/Form/components/FormField.js @@ -4,9 +4,10 @@ import FormTextArea from './FormTextArea'; import FormSelect from './FormSelect'; import FormMultiple from './FormMultiple'; import FormCheckbox from './FormCheckbox'; +import FormDropDown from './FormDropdown'; const FormField = (props) => { - const { type } = props.attributes; + const { type } = props.attributes || props; const fieldTypes = { textfield: , file: , @@ -18,6 +19,7 @@ const FormField = (props) => { selectboxes: , checkbox: , menu: , + dropdown: , }; return (
diff --git a/components/Blocks/Form/components/FormSelect.js b/components/Blocks/Form/components/FormSelect.js index 06035ed..fca05f9 100644 --- a/components/Blocks/Form/components/FormSelect.js +++ b/components/Blocks/Form/components/FormSelect.js @@ -4,11 +4,12 @@ const FormSelect = (props) => { const { id, key, - headings, + headings = {}, validate: { required }, answers: { choices }, + label, } = attributes; - const title = headings[0].heading; + const title = headings[0]?.heading || label; return ( <> @@ -22,7 +23,7 @@ const FormSelect = (props) => { onChange={(e) => handleOnChange(e, key)} > - {choices.map((item) => ( + {choices?.map((item) => ( diff --git a/pages/parceiros/cadastro.js b/pages/parceiros/cadastro.js index adb7eaf..e53dc8e 100644 --- a/pages/parceiros/cadastro.js +++ b/pages/parceiros/cadastro.js @@ -3,11 +3,21 @@ import Layout from 'components/Layout/Layout'; import { getData } from 'functions/getData'; import FormField from 'components/Blocks/Form/components/FormField'; import getRecords from 'functions/getRecords'; + +// TODO: CLEAN CODE!!! + const Parceiros = (props) => { const [formData, setFormData] = useState({ ...headers }); const [status, setStatus] = useState(); const [isLoading, setIsLoading] = useState(false); + const options = props.categories.map((item) => { + return { + value: item[1], + label: item[1], + }; + }); + const fields = [ { id: 'title', @@ -18,8 +28,8 @@ const Parceiros = (props) => { { id: 'category', label: 'Categoria', - type: 'textfield', - answers: {}, + type: 'dropdown', + options, validate: { required: false }, }, { From 3175395b6525a9d27f671f0383b22b07df8d2c16 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 22:30:19 -0400 Subject: [PATCH 37/45] add cloudinary upload --- .env.example | 4 + .../Blocks/Form/components/FormInput.js | 3 +- package.json | 1 + pages/api/cloudinary/upload.js | 37 ++ pages/parceiros/cadastro.js | 91 +++-- yarn.lock | 377 +++++++++++++++++- 6 files changed, 485 insertions(+), 28 deletions(-) create mode 100644 pages/api/cloudinary/upload.js diff --git a/.env.example b/.env.example index c48b7de..7a6a333 100644 --- a/.env.example +++ b/.env.example @@ -2,3 +2,7 @@ NEXT_PUBLIC_FORM_KEY= NEXT_PUBLIC_HUBSPOT= NEXT_PUBLIC_HUBSPOT_SITE= NEXT_PUBLIC_WORDPRESS_URL=https://brinca-2021.herokuapp.com +NEXT_COUDINARY_API_URL= +NEXT_CLOUDINARY_API_KEY= +NEXT_CLOUDINARY_API_SECRET= +NEXT_COUDINARY_CLOUD_NAME= diff --git a/components/Blocks/Form/components/FormInput.js b/components/Blocks/Form/components/FormInput.js index 84c3320..52bc4fe 100644 --- a/components/Blocks/Form/components/FormInput.js +++ b/components/Blocks/Form/components/FormInput.js @@ -9,6 +9,7 @@ const FormInput = (props) => { validate: { required }, validation, placeholder, + name, } = attributes; const title = label; const validationType = validation && validation.type; @@ -26,7 +27,7 @@ const FormInput = (props) => { handleOnChange(e, key)} placeholder={placeholder} diff --git a/package.json b/package.json index df33d99..c37f2e9 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "start": "next start" }, "dependencies": { + "cloudinary": "^1.30.0", "googleapis": "^100.0.0", "next": "11.1.3", "react": "^17.0.2", diff --git a/pages/api/cloudinary/upload.js b/pages/api/cloudinary/upload.js new file mode 100644 index 0000000..a8477b5 --- /dev/null +++ b/pages/api/cloudinary/upload.js @@ -0,0 +1,37 @@ +import nc from 'next-connect'; +import cors from 'cors'; +const handler = nc() + .use(cors()) + .post(async (req, res) => { + const data = JSON.parse(req.body); + console.log(data); + + var myHeaders = new Headers(); + myHeaders.append( + 'Authorization', + 'Basic Nzk4NzkzNjMyMTMyNTM0OlItbTdmZ1J2WmVMX3EzcDVsQ1UzdFphRXkyZw==', + 'Accept: application/json', + 'Content-Type: application/json' + ); + + var formdata = new FormData(); + formdata.append('file', data.image, data.image.name); + formdata.append('upload_preset', 'brinca'); + formdata.append('api_key', '798793632132534'); + + var requestOptions = { + method: 'POST', + headers: myHeaders, + body: formdata, + redirect: 'follow', + }; + + fetch( + 'https://api.cloudinary.com/v1_1/dw2wjwhuv/image/upload', + requestOptions + ) + .then((response) => response.text()) + .then((result) => console.log(result)) + .catch((error) => console.log('error', error)); + }); +export default handler; diff --git a/pages/parceiros/cadastro.js b/pages/parceiros/cadastro.js index e53dc8e..bb3915f 100644 --- a/pages/parceiros/cadastro.js +++ b/pages/parceiros/cadastro.js @@ -10,7 +10,65 @@ const Parceiros = (props) => { const [formData, setFormData] = useState({ ...headers }); const [status, setStatus] = useState(); const [isLoading, setIsLoading] = useState(false); + const [imageSrc, setImageSrc] = useState(); + // CHANGE + // =================================== + const handleOnChange = (e) => { + if (e.target.files) { + const reader = new FileReader(); + reader.onload = function (onLoadEvent) { + setImageSrc(onLoadEvent.target.result); + }; + reader.readAsDataURL(e.target.files[0]); + } else { + setFormData({ ...formData, [e.target.id]: e.target.value }); + } + }; + + // SUBMIT + // =================================== + const handleSubmit = async (e) => { + e.preventDefault(); + setIsLoading(true); + + // File Upload + const form = e.currentTarget; + const fileInput = Array.from(form.elements).find( + ({ name }) => name === 'file' + ); + const formFieldsData = new FormData(); + for (const file of fileInput.files) { + formFieldsData.append('file', file); + } + formFieldsData.append('upload_preset', 'brinca'); + const data = await fetch( + 'https://api.cloudinary.com/v1_1/dw2wjwhuv/image/upload', + { + method: 'POST', + body: formFieldsData, + } + ).then((r) => r.json()); + + // Form Submit + const rawResponse = await fetch('/api/submit', { + method: 'POST', + headers: { + Accept: 'application/json', + 'Content-Type': 'application/json', + }, + body: JSON.stringify({ ...formData, image: data.secure_url }), + }); + const content = await rawResponse.json(); + if (content?.data?.updates?.updatedRows) { + setStatus(true); + } else { + setStatus(false); + } + }; + + // FIELDS + // =================================== const options = props.categories.map((item) => { return { value: item[1], @@ -94,35 +152,15 @@ const Parceiros = (props) => { }, { id: 'image', + name: 'file', label: 'Logo da empresa', type: 'file', validate: false, }, ]; - const handleOnChange = (e) => - setFormData({ ...formData, [e.target.id]: e.target.value }); - - const handleSubmit = async (e) => { - e.preventDefault(); - setIsLoading(true); - const rawResponse = await fetch('/api/submit', { - method: 'POST', - headers: { - Accept: 'application/json', - 'Content-Type': 'application/json', - }, - body: JSON.stringify(formData), - }); - const content = await rawResponse.json(); - if (content?.data?.updates?.updatedRows) { - setStatus(true); - setFormData({ ...headers }); - } else { - setStatus(false); - } - }; - + // CONTENT + // =================================== const content = status ? (

Seu cadastro foi efetuado com sucesso!

@@ -154,6 +192,11 @@ const Parceiros = (props) => { handleOnChange={(e) => handleOnChange(e)} /> ))} + {imageSrc && ( +
+ +
+ )}
{ ); + // RETURN + // =================================== return (
diff --git a/yarn.lock b/yarn.lock index 3334c01..7c7b84c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -139,6 +139,11 @@ dependencies: "@napi-rs/triples" "^1.0.3" +"@tootallnate/once@1": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-1.1.2.tgz#ccb91445360179a04e7fe6aff78c00ffc1eeaf82" + integrity sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw== + "@types/node@*": version "16.0.1" resolved "https://registry.yarnpkg.com/@types/node/-/node-16.0.1.tgz#70cedfda26af7a2ca073fdcc9beb2fff4aa693f8" @@ -156,7 +161,17 @@ abort-controller@^3.0.0: dependencies: event-target-shim "^5.0.0" -agent-base@6: +acorn-walk@^8.2.0: + version "8.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" + integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== + +acorn@^8.7.0: + version "8.7.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.7.1.tgz#0197122c843d1bf6d0a5e83220a788f278f63c30" + integrity sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A== + +agent-base@6, agent-base@^6.0.0, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== @@ -259,6 +274,13 @@ ast-types@0.13.2: resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.2.tgz#df39b677a911a83f3a049644fb74fdded23cea48" integrity sha512-uWMHxJxtfj/1oZClOxDEV1sQ1HCDkA4MG8Gr69KKeBjEVH0R84WlejZ0y2DcwyBlpAEMltmVYkVgqfLFb2oyiA== +ast-types@^0.13.2: + version "0.13.4" + resolved "https://registry.yarnpkg.com/ast-types/-/ast-types-0.13.4.tgz#ee0d77b343263965ecc3fb62da16e7222b2b6782" + integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w== + dependencies: + tslib "^2.0.1" + available-typed-arrays@^1.0.2: version "1.0.4" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.4.tgz#9e0ae84ecff20caae6a94a1c3bc39b955649b7a9" @@ -425,6 +447,11 @@ bytes@3.1.0: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + call-bind@^1.0.0, call-bind@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" @@ -488,6 +515,23 @@ classnames@2.2.6: resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" integrity sha512-JR/iSQOSt+LQIWwrwEzJ9uk0xfN3mTVYMwt1Ir5mUcSN6pU+V4zQFFaJsclJbPuAUQH+yfWef6tm7l1quW3C8Q== +cloudinary-core@^2.10.2: + version "2.12.3" + resolved "https://registry.yarnpkg.com/cloudinary-core/-/cloudinary-core-2.12.3.tgz#6482e472944214ff905c4852da0a4afce14dec2b" + integrity sha512-Ll4eDzcrIVn4zCttMh3Mdi+KNz07p5EEjBT2PQSRx8Eok1lKPt3uBBenOk/w88RKK3B8SFIWcEe/mN4BHQ0p8A== + +cloudinary@^1.30.0: + version "1.30.0" + resolved "https://registry.yarnpkg.com/cloudinary/-/cloudinary-1.30.0.tgz#7d0205a97b305ff2425c9e453ed5d698817542f5" + integrity sha512-4f1YmUS+QxhTdpPd+kYpjgTYDxJAxpyZ8TXOnCa2NE2Iew2JwKQwvo4o5YkCM9HbcH+NzymlMocxSDafhLaBmQ== + dependencies: + cloudinary-core "^2.10.2" + core-js "3.6.5" + lodash "^4.17.11" + q "^1.5.1" + optionalDependencies: + proxy-agent "^5.0.0" + color-convert@^1.9.0: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" @@ -539,6 +583,11 @@ convert-source-map@1.7.0: dependencies: safe-buffer "~5.1.1" +core-js@3.6.5: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== + core-js@^1.0.0: version "1.2.7" resolved "https://registry.yarnpkg.com/core-js/-/core-js-1.2.7.tgz#652294c14651db28fa93bd2d5ff2983a4f08c636" @@ -653,7 +702,7 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== -data-uri-to-buffer@3.0.1: +data-uri-to-buffer@3, data-uri-to-buffer@3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-3.0.1.tgz#594b8973938c5bc2c33046535785341abc4f3636" integrity sha512-WboRycPNsVw3B3TL559F7kuBUM4d8CgMEvk6xEJlOp7OBPjt6G7z8WMWlD2rOFZLk6OYfFIUGsCOWzcQH9K2og== @@ -672,6 +721,11 @@ debug@4: dependencies: ms "2.1.2" +deep-is@~0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + define-properties@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" @@ -679,6 +733,21 @@ define-properties@^1.1.3: dependencies: object-keys "^1.0.12" +degenerator@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/degenerator/-/degenerator-3.0.2.tgz#6a61fcc42a702d6e50ff6023fe17bff435f68235" + integrity sha512-c0mef3SNQo56t6urUU6tdQAs+ThoD0o9B9MJ8HEt7NQcGEILCRFqQb7ZbP9JAv+QF1Ky5plydhMR/IrqWDm+TQ== + dependencies: + ast-types "^0.13.2" + escodegen "^1.8.1" + esprima "^4.0.0" + vm2 "^3.9.8" + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -854,6 +923,33 @@ escape-string-regexp@^1.0.5: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= +escodegen@^1.8.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== + dependencies: + esprima "^4.0.1" + estraverse "^4.2.0" + esutils "^2.0.2" + optionator "^0.8.1" + optionalDependencies: + source-map "~0.6.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +estraverse@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + etag@1.8.1: version "1.8.1" resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" @@ -882,6 +978,11 @@ extend@^3.0.2: resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== +fast-levenshtein@~2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + fast-text-encoding@^1.0.0: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-text-encoding/-/fast-text-encoding-1.0.3.tgz#ec02ac8e01ab8a319af182dae2681213cfe9ce53" @@ -900,6 +1001,11 @@ fbjs@^0.8.16: setimmediate "^1.0.5" ua-parser-js "^0.7.18" +file-uri-to-path@2: + version "2.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-2.0.0.tgz#7b415aeba227d575851e0a5b0c640d7656403fba" + integrity sha512-hjPFI8oE/2iQPVe4gbrJ73Pp+Xfub2+WI2LlXDbsaJBwT5wuMh35WNWVYYTpnz895shtwfyutMFLFywpQAFdLg== + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -936,6 +1042,15 @@ foreach@^2.0.5: resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" integrity sha1-C+4AUBiusmDQo6865ljdATbsG5k= +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + fscreen@^1.0.2: version "1.2.0" resolved "https://registry.yarnpkg.com/fscreen/-/fscreen-1.2.0.tgz#1a8c88e06bc16a07b473ad96196fb06d6657f59e" @@ -946,6 +1061,14 @@ fsevents@~2.3.1: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +ftp@^0.3.10: + version "0.3.10" + resolved "https://registry.yarnpkg.com/ftp/-/ftp-0.3.10.tgz#9197d861ad8142f3e63d5a83bfe4c59f7330885d" + integrity sha512-faFVML1aBx2UoDStmLwv2Wptt4vw5x03xxX172nhA5Y5HBshW5JweqQ2W4xL4dezQTG8inJsuYcpPHHU3X5OTQ== + dependencies: + readable-stream "1.1.x" + xregexp "2.0.0" + function-bind@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" @@ -996,6 +1119,18 @@ get-prefix@^1.0.0: resolved "https://registry.yarnpkg.com/get-prefix/-/get-prefix-1.0.0.tgz#0d305448a4e3176f9c277175b14e16dbe6fba0b5" integrity sha1-DTBUSKTjF2+cJ3F1sU4W2+b7oLU= +get-uri@3: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-uri/-/get-uri-3.0.2.tgz#f0ef1356faabc70e1f9404fa3b66b2ba9bfc725c" + integrity sha512-+5s0SJbGoyiJTZZ2JTpFPLMPSch72KEqGOTvQsBqg0RBWvwhWUSYZFAtz3TPW0GXJuLBJPts1E241iHg+VRfhg== + dependencies: + "@tootallnate/once" "1" + data-uri-to-buffer "3" + debug "4" + file-uri-to-path "2" + fs-extra "^8.1.0" + ftp "^0.3.10" + glam@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/glam/-/glam-5.0.1.tgz#b965a46f1a7f9ba3a23d16430b2e706f63c80ee8" @@ -1063,6 +1198,11 @@ graceful-fs@^4.1.2: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== +graceful-fs@^4.1.6, graceful-fs@^4.2.0: + version "4.2.10" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" + integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== + gtoken@^5.0.4: version "5.3.2" resolved "https://registry.yarnpkg.com/gtoken/-/gtoken-5.3.2.tgz#deb7dc876abe002178e0515e383382ea9446d58f" @@ -1169,12 +1309,32 @@ http-errors@1.7.3: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-proxy-agent@^4.0.0, http-proxy-agent@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz#8a8c8ef7f5932ccf953c296ca8291b95aa74aa3a" + integrity sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + https-browserify@1.0.0, https-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/https-browserify/-/https-browserify-1.0.0.tgz#ec06c10e0a34c0f2faf199f7fd7fc78fffd03c73" integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= -https-proxy-agent@^5.0.0: +https-proxy-agent@5, https-proxy-agent@^5.0.0: version "5.0.1" resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== @@ -1248,6 +1408,11 @@ invariant@^2.2.4: dependencies: loose-envify "^1.0.0" +ip@^1.1.5: + version "1.1.8" + resolved "https://registry.yarnpkg.com/ip/-/ip-1.1.8.tgz#ae05948f6b075435ed3307acce04629da8cdbf48" + integrity sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg== + is-arguments@^1.0.4: version "1.1.0" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" @@ -1365,6 +1530,11 @@ is-typed-array@^1.1.3: foreach "^2.0.5" has-symbols "^1.0.1" +isarray@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf" + integrity sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ== + isarray@^1.0.0, isarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" @@ -1416,6 +1586,13 @@ json5@^1.0.1: dependencies: minimist "^1.2.0" +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + jwa@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/jwa/-/jwa-2.0.0.tgz#a7e9c3f29dae94027ebcaf49975c9345593410fc" @@ -1433,6 +1610,14 @@ jws@^4.0.0: jwa "^2.0.0" safe-buffer "^5.0.1" +levn@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA== + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + loader-utils@1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.2.3.tgz#1ff5dc6911c9f0a062531a4c04b609406108c2c7" @@ -1464,6 +1649,11 @@ lodash.throttle@^4.0.1: resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= +lodash@^4.17.11: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" @@ -1471,6 +1661,13 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0: dependencies: js-tokens "^3.0.0 || ^4.0.0" +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + lru-cache@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" @@ -1549,6 +1746,11 @@ native-url@0.3.4: dependencies: querystring "^0.2.0" +netmask@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/netmask/-/netmask-2.0.2.tgz#8b01a07644065d536383835823bc52004ebac5e7" + integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg== + next-connect@^0.10.1: version "0.10.1" resolved "https://registry.yarnpkg.com/next-connect/-/next-connect-0.10.1.tgz#59628f98a184694a9415bef48076ed0fe10902ce" @@ -1726,6 +1928,18 @@ object.assign@^4.1.2: has-symbols "^1.0.1" object-keys "^1.1.1" +optionator@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" + integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.6" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + word-wrap "~1.2.3" + os-browserify@0.3.0, os-browserify@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/os-browserify/-/os-browserify-0.3.0.tgz#854373c7f5c2315914fc9bfc6bd8238fdda1ec27" @@ -1757,6 +1971,30 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pac-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pac-proxy-agent/-/pac-proxy-agent-5.0.0.tgz#b718f76475a6a5415c2efbe256c1c971c84f635e" + integrity sha512-CcFG3ZtnxO8McDigozwE3AqAw15zDvGH+OjXO4kzf7IkEKkQ4gxQ+3sdF50WmhQ4P/bVusXcqNE2S3XrNURwzQ== + dependencies: + "@tootallnate/once" "1" + agent-base "6" + debug "4" + get-uri "3" + http-proxy-agent "^4.0.1" + https-proxy-agent "5" + pac-resolver "^5.0.0" + raw-body "^2.2.0" + socks-proxy-agent "5" + +pac-resolver@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/pac-resolver/-/pac-resolver-5.0.1.tgz#c91efa3a9af9f669104fa2f51102839d01cde8e7" + integrity sha512-cy7u00ko2KVgBAjuhevqpPeHIkCIqPe1v24cydhWjmeuzaBfmUWFCZJ1iAh5TuVzVZoUzXIW7K8sMYOZ84uZ9Q== + dependencies: + degenerator "^3.0.2" + ip "^1.1.5" + netmask "^2.0.2" + pako@~1.0.5: version "1.0.11" resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" @@ -1854,6 +2092,11 @@ postscribe@^2.0.8: dependencies: prescribe ">=1.1.2" +prelude-ls@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w== + prescribe@>=1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/prescribe/-/prescribe-1.1.3.tgz#8d3122445f3fbaf4c4c5817ea527a17fc8139ee6" @@ -1885,6 +2128,25 @@ prop-types@^15.5.8, prop-types@^15.6.2: object-assign "^4.1.1" react-is "^16.8.1" +proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/proxy-agent/-/proxy-agent-5.0.0.tgz#d31405c10d6e8431fde96cba7a0c027ce01d633b" + integrity sha512-gkH7BkvLVkSfX9Dk27W6TyNOWWZWRilRfk1XxGNWOYJ2TuedAv1yFpCaU9QSBmBe716XOTNpYNOzhysyw8xn7g== + dependencies: + agent-base "^6.0.0" + debug "4" + http-proxy-agent "^4.0.0" + https-proxy-agent "^5.0.0" + lru-cache "^5.1.1" + pac-proxy-agent "^5.0.0" + proxy-from-env "^1.0.0" + socks-proxy-agent "^5.0.0" + +proxy-from-env@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2" + integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg== + public-encrypt@^4.0.0: version "4.0.3" resolved "https://registry.yarnpkg.com/public-encrypt/-/public-encrypt-4.0.3.tgz#4fcc9d77a07e48ba7527e7cbe0de33d0701331e0" @@ -1912,6 +2174,11 @@ punycode@^2.1.0: resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== +q@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + qs@^6.7.0: version "6.10.3" resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e" @@ -1978,6 +2245,16 @@ raw-body@2.4.1: iconv-lite "0.4.24" unpipe "1.0.0" +raw-body@^2.2.0: + version "2.5.1" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857" + integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + react-clientside-effect@^1.2.2: version "1.2.5" resolved "https://registry.yarnpkg.com/react-clientside-effect/-/react-clientside-effect-1.2.5.tgz#e2c4dc3c9ee109f642fac4f5b6e9bf5bcd2219a3" @@ -2132,6 +2409,16 @@ react@^17.0.2: loose-envify "^1.1.0" object-assign "^4.1.1" +readable-stream@1.1.x: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + readable-stream@^2.0.2, readable-stream@^2.3.3, readable-stream@^2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" @@ -2229,6 +2516,11 @@ setprototypeof@1.1.1: resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + sha.js@^2.4.0, sha.js@^2.4.8: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" @@ -2263,6 +2555,28 @@ side-channel@^1.0.4: get-intrinsic "^1.0.2" object-inspect "^1.9.0" +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socks-proxy-agent@5, socks-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz#032fb583048a29ebffec2e6a73fca0761f48177e" + integrity sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ== + dependencies: + agent-base "^6.0.2" + debug "4" + socks "^2.3.3" + +socks@^2.3.3: + version "2.6.2" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.6.2.tgz#ec042d7960073d40d94268ff3bb727dc685f111a" + integrity sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA== + dependencies: + ip "^1.1.5" + smart-buffer "^4.2.0" + source-map@0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" @@ -2275,7 +2589,7 @@ source-map@0.8.0-beta.0: dependencies: whatwg-url "^7.0.0" -source-map@^0.6.1: +source-map@^0.6.1, source-map@~0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== @@ -2287,6 +2601,11 @@ stacktrace-parser@0.1.10: dependencies: type-fest "^0.7.1" +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + "statuses@>= 1.5.0 < 2": version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" @@ -2364,6 +2683,11 @@ string_decoder@1.3.0, string_decoder@^1.0.0, string_decoder@^1.1.1: dependencies: safe-buffer "~5.2.0" +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + string_decoder@~1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" @@ -2478,6 +2802,11 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + tr46@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" @@ -2507,6 +2836,11 @@ tslib@^1.0.0, tslib@^1.9.3: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== +tslib@^2.0.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + tslib@^2.0.3: version "2.2.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.2.0.tgz#fb2c475977e35e241311ede2693cee1ec6698f5c" @@ -2522,6 +2856,13 @@ tty-browserify@0.0.1: resolved "https://registry.yarnpkg.com/tty-browserify/-/tty-browserify-0.0.1.tgz#3f05251ee17904dfd0677546670db9651682b811" integrity sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw== +type-check@~0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + type-fest@^0.7.1: version "0.7.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.7.1.tgz#8dda65feaf03ed78f0a3f9678f1869147f7c5c48" @@ -2542,6 +2883,11 @@ unbox-primitive@^1.0.1: has-symbols "^1.0.2" which-boxed-primitive "^1.0.2" +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + unpipe@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -2626,6 +2972,14 @@ vm-browserify@1.1.2, vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vm2@^3.9.8: + version "3.9.9" + resolved "https://registry.yarnpkg.com/vm2/-/vm2-3.9.9.tgz#c0507bc5fbb99388fad837d228badaaeb499ddc5" + integrity sha512-xwTm7NLh/uOjARRBs8/95H0e8fT3Ukw5D/JJWhxMbhKzNh1Nu981jQKvkep9iKYNxzlVrdzD0mlBGkDKZWprlw== + dependencies: + acorn "^8.7.0" + acorn-walk "^8.2.0" + watchpack@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.1.1.tgz#e99630550fca07df9f90a06056987baa40a689c7" @@ -2697,11 +3051,26 @@ which@^2.0.1: dependencies: isexe "^2.0.0" +word-wrap@~1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +xregexp@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/xregexp/-/xregexp-2.0.0.tgz#52a63e56ca0b84a7f3a5f3d61872f126ad7a5943" + integrity sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM= + xtend@^4.0.0, xtend@^4.0.2: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" From c1dc07b318a6fea59d31c7d120dfac1b62594c59 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 22:42:04 -0400 Subject: [PATCH 38/45] move things --- pages/api/cloudinary/upload.js | 37 -------------------------------- pages/api/{ => google}/submit.js | 4 ++-- pages/parceiros/cadastro.js | 25 +++++++++++---------- 3 files changed, 14 insertions(+), 52 deletions(-) delete mode 100644 pages/api/cloudinary/upload.js rename pages/api/{ => google}/submit.js (93%) diff --git a/pages/api/cloudinary/upload.js b/pages/api/cloudinary/upload.js deleted file mode 100644 index a8477b5..0000000 --- a/pages/api/cloudinary/upload.js +++ /dev/null @@ -1,37 +0,0 @@ -import nc from 'next-connect'; -import cors from 'cors'; -const handler = nc() - .use(cors()) - .post(async (req, res) => { - const data = JSON.parse(req.body); - console.log(data); - - var myHeaders = new Headers(); - myHeaders.append( - 'Authorization', - 'Basic Nzk4NzkzNjMyMTMyNTM0OlItbTdmZ1J2WmVMX3EzcDVsQ1UzdFphRXkyZw==', - 'Accept: application/json', - 'Content-Type: application/json' - ); - - var formdata = new FormData(); - formdata.append('file', data.image, data.image.name); - formdata.append('upload_preset', 'brinca'); - formdata.append('api_key', '798793632132534'); - - var requestOptions = { - method: 'POST', - headers: myHeaders, - body: formdata, - redirect: 'follow', - }; - - fetch( - 'https://api.cloudinary.com/v1_1/dw2wjwhuv/image/upload', - requestOptions - ) - .then((response) => response.text()) - .then((result) => console.log(result)) - .catch((error) => console.log('error', error)); - }); -export default handler; diff --git a/pages/api/submit.js b/pages/api/google/submit.js similarity index 93% rename from pages/api/submit.js rename to pages/api/google/submit.js index 500fa6b..cbf2ee1 100644 --- a/pages/api/submit.js +++ b/pages/api/google/submit.js @@ -1,7 +1,7 @@ // @see https://dev.to/solomon04/collect-form-submissions-with-nextjs-google-sheets-264j import { google } from 'googleapis'; -const keys = require('../../secrets.json'); +const keys = require('../../../secrets.json'); export default async function handler(req, res) { const scopes = ['https://www.googleapis.com/auth/spreadsheets']; @@ -30,7 +30,7 @@ async function getData(client, options, res) { const googleSheetApi = google.sheets({ version: 'v4', auth: client }); const response = await googleSheetApi.spreadsheets.values.append({ spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', - range: 'Test', + range: 'Companies', valueInputOption: 'USER_ENTERED', requestBody: { values: options, diff --git a/pages/parceiros/cadastro.js b/pages/parceiros/cadastro.js index bb3915f..19dde34 100644 --- a/pages/parceiros/cadastro.js +++ b/pages/parceiros/cadastro.js @@ -51,7 +51,7 @@ const Parceiros = (props) => { ).then((r) => r.json()); // Form Submit - const rawResponse = await fetch('/api/submit', { + const rawResponse = await fetch('/api/google/submit', { method: 'POST', headers: { Accept: 'application/json', @@ -88,60 +88,59 @@ const Parceiros = (props) => { label: 'Categoria', type: 'dropdown', options, - validate: { required: false }, + required: true, }, { id: 'description', label: 'Descrição', type: 'textarea', - validate: false, - validate: { required: false }, + validate: { required: true }, }, { - id: 'description', + id: 'address', label: 'Endereço', type: 'textfield', validate: false, - validate: { required: false }, + validate: { required: true }, }, { id: 'membership', label: 'E-mail de membro', type: 'email', - validate: false, + validate: { required: false }, }, { id: 'phone', label: 'Telefone', type: 'phoneNumber', - validate: false, + validate: { required: true }, }, { id: 'whatsapp', label: 'Whatsapp', type: 'phoneNumber', - validate: false, + validate: { required: false }, }, { id: 'website', label: 'Website', type: 'url', placeholder: 'http://', - validate: false, + validate: { required: false }, }, { id: 'instagram', label: 'Instagram', type: 'textfield', placeholder: '@', - validate: false, + validate: { required: false }, }, { id: 'facebook', label: 'Facebook', type: 'textfield', placeholder: '@', - validate: false, + validate: { required: false }, }, { id: 'email', @@ -155,7 +154,7 @@ const Parceiros = (props) => { name: 'file', label: 'Logo da empresa', type: 'file', - validate: false, + validate: { required: true }, }, ]; From 5a40d1c60524b2955f90bdd7872ce1f42a34aafe Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 23:06:02 -0400 Subject: [PATCH 39/45] parceiros: fix title --- components/Blocks/Partners/PartnersTags.js | 6 +++--- functions/filterData.js | 4 ++-- functions/slugfy.js | 4 ++-- pages/parceiros/[slug].js | 11 ++++++++--- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/components/Blocks/Partners/PartnersTags.js b/components/Blocks/Partners/PartnersTags.js index 3764c8a..67a550b 100644 --- a/components/Blocks/Partners/PartnersTags.js +++ b/components/Blocks/Partners/PartnersTags.js @@ -1,7 +1,7 @@ // @see https://gist.github.com/codeguy/6684588 // @TODO https://github.com/lovell/limax -import slugify from 'functions/slugfy'; +import slugfy from 'functions/slugfy'; import Link from 'next/link'; const PartnersTags = ({ tags, filter }) => { @@ -21,10 +21,10 @@ const PartnersTags = ({ tags, filter }) => { {tags.map((item, index) => { const tagClassName = - filter === slugify(item) ? 'btn-primary' : 'btn-secondary'; + filter === slugfy(item) ? 'btn-primary' : 'btn-secondary'; return ( - + {item} ); diff --git a/functions/filterData.js b/functions/filterData.js index ed865e3..73a3af6 100644 --- a/functions/filterData.js +++ b/functions/filterData.js @@ -1,7 +1,7 @@ -import slugify from './slugfy'; +import slugfy from './slugfy'; const filterData = (tableData, filters) => { if (!filters) return tableData; - return tableData.filter((item) => filters.includes(slugify(item.category))); + return tableData.filter((item) => filters.includes(slugfy(item.category))); }; export default filterData; diff --git a/functions/slugfy.js b/functions/slugfy.js index 1961898..e8fc4ea 100644 --- a/functions/slugfy.js +++ b/functions/slugfy.js @@ -1,4 +1,4 @@ -const slugify = (text) => { +const slugfy = (text) => { return text .toString() // Cast to string (optional) .normalize('NFKD') // The normalize() using NFKD method returns the Unicode Normalization Form of a given string. @@ -9,4 +9,4 @@ const slugify = (text) => { .replace(/\-\-+/g, '-') // Replace multiple - with single - .replace(/\-$/g, ''); // Remove trailing - }; -export default slugify; +export default slugfy; diff --git a/pages/parceiros/[slug].js b/pages/parceiros/[slug].js index 2119bcc..dcf497f 100644 --- a/pages/parceiros/[slug].js +++ b/pages/parceiros/[slug].js @@ -2,9 +2,11 @@ import Layout from 'components/Layout/Layout'; import { getData } from 'functions/getData'; import getRecords from 'functions/getRecords'; import Partners from 'components/Blocks/Partners/Partners'; -import slugify from 'functions/slugfy'; +import slugfy from 'functions/slugfy'; import PartnersContent from 'components/Blocks/Partners/PartnersContent'; import PartnersTags from 'components/Blocks/Partners/PartnersTags'; +import { getGold, getSilver } from 'functions/getPartners'; +import filterData from 'functions/filterData'; const ParceirosTag = (props) => { const { partners, categories, params } = props; @@ -14,10 +16,13 @@ const ParceirosTag = (props) => { categories, }; const tagsNames = categories.map((item) => item[1]); + const hasGold = filterData(getGold(partners), params.slug).length; + const data = hasGold ? getGold(partners) : getSilver(partners); + const subTitle = filterData(data, params.slug)[0]?.category; return ( -

Parceiros - Bancos

+

Parceiros - {subTitle}

Quer fazer parte?

@@ -34,7 +39,7 @@ export async function getStaticPaths() { })) || []; const paths = categories.map((item) => ({ - params: { slug: slugify(item[1]) }, + params: { slug: slugfy(item[1]) }, })); return { paths, fallback: 'blocking' }; } From 69e2213ed20ada7d684026c24386dfac0ffddb74 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 23:23:39 -0400 Subject: [PATCH 40/45] fix env --- functions/getRecords.js | 5 ++--- pages/api/google/submit.js | 7 +++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/functions/getRecords.js b/functions/getRecords.js index e7d6ace..7abdab4 100644 --- a/functions/getRecords.js +++ b/functions/getRecords.js @@ -1,14 +1,13 @@ const { google } = require('googleapis'); // TODO: Move this to ENV -const keys = require('../secrets.json'); export default async function getRecords(options) { const scopes = ['https://www.googleapis.com/auth/spreadsheets']; const client = new google.auth.JWT( - keys.client_email, + process.env.GOOGLE_CLIENT_EMAIL, null, - keys.private_key, + process.env.GOOGLE_PRIVATE_KEY?.replace(/\\n/g, '\n'), scopes ); diff --git a/pages/api/google/submit.js b/pages/api/google/submit.js index cbf2ee1..64fb495 100644 --- a/pages/api/google/submit.js +++ b/pages/api/google/submit.js @@ -1,15 +1,14 @@ // @see https://dev.to/solomon04/collect-form-submissions-with-nextjs-google-sheets-264j import { google } from 'googleapis'; -const keys = require('../../../secrets.json'); export default async function handler(req, res) { const scopes = ['https://www.googleapis.com/auth/spreadsheets']; const client = new google.auth.JWT( - keys.client_email, + process.env.GOOGLE_CLIENT_EMAIL, null, - keys.private_key, + process.env.GOOGLE_PRIVATE_KEY?.replace(/\\n/g, '\n'), scopes ); @@ -29,7 +28,7 @@ export default async function handler(req, res) { async function getData(client, options, res) { const googleSheetApi = google.sheets({ version: 'v4', auth: client }); const response = await googleSheetApi.spreadsheets.values.append({ - spreadsheetId: '19RbFQdJZWygp-feLAmtWNK4KagWK6cHpNG_1ya2winM', + spreadsheetId: process.env.GOOGLE_SHEET_ID, range: 'Companies', valueInputOption: 'USER_ENTERED', requestBody: { From fe13326ec1395e8567359173a635b048151c914f Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 23:37:32 -0400 Subject: [PATCH 41/45] update env --- .env.example | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.env.example b/.env.example index 7a6a333..1d6a6a0 100644 --- a/.env.example +++ b/.env.example @@ -1,8 +1,9 @@ NEXT_PUBLIC_FORM_KEY= NEXT_PUBLIC_HUBSPOT= NEXT_PUBLIC_HUBSPOT_SITE= -NEXT_PUBLIC_WORDPRESS_URL=https://brinca-2021.herokuapp.com +NEXT_PUBLIC_WORDPRESS_URL=http://marceloglacial.com/brinca NEXT_COUDINARY_API_URL= -NEXT_CLOUDINARY_API_KEY= -NEXT_CLOUDINARY_API_SECRET= NEXT_COUDINARY_CLOUD_NAME= +GOOGLE_PRIVATE_KEY= +GOOGLE_SHEET_ID= +GOOGLE_CLIENT_EMAIL= From 1ccbc1f2e596213d8748716727cadf6a77d05ab8 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Tue, 7 Jun 2022 23:57:55 -0400 Subject: [PATCH 42/45] fix env --- .env.example | 4 ++-- pages/parceiros/cadastro.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.env.example b/.env.example index 1d6a6a0..1a1e0ef 100644 --- a/.env.example +++ b/.env.example @@ -2,8 +2,8 @@ NEXT_PUBLIC_FORM_KEY= NEXT_PUBLIC_HUBSPOT= NEXT_PUBLIC_HUBSPOT_SITE= NEXT_PUBLIC_WORDPRESS_URL=http://marceloglacial.com/brinca -NEXT_COUDINARY_API_URL= -NEXT_COUDINARY_CLOUD_NAME= +NEXT_PUBLIC_CLOUDINARY_API_URL=https://api.cloudinary.com/v1_1 +NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME= GOOGLE_PRIVATE_KEY= GOOGLE_SHEET_ID= GOOGLE_CLIENT_EMAIL= diff --git a/pages/parceiros/cadastro.js b/pages/parceiros/cadastro.js index 19dde34..7d7bf79 100644 --- a/pages/parceiros/cadastro.js +++ b/pages/parceiros/cadastro.js @@ -43,7 +43,7 @@ const Parceiros = (props) => { } formFieldsData.append('upload_preset', 'brinca'); const data = await fetch( - 'https://api.cloudinary.com/v1_1/dw2wjwhuv/image/upload', + `${process.env.NEXT_PUBLIC_CLOUDINARY_API_URL}/${process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME}/image/upload`, { method: 'POST', body: formFieldsData, @@ -147,7 +147,7 @@ const Parceiros = (props) => { label: 'E-mail de contato', type: 'email', validate: false, - validate: { required: false }, + validate: { required: true }, }, { id: 'image', From 65cd3c4a0b7a020a5d5b871dcaa201a3fbe25e03 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Wed, 8 Jun 2022 00:21:19 -0400 Subject: [PATCH 43/45] add e-mail --- pages/parceiros/cadastro.js | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/pages/parceiros/cadastro.js b/pages/parceiros/cadastro.js index 7d7bf79..7e029ce 100644 --- a/pages/parceiros/cadastro.js +++ b/pages/parceiros/cadastro.js @@ -65,6 +65,27 @@ const Parceiros = (props) => { } else { setStatus(false); } + + // Send e-mail + const emailResponse = await fetch('https://api.staticforms.xyz/submit', { + method: 'POST', + body: JSON.stringify({ + subject: 'Brinca - Cadastro de Parceiros', + honeypot: '', + replyTo: '@', + accessKey: process.env.NEXT_PUBLIC_FORM_KEY, + name: formData.title, + email: formData.email, + phone: formData.phone, + }), + headers: { 'Content-Type': 'application/json' }, + }); + const emailJson = await emailResponse.json(); + if (emailJson.success) { + console.log('Enviado!'); + } else { + console.error(emailJson.message); + } }; // FIELDS From 4728556277c491680feebc5e1116ddbe2c8293e5 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Wed, 8 Jun 2022 08:25:56 -0400 Subject: [PATCH 44/45] parceiros: associados --- components/Blocks/Partners/Partners.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/Blocks/Partners/Partners.js b/components/Blocks/Partners/Partners.js index 9deedc8..f9c5f51 100644 --- a/components/Blocks/Partners/Partners.js +++ b/components/Blocks/Partners/Partners.js @@ -13,7 +13,7 @@ const Partners = (props) => { return (
- +
From 438850248a820a0c12be51af6d4859f94960f453 Mon Sep 17 00:00:00 2001 From: Marcelo Glacial Date: Wed, 8 Jun 2022 08:38:22 -0400 Subject: [PATCH 45/45] new release --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c37f2e9..02eb6f8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "brinca-2020", - "version": "2.8.1", + "version": "2.9.0", "private": true, "scripts": { "dev": "next dev",