From 3705391eccfe3423ac3e5f1805b923cf0bef0332 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 7 Oct 2022 15:45:35 +0000 Subject: [PATCH 01/28] chore(deps): bump ejs from 3.1.6 to 3.1.8 in /packages/web Bumps [ejs](https://github.com/mde/ejs) from 3.1.6 to 3.1.8. - [Release notes](https://github.com/mde/ejs/releases) - [Changelog](https://github.com/mde/ejs/blob/main/CHANGELOG.md) - [Commits](https://github.com/mde/ejs/compare/v3.1.6...v3.1.8) --- updated-dependencies: - dependency-name: ejs dependency-type: indirect ... Signed-off-by: dependabot[bot] --- packages/web/yarn.lock | 403 +++++++++++++++++++++++++++++++---------- 1 file changed, 306 insertions(+), 97 deletions(-) diff --git a/packages/web/yarn.lock b/packages/web/yarn.lock index 1247922a..da6d946b 100644 --- a/packages/web/yarn.lock +++ b/packages/web/yarn.lock @@ -11,23 +11,29 @@ jsonpointer "^5.0.0" leven "^3.1.0" -"@apollo/client@^3.4.15": - version "3.5.6" - resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.5.6.tgz#911929df073280689efd98e5603047b79e0c39a2" - integrity sha512-XHoouuEJ4L37mtfftcHHO1caCRrKKAofAwqRoq28UQIPMJk+e7n3X9OtRRNXKk/9tmhNkwelSary+EilfPwI7A== +"@apollo/client@^3.6.9": + version "3.7.0" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.7.0.tgz#1c26a04488f45b3a4779fa2562e4b706402cb876" + integrity sha512-hp4OvrH1ZIQACRYcIrh/C0WFnY7IM7G6nlTpC8DSTEWxfZQ2kvpvDY0I/hYmCs0oAVrg26g3ANEdOzGWTcYbPg== dependencies: - "@graphql-typed-document-node/core" "^3.0.0" - "@wry/context" "^0.6.0" + "@graphql-typed-document-node/core" "^3.1.1" + "@wry/context" "^0.7.0" "@wry/equality" "^0.5.0" "@wry/trie" "^0.3.0" - graphql-tag "^2.12.3" + graphql-tag "^2.12.6" hoist-non-react-statics "^3.3.2" optimism "^0.16.1" prop-types "^15.7.2" + response-iterator "^0.2.6" symbol-observable "^4.0.0" - ts-invariant "^0.9.4" + ts-invariant "^0.10.3" tslib "^2.3.0" - zen-observable-ts "^1.2.0" + zen-observable-ts "^1.2.5" + +"@automatisch/types@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@automatisch/types/-/types-0.1.0.tgz#aea0da9991ea79c59cf69f660425df8d6024feac" + integrity sha512-By3aEiZUc94tAjvjxRB1L+obRsa8gqYoXkHi3Nub2WplLV4YDYnx1w35dPcBIplS6Mizl9zDFv5Gg0V+lm4LwA== "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": version "7.12.13" @@ -1790,6 +1796,13 @@ dependencies: regenerator-runtime "^0.13.4" +"@babel/runtime@^7.15.4", "@babel/runtime@^7.16.7", "@babel/runtime@^7.17.8": + version "7.19.0" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.19.0.tgz#22b11c037b094d27a8a2504ea4dcff00f50e2259" + integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/template@^7.12.13", "@babel/template@^7.3.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" @@ -2085,11 +2098,16 @@ intl-messageformat "9.10.0" tslib "^2.1.0" -"@graphql-typed-document-node/core@^3.0.0": +"@graphql-typed-document-node/core@^3.1.1": version "3.1.1" resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.1.tgz#076d78ce99822258cf813ecc1e7fa460fa74d052" integrity sha512-NQ17ii0rK1b34VZonlmT2QMJFI70m0TRwbknO/ihlbatXyaktDhN/98vBiUU6kNBPljqGqyIrl2T4nY2RpFANg== +"@hookform/resolvers@^2.8.8": + version "2.9.8" + resolved "https://registry.yarnpkg.com/@hookform/resolvers/-/resolvers-2.9.8.tgz#9af51d15602f3c6e3249714712d8275564e65b72" + integrity sha512-iVVjH0USq+1TqDdGkWe2M1x7Wn5OFPgVRo7CbWFsXTqqXqCaZtZcnzJu+UhljCWbthFWxWGXKLGYUDPZ04oVvQ== + "@humanwhocodes/config-array@^0.9.2": version "0.9.3" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.9.3.tgz#f2564c744b387775b436418491f15fce6601f63e" @@ -2769,6 +2787,11 @@ dependencies: "@babel/types" "^7.3.0" +"@types/base16@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/base16/-/base16-1.0.2.tgz#eb3a07db52309bfefb9ba010dfdb3c0784971f65" + integrity sha512-oYO/U4VD1DavwrKuCSQWdLG+5K22SLPem2OQaHmFcQuwHoVeGC+JGVRji2MUqZUAIQZHEonOeVfAX09hYiLsdg== + "@types/body-parser@*": version "1.19.2" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0" @@ -2884,6 +2907,11 @@ dependencies: "@types/node" "*" +"@types/is-hotkey@^0.1.1": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@types/is-hotkey/-/is-hotkey-0.1.7.tgz#30ec6d4234895230b576728ef77e70a52962f3b3" + integrity sha512-yB5C7zcOM7idwYZZ1wKQ3pTfjA9BbvFqRWvKB46GFddxnJtHwi/b9y84ykQtxQPg5qhdpg4Q/kWU3EGoCTmLzQ== + "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" @@ -2934,17 +2962,10 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/lodash.template@^4.5.0": - version "4.5.0" - resolved "https://registry.yarnpkg.com/@types/lodash.template/-/lodash.template-4.5.0.tgz#277654af717ed37ce2687c69f8f221c550276b7a" - integrity sha512-4LgHxK16IPbGR7TmXpPvNT7iNGsLCdQY6Rc0mi1a/JECt8et/D4hx6NMVAJej/d932sj1mJsg0QYHKL189O0Qw== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*": - version "4.14.178" - resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.178.tgz#341f6d2247db528d4a13ddbb374bcdc80406f4f8" - integrity sha512-0d5Wd09ItQWH1qFbEyQ7oTQ3GZrMfth5JkbN3EvTKLXcHLRDSXeLnlvlOn0wvxVIwK5o2M8JzP/OWz7T3NRsbw== +"@types/lodash@^4.14.149", "@types/lodash@^4.14.175", "@types/lodash@^4.14.178", "@types/lodash@^4.14.182": + version "4.14.186" + resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.186.tgz#862e5514dd7bd66ada6c70ee5fce844b06c8ee97" + integrity sha512-eHcVlLXP0c2FlMPm56ITode2AgLMSa6aJ05JTTbYbI+7EMkCEE5qk2E41d5g2lCVTqRe0GnnRFurmlCsDODrPw== "@types/luxon@^2.0.8": version "2.0.8" @@ -3332,6 +3353,13 @@ dependencies: tslib "^2.3.0" +"@wry/context@^0.7.0": + version "0.7.0" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.7.0.tgz#be88e22c0ddf62aeb0ae9f95c3d90932c619a5c8" + integrity sha512-LcDAiYWRtwAoSOArfk7cuYvFXytxfVrdX7yxoUmK7pPITLk5jYh2F8knCwS7LjgYL8u1eidPlKKV6Ikqq0ODqQ== + dependencies: + tslib "^2.3.0" + "@wry/equality@^0.5.0": version "0.5.2" resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.5.2.tgz#72c8a7a7d884dff30b612f4f8464eba26c080e73" @@ -3625,11 +3653,6 @@ ast-types-flow@^0.0.7: resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= -async@0.9.x: - version "0.9.2" - resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" - integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= - async@^2.6.2: version "2.6.3" resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" @@ -3637,6 +3660,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.3: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + asynckit@^0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" @@ -3827,9 +3855,14 @@ babel-preset-react-app@^10.0.1: babel-plugin-transform-react-remove-prop-types "^0.4.24" balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base16@^1.0.0: version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + resolved "https://registry.yarnpkg.com/base16/-/base16-1.0.0.tgz#e297f60d7ec1014a7a971a39ebc8a98c0b681e70" + integrity sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ== batch@0.6.1: version "0.6.1" @@ -3902,6 +3935,13 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + braces@^3.0.1, braces@~3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" @@ -4018,7 +4058,7 @@ case-sensitive-paths-webpack-plugin@^2.4.0: resolved "https://registry.yarnpkg.com/case-sensitive-paths-webpack-plugin/-/case-sensitive-paths-webpack-plugin-2.4.0.tgz#db64066c6422eed2e08cc14b986ca43796dbc6d4" integrity sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw== -chalk@^2.0.0, chalk@^2.4.1, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.1: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -4035,7 +4075,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.2: +chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== @@ -4140,7 +4180,7 @@ collect-v8-coverage@^1.0.0: resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz#cc2c8e94fc18bbdffe64d6534570c8a673b27f59" integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg== -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -4159,11 +4199,27 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= -color-name@^1.1.4, color-name@~1.1.4: +color-name@^1.0.0, color-name@^1.1.4, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== +color-string@^1.6.0: + version "1.9.1" + resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.9.1.tgz#4467f9146f036f855b764dfb5bf8582bf342c7a4" + integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg== + dependencies: + color-name "^1.0.0" + simple-swizzle "^0.2.2" + +color@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/color/-/color-3.2.1.tgz#3544dc198caf4490c3ecc9a790b54fe9ff45e164" + integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA== + dependencies: + color-convert "^1.9.3" + color-string "^1.6.0" + colord@^2.9.1: version "2.9.2" resolved "https://registry.yarnpkg.com/colord/-/colord-2.9.2.tgz#25e2bacbbaa65991422c07ea209e2089428effb1" @@ -4211,6 +4267,11 @@ commondir@^1.0.1: resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= +compare-versions@^4.1.3: + version "4.1.4" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-4.1.4.tgz#3571f4d610924d4414846a4183d386c8f3d51112" + integrity sha512-FemMreK9xNyL8gQevsdRMrvO4lFCkQP7qbuktn1q8ndcNk1+0mz7lgE7b/sNvbhVgY4w6tMN1FDp6aADjqw2rw== + compressible@~2.0.16: version "2.0.18" resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" @@ -4231,10 +4292,15 @@ compression@^1.7.4: safe-buffer "5.1.2" vary "~1.1.2" +compute-scroll-into-view@^1.0.17: + version "1.0.17" + resolved "https://registry.yarnpkg.com/compute-scroll-into-view/-/compute-scroll-into-view-1.0.17.tgz#6a88f18acd9d42e9cf4baa6bec7e0522607ab7ab" + integrity sha512-j4dx+Fb0URmzbwwMUrhqWM2BEWHdFGx+qZ9qqASHRPqvTYdqvWnHg0H1hIbcyLnvgnoNAVMlwkepyqM3DaIFUg== + concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== confusing-browser-globals@^1.0.11: version "1.0.11" @@ -4770,6 +4836,11 @@ dir-glob@^3.0.1: dependencies: path-type "^4.0.0" +direction@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/direction/-/direction-1.0.4.tgz#2b86fb686967e987088caf8b89059370d4837442" + integrity sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ== + dlv@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" @@ -4921,11 +4992,11 @@ ee-first@1.1.1: integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0= ejs@^3.1.6: - version "3.1.6" - resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.6.tgz#5bfd0a0689743bb5268b3550cceeebbc1702822a" - integrity sha512-9lt9Zse4hPucPkoP7FHDF0LQAlGyF9JVpnClFLFH3aSSbxmyoqINRpp/9wePWJTUl4KOQwRL72Iw3InHPDkoGw== + version "3.1.8" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.8.tgz#758d32910c78047585c7ef1f92f9ee041c1c190b" + integrity sha512-/sXZeMlhS0ArkfX2Aw780gJzXSMPnKjtspYZv+f3NiKLlubezAHDU5+9xz6gd3/NhG3txQCo6xlglmTS+oTGEQ== dependencies: - jake "^10.6.1" + jake "^10.8.5" electron-to-chromium@^1.4.17: version "1.4.56" @@ -5517,11 +5588,11 @@ file-loader@^6.2.0: schema-utils "^3.0.0" filelist@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.2.tgz#80202f21462d4d1c2e214119b1807c1bc0380e5b" - integrity sha512-z7O0IS8Plc39rTCq6i6iHxk43duYOn8uFJiWSewIq0Bww1RNybVHSCjahmcC87ZqAm4OTvFzlzeGu3XAzG1ctQ== + version "1.0.4" + resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5" + integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q== dependencies: - minimatch "^3.0.4" + minimatch "^5.0.1" filesize@^8.0.6: version "8.0.7" @@ -5605,7 +5676,7 @@ flatted@^3.1.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== -follow-redirects@1.14.8, follow-redirects@^1.0.0: +follow-redirects@^1.0.0: version "1.14.8" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc" integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA== @@ -5832,7 +5903,7 @@ graceful-fs@^4.2.6, graceful-fs@^4.2.9: resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.9.tgz#041b05df45755e587a24942279b9d113146e1c96" integrity sha512-NtNxqUcXgpW2iMrfqSfR73Glt39K+BLwWsPs94yR63v45T0Wbej7eRmL5cWfwEgqXnmjQp3zaJTshdRW/qC2ZQ== -graphql-tag@^2.12.3: +graphql-tag@^2.12.6: version "2.12.6" resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.12.6.tgz#d441a569c1d2537ef10ca3d1633b48725329b5f1" integrity sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg== @@ -6115,6 +6186,11 @@ ignore@^5.1.8, ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +immer@^9.0.6: + version "9.0.15" + resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.15.tgz#0b9169e5b1d22137aba7d43f8a81a495dd1b62dc" + integrity sha512-2eB/sswms9AEUSkOm4SbV5Y7Vmt/bKRwByd52jfLkW4OLYeaTP3EEiJ9agqU0O/tq6Dk62Zfj+TJSqfm1rLVGQ== + immer@^9.0.7: version "9.0.12" resolved "https://registry.yarnpkg.com/immer/-/immer-9.0.12.tgz#2d33ddf3ee1d247deab9d707ca472c8c942a0f20" @@ -6220,6 +6296,11 @@ is-arrayish@^0.2.1: resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= +is-arrayish@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03" + integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ== + is-bigint@^1.0.1: version "1.0.4" resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.4.tgz#08147a1875bc2b32005d41ccd8291dffc6691df3" @@ -6303,6 +6384,11 @@ is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: dependencies: is-extglob "^2.1.1" +is-hotkey@^0.1.6: + version "0.1.8" + resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.8.tgz#6b1f4b2d0e5639934e20c05ed24d623a21d36d25" + integrity sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ== + is-module@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-module/-/is-module-1.0.0.tgz#3258fb69f78c14d5b815d664336b4cffb6441591" @@ -6345,6 +6431,11 @@ is-plain-obj@^3.0.0: resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + is-potential-custom-element-name@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" @@ -6488,13 +6579,13 @@ istanbul-reports@^3.1.3: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jake@^10.6.1: - version "10.8.2" - resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" - integrity sha512-eLpKyrfG3mzvGE2Du8VoPbeSkRry093+tyNjdYaBbJS9v17knImYGNXQCUV0gLxQtF82m3E8iRb/wdSQZLoq7A== +jake@^10.8.5: + version "10.8.5" + resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.5.tgz#f2183d2c59382cb274226034543b9c03b8164c46" + integrity sha512-sVpxYeuAhWt0OTWITwT98oyV0GsXyMlXCF+3L1SuafBVUIr/uILGRB+NqwkzhgXKvoJpDIpQvqkUALgdmQsQxw== dependencies: - async "0.9.x" - chalk "^2.4.2" + async "^3.2.3" + chalk "^4.0.2" filelist "^1.0.1" minimatch "^3.0.4" @@ -7212,10 +7303,15 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" -lodash._reinterpolate@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" - integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= +lodash-es@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee" + integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw== + +lodash.curry@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.curry/-/lodash.curry-4.1.1.tgz#248e36072ede906501d75966200a86dab8b23170" + integrity sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA== lodash.debounce@^4.0.8: version "4.0.8" @@ -7237,27 +7333,12 @@ lodash.sortby@^4.7.0: resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash.template@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" - integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.templatesettings "^4.0.0" - -lodash.templatesettings@^4.0.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" - integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== - dependencies: - lodash._reinterpolate "^3.0.0" - lodash.uniq@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.7.0: +lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -7283,10 +7364,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -luxon@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.2.0.tgz#f5c4a234ba4016f792488b11aaed2d5bc14c888e" - integrity sha512-LwmknessH4jVIseCsizUgveIHwlLv/RQZWC2uDSMfGJs7w8faPUi2JFxfyfMcTPrpNbChTem3Uz6IKRtn+LcIA== +luxon@^2.3.1: + version "2.5.0" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.5.0.tgz#098090f67d690b247e83c090267a60b1aa8ea96c" + integrity sha512-IDkEPB80Rb6gCAU+FEib0t4FeJ4uVOuX1CQ9GsvU3O+JAGIgu0J7sf1OarXKaKDygTZIoJyU6YdZzTFRu+YR0A== lz-string@^1.4.4: version "1.4.4" @@ -7423,14 +7504,28 @@ minimalistic-assert@^1.0.0: resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== -minimatch@3.0.4, minimatch@^3.0.4: +minimatch@3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== dependencies: brace-expansion "^1.1.7" -minimist@1.2.6, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: +minimatch@^3.0.4: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -7475,6 +7570,11 @@ multicast-dns@^6.0.1: dns-packet "^1.3.1" thunky "^1.0.2" +nanoclone@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" + integrity sha512-wynEP02LmIbLpcYw8uBKpcfF6dmg2vcpKqxeH5UcoKEYdExslsdUA4ugFauuaeYdTB76ez6gJW8XAZ6CgkXYxA== + nanoid@^3.1.30: version "3.2.0" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.2.0.tgz#62667522da6673971cca916a6d3eff3f415ff80c" @@ -7503,7 +7603,7 @@ no-case@^3.0.4: lower-case "^2.0.2" tslib "^2.0.3" -node-forge@1.3.0, node-forge@^1.2.0: +node-forge@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.0.tgz#37a874ea723855f37db091e6c186e5b67a01d4b2" integrity sha512-08ARB91bUi6zNKzVmaj3QO7cr397uiDT2nJ63cHjyNtCTWIgvS47j3eT0WfzUwS9+6Z5YshRaoasFkXCKrIYbA== @@ -8552,6 +8652,20 @@ prop-types@^15.6.2, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +property-expr@^2.0.4: + version "2.0.5" + resolved "https://registry.yarnpkg.com/property-expr/-/property-expr-2.0.5.tgz#278bdb15308ae16af3e3b9640024524f4dc02cb4" + integrity sha512-IJUkICM5dP5znhCckHSv30Q4b5/JA5enCtkRHYaOVOAocnH/1BQEYTC5NMfT3AVl/iXKdr3aqQbQn9DxyWknwA== + proxy-addr@~2.0.5: version "2.0.6" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.6.tgz#fdc2336505447d3f2f2c638ed272caf614bbb2bf" @@ -8631,6 +8745,19 @@ react-app-polyfill@^3.0.0: regenerator-runtime "^0.13.9" whatwg-fetch "^3.6.2" +react-base16-styling@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/react-base16-styling/-/react-base16-styling-0.9.1.tgz#4906b4c0a51636f2dca2cea8b682175aa8bd0c92" + integrity sha512-1s0CY1zRBOQ5M3T61wetEpvQmsYSNtWEcdYzyZNxKa8t7oDvaOn9d21xrGezGAHFWLM7SHcktPuPTrvoqxSfKw== + dependencies: + "@babel/runtime" "^7.16.7" + "@types/base16" "^1.0.2" + "@types/lodash" "^4.14.178" + base16 "^1.0.0" + color "^3.2.1" + csstype "^3.0.10" + lodash.curry "^4.1.1" + react-dev-utils@^12.0.0: version "12.0.0" resolved "https://registry.yarnpkg.com/react-dev-utils/-/react-dev-utils-12.0.0.tgz#4eab12cdb95692a077616770b5988f0adf806526" @@ -8696,7 +8823,7 @@ react-intl@^5.20.12: intl-messageformat "9.10.0" tslib "^2.1.0" -react-is@^16.7.0, react-is@^16.8.1: +react-is@^16.13.1, react-is@^16.7.0, 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== @@ -8711,6 +8838,16 @@ 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-json-tree@^0.16.2: + version "0.16.2" + resolved "https://registry.yarnpkg.com/react-json-tree/-/react-json-tree-0.16.2.tgz#697bd9413407d2448ddff3c8891cd4395342539e" + integrity sha512-80F7ZTqeOl1YaS/sDce4tYBcSe69/d0mlUmcIhyXezPFctWrtvyN56EMExX9jWsq3XMdvsUKKPUeNo8QCBy2jg== + dependencies: + "@babel/runtime" "^7.17.8" + "@types/prop-types" "^15.7.4" + prop-types "^15.8.1" + react-base16-styling "^0.9.1" + react-refresh@^0.11.0: version "0.11.0" resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.11.0.tgz#77198b944733f0f1f1a90e791de4541f9f074046" @@ -9008,6 +9145,11 @@ resolve@^2.0.0-next.3: is-core-module "^2.2.0" path-parse "^1.0.6" +response-iterator@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/response-iterator/-/response-iterator-0.2.6.tgz#249005fb14d2e4eeb478a3f735a28fd8b4c9f3da" + integrity sha512-pVzEEzrsg23Sh053rmDUvLSkGXluZio0qu8VT6ukrYuvtjVfCbDZH9d6PGXb8HZfzdNZt8feXv/jvUzlhRgLnw== + retry@^0.13.1: version "0.13.1" resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" @@ -9148,6 +9290,13 @@ schema-utils@^4.0.0: ajv-formats "^2.1.1" ajv-keywords "^5.0.0" +scroll-into-view-if-needed@^2.2.20: + version "2.2.29" + resolved "https://registry.yarnpkg.com/scroll-into-view-if-needed/-/scroll-into-view-if-needed-2.2.29.tgz#551791a84b7e2287706511f8c68161e4990ab885" + integrity sha512-hxpAR6AN+Gh53AdAimHM6C8oTN1ppwVZITihix+WqalywBeFcQ6LdQP5ABNl26nX8GTEL7VT+b8lKpdqq65wXg== + dependencies: + compute-scroll-into-view "^1.0.17" + select-hose@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" @@ -9291,6 +9440,13 @@ signal-exit@^3.0.3: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.6.tgz#24e630c4b0f03fea446a2bd299e62b4a6ca8d0af" integrity sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ== +simple-swizzle@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a" + integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg== + dependencies: + is-arrayish "^0.3.1" + sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" @@ -9306,6 +9462,36 @@ slash@^4.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== +slate-history@^0.66.0: + version "0.66.0" + resolved "https://registry.yarnpkg.com/slate-history/-/slate-history-0.66.0.tgz#ac63fddb903098ceb4c944433e3f75fe63acf940" + integrity sha512-6MWpxGQZiMvSINlCbMW43E2YBSVMCMCIwQfBzGssjWw4kb0qfvj0pIdblWNRQZD0hR6WHP+dHHgGSeVdMWzfng== + dependencies: + is-plain-object "^5.0.0" + +slate-react@^0.72.9: + version "0.72.9" + resolved "https://registry.yarnpkg.com/slate-react/-/slate-react-0.72.9.tgz#b05dd533bd29dd2d4796b614a8d8e01f214bb714" + integrity sha512-FEsqB+D1R/h+w1eCtHH367Krw2X7vju2GjMRL/d0bUiCRXlV50J9I9TJizvi7aaZyqBY8BypCuIiq9nNmsulCA== + dependencies: + "@types/is-hotkey" "^0.1.1" + "@types/lodash" "^4.14.149" + direction "^1.0.3" + is-hotkey "^0.1.6" + is-plain-object "^5.0.0" + lodash "^4.17.4" + scroll-into-view-if-needed "^2.2.20" + tiny-invariant "1.0.6" + +slate@^0.72.8: + version "0.72.8" + resolved "https://registry.yarnpkg.com/slate/-/slate-0.72.8.tgz#5a018edf24e45448655293a68bfbcf563aa5ba81" + integrity sha512-/nJwTswQgnRurpK+bGJFH1oM7naD5qDmHd89JyiKNT2oOKD8marW0QSBtuFnwEbL5aGCS8AmrhXQgNOsn4osAw== + dependencies: + immer "^9.0.6" + is-plain-object "^5.0.0" + tiny-warning "^1.0.3" + sockjs@^0.3.21: version "0.3.21" resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.21.tgz#b34ffb98e796930b60a0cfa11904d6a339a7d417" @@ -9355,7 +9541,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@0.6.1, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, 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== @@ -9365,12 +9551,7 @@ source-map@^0.5.0, source-map@^0.5.7: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= -source-map@^0.6.0: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -source-map@^0.7.3, source-map@~0.7.2: +source-map@^0.7.3: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -9758,7 +9939,7 @@ terser-webpack-plugin@^5.1.3, terser-webpack-plugin@^5.2.5: source-map "^0.6.1" terser "^5.7.2" -terser@5.14.2, terser@^5.0.0, terser@^5.10.0, terser@^5.7.2: +terser@^5.0.0, terser@^5.10.0, terser@^5.7.2: version "5.14.2" resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== @@ -9797,6 +9978,16 @@ timsort@^0.3.0: resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" integrity sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q= +tiny-invariant@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/tiny-invariant/-/tiny-invariant-1.0.6.tgz#b3f9b38835e36a41c843a3b0907a5a7b3755de73" + integrity sha512-FOyLWWVjG+aC0UqG76V53yAWdXfH8bO6FNmyZOuUrzDzK8DI3/JRY25UD7+g49JWM1LXwymsKERB+DzI0dTEQA== + +tiny-warning@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" + integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== + tmpl@1.0.x: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -9819,6 +10010,11 @@ toidentifier@1.0.0: resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toposort@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/toposort/-/toposort-2.0.2.tgz#ae21768175d1559d48bef35420b2f4962f09c330" + integrity sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg== + tough-cookie@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.0.0.tgz#d822234eeca882f991f0f908824ad2622ddbece4" @@ -9854,10 +10050,10 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -ts-invariant@^0.9.4: - version "0.9.4" - resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.9.4.tgz#42ac6c791aade267dd9dc65276549df5c5d71cac" - integrity sha512-63jtX/ZSwnUNi/WhXjnK8kz4cHHpYS60AnmA6ixz17l7E12a5puCWFlNpkne5Rl0J8TBPVHpGjsj4fxs8ObVLQ== +ts-invariant@^0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.10.3.tgz#3e048ff96e91459ffca01304dbc7f61c1f642f6c" + integrity sha512-uivwYcQaxAucv1CzRp2n/QdYPo4ILf9VXgH19zEIjFx2EJufV16P0JtJVpYHy89DItG6Kwj2oIUjrcK5au+4tQ== dependencies: tslib "^2.1.0" @@ -9942,10 +10138,10 @@ typedarray-to-buffer@^3.1.5: dependencies: is-typedarray "^1.0.0" -typescript@^4.1.2: - version "4.4.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.4.3.tgz#bdc5407caa2b109efd4f82fe130656f977a29324" - integrity sha512-4xfscpisVgqqDfPaJo5vkd+Qd/ItkoagnHpufr+i2QCHBsNYp+G7UAoyFl8aPtx879u38wPV65rZ8qbGZijalA== +typescript@^4.6.3: + version "4.8.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.8.4.tgz#c464abca159669597be5f96b8943500b238e60e6" + integrity sha512-QCh+85mCy+h0IGff8r5XWzOVSbBO+KfeYrMQh7NJ58QujwcE22u+NUSmUxqF+un70P9GXKxa2HCNiTTMJknyjQ== unbox-primitive@^1.0.1: version "1.0.1" @@ -10585,10 +10781,23 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zen-observable-ts@^1.2.0: - version "1.2.3" - resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.3.tgz#c2f5ccebe812faf0cfcde547e6004f65b1a6d769" - integrity sha512-hc/TGiPkAWpByykMwDcem3SdUgA4We+0Qb36bItSuJC9xD0XVBZoFHYoadAomDSNf64CG8Ydj0Qb8Od8BUWz5g== +yup@^0.32.11: + version "0.32.11" + resolved "https://registry.yarnpkg.com/yup/-/yup-0.32.11.tgz#d67fb83eefa4698607982e63f7ca4c5ed3cf18c5" + integrity sha512-Z2Fe1bn+eLstG8DRR6FTavGD+MeAwyfmouhHsIUgaADz8jvFKbO/fXc2trJKZg+5EBjh4gGm3iU/t3onKlXHIg== + dependencies: + "@babel/runtime" "^7.15.4" + "@types/lodash" "^4.14.175" + lodash "^4.17.21" + lodash-es "^4.17.21" + nanoclone "^0.2.1" + property-expr "^2.0.4" + toposort "^2.0.2" + +zen-observable-ts@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-1.2.5.tgz#6c6d9ea3d3a842812c6e9519209365a122ba8b58" + integrity sha512-QZWQekv6iB72Naeake9hS1KxHlotfRpe+WGNbNx5/ta+R3DNjVO2bswf63gXlWDcs+EMd7XY8HfVQyP1X6T4Zg== dependencies: zen-observable "0.8.15" From c0aa2e4f6c2b1252bf5656907a5407f30bf7cb3f Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sat, 8 Oct 2022 21:04:08 +0300 Subject: [PATCH 02/28] fix: Do not use mutated step for global variables of actions --- packages/backend/src/services/processor.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/backend/src/services/processor.ts b/packages/backend/src/services/processor.ts index 224fcceb..896cbf38 100644 --- a/packages/backend/src/services/processor.ts +++ b/packages/backend/src/services/processor.ts @@ -102,13 +102,14 @@ class Processor { priorExecutionSteps ); - step.parameters = computedParameters; + const clonedStep = Object.assign({}, step); + clonedStep.parameters = computedParameters; const $ = await globalVariable( step.connection, app, this.flow, - step, + clonedStep ); if (!isTrigger && key) { From 38bcf6ada037adba2b17898cfca095ce1353ca0a Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:55:49 +0200 Subject: [PATCH 03/28] chore: add e2e-tests package --- .eslintignore | 1 + .gitignore | 9 + packages/e2e-tests/cypress.config.js | 23 ++ .../e2e-tests/cypress/support/commands.js | 45 +++ packages/e2e-tests/cypress/support/e2e.js | 20 + packages/e2e-tests/package.json | 28 ++ yarn.lock | 370 ++++++++++++++++-- 7 files changed, 472 insertions(+), 24 deletions(-) create mode 100644 packages/e2e-tests/cypress.config.js create mode 100644 packages/e2e-tests/cypress/support/commands.js create mode 100644 packages/e2e-tests/cypress/support/e2e.js create mode 100644 packages/e2e-tests/package.json diff --git a/.eslintignore b/.eslintignore index d8443a88..11c7540f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -3,6 +3,7 @@ dist build coverage packages/docs/* +packages/e2e-tests .eslintrc.js husky.config.js diff --git a/.gitignore b/.gitignore index 0125458e..6a9e978f 100644 --- a/.gitignore +++ b/.gitignore @@ -74,6 +74,15 @@ web_modules/ .env.test .env.production +# cypress environment variables file +cypress.env.json + +# cypress screenshots +cypress/screenshots/ + +# cypress videos +cypress/videos/ + # parcel-bundler cache (https://parceljs.org/) .cache .parcel-cache diff --git a/packages/e2e-tests/cypress.config.js b/packages/e2e-tests/cypress.config.js new file mode 100644 index 00000000..b613942c --- /dev/null +++ b/packages/e2e-tests/cypress.config.js @@ -0,0 +1,23 @@ +const { defineConfig } = require("cypress"); + +const TO_BE_PROVIDED = 'HAS_TO_BE_PROVIDED_IN_cypress.env.json'; + +module.exports = defineConfig({ + e2e: { + baseUrl: 'http://localhost:3001', + env: { + login_email: "user@automatisch.io", + login_password: "sample", + twitter_api_key: TO_BE_PROVIDED, + twitter_api_secret: TO_BE_PROVIDED, + slack_user_token: TO_BE_PROVIDED, + }, + specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', + excludeSpecPattern: [ + '**/1-getting-started/**', + '**/2-advanced-examples/**' + ], + viewportWidth: 1280, + viewportHeight: 768 + }, +}); diff --git a/packages/e2e-tests/cypress/support/commands.js b/packages/e2e-tests/cypress/support/commands.js new file mode 100644 index 00000000..7d28515e --- /dev/null +++ b/packages/e2e-tests/cypress/support/commands.js @@ -0,0 +1,45 @@ +Cypress.Commands.add('og', { prevSubject: 'optional' }, (subject, selector, suffix = '') => { + if (subject) { + return cy.wrap(subject).get(`[data-test="${selector}"]${suffix}`); + } + + return cy.get(`[data-test="${selector}"]${suffix}`); +}); + +Cypress.Commands.add('login', () => { + cy.visit('/login'); + + cy.og('email-text-field').type(Cypress.env('login_email')); + cy.og('password-text-field').type(Cypress.env('login_password')); + + cy + .intercept('/graphql') + .as('graphqlCalls'); + cy + .intercept('https://notifications.automatisch.io/notifications.json') + .as('notificationsCall'); + cy.og('login-button').click(); + + cy.wait(['@graphqlCalls', '@notificationsCall']); +}); + +Cypress.Commands.add('logout', () => { + cy.og('profile-menu-button').click(); + + cy.og('logout-item').click(); +}); + +Cypress.Commands.add('ss', (name, opts = {}) => { + return cy.screenshot( + name, + { + overwrite: true, + capture: 'viewport', + ...opts, + } + ); +}); + +Cypress.Commands.add('clickOutside', () => { + return cy.get('body').click(0, 0); +}); diff --git a/packages/e2e-tests/cypress/support/e2e.js b/packages/e2e-tests/cypress/support/e2e.js new file mode 100644 index 00000000..0e7290a1 --- /dev/null +++ b/packages/e2e-tests/cypress/support/e2e.js @@ -0,0 +1,20 @@ +// *********************************************************** +// This example support/e2e.js is processed and +// loaded automatically before your test files. +// +// This is a great place to put global configuration and +// behavior that modifies Cypress. +// +// You can change the location of this file or turn off +// automatically serving support files with the +// 'supportFile' configuration option. +// +// You can read more here: +// https://on.cypress.io/configuration +// *********************************************************** + +// Import commands.js using ES2015 syntax: +import './commands' + +// Alternatively you can use CommonJS syntax: +// require('./commands') \ No newline at end of file diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json new file mode 100644 index 00000000..ef15015b --- /dev/null +++ b/packages/e2e-tests/package.json @@ -0,0 +1,28 @@ +{ + "name": "@automatisch/e2e-tests", + "version": "0.1.4", + "license": "AGPL-3.0", + "private": true, + "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", + "scripts": { + "cypress:open": "cypress open" + }, + "dependencies": {}, + "contributors": [ + { + "name": "automatisch contributors", + "url": "https://github.com/automatisch/automatisch/graphs/contributors" + } + ], + "homepage": "https://github.com/automatisch/automatisch#readme", + "repository": { + "type": "git", + "url": "git+https://github.com/automatisch/automatisch.git" + }, + "bugs": { + "url": "https://github.com/automatisch/automatisch/issues" + }, + "devDependencies": { + "cypress": "^10.9.0" + } +} diff --git a/yarn.lock b/yarn.lock index eabe4456..052d7583 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1443,6 +1443,38 @@ resolved "https://registry.yarnpkg.com/@csstools/normalize.css/-/normalize.css-12.0.0.tgz#a9583a75c3f150667771f30b60d9f059473e62c4" integrity sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg== +"@cypress/request@^2.88.10": + version "2.88.10" + resolved "https://registry.yarnpkg.com/@cypress/request/-/request-2.88.10.tgz#b66d76b07f860d3a4b8d7a0604d020c662752cce" + integrity sha512-Zp7F+R93N0yZyG34GutyTNr+okam7s/Fzc1+i3kcqOP8vk6OuajuE9qZJ6Rs+10/1JFtXFYMdyarnU1rZuJesg== + dependencies: + aws-sign2 "~0.7.0" + aws4 "^1.8.0" + caseless "~0.12.0" + combined-stream "~1.0.6" + extend "~3.0.2" + forever-agent "~0.6.1" + form-data "~2.3.2" + http-signature "~1.3.6" + is-typedarray "~1.0.0" + isstream "~0.1.2" + json-stringify-safe "~5.0.1" + mime-types "~2.1.19" + performance-now "^2.1.0" + qs "~6.5.2" + safe-buffer "^5.1.2" + tough-cookie "~2.5.0" + tunnel-agent "^0.6.0" + uuid "^8.3.2" + +"@cypress/xvfb@^1.2.4": + version "1.2.4" + resolved "https://registry.yarnpkg.com/@cypress/xvfb/-/xvfb-1.2.4.tgz#2daf42e8275b39f4aa53c14214e557bd14e7748a" + integrity sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q== + dependencies: + debug "^3.1.0" + lodash.once "^4.1.1" + "@dabh/diagnostics@^2.0.2": version "2.0.2" resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" @@ -4277,6 +4309,11 @@ resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.42.tgz#2f021733232c2130c26f9eabbdd3bfd881774733" integrity sha512-aI3/oo5DzyiI5R/xAhxxRzfZlWlsbbqdgxfTPkqu/Zt+23GXiJvMCyPJT4+xKSXOnLqoL8jJYMLTwvK2M3a5hw== +"@types/node@^14.14.31": + version "14.18.31" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.18.31.tgz#4b873dea3122e71af4f77e65ec5841397ff254d3" + integrity sha512-vQAnaReSQkEDa8uwAyQby8bYGKu84R/deEc6mg5T8fX6gzCn8QW6rziSgsti1fNvsrswKUKPnVTi7uoB+u62Mw== + "@types/node@^15.6.1": version "15.14.9" resolved "https://registry.yarnpkg.com/@types/node/-/node-15.14.9.tgz#bc43c990c3c9be7281868bbc7b8fdd6e2b57adfa" @@ -4443,11 +4480,16 @@ dependencies: "@types/sinonjs__fake-timers" "*" -"@types/sinonjs__fake-timers@*": +"@types/sinonjs__fake-timers@*", "@types/sinonjs__fake-timers@8.1.1": version "8.1.1" resolved "https://registry.yarnpkg.com/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.1.tgz#b49c2c70150141a15e0fa7e79cf1f92a72934ce3" integrity sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g== +"@types/sizzle@^2.3.2": + version "2.3.3" + resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.3.tgz#ff5e2f1902969d305225a047c8a0fd5c915cebef" + integrity sha512-JYM8x9EGF163bEyhdJBpR2QX1R5naCJHC8ucJylJ3w9/CVBaskdQ8WqBf8MmQrd1kRvp/a4TS8HJ+bxzR7ZJYQ== + "@types/sockjs@^0.3.33": version "0.3.33" resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f" @@ -4533,6 +4575,13 @@ dependencies: "@types/yargs-parser" "*" +"@types/yauzl@^2.9.1": + version "2.10.0" + resolved "https://registry.yarnpkg.com/@types/yauzl/-/yauzl-2.10.0.tgz#b3248295276cf8c6f153ebe6a9aba0c988cb2599" + integrity sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw== + dependencies: + "@types/node" "*" + "@types/yup@0.29.11": version "0.29.11" resolved "https://registry.yarnpkg.com/@types/yup/-/yup-0.29.11.tgz#d654a112973f5e004bf8438122bd7e56a8e5cd7e" @@ -5194,6 +5243,11 @@ ansi-align@^3.0.0: dependencies: string-width "^4.1.0" +ansi-colors@^4.1.1: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + ansi-escapes@^3.1.0: version "3.2.0" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" @@ -5278,6 +5332,11 @@ aproba@^1.0.3: resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.0.0.tgz#52520b8ae5b569215b354efc0caa3fe1e45a8adc" integrity sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ== +arch@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/arch/-/arch-2.2.0.tgz#1bc47818f305764f23ab3306b0bfc086c5a29d11" + integrity sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ== + are-we-there-yet@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz#372e0e7bd279d8e94c653aaa1f67200884bf3e1c" @@ -5471,6 +5530,11 @@ async@^2.6.2: dependencies: lodash "^4.17.14" +async@^3.2.0: + version "3.2.4" + resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c" + integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ== + async@^3.2.3: version "3.2.3" resolved "https://registry.yarnpkg.com/async/-/async-3.2.3.tgz#ac53dafd3f4720ee9e8a160628f18ea91df196c9" @@ -5891,7 +5955,12 @@ bl@^4.0.3, bl@^4.1.0: inherits "^2.0.4" readable-stream "^3.4.0" -bluebird@^3.5.5: +blob-util@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/blob-util/-/blob-util-2.0.2.tgz#3b4e3c281111bb7f11128518006cdc60b403a1eb" + integrity sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ== + +bluebird@^3.5.5, bluebird@^3.7.2: version "3.7.2" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== @@ -6040,6 +6109,11 @@ btoa-lite@^1.0.0: resolved "https://registry.yarnpkg.com/btoa-lite/-/btoa-lite-1.0.0.tgz#337766da15801210fdd956c22e9c6891ab9d0337" integrity sha1-M3dm2hWAEhD92VbCLpxokaudAzc= +buffer-crc32@~0.2.3: + version "0.2.13" + resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" + integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ== + 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" @@ -6069,7 +6143,7 @@ buffer@4.9.2: ieee754 "^1.1.4" isarray "^1.0.0" -buffer@^5.5.0: +buffer@^5.5.0, buffer@^5.6.0: version "5.7.1" resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== @@ -6197,6 +6271,11 @@ cacheable-request@^7.0.2: normalize-url "^6.0.1" responselike "^2.0.0" +cachedir@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cachedir/-/cachedir-2.3.0.tgz#0c75892a052198f0b21c7c1804d8331edfcae0e8" + integrity sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw== + 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" @@ -6341,6 +6420,11 @@ charenc@0.0.2: resolved "https://registry.yarnpkg.com/charenc/-/charenc-0.0.2.tgz#c0a1d2f3a7092e03774bfa83f14c0fc5790a8667" integrity sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc= +check-more-types@^2.24.0: + version "2.24.0" + resolved "https://registry.yarnpkg.com/check-more-types/-/check-more-types-2.24.0.tgz#1420ffb10fd444dcfc79b43891bbfffd32a84600" + integrity sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA== + check-types@^11.1.1: version "11.1.2" resolved "https://registry.yarnpkg.com/check-types/-/check-types-11.1.2.tgz#86a7c12bf5539f6324eb0e70ca8896c0e38f3e2f" @@ -6461,6 +6545,15 @@ cli-spinners@^2.5.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.1.tgz#adc954ebe281c37a6319bfa401e6dd2488ffb70d" integrity sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g== +cli-table3@~0.6.1: + version "0.6.3" + resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2" + integrity sha512-w5Jac5SykAeZJKntOxJCrm63Eg5/4dhMWIcuTbo9rpE+brgaSZo0RuNJZeOyMgsUdhDeojvgyQLmjI+K50ZGyg== + dependencies: + string-width "^4.2.0" + optionalDependencies: + "@colors/colors" "1.5.0" + cli-table@^0.3.1: version "0.3.11" resolved "https://registry.yarnpkg.com/cli-table/-/cli-table-0.3.11.tgz#ac69cdecbe81dccdba4889b9a18b7da312a9d3ee" @@ -6643,6 +6736,11 @@ colorette@2.0.16, colorette@^2.0.10: resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.16.tgz#713b9af84fdb000139f04546bd4a93f62a5085da" integrity sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g== +colorette@^2.0.16: + version "2.0.19" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798" + integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ== + colors@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/colors/-/colors-1.0.3.tgz#0433f44d809680fdeb60ed260f1b0c262e82a40b" @@ -6686,6 +6784,11 @@ commander@^2.20.0: resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + commander@^7.1.0, commander@^7.2.0: version "7.2.0" resolved "https://registry.yarnpkg.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7" @@ -7342,6 +7445,54 @@ currently-unhandled@^0.4.1: dependencies: array-find-index "^1.0.1" +cypress@^10.9.0: + version "10.9.0" + resolved "https://registry.yarnpkg.com/cypress/-/cypress-10.9.0.tgz#273a61a6304766f9d6423e5ac8d4a9a11ed8b485" + integrity sha512-MjIWrRpc+bQM9U4kSSdATZWZ2hUqHGFEQTF7dfeZRa4MnalMtc88FIE49USWP2ZVtfy5WPBcgfBX+YorFqGElA== + dependencies: + "@cypress/request" "^2.88.10" + "@cypress/xvfb" "^1.2.4" + "@types/node" "^14.14.31" + "@types/sinonjs__fake-timers" "8.1.1" + "@types/sizzle" "^2.3.2" + arch "^2.2.0" + blob-util "^2.0.2" + bluebird "^3.7.2" + buffer "^5.6.0" + cachedir "^2.3.0" + chalk "^4.1.0" + check-more-types "^2.24.0" + cli-cursor "^3.1.0" + cli-table3 "~0.6.1" + commander "^5.1.0" + common-tags "^1.8.0" + dayjs "^1.10.4" + debug "^4.3.2" + enquirer "^2.3.6" + eventemitter2 "6.4.7" + execa "4.1.0" + executable "^4.1.1" + extract-zip "2.0.1" + figures "^3.2.0" + fs-extra "^9.1.0" + getos "^3.2.1" + is-ci "^3.0.0" + is-installed-globally "~0.4.0" + lazy-ass "^1.6.0" + listr2 "^3.8.3" + lodash "^4.17.21" + log-symbols "^4.0.0" + minimist "^1.2.6" + ospath "^1.2.2" + pretty-bytes "^5.6.0" + proxy-from-env "1.0.0" + request-progress "^3.0.0" + semver "^7.3.2" + supports-color "^8.1.1" + tmp "~0.2.1" + untildify "^4.0.0" + yauzl "^2.10.0" + damerau-levenshtein@^1.0.7: version "1.0.8" resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" @@ -7395,6 +7546,11 @@ dateformat@^4.5.0, dateformat@^4.5.1: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-4.6.3.tgz#556fa6497e5217fedb78821424f8a1c22fa3f4b5" integrity sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA== +dayjs@^1.10.4: + version "1.11.5" + resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.11.5.tgz#00e8cc627f231f9499c19b38af49f56dc0ac5e93" + integrity sha512-CAdX5Q3YW3Gclyo5Vpqkgpj8fSdLQcRuzfX6mC6Phy0nfJ0eGYOeS7m4mt2plDWLAtA4TqTakvbboHvUxfe4iA== + dayjs@^1.8.29: version "1.10.7" resolved "https://registry.yarnpkg.com/dayjs/-/dayjs-1.10.7.tgz#2cf5f91add28116748440866a0a1d26f3a6ce468" @@ -7978,6 +8134,13 @@ enhanced-resolve@^5.8.3: graceful-fs "^4.2.4" tapable "^2.2.0" +enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + entities@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" @@ -8716,6 +8879,11 @@ event-target-shim@^5.0.0: 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== +eventemitter2@6.4.7: + version "6.4.7" + resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.7.tgz#a7f6c4d7abf28a14c1ef3442f21cb306a054271d" + integrity sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg== + eventemitter3@^3.1.0: version "3.1.2" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-3.1.2.tgz#2d3d48f9c346698fce83a85d7d664e98535df6e7" @@ -8736,20 +8904,7 @@ events@^3.2.0: resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== -execa@^0.10.0: - version "0.10.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" - integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== - dependencies: - cross-spawn "^6.0.0" - get-stream "^3.0.0" - is-stream "^1.1.0" - npm-run-path "^2.0.0" - p-finally "^1.0.0" - signal-exit "^3.0.0" - strip-eof "^1.0.0" - -execa@^4.1.0: +execa@4.1.0, execa@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== @@ -8764,6 +8919,19 @@ execa@^4.1.0: signal-exit "^3.0.2" strip-final-newline "^2.0.0" +execa@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.10.0.tgz#ff456a8f53f90f8eccc71a96d11bdfc7f082cb50" + integrity sha512-7XOMnz8Ynx1gGo/3hyV9loYNPWM94jG3+3T3Y8tsfSstFmETmENCMU/A/zj8Lyaj1lkgEepKepvd6240tBRvlw== + dependencies: + cross-spawn "^6.0.0" + get-stream "^3.0.0" + is-stream "^1.1.0" + npm-run-path "^2.0.0" + p-finally "^1.0.0" + signal-exit "^3.0.0" + strip-eof "^1.0.0" + execa@^5.0.0: version "5.1.1" resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" @@ -8779,6 +8947,13 @@ execa@^5.0.0: signal-exit "^3.0.3" strip-final-newline "^2.0.0" +executable@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/executable/-/executable-4.1.1.tgz#41532bff361d3e57af4d763b70582db18f5d133c" + integrity sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg== + dependencies: + pify "^2.2.0" + exit@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" @@ -8926,6 +9101,17 @@ external-editor@^3.0.3: iconv-lite "^0.4.24" tmp "^0.0.33" +extract-zip@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extract-zip/-/extract-zip-2.0.1.tgz#663dca56fe46df890d5f131ef4a06d22bb8ba13a" + integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg== + dependencies: + debug "^4.1.1" + get-stream "^5.1.0" + yauzl "^2.10.0" + optionalDependencies: + "@types/yauzl" "^2.9.1" + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -9029,6 +9215,13 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fd-slicer@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" + integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g== + dependencies: + pend "~1.2.0" + fecha@^4.2.0: version "4.2.1" resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.1.tgz#0a83ad8f86ef62a091e22bb5a039cd03d23eecce" @@ -9542,6 +9735,13 @@ getopts@2.2.5: resolved "https://registry.yarnpkg.com/getopts/-/getopts-2.2.5.tgz#67a0fe471cacb9c687d817cab6450b96dde8313b" integrity sha512-9jb7AW5p3in+IiJWhQiZmmwkpLaR/ccTWdWQCtZM66HJcHHLegowh4q4tSD7gouUyeNvFWRavfK9GXosQHDpFA== +getos@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/getos/-/getos-3.2.1.tgz#0134d1f4e00eb46144c5a9c0ac4dc087cbb27dc5" + integrity sha512-U56CfOK17OKgTVqozZjUKNdkfEv6jk5WISBJ8SHoagjE6L69zOwl3Z+O8myjY9MEW3i2HPWQBt/LTbCgcC973Q== + dependencies: + async "^3.2.0" + getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -10163,6 +10363,15 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" +http-signature@~1.3.6: + version "1.3.6" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.3.6.tgz#cb6fbfdf86d1c974f343be94e87f7fc128662cf9" + integrity sha512-3adrsD6zqo4GsTqtO7FyrejHNv+NgiIfAfv68+jVlFmSr9OGy7zrxONceFRLKvnnZA5jbxQBX1u9PpB6Wi32Gw== + dependencies: + assert-plus "^1.0.0" + jsprim "^2.0.2" + sshpk "^1.14.1" + http2-wrapper@^1.0.0-beta.5.2: version "1.0.3" resolved "https://registry.yarnpkg.com/http2-wrapper/-/http2-wrapper-1.0.3.tgz#b8f55e0c1f25d4ebd08b3b0c2c079f9590800b3d" @@ -10541,6 +10750,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-ci@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-3.0.1.tgz#db6ecbed1bd659c43dac0f45661e7674103d1867" + integrity sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ== + dependencies: + ci-info "^3.2.0" + is-core-module@^2.2.0, is-core-module@^2.5.0, is-core-module@^2.8.0, is-core-module@^2.8.1: version "2.8.1" resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.8.1.tgz#f59fdfca701d5879d0a6b100a40aa1560ce27211" @@ -10616,7 +10832,7 @@ is-hotkey@^0.1.6: resolved "https://registry.yarnpkg.com/is-hotkey/-/is-hotkey-0.1.8.tgz#6b1f4b2d0e5639934e20c05ed24d623a21d36d25" integrity sha512-qs3NZ1INIS+H+yeo7cD9pDfwYV/jqRh1JG9S9zYrNudkoUQg7OL7ziXqRKu+InFjUIDoP2o6HIkLYMh1pcWgyQ== -is-installed-globally@^0.4.0: +is-installed-globally@^0.4.0, is-installed-globally@~0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/is-installed-globally/-/is-installed-globally-0.4.0.tgz#9a0fd407949c30f86eb6959ef1b7994ed0b7b520" integrity sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ== @@ -11610,6 +11826,16 @@ jsprim@^1.2.2: json-schema "0.4.0" verror "1.10.0" +jsprim@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-2.0.2.tgz#77ca23dbcd4135cd364800d22ff82c2185803d4d" + integrity sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + "jsx-ast-utils@^2.4.1 || ^3.0.0", jsx-ast-utils@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/jsx-ast-utils/-/jsx-ast-utils-3.2.1.tgz#720b97bfe7d901b927d87c3773637ae8ea48781b" @@ -11740,6 +11966,11 @@ latest-version@^5.1.0: dependencies: package-json "^6.3.0" +lazy-ass@^1.6.0: + version "1.6.0" + resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" + integrity sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw== + lerna@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/lerna/-/lerna-4.0.0.tgz#b139d685d50ea0ca1be87713a7c2f44a5b678e9e" @@ -11826,6 +12057,20 @@ lines-and-columns@^1.1.6: resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== +listr2@^3.8.3: + version "3.14.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.14.0.tgz#23101cc62e1375fd5836b248276d1d2b51fdbe9e" + integrity sha512-TyWI8G99GX9GjE54cJ+RrNMcIFBfwMPxc3XTFiAYGN4s10hWROGtOg7+O6u6LE3mNkyld7RSLE6nrKBvTfcs3g== + dependencies: + cli-truncate "^2.1.0" + colorette "^2.0.16" + log-update "^4.0.0" + p-map "^4.0.0" + rfdc "^1.3.0" + rxjs "^7.5.1" + through "^2.3.8" + wrap-ansi "^7.0.0" + load-json-file@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" @@ -12020,7 +12265,7 @@ lodash.merge@^4.6.2: resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -lodash.once@^4.0.0: +lodash.once@^4.0.0, lodash.once@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/lodash.once/-/lodash.once-4.1.1.tgz#0dd3971213c7c56df880977d504c88fb471a97ac" integrity sha1-DdOXEhPHxW34gJd9UEyI+0cal6w= @@ -12068,6 +12313,16 @@ log-symbols@^4.0.0, log-symbols@^4.1.0: chalk "^4.1.0" is-unicode-supported "^0.1.0" +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + logform@^2.3.2: version "2.3.2" resolved "https://registry.yarnpkg.com/logform/-/logform-2.3.2.tgz#68babe6a74ab09a1fd15a9b1e6cbc7713d41cb5b" @@ -12487,7 +12742,7 @@ minimist-options@4.1.0: is-plain-obj "^1.1.0" kind-of "^6.0.3" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.3, minimist@^1.2.5, minimist@^1.2.6: version "1.2.6" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== @@ -13462,6 +13717,11 @@ osenv@^0.1.4: os-homedir "^1.0.0" os-tmpdir "^1.0.0" +ospath@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/ospath/-/ospath-1.2.2.tgz#1276639774a3f8ef2572f7fe4280e0ea4550c07b" + integrity sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA== + ow@^0.27.0: version "0.27.0" resolved "https://registry.yarnpkg.com/ow/-/ow-0.27.0.tgz#d44da088e8184fa11de64b5813206f9f86ab68d0" @@ -13852,6 +14112,11 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pend@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" + integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -13923,7 +14188,7 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.2, picomatch@^2.2.3: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== -pify@^2.3.0: +pify@^2.2.0, pify@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= @@ -14659,7 +14924,7 @@ prettier@^2.5.1: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.5.1.tgz#fff75fa9d519c54cf0fce328c1017d94546bc56a" integrity sha512-vBZcPRUR5MZJwoyi3ZoyQlc1rXeEck8KgeC9AwwOn+exuxLxq5toTRDTSaVrXHxelDMHy9zlicw8u66yxoSUFg== -pretty-bytes@^5.3.0, pretty-bytes@^5.4.1: +pretty-bytes@^5.3.0, pretty-bytes@^5.4.1, pretty-bytes@^5.6.0: version "5.6.0" resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== @@ -14812,6 +15077,11 @@ proxy-addr@~2.0.4, proxy-addr@~2.0.7: forwarded "0.2.0" ipaddr.js "1.9.1" +proxy-from-env@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/proxy-from-env/-/proxy-from-env-1.0.0.tgz#33c50398f70ea7eb96d21f7b817630a55791c7ee" + integrity sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A== + psl@^1.1.28, psl@^1.1.33: version "1.8.0" resolved "https://registry.yarnpkg.com/psl/-/psl-1.8.0.tgz#9326f8bcfb013adcc005fdff056acce020e51c24" @@ -15566,6 +15836,13 @@ replace-ext@^1.0.0: resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== +request-progress@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/request-progress/-/request-progress-3.0.0.tgz#4ca754081c7fec63f505e4faa825aa06cd669dbe" + integrity sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg== + dependencies: + throttleit "^1.0.0" + request@^2.88.0, request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" @@ -15796,6 +16073,13 @@ rxjs@^7.2.0: dependencies: tslib "^2.1.0" +rxjs@^7.5.1: + version "7.5.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.7.tgz#2ec0d57fdc89ece220d2e702730ae8f1e49def39" + integrity sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA== + dependencies: + tslib "^2.1.0" + safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: version "5.1.2" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" @@ -16227,6 +16511,15 @@ slice-ansi@^3.0.0: astral-regex "^2.0.0" is-fullwidth-code-point "^3.0.0" +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + slide@^1.1.6: version "1.1.6" resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" @@ -16451,7 +16744,7 @@ sprintf-js@~1.0.2: resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= -sshpk@^1.7.0: +sshpk@^1.14.1, sshpk@^1.7.0: version "1.17.0" resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.17.0.tgz#578082d92d4fe612b13007496e543fa0fbcbe4c5" integrity sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ== @@ -17071,6 +17364,11 @@ throat@^6.0.1: resolved "https://registry.yarnpkg.com/throat/-/throat-6.0.1.tgz#d514fedad95740c12c2d7fc70ea863eb51ade375" integrity sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w== +throttleit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/throttleit/-/throttleit-1.0.0.tgz#9e785836daf46743145a5984b6268d828528ac6c" + integrity sha512-rkTVqu6IjfQ/6+uNuuc3sZek4CEYxTJom3IktzgdSxcZqdARuebbA/f4QmAxMQIxqq9ZLEUkSYqvuk1I6VKq4g== + through2@^2.0.0, through2@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" @@ -17086,7 +17384,7 @@ through2@^4.0.0: dependencies: readable-stream "3" -through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6: +through@2, "through@>=2.2.7 <3", through@^2.3.4, through@^2.3.6, through@^2.3.8: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= @@ -17135,6 +17433,13 @@ tmp@^0.1.0: dependencies: rimraf "^2.6.3" +tmp@~0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + tmpl@1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" @@ -18376,6 +18681,15 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -18569,6 +18883,14 @@ yarn@^1.22.17: resolved "https://registry.yarnpkg.com/yarn/-/yarn-1.22.17.tgz#bf910747d22497b573131f7341c0e1d15c74036c" integrity sha512-H0p241BXaH0UN9IeH//RT82tl5PfNraVpSpEoW+ET7lmopNC61eZ+A+IDvU8FM6Go5vx162SncDL8J1ZjRBriQ== +yauzl@^2.10.0: + version "2.10.0" + resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.10.0.tgz#c7eb17c93e112cb1086fa6d8e51fb0667b79a5f9" + integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g== + dependencies: + buffer-crc32 "~0.2.3" + fd-slicer "~1.1.0" + yeoman-environment@^3.9.1: version "3.9.1" resolved "https://registry.yarnpkg.com/yeoman-environment/-/yeoman-environment-3.9.1.tgz#21912bdee4b1d302a5c25a7d31338fa092ea7116" From e47c54b33695f5021cb881e0f711f346769d5808 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:57:23 +0200 Subject: [PATCH 04/28] chore: add major data-test attributes --- .../components/AccountDropdownMenu/index.tsx | 1 + .../src/components/AddAppConnection/index.tsx | 3 ++- .../components/AddNewAppConnection/index.tsx | 3 ++- packages/web/src/components/AppBar/index.tsx | 1 + .../src/components/AppConnectionRow/index.tsx | 2 +- packages/web/src/components/AppRow/index.tsx | 2 +- .../ChooseAppAndEventSubstep/index.tsx | 3 +++ .../ChooseConnectionSubstep/index.tsx | 3 ++- .../ControlledAutocomplete/index.tsx | 1 + packages/web/src/components/Drawer/index.tsx | 4 +++- .../web/src/components/EditorLayout/index.tsx | 18 +++++++++++++++--- .../web/src/components/ExecutionRow/index.tsx | 2 +- .../web/src/components/ExecutionStep/index.tsx | 8 ++++---- packages/web/src/components/FlowStep/index.tsx | 2 +- .../web/src/components/FlowSubstep/index.tsx | 1 + packages/web/src/components/Layout/index.tsx | 3 +++ .../web/src/components/ListItemLink/index.tsx | 4 +++- .../web/src/components/LoginForm/index.tsx | 3 +++ .../src/components/PowerInput/Suggestions.tsx | 3 +++ .../web/src/components/PowerInput/index.tsx | 2 +- .../web/src/components/TestSubstep/index.tsx | 3 ++- packages/web/src/pages/Application/index.tsx | 1 + packages/web/src/pages/Applications/index.tsx | 3 ++- packages/web/src/pages/Executions/index.tsx | 2 +- packages/web/src/pages/Flows/index.tsx | 1 + 25 files changed, 59 insertions(+), 20 deletions(-) diff --git a/packages/web/src/components/AccountDropdownMenu/index.tsx b/packages/web/src/components/AccountDropdownMenu/index.tsx index 31ee564e..4f2dbbf7 100644 --- a/packages/web/src/components/AccountDropdownMenu/index.tsx +++ b/packages/web/src/components/AccountDropdownMenu/index.tsx @@ -62,6 +62,7 @@ function AccountDropdownMenu(props: AccountDropdownMenuProps): React.ReactElemen {formatMessage('accountDropdownMenu.logout')} diff --git a/packages/web/src/components/AddAppConnection/index.tsx b/packages/web/src/components/AddAppConnection/index.tsx index 3759514b..193bcde9 100644 --- a/packages/web/src/components/AddAppConnection/index.tsx +++ b/packages/web/src/components/AddAppConnection/index.tsx @@ -84,7 +84,7 @@ export default function AddAppConnection(props: AddAppConnectionProps): React.Re }, [connectionId, key, steps, onClose]); return ( - + {hasConnection ? formatMessage('app.reconnectConnection') : formatMessage('app.addConnection')} @@ -114,6 +114,7 @@ export default function AddAppConnection(props: AddAppConnectionProps): React.Re color="primary" sx={{ boxShadow: 2 }} loading={inProgress} + data-test="create-connection-button" > {formatMessage('addAppConnection.submit')} diff --git a/packages/web/src/components/AddNewAppConnection/index.tsx b/packages/web/src/components/AddNewAppConnection/index.tsx index 7bc02166..b14745b9 100644 --- a/packages/web/src/components/AddNewAppConnection/index.tsx +++ b/packages/web/src/components/AddNewAppConnection/index.tsx @@ -95,6 +95,7 @@ export default function AddNewAppConnection(props: AddNewAppConnectionProps): Re } label={formatMessage('apps.searchApp')} + data-test="search-for-app-text-field" /> @@ -102,7 +103,7 @@ export default function AddNewAppConnection(props: AddNewAppConnectionProps): Re {loading && } {!loading && data?.getApps?.map((app: IApp) => ( - + diff --git a/packages/web/src/components/AppBar/index.tsx b/packages/web/src/components/AppBar/index.tsx index d248b672..b168b645 100644 --- a/packages/web/src/components/AppBar/index.tsx +++ b/packages/web/src/components/AppBar/index.tsx @@ -82,6 +82,7 @@ export default function AppBar(props: AppBarProps): React.ReactElement { onClick={handleAccountMenuOpen} aria-controls={accountMenuId} aria-label="open profile menu" + data-test="profile-menu-button" > diff --git a/packages/web/src/components/AppConnectionRow/index.tsx b/packages/web/src/components/AppConnectionRow/index.tsx index b85a2328..55a82904 100644 --- a/packages/web/src/components/AppConnectionRow/index.tsx +++ b/packages/web/src/components/AppConnectionRow/index.tsx @@ -79,7 +79,7 @@ function AppConnectionRow(props: AppConnectionRowProps): React.ReactElement { return ( <> - + + diff --git a/packages/web/src/components/ChooseAppAndEventSubstep/index.tsx b/packages/web/src/components/ChooseAppAndEventSubstep/index.tsx index 396d4b78..3b53c52e 100644 --- a/packages/web/src/components/ChooseAppAndEventSubstep/index.tsx +++ b/packages/web/src/components/ChooseAppAndEventSubstep/index.tsx @@ -152,6 +152,7 @@ function ChooseAppAndEventSubstep( )} value={getOption(appOptions, step.appKey)} onChange={onAppChange} + data-test="choose-app-autocomplete" /> {step.appKey && ( @@ -175,6 +176,7 @@ function ChooseAppAndEventSubstep( )} value={getOption(actionOptions, step.key)} onChange={onEventChange} + data-test="choose-event-autocomplete" /> )} @@ -197,6 +199,7 @@ function ChooseAppAndEventSubstep( onClick={onSubmit} sx={{ mt: 2 }} disabled={!valid || editorContext.readOnly} + data-test="flow-substep-continue-button" > Continue diff --git a/packages/web/src/components/ChooseConnectionSubstep/index.tsx b/packages/web/src/components/ChooseConnectionSubstep/index.tsx index 9fdeaec8..f99e51bc 100644 --- a/packages/web/src/components/ChooseConnectionSubstep/index.tsx +++ b/packages/web/src/components/ChooseConnectionSubstep/index.tsx @@ -126,6 +126,7 @@ function ChooseConnectionSubstep(props: ChooseConnectionSubstepProps): React.Rea value={getOption(connectionOptions, connection?.id)} onChange={handleChange} loading={loading} + data-test="choose-connection-autocomplete" /> diff --git a/packages/web/src/components/ControlledAutocomplete/index.tsx b/packages/web/src/components/ControlledAutocomplete/index.tsx index 118575ef..f7ab33f6 100644 --- a/packages/web/src/components/ControlledAutocomplete/index.tsx +++ b/packages/web/src/components/ControlledAutocomplete/index.tsx @@ -55,6 +55,7 @@ function ControlledAutocomplete(props: ControlledAutocompleteProps): React.React }} onBlur={(...args) => { controllerOnBlur(); onBlur?.(...args); }} ref={ref} + data-test={`${name}-autocomplete`} /> - {links.map(({ Icon, primary, to }, index) => ( + {links.map(({ Icon, primary, to, dataTest }, index) => ( } primary={formatMessage(primary)} to={to} onClick={closeOnClick} + data-test={dataTest} /> ))} diff --git a/packages/web/src/components/EditorLayout/index.tsx b/packages/web/src/components/EditorLayout/index.tsx index 4103fe05..6ddacb9a 100644 --- a/packages/web/src/components/EditorLayout/index.tsx +++ b/packages/web/src/components/EditorLayout/index.tsx @@ -74,6 +74,7 @@ export default function EditorLayout(): React.ReactElement { size="small" component={Link} to={URLS.FLOWS} + data-test="editor-go-back-button" > @@ -92,7 +93,12 @@ export default function EditorLayout(): React.ReactElement { - @@ -108,13 +114,19 @@ export default function EditorLayout(): React.ReactElement { onFlowStatusUpdate(!flow.active)}> - {flow?.active ? formatMessage('flowEditor.unpublish') : formatMessage('flowEditor.publish')} + )} /> diff --git a/packages/web/src/components/ExecutionRow/index.tsx b/packages/web/src/components/ExecutionRow/index.tsx index a949de12..f9a133f3 100644 --- a/packages/web/src/components/ExecutionRow/index.tsx +++ b/packages/web/src/components/ExecutionRow/index.tsx @@ -25,7 +25,7 @@ export default function ExecutionRow(props: ExecutionRowProps): React.ReactEleme const relativeCreatedAt = createdAt.toRelative(); return ( - + diff --git a/packages/web/src/components/ExecutionStep/index.tsx b/packages/web/src/components/ExecutionStep/index.tsx index abddaa23..026b4693 100644 --- a/packages/web/src/components/ExecutionStep/index.tsx +++ b/packages/web/src/components/ExecutionStep/index.tsx @@ -41,7 +41,7 @@ export default function ExecutionStep(props: ExecutionStepProps): React.ReactEle const validationStatusIcon = executionStep.status === 'success' ? validIcon : errorIcon; return ( - +
@@ -71,9 +71,9 @@ export default function ExecutionStep(props: ExecutionStepProps): React.ReactEle setActiveTabIndex(tabIndex)}> - - - + + + diff --git a/packages/web/src/components/FlowStep/index.tsx b/packages/web/src/components/FlowStep/index.tsx index 17c4bbb7..0910378a 100644 --- a/packages/web/src/components/FlowStep/index.tsx +++ b/packages/web/src/components/FlowStep/index.tsx @@ -182,7 +182,7 @@ export default function FlowStep( step.status === 'completed' ? validIcon : errorIcon; return ( - +
diff --git a/packages/web/src/components/FlowSubstep/index.tsx b/packages/web/src/components/FlowSubstep/index.tsx index a3d3ec90..b4d9b404 100644 --- a/packages/web/src/components/FlowSubstep/index.tsx +++ b/packages/web/src/components/FlowSubstep/index.tsx @@ -100,6 +100,7 @@ function FlowSubstep(props: FlowSubstepProps): React.ReactElement { sx={{ mt: 2 }} disabled={!validationStatus || editorContext.readOnly} type="submit" + data-test="flow-substep-continue-button" > Continue diff --git a/packages/web/src/components/Layout/index.tsx b/packages/web/src/components/Layout/index.tsx index a04271e5..b89beaef 100644 --- a/packages/web/src/components/Layout/index.tsx +++ b/packages/web/src/components/Layout/index.tsx @@ -22,16 +22,19 @@ const drawerLinks = [ Icon: SwapCallsIcon, primary: 'drawer.flows', to: URLS.FLOWS, + dataTest: 'flows-page-drawer-link', }, { Icon: AppsIcon, primary: 'drawer.apps', to: URLS.APPS, + dataTest: 'apps-page-drawer-link', }, { Icon: HistoryIcon, primary: 'drawer.executions', to: URLS.EXECUTIONS, + dataTest: 'executions-page-drawer-link', }, ]; diff --git a/packages/web/src/components/ListItemLink/index.tsx b/packages/web/src/components/ListItemLink/index.tsx index 6f001c8e..5d4b7aca 100644 --- a/packages/web/src/components/ListItemLink/index.tsx +++ b/packages/web/src/components/ListItemLink/index.tsx @@ -10,10 +10,11 @@ type ListItemLinkProps = { primary: string; to: string; onClick?: (event: React.SyntheticEvent) => void; + 'data-test'?: string; } export default function ListItemLink(props: ListItemLinkProps): React.ReactElement { - const { icon, primary, to, onClick } = props; + const { icon, primary, to, onClick, 'data-test': dataTest } = props; const selected = useMatch({ path: to, end: true }); const CustomLink = React.useMemo( @@ -34,6 +35,7 @@ export default function ListItemLink(props: ListItemLinkProps): React.ReactEleme sx={{ pl: { xs: 2, sm: 3 } }} selected={!!selected} onClick={onClick} + data-test={dataTest} > {icon} diff --git a/packages/web/src/components/LoginForm/index.tsx b/packages/web/src/components/LoginForm/index.tsx index 38e91923..e9c0004d 100644 --- a/packages/web/src/components/LoginForm/index.tsx +++ b/packages/web/src/components/LoginForm/index.tsx @@ -25,6 +25,7 @@ function renderFields(props: { loading: boolean }) { fullWidth margin="dense" autoComplete="username" + data-test="email-text-field" /> Login diff --git a/packages/web/src/components/PowerInput/Suggestions.tsx b/packages/web/src/components/PowerInput/Suggestions.tsx index 6c06d514..2425852d 100644 --- a/packages/web/src/components/PowerInput/Suggestions.tsx +++ b/packages/web/src/components/PowerInput/Suggestions.tsx @@ -71,6 +71,7 @@ const Suggestions = (props: SuggestionsProps) => { component="div" disablePadding sx={{ maxHeight: LIST_HEIGHT, overflowY: 'auto' }} + data-test="power-input-suggestion-group" > {getPartialArray((option.output as any) || [], listLength).map( (suboption: any, index: number) => ( @@ -78,6 +79,8 @@ const Suggestions = (props: SuggestionsProps) => { sx={{ pl: 4 }} divider onClick={() => onSuggestionClick(suboption)} + data-test="power-input-suggestion-item" + key={`suggestion-${suboption.name}`} > { onClickAway={() => { setShowVariableSuggestions(false); }} > {/* ref-able single child for ClickAwayListener */} -
+
+ )} @@ -119,6 +119,7 @@ function TestSubstep(props: TestSubstepProps): React.ReactElement { loading={loading} disabled={editorContext.readOnly} color="primary" + data-test="flow-substep-continue-button" > {isCompleted && formatMessage('flowEditor.continue')} {!isCompleted && formatMessage('flowEditor.testAndContinue')} diff --git a/packages/web/src/pages/Application/index.tsx b/packages/web/src/pages/Application/index.tsx index 5b75c671..055d1afc 100644 --- a/packages/web/src/pages/Application/index.tsx +++ b/packages/web/src/pages/Application/index.tsx @@ -126,6 +126,7 @@ export default function Application(): React.ReactElement | null { component={NewConnectionLink} fullWidth icon={} + data-test="add-connection-button" > {formatMessage('app.addConnection')} diff --git a/packages/web/src/pages/Applications/index.tsx b/packages/web/src/pages/Applications/index.tsx index 0450111c..8bd47d7d 100644 --- a/packages/web/src/pages/Applications/index.tsx +++ b/packages/web/src/pages/Applications/index.tsx @@ -69,6 +69,7 @@ export default function Applications(): React.ReactElement { component={NewAppConnectionLink} fullWidth icon={} + data-test="add-connection-button" > {formatMessage('apps.addConnection')} @@ -77,7 +78,7 @@ export default function Applications(): React.ReactElement { - {loading && } + {loading && } {!loading && !hasApps && ( - {loading && } + {loading && } {!loading && !hasExecutions && (} + data-test="create-flow-button" > {formatMessage('flows.create')} From f0d3db6f9a75252fc06535b22e0d28583d705c25 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:57:38 +0200 Subject: [PATCH 05/28] test: create flow --- .../cypress/e2e/flow-editor/create-flow.js | 229 ++++++++++++++++++ 1 file changed, 229 insertions(+) create mode 100644 packages/e2e-tests/cypress/e2e/flow-editor/create-flow.js diff --git a/packages/e2e-tests/cypress/e2e/flow-editor/create-flow.js b/packages/e2e-tests/cypress/e2e/flow-editor/create-flow.js new file mode 100644 index 00000000..77d08af9 --- /dev/null +++ b/packages/e2e-tests/cypress/e2e/flow-editor/create-flow.js @@ -0,0 +1,229 @@ +/// + +describe('Flow editor page', () => { + before(() => { + cy.login(); + }); + + after(() => { + cy.logout(); + }); + + it('create flow', () => { + cy.og('create-flow-button').click({ force: true }); + }); + + it('has two steps by default', () => { + cy.og('flow-step').should('have.length', 2); + }); + + context('edit flow', () => { + context('arrange Scheduler trigger', () => { + context('choose app and event substep', () => { + it('choose application', () => { + cy.og('choose-app-autocomplete').click(); + + cy.get('li[role="option"]:contains("Scheduler")').click(); + }); + + it('choose an event', () => { + cy + .og('choose-event-autocomplete') + .should('be.visible') + .click(); + + cy.get('li[role="option"]:contains("Every hour")').click(); + }); + + it('continue to next step', () => { + cy.og('flow-substep-continue-button').click(); + }); + + it('collapses the substep', () => { + cy.og('choose-app-autocomplete').should('not.be.visible'); + cy.og('choose-event-autocomplete').should('not.be.visible'); + }) + }); + + context('set up a trigger', () => { + it('choose "yes" in "trigger on weekends?"', () => { + cy + .og('parameters.triggersOnWeekend-autocomplete') + .should('be.visible') + .click(); + + cy.get('li[role="option"]:contains("Yes")').click(); + }); + + it('continue to next step', () => { + cy.og('flow-substep-continue-button').click(); + }); + + it('collapses the substep', () => { + cy.og('parameters.triggersOnWeekend-autocomplete').should('not.exist'); + }); + }); + + context('test trigger', () => { + it('show sample output', () => { + cy.og('flow-test-substep-output').should('not.exist'); + + cy.og('flow-substep-continue-button').click(); + + cy.og('flow-test-substep-output').should('be.visible'); + + cy.ss('Scheduler trigger test output'); + + cy.og('flow-substep-continue-button').click(); + }); + }); + }); + + context('arrange Slack action', () => { + context('choose app and event substep', () => { + it('choose application', () => { + cy.og('choose-app-autocomplete').click(); + + cy.get('li[role="option"]:contains("Slack")').click(); + }); + + it('choose an event', () => { + cy + .og('choose-event-autocomplete') + .should('be.visible') + .click(); + + cy.get('li[role="option"]:contains("Send a message to channel")').click(); + }); + + it('continue to next step', () => { + cy.og('flow-substep-continue-button').click(); + }); + + it('collapses the substep', () => { + cy.og('choose-app-autocomplete').should('not.be.visible'); + cy.og('choose-event-autocomplete').should('not.be.visible'); + }); + }); + + context('choose connection', () => { + it('choose connection', () => { + cy.og('choose-connection-autocomplete').click(); + + cy.get('li[role="option"]').first().click(); + }); + + it('continue to next step', () => { + cy.og('flow-substep-continue-button').click(); + }); + + it('collapses the substep', () => { + cy.og('choose-connection-autocomplete').should('not.be.visible'); + }); + }); + + context('set up action', () => { + it('choose channel', () => { + cy.og('parameters.channel-autocomplete').click(); + + cy.get('li[role="option"]').last().click(); + }); + + it('arrange message text', () => { + cy + .og('power-input', ' [contenteditable]') + .click() + .type(`Hello from e2e tests! Here is the first suggested variable's value; `); + + cy + .og('power-input-suggestion-group').first() + .og('power-input-suggestion-item').first() + .click(); + + cy.clickOutside(); + + cy.ss('Slack action message text'); + }); + + it('continue to next step', () => { + cy.og('flow-substep-continue-button').click(); + }); + + it('collapses the substep', () => { + cy + .og('power-input', ' [contenteditable]') + .should('not.exist'); + }); + }); + + context('test trigger', () => { + it('show sample output', () => { + cy.og('flow-test-substep-output').should('not.exist'); + + cy.og('flow-substep-continue-button').click(); + + cy.og('flow-test-substep-output').should('be.visible'); + + cy.ss('Slack action test output'); + + cy.og('flow-substep-continue-button').click(); + }); + }); + }); + }); + + context('publish and unpublish', () => { + it('publish flow', () => { + cy.og('unpublish-flow-button').should('not.exist'); + + cy + .og('publish-flow-button') + .should('be.visible') + .click(); + + cy.og('publish-flow-button').should('not.exist'); + }); + + it('shows read-only sticky snackbar', () => { + cy.og('flow-cannot-edit-info-snackbar').should('be.visible'); + + cy.ss('Published flow'); + }); + + it('unpublish from snackbar', () => { + cy + .og('unpublish-flow-from-snackbar') + .click(); + + cy.og('flow-cannot-edit-info-snackbar').should('not.exist'); + }) + + it('publish once again', () => { + cy + .og('publish-flow-button') + .should('be.visible') + .click(); + + cy.og('publish-flow-button').should('not.exist'); + }); + + it('unpublish from layout top bar', () => { + cy + .og('unpublish-flow-button') + .should('be.visible') + .click(); + + cy.og('unpublish-flow-button').should('not.exist'); + + cy.ss('Unpublished flow'); + }); + }); + + context('in layout', () => { + it('can go back to flows page', () => { + cy.og('editor-go-back-button').click(); + + cy.location('pathname').should('equal', '/flows'); + }); + }); +}); From ce40f7d47497fac7c9cd6560e224032e3d0d99dd Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:57:48 +0200 Subject: [PATCH 06/28] test: list apps --- .../e2e-tests/cypress/e2e/apps/list-apps.js | 50 +++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 packages/e2e-tests/cypress/e2e/apps/list-apps.js diff --git a/packages/e2e-tests/cypress/e2e/apps/list-apps.js b/packages/e2e-tests/cypress/e2e/apps/list-apps.js new file mode 100644 index 00000000..d5dfb7b2 --- /dev/null +++ b/packages/e2e-tests/cypress/e2e/apps/list-apps.js @@ -0,0 +1,50 @@ +/// + +describe('Apps page', () => { + before(() => { + cy.login(); + + cy.og('apps-page-drawer-link').click(); + }); + + after(() => { + cy.logout(); + }); + + it('displays applications', () => { + cy.og('apps-loader').should('not.exist'); + cy.og('app-row').should('have.length', 3); + + cy.ss('Applications'); + }); + + context('can add connection', () => { + before(() => { + cy.og('add-connection-button').click(); + }); + + it('lists applications', () => { + cy.og('app-list-item').should('have.length', 3); + }); + + it('searches an application', () => { + cy.og('search-for-app-text-field').type('Slack'); + cy.og('app-list-item').should('have.length', 1); + }); + + it('goes to app page to create a connection', () => { + cy.og('app-list-item').first().click(); + + cy.location('pathname').should('equal', '/app/slack/connections/add'); + + cy.og('add-app-connection-dialog').should('be.visible'); + }); + + it('closes the dialog on backdrop click', () => { + cy.clickOutside(); + + cy.location('pathname').should('equal', '/app/slack/connections'); + cy.og('add-app-connection-dialog').should('not.exist'); + }); + }); +}); \ No newline at end of file From 5838216b72eb71d4ea8d70226c9caf75e2b1fb13 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:57:56 +0200 Subject: [PATCH 07/28] test: create slack connection --- .../e2e/connections/create-connection.js | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 packages/e2e-tests/cypress/e2e/connections/create-connection.js diff --git a/packages/e2e-tests/cypress/e2e/connections/create-connection.js b/packages/e2e-tests/cypress/e2e/connections/create-connection.js new file mode 100644 index 00000000..570dab31 --- /dev/null +++ b/packages/e2e-tests/cypress/e2e/connections/create-connection.js @@ -0,0 +1,52 @@ +/// + +describe('Connections page', () => { + before(() => { + cy.login(); + + cy.og('apps-page-drawer-link').click(); + }); + + after(() => { + cy.logout(); + }); + + it('opens via applications page', () => { + cy.og('apps-loader').should('not.exist'); + + cy.og('app-row').contains('Slack').click(); + + cy.og('app-connection-row').should('be.visible'); + + cy.ss('Slack connections before creating a connection'); + }); + + context('can add connection', () => { + it('has a button to open add connection dialog', () => { + cy + .og('add-connection-button') + .scrollIntoView() + .should('be.visible'); + }); + + it('add connection button takes user to add connection page', () => { + cy + .og('add-connection-button') + .click({ force: true }); + + cy.location('pathname').should('equal', '/app/slack/connections/add'); + }); + + it('shows add connection dialog to create a new connection', () => { + cy + .get('input[name="accessToken"]') + .type(Cypress.env('slack_user_token')); + + cy.og('create-connection-button').click(); + + cy.og('create-connection-button').should('not.exist'); + + cy.ss('Slack connections after creating a connection'); + }); + }); +}); From b1459cbf3bea05e226f2df072cdbcdfab6949706 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:58:06 +0200 Subject: [PATCH 08/28] test: display execution --- .../e2e/executions/display-execution.js | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 packages/e2e-tests/cypress/e2e/executions/display-execution.js diff --git a/packages/e2e-tests/cypress/e2e/executions/display-execution.js b/packages/e2e-tests/cypress/e2e/executions/display-execution.js new file mode 100644 index 00000000..647f97ca --- /dev/null +++ b/packages/e2e-tests/cypress/e2e/executions/display-execution.js @@ -0,0 +1,34 @@ +/// + +describe('Execution page', () => { + before(() => { + cy.login(); + + cy.og('executions-page-drawer-link').click(); + cy.og('execution-row').first().click({ force: true }); + + cy.location('pathname').should('match', /^\/executions\//); + }); + + after(() => { + cy.logout(); + }); + + it('displays data in by default', () => { + cy.og('execution-step').should('have.length', 2); + + cy.ss('Execution - data in'); + }); + + it('displays data out', () => { + cy.og('data-out-tab').click({ multiple: true }); + + cy.ss('Execution - data out'); + }); + + it('displays error', () => { + cy.og('error-tab').click({ multiple: true, force: true }); + + cy.ss('Execution - error'); + }); +}); \ No newline at end of file From 284738ae7d0eceb9f1887fa6091a5ea9fd35c7bf Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:58:12 +0200 Subject: [PATCH 09/28] test: list executions --- .../cypress/e2e/executions/list-executions.js | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 packages/e2e-tests/cypress/e2e/executions/list-executions.js diff --git a/packages/e2e-tests/cypress/e2e/executions/list-executions.js b/packages/e2e-tests/cypress/e2e/executions/list-executions.js new file mode 100644 index 00000000..66fcb026 --- /dev/null +++ b/packages/e2e-tests/cypress/e2e/executions/list-executions.js @@ -0,0 +1,20 @@ +/// + +describe('Executions page', () => { + before(() => { + cy.login(); + + cy.og('executions-page-drawer-link').click(); + }); + + after(() => { + cy.logout(); + }); + + it('displays executions', () => { + cy.og('executions-loader').should('not.exist'); + cy.og('execution-row').should('exist'); + + cy.ss('Executions'); + }); +}); \ No newline at end of file From ff2edeea1753367a32f9c9389e715b7a76fcb765 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sat, 8 Oct 2022 23:58:31 +0200 Subject: [PATCH 10/28] chore(e2e-tests): rename cypress:open with open --- packages/e2e-tests/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index ef15015b..d67c8d12 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -5,7 +5,7 @@ "private": true, "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", "scripts": { - "cypress:open": "cypress open" + "open": "cypress open" }, "dependencies": {}, "contributors": [ @@ -25,4 +25,4 @@ "devDependencies": { "cypress": "^10.9.0" } -} +} \ No newline at end of file From c76491a8b0ddf7fb5a4383509ee5ad951eaa188b Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 00:00:26 +0200 Subject: [PATCH 11/28] chore: ignore cypress screenshots --- .gitignore | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 6a9e978f..ba7f9dc3 100644 --- a/.gitignore +++ b/.gitignore @@ -78,10 +78,10 @@ web_modules/ cypress.env.json # cypress screenshots -cypress/screenshots/ +packages/e2e-tests/cypress/screenshots # cypress videos -cypress/videos/ +packages/e2e-tests/cypress/videos/ # parcel-bundler cache (https://parceljs.org/) .cache From b0034de0a50fce854411c9170d3dc2c38092224f Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 00:18:01 +0200 Subject: [PATCH 12/28] chore(e2e-tests): remove redundant configuration --- packages/e2e-tests/cypress.config.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/packages/e2e-tests/cypress.config.js b/packages/e2e-tests/cypress.config.js index b613942c..2acda4eb 100644 --- a/packages/e2e-tests/cypress.config.js +++ b/packages/e2e-tests/cypress.config.js @@ -8,15 +8,9 @@ module.exports = defineConfig({ env: { login_email: "user@automatisch.io", login_password: "sample", - twitter_api_key: TO_BE_PROVIDED, - twitter_api_secret: TO_BE_PROVIDED, slack_user_token: TO_BE_PROVIDED, }, specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}', - excludeSpecPattern: [ - '**/1-getting-started/**', - '**/2-advanced-examples/**' - ], viewportWidth: 1280, viewportHeight: 768 }, From 332a4a31f4720cc6f10d0a5d91768f4aaaa84e73 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 8 Oct 2022 22:48:52 +0000 Subject: [PATCH 13/28] chore(deps): bump async from 2.6.3 to 2.6.4 in /packages/web Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4. - [Release notes](https://github.com/caolan/async/releases) - [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md) - [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4) --- updated-dependencies: - dependency-name: async dependency-type: indirect ... Signed-off-by: dependabot[bot] --- packages/web/yarn.lock | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/web/yarn.lock b/packages/web/yarn.lock index da6d946b..bdc311e5 100644 --- a/packages/web/yarn.lock +++ b/packages/web/yarn.lock @@ -30,10 +30,10 @@ tslib "^2.3.0" zen-observable-ts "^1.2.5" -"@automatisch/types@^0.1.0": - version "0.1.0" - resolved "https://registry.yarnpkg.com/@automatisch/types/-/types-0.1.0.tgz#aea0da9991ea79c59cf69f660425df8d6024feac" - integrity sha512-By3aEiZUc94tAjvjxRB1L+obRsa8gqYoXkHi3Nub2WplLV4YDYnx1w35dPcBIplS6Mizl9zDFv5Gg0V+lm4LwA== +"@automatisch/types@^0.1.4": + version "0.1.4" + resolved "https://registry.yarnpkg.com/@automatisch/types/-/types-0.1.4.tgz#30c813bbd68937ed2f4a74651a07284f2d925d62" + integrity sha512-vc1bjz2VTWvxQPtC4yHp7t+TA5lpZXKeVLTiT385wxIGsgPgE2kDrlWp5FCea8Adk4MRn90BEWD5cDzLd+7OtA== "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13": version "7.12.13" @@ -3654,9 +3654,9 @@ ast-types-flow@^0.0.7: integrity sha1-9wtzXGvKGlycItmCw+Oef+ujva0= async@^2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/async/-/async-2.6.3.tgz#d72625e2344a3656e3a3ad4fa749fa83299d82ff" - integrity sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg== + version "2.6.4" + resolved "https://registry.yarnpkg.com/async/-/async-2.6.4.tgz#706b7ff6084664cd7eae713f6f965433b5504221" + integrity sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA== dependencies: lodash "^4.17.14" From f604e28ba4967f00c1617c7d88f18fd3c7b000f6 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sun, 9 Oct 2022 10:43:50 +0300 Subject: [PATCH 14/28] docs: Hide contribution section from readme until it's finalised --- README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/README.md b/README.md index 5976538a..d253c346 100644 --- a/README.md +++ b/README.md @@ -47,10 +47,6 @@ If you have any questions or problems, please visit our GitHub discussions page, [https://github.com/automatisch/automatisch/discussions](https://github.com/automatisch/automatisch/discussions) -## Contribution Guide - -You can access to the [contribution guide](https://docs.automatisch.io) page from the documentation website. - ## License Automatisch is an open-source software with an [AGPL 3.0 license](https://github.com/automatisch/automatisch/blob/main/LICENSE.md). From 48fd4a0dbe49a8558c4730d2722259ac08b89883 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 09:45:59 +0200 Subject: [PATCH 15/28] feat: remove execution step data --- packages/web/src/components/ExecutionStep/index.tsx | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/packages/web/src/components/ExecutionStep/index.tsx b/packages/web/src/components/ExecutionStep/index.tsx index 026b4693..3159679a 100644 --- a/packages/web/src/components/ExecutionStep/index.tsx +++ b/packages/web/src/components/ExecutionStep/index.tsx @@ -7,7 +7,7 @@ import Tabs from '@mui/material/Tabs'; import Tab from '@mui/material/Tab'; import Typography from '@mui/material/Typography'; import Box from '@mui/material/Box'; -import type { IApp, IJSONObject, IExecutionStep, IStep } from '@automatisch/types'; +import type { IApp, IExecutionStep, IStep } from '@automatisch/types'; import TabPanel from 'components/TabPanel'; import JSONViewer from 'components/JSONViewer'; @@ -74,7 +74,6 @@ export default function ExecutionStep(props: ExecutionStepProps): React.ReactEle - @@ -89,10 +88,6 @@ export default function ExecutionStep(props: ExecutionStepProps): React.ReactEle - - - - From 84558af121965aa2ebc7c120d95b0fcd8bf42318 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sun, 9 Oct 2022 10:52:43 +0300 Subject: [PATCH 16/28] docs: Fix github issues link for the installation page --- packages/docs/pages/guide/installation.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/docs/pages/guide/installation.md b/packages/docs/pages/guide/installation.md index b4f95e61..a0b623bc 100644 --- a/packages/docs/pages/guide/installation.md +++ b/packages/docs/pages/guide/installation.md @@ -23,4 +23,4 @@ You can use `user@automatisch.io` email address and `sample` password to login t ::: -If you see any problems while installing Automatisch, let us know via [github issues](#) or our [discord server](https://discord.gg/dJSah9CVrC). +If you see any problems while installing Automatisch, let us know via [github issues](https://github.com/automatisch/automatisch/issues) or our [discord server](https://discord.gg/dJSah9CVrC). From 0cfb51dfb17db92515ccda1cb51d59695bd729c4 Mon Sep 17 00:00:00 2001 From: Faruk AYDIN Date: Sun, 9 Oct 2022 10:54:58 +0300 Subject: [PATCH 17/28] docs: Add TBD to create flow page --- packages/docs/pages/guide/create-flow.md | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/docs/pages/guide/create-flow.md b/packages/docs/pages/guide/create-flow.md index e69de29b..a0990367 100644 --- a/packages/docs/pages/guide/create-flow.md +++ b/packages/docs/pages/guide/create-flow.md @@ -0,0 +1 @@ +TBD From 0d04e1534df3eee6fed42d6b20c8c55ef48d72a2 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 10:12:24 +0200 Subject: [PATCH 18/28] chore: update cli version with 0.1.5 in Dockerfiles --- docker/images/plain/Dockerfile | 2 +- docker/images/wait-for-postgres/Dockerfile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docker/images/plain/Dockerfile b/docker/images/plain/Dockerfile index 71657d57..48129e55 100644 --- a/docker/images/plain/Dockerfile +++ b/docker/images/plain/Dockerfile @@ -2,4 +2,4 @@ FROM node:16 WORKDIR /automatisch -RUN yarn global add @automatisch/cli@0.1.4 +RUN yarn global add @automatisch/cli@0.1.5 diff --git a/docker/images/wait-for-postgres/Dockerfile b/docker/images/wait-for-postgres/Dockerfile index 1ef998f2..33c66b6d 100644 --- a/docker/images/wait-for-postgres/Dockerfile +++ b/docker/images/wait-for-postgres/Dockerfile @@ -9,7 +9,7 @@ RUN mkdir -p /automatisch/storage RUN touch /automatisch/storage/.env RUN echo "ENCRYPTION_KEY=$(openssl rand -base64 36)" >> /automatisch/storage/.env RUN echo "APP_SECRET_KEY=$(openssl rand -base64 36)" >> /automatisch/storage/.env -RUN yarn global add @automatisch/cli@0.1.4 +RUN yarn global add @automatisch/cli@0.1.5 EXPOSE 3000 CMD sh /automatisch/wait-for-postgres.sh automatisch start --env-file=/automatisch/storage/.env From ec8e57972a372f373c6d0c1acb6946af823f59e7 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 10:17:33 +0200 Subject: [PATCH 19/28] Release v0.1.5 --- lerna.json | 2 +- packages/backend/package.json | 6 +++--- packages/cli/package.json | 4 ++-- packages/docs/package.json | 2 +- packages/e2e-tests/package.json | 5 ++--- packages/types/package.json | 2 +- packages/web/package.json | 4 ++-- 7 files changed, 12 insertions(+), 13 deletions(-) diff --git a/lerna.json b/lerna.json index 6766f74a..d68132d1 100644 --- a/lerna.json +++ b/lerna.json @@ -2,7 +2,7 @@ "packages": [ "packages/*" ], - "version": "0.1.4", + "version": "0.1.5", "npmClient": "yarn", "useWorkspaces": true, "command": { diff --git a/packages/backend/package.json b/packages/backend/package.json index c29a3398..03ec212a 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -1,6 +1,6 @@ { "name": "@automatisch/backend", - "version": "0.1.4", + "version": "0.1.5", "license": "AGPL-3.0", "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", "scripts": { @@ -22,7 +22,7 @@ "prebuild": "rm -rf ./dist" }, "dependencies": { - "@automatisch/web": "^0.1.4", + "@automatisch/web": "^0.1.5", "@bull-board/express": "^3.10.1", "@gitbeaker/node": "^35.6.0", "@graphql-tools/graphql-file-loader": "^7.3.4", @@ -100,7 +100,7 @@ "url": "https://github.com/automatisch/automatisch/issues" }, "devDependencies": { - "@automatisch/types": "^0.1.4", + "@automatisch/types": "^0.1.5", "@types/bcrypt": "^5.0.0", "@types/bull": "^3.15.8", "@types/cors": "^2.8.12", diff --git a/packages/cli/package.json b/packages/cli/package.json index 0b17bf99..b3b51fbf 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@automatisch/cli", - "version": "0.1.4", + "version": "0.1.5", "license": "AGPL-3.0", "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", "contributors": [ @@ -33,7 +33,7 @@ "version": "oclif readme && git add README.md" }, "dependencies": { - "@automatisch/backend": "^0.1.4", + "@automatisch/backend": "^0.1.5", "@oclif/core": "^1", "@oclif/plugin-help": "^5", "@oclif/plugin-plugins": "^2.0.1", diff --git a/packages/docs/package.json b/packages/docs/package.json index e3906f75..87be15e9 100644 --- a/packages/docs/package.json +++ b/packages/docs/package.json @@ -1,6 +1,6 @@ { "name": "@automatisch/docs", - "version": "0.1.4", + "version": "0.1.5", "license": "AGPL-3.0", "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", "private": true, diff --git a/packages/e2e-tests/package.json b/packages/e2e-tests/package.json index d67c8d12..59fcbc36 100644 --- a/packages/e2e-tests/package.json +++ b/packages/e2e-tests/package.json @@ -1,13 +1,12 @@ { "name": "@automatisch/e2e-tests", - "version": "0.1.4", + "version": "0.1.5", "license": "AGPL-3.0", "private": true, "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", "scripts": { "open": "cypress open" }, - "dependencies": {}, "contributors": [ { "name": "automatisch contributors", @@ -25,4 +24,4 @@ "devDependencies": { "cypress": "^10.9.0" } -} \ No newline at end of file +} diff --git a/packages/types/package.json b/packages/types/package.json index 69bcd380..8d4cd979 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@automatisch/types", - "version": "0.1.4", + "version": "0.1.5", "license": "AGPL-3.0", "description": "Type definitions for automatisch", "homepage": "https://github.com/automatisch/automatisch", diff --git a/packages/web/package.json b/packages/web/package.json index bd1f88ca..cce0b924 100644 --- a/packages/web/package.json +++ b/packages/web/package.json @@ -1,11 +1,11 @@ { "name": "@automatisch/web", - "version": "0.1.4", + "version": "0.1.5", "license": "AGPL-3.0", "description": "The open source Zapier alternative. Build workflow automation without spending time and money.", "dependencies": { "@apollo/client": "^3.6.9", - "@automatisch/types": "^0.1.4", + "@automatisch/types": "^0.1.5", "@emotion/react": "^11.4.1", "@emotion/styled": "^11.3.0", "@hookform/resolvers": "^2.8.8", From 119650048e3ec68e275a5572aed45b77a73e4600 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 14:46:51 +0200 Subject: [PATCH 20/28] chore: delete unused discord app --- .../src/apps/discord/assets/favicon.svg | 4 - .../src/apps/discord/authentication.ts | 99 -------- packages/backend/src/apps/discord/index.d.ts | 0 packages/backend/src/apps/discord/index.ts | 15 -- packages/backend/src/apps/discord/info.json | 219 ------------------ 5 files changed, 337 deletions(-) delete mode 100644 packages/backend/src/apps/discord/assets/favicon.svg delete mode 100644 packages/backend/src/apps/discord/authentication.ts delete mode 100644 packages/backend/src/apps/discord/index.d.ts delete mode 100644 packages/backend/src/apps/discord/index.ts delete mode 100644 packages/backend/src/apps/discord/info.json diff --git a/packages/backend/src/apps/discord/assets/favicon.svg b/packages/backend/src/apps/discord/assets/favicon.svg deleted file mode 100644 index 0483a9d3..00000000 --- a/packages/backend/src/apps/discord/assets/favicon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/packages/backend/src/apps/discord/authentication.ts b/packages/backend/src/apps/discord/authentication.ts deleted file mode 100644 index ebcc8239..00000000 --- a/packages/backend/src/apps/discord/authentication.ts +++ /dev/null @@ -1,99 +0,0 @@ -import type { - IAuthentication, - IApp, - IField, - IJSONObject, -} from '@automatisch/types'; -import { URLSearchParams } from 'url'; -import axios, { AxiosInstance } from 'axios'; - -export default class Authentication implements IAuthentication { - appData: IApp; - connectionData: IJSONObject; - client: AxiosInstance = axios.create({ - baseURL: 'https://discord.com/api/', - }); - - scope: string[] = ['identify', 'email']; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.appData = appData; - this.connectionData = connectionData; - } - - get oauthRedirectUrl() { - return this.appData.fields.find( - (field: IField) => field.key == 'oAuthRedirectUrl' - ).value; - } - - async createAuthData() { - const searchParams = new URLSearchParams({ - client_id: this.connectionData.consumerKey as string, - redirect_uri: this.oauthRedirectUrl, - response_type: 'code', - scope: this.scope.join(' '), - }); - - const url = `https://discord.com/api/oauth2/authorize?${searchParams.toString()}`; - - return { url }; - } - - async verifyCredentials() { - const params = new URLSearchParams({ - client_id: this.connectionData.consumerKey as string, - redirect_uri: this.oauthRedirectUrl, - response_type: 'code', - scope: this.scope.join(' '), - client_secret: this.connectionData.consumerSecret as string, - code: this.connectionData.oauthVerifier as string, - grant_type: 'authorization_code', - }); - const { data: verifiedCredentials } = await this.client.post( - '/oauth2/token', - params.toString() - ); - - const { - access_token: accessToken, - refresh_token: refreshToken, - expires_in: expiresIn, - scope: scope, - token_type: tokenType, - } = verifiedCredentials; - - const { data: user } = await this.client.get('/users/@me', { - headers: { - Authorization: `${tokenType} ${accessToken}`, - }, - }); - - return { - consumerKey: this.connectionData.consumerKey, - consumerSecret: this.connectionData.consumerSecret, - accessToken, - refreshToken, - expiresIn, - scope, - tokenType, - userId: user.id, - screenName: user.username, - email: user.email, - }; - } - - async isStillVerified() { - try { - await this.client.get('/users/@me', { - headers: { - Authorization: `${this.connectionData.tokenType} ${this.connectionData.accessToken}`, - }, - }); - - return true; - } catch { - return false; - } - } -} diff --git a/packages/backend/src/apps/discord/index.d.ts b/packages/backend/src/apps/discord/index.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/backend/src/apps/discord/index.ts b/packages/backend/src/apps/discord/index.ts deleted file mode 100644 index 80de7f88..00000000 --- a/packages/backend/src/apps/discord/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Authentication from './authentication'; -import { - IService, - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class Discord implements IService { - authenticationClient: IAuthentication; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.authenticationClient = new Authentication(appData, connectionData); - } -} diff --git a/packages/backend/src/apps/discord/info.json b/packages/backend/src/apps/discord/info.json deleted file mode 100644 index fbcf9ac2..00000000 --- a/packages/backend/src/apps/discord/info.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "name": "Discord", - "key": "discord", - "iconUrl": "{BASE_URL}/apps/discord/assets/favicon.svg", - "docUrl": "https://automatisch.io/docs/discord", - "primaryColor": "5865f2", - "supportsConnections": true, - "fields": [ - { - "key": "oAuthRedirectUrl", - "label": "OAuth Redirect URL", - "type": "string", - "required": true, - "readOnly": true, - "value": "{WEB_APP_URL}/app/discord/connections/add", - "placeholder": null, - "description": "When asked to input an OAuth callback or redirect URL in Discord OAuth, enter the URL above.", - "docUrl": "https://automatisch.io/docs/discord#oauth-redirect-url", - "clickToCopy": true - }, - { - "key": "consumerKey", - "label": "Consumer Key", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/discord#consumer-key", - "clickToCopy": false - }, - { - "key": "consumerSecret", - "label": "Consumer Secret", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/discord#consumer-secret", - "clickToCopy": false - } - ], - "authenticationSteps": [ - { - "step": 1, - "type": "mutation", - "name": "createConnection", - "arguments": [ - { - "name": "key", - "value": "{key}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - }, - { - "step": 3, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 4, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - } - ], - "reconnectionSteps": [ - { - "step": 1, - "type": "mutation", - "name": "resetConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 3, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 4, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 6, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - } - ] -} From 3a186ebb1a228e515242bfe585caae4cad04edd5 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 14:53:48 +0200 Subject: [PATCH 21/28] chore: remove unused firebase app --- .../src/apps/firebase/assets/favicon.svg | 35 --- .../src/apps/firebase/authentication.ts | 89 ------- packages/backend/src/apps/firebase/index.d.ts | 0 packages/backend/src/apps/firebase/index.ts | 15 -- packages/backend/src/apps/firebase/info.json | 219 ------------------ 5 files changed, 358 deletions(-) delete mode 100644 packages/backend/src/apps/firebase/assets/favicon.svg delete mode 100644 packages/backend/src/apps/firebase/authentication.ts delete mode 100644 packages/backend/src/apps/firebase/index.d.ts delete mode 100644 packages/backend/src/apps/firebase/index.ts delete mode 100644 packages/backend/src/apps/firebase/info.json diff --git a/packages/backend/src/apps/firebase/assets/favicon.svg b/packages/backend/src/apps/firebase/assets/favicon.svg deleted file mode 100644 index bd2ee11b..00000000 --- a/packages/backend/src/apps/firebase/assets/favicon.svg +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/packages/backend/src/apps/firebase/authentication.ts b/packages/backend/src/apps/firebase/authentication.ts deleted file mode 100644 index 921598ac..00000000 --- a/packages/backend/src/apps/firebase/authentication.ts +++ /dev/null @@ -1,89 +0,0 @@ -import type { - IAuthentication, - IApp, - IField, - IJSONObject, -} from '@automatisch/types'; -import { google as GoogleApi } from 'googleapis'; -import { OAuth2Client } from 'google-auth-library'; - -export default class Authentication implements IAuthentication { - appData: IApp; - connectionData: IJSONObject; - client: OAuth2Client; - - scopes: string[] = [ - 'https://www.googleapis.com/auth/datastore', - 'https://www.googleapis.com/auth/firebase', - 'https://www.googleapis.com/auth/user.emails.read', - 'profile', - ]; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.appData = appData; - this.connectionData = connectionData; - - this.client = new GoogleApi.auth.OAuth2( - connectionData.consumerKey as string, - connectionData.consumerSecret as string, - this.oauthRedirectUrl - ); - - GoogleApi.options({ auth: this.client }); - } - - get oauthRedirectUrl() { - return this.appData.fields.find( - (field: IField) => field.key == 'oAuthRedirectUrl' - ).value; - } - - async createAuthData() { - const url = this.client.generateAuthUrl({ - access_type: 'offline', - scope: this.scopes, - }); - - return { url }; - } - - async verifyCredentials() { - const { tokens } = await this.client.getToken( - this.connectionData.oauthVerifier as string - ); - this.client.setCredentials(tokens); - - const people = GoogleApi.people('v1'); - - const { data } = await people.people.get({ - resourceName: 'people/me', - personFields: 'emailAddresses', - }); - - const { emailAddresses, resourceName: userId } = data; - const primaryEmailAddress = emailAddresses.find( - (emailAddress) => emailAddress.metadata.primary - ); - - return { - consumerKey: this.connectionData.consumerKey, - consumerSecret: this.connectionData.consumerSecret, - accessToken: tokens.access_token, - refreshToken: tokens.refresh_token, - tokenType: tokens.token_type, - expiryDate: tokens.expiry_date, - scope: tokens.scope, - screenName: primaryEmailAddress.value, - userId, - }; - } - - async isStillVerified() { - try { - await this.client.getTokenInfo(this.connectionData.accessToken as string); - return true; - } catch { - return false; - } - } -} diff --git a/packages/backend/src/apps/firebase/index.d.ts b/packages/backend/src/apps/firebase/index.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/backend/src/apps/firebase/index.ts b/packages/backend/src/apps/firebase/index.ts deleted file mode 100644 index db7a01e4..00000000 --- a/packages/backend/src/apps/firebase/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Authentication from './authentication'; -import { - IService, - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class Firebase implements IService { - authenticationClient: IAuthentication; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.authenticationClient = new Authentication(appData, connectionData); - } -} diff --git a/packages/backend/src/apps/firebase/info.json b/packages/backend/src/apps/firebase/info.json deleted file mode 100644 index c3b8104c..00000000 --- a/packages/backend/src/apps/firebase/info.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "name": "Firebase", - "key": "firebase", - "iconUrl": "{BASE_URL}/apps/firebase/assets/favicon.svg", - "docUrl": "https://automatisch.io/docs/firebase", - "primaryColor": "ffca28", - "supportsConnections": true, - "fields": [ - { - "key": "oAuthRedirectUrl", - "label": "OAuth Redirect URL", - "type": "string", - "required": true, - "readOnly": true, - "value": "{WEB_APP_URL}/app/firebase/connections/add", - "placeholder": null, - "description": "When asked to input an OAuth callback or redirect URL in Firebase OAuth, enter the URL above.", - "docUrl": "https://automatisch.io/docs/firebase#oauth-redirect-url", - "clickToCopy": true - }, - { - "key": "consumerKey", - "label": "Consumer Key", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/firebase#consumer-key", - "clickToCopy": false - }, - { - "key": "consumerSecret", - "label": "Consumer Secret", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/firebase#consumer-secret", - "clickToCopy": false - } - ], - "authenticationSteps": [ - { - "step": 1, - "type": "mutation", - "name": "createConnection", - "arguments": [ - { - "name": "key", - "value": "{key}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - }, - { - "step": 3, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 4, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - } - ], - "reconnectionSteps": [ - { - "step": 1, - "type": "mutation", - "name": "resetConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 3, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 4, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 6, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - } - ] -} From 54bbc0d79ca075e6259ca637d916bdf0b7fe46af Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 15:04:52 +0200 Subject: [PATCH 22/28] chore: remove unused gitlab app --- .../src/apps/gitlab/assets/favicon.svg | 12 - .../backend/src/apps/gitlab/authentication.ts | 101 -------- packages/backend/src/apps/gitlab/index.d.ts | 0 packages/backend/src/apps/gitlab/index.ts | 15 -- packages/backend/src/apps/gitlab/info.json | 239 ------------------ 5 files changed, 367 deletions(-) delete mode 100644 packages/backend/src/apps/gitlab/assets/favicon.svg delete mode 100644 packages/backend/src/apps/gitlab/authentication.ts delete mode 100644 packages/backend/src/apps/gitlab/index.d.ts delete mode 100644 packages/backend/src/apps/gitlab/index.ts delete mode 100644 packages/backend/src/apps/gitlab/info.json diff --git a/packages/backend/src/apps/gitlab/assets/favicon.svg b/packages/backend/src/apps/gitlab/assets/favicon.svg deleted file mode 100644 index 65b9e02c..00000000 --- a/packages/backend/src/apps/gitlab/assets/favicon.svg +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/packages/backend/src/apps/gitlab/authentication.ts b/packages/backend/src/apps/gitlab/authentication.ts deleted file mode 100644 index caa7c776..00000000 --- a/packages/backend/src/apps/gitlab/authentication.ts +++ /dev/null @@ -1,101 +0,0 @@ -import { URLSearchParams } from 'url'; -import axios from 'axios'; -import crypto from 'crypto'; -import { Gitlab } from '@gitbeaker/node'; -import type { - IAuthentication, - IApp, - IField, - IJSONObject, -} from '@automatisch/types'; - -export default class Authentication implements IAuthentication { - appData: IApp; - connectionData: IJSONObject; - client: any; - scopes = [ - 'api', - 'profile', - 'email', - ]; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.connectionData = connectionData; - this.appData = appData; - - if (connectionData?.accessToken) { - this.client = new Gitlab({ - host: this.host, - oauthToken: connectionData?.accessToken as string, - }); - } - } - - get host() { - return `https://${this.connectionData.host}`; - } - - get oauthRedirectUrl() { - return this.appData.fields.find( - (field: IField) => field.key == 'oAuthRedirectUrl' - ).value; - } - - async createAuthData() { - const state = crypto.randomUUID(); - - const searchParams = new URLSearchParams({ - client_id: this.connectionData.applicationId as string, - redirect_uri: this.oauthRedirectUrl, - response_type: 'code', - scope: this.scopes.join(' '), - state, - }); - - const url = `${this.host}/oauth/authorize?${searchParams.toString()}`; - - return { url }; - } - - async verifyCredentials() { - const params = new URLSearchParams({ - client_id: this.connectionData.applicationId as string, - grant_type: 'authorization_code', - redirect_uri: this.oauthRedirectUrl, - code: this.connectionData.oauthVerifier as string, - client_secret: this.connectionData.secret as string, - }); - const { data } = await axios.post(`${this.host}/oauth/token`, params.toString()); - const accessToken = data.access_token; - - const client = new Gitlab({ - host: this.host, - oauthToken: accessToken, - }); - - const user = await client.Users.current(); - - return { - host: this.connectionData.host as string, - applicationId: this.connectionData.applicationId as string, - secret: this.connectionData.secret, - accessToken: data.access_token, - refreshToken: data.refresh_token, - expiresIn: data.expires_in, - tokenType: data.token_type, - userId: user.id, - screenName: user.name, - username: user.username, - }; - } - - async isStillVerified() { - try { - await this.client.Users.current(); - - return true; - } catch (err) { - return false; - } - } -} diff --git a/packages/backend/src/apps/gitlab/index.d.ts b/packages/backend/src/apps/gitlab/index.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/backend/src/apps/gitlab/index.ts b/packages/backend/src/apps/gitlab/index.ts deleted file mode 100644 index 592ea6e9..00000000 --- a/packages/backend/src/apps/gitlab/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Authentication from './authentication'; -import { - IService, - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class Gitlab implements IService { - authenticationClient: IAuthentication; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.authenticationClient = new Authentication(appData, connectionData); - } -} diff --git a/packages/backend/src/apps/gitlab/info.json b/packages/backend/src/apps/gitlab/info.json deleted file mode 100644 index c9703cb5..00000000 --- a/packages/backend/src/apps/gitlab/info.json +++ /dev/null @@ -1,239 +0,0 @@ -{ - "name": "GitLab", - "key": "gitlab", - "iconUrl": "{BASE_URL}/apps/gitlab/assets/favicon.svg", - "docUrl": "https://automatisch.io/docs/gitlab", - "primaryColor": "2DAAE1", - "supportsConnections": true, - "fields": [ - { - "key": "oAuthRedirectUrl", - "label": "OAuth Redirect URL", - "type": "string", - "required": true, - "readOnly": true, - "value": "{WEB_APP_URL}/app/gitlab/connections/add", - "placeholder": null, - "description": "When asked to input an OAuth callback or redirect URL in GitLab OAuth, enter the URL above.", - "docUrl": "https://automatisch.io/docs/gitlab#oauth-redirect-url", - "clickToCopy": true - }, - { - "key": "host", - "label": "GitLab Host", - "type": "string", - "required": true, - "readOnly": false, - "value": "gitlab.com", - "placeholder": null, - "description": "Only required if you host your own instance of GitLab. If you access GitLab by going to https://www.example.com, enter www.example.com here.", - "docUrl": "https://automatisch.io/docs/gitlab#host", - "clickToCopy": false - }, - { - "key": "applicationId", - "label": "Application ID", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/gitlab#application-id", - "clickToCopy": false - }, - { - "key": "secret", - "label": "Secret", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/gitlab#secret", - "clickToCopy": false - } - ], - "authenticationSteps": [ - { - "step": 1, - "type": "mutation", - "name": "createConnection", - "arguments": [ - { - "name": "key", - "value": "{key}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "host", - "value": "{fields.host}" - }, - { - "name": "applicationId", - "value": "{fields.applicationId}" - }, - { - "name": "secret", - "value": "{fields.secret}" - } - ] - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - }, - { - "step": 3, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 4, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - } - ], - "reconnectionSteps": [ - { - "step": 1, - "type": "mutation", - "name": "resetConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "host", - "value": "{fields.host}" - }, - { - "name": "applicationId", - "value": "{fields.applicationId}" - }, - { - "name": "secret", - "value": "{fields.secret}" - } - ] - } - ] - }, - { - "step": 3, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 4, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 6, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - } - ] -} From e34ac3c48553b4e742a0454b981aa27f52f904cb Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 15:08:19 +0200 Subject: [PATCH 23/28] chore: remove unused smtp app --- .../backend/src/apps/smtp/assets/favicon.svg | 6 - .../backend/src/apps/smtp/authentication.ts | 44 ---- packages/backend/src/apps/smtp/index.d.ts | 0 packages/backend/src/apps/smtp/index.ts | 15 -- packages/backend/src/apps/smtp/info.json | 201 ------------------ 5 files changed, 266 deletions(-) delete mode 100644 packages/backend/src/apps/smtp/assets/favicon.svg delete mode 100644 packages/backend/src/apps/smtp/authentication.ts delete mode 100644 packages/backend/src/apps/smtp/index.d.ts delete mode 100644 packages/backend/src/apps/smtp/index.ts delete mode 100644 packages/backend/src/apps/smtp/info.json diff --git a/packages/backend/src/apps/smtp/assets/favicon.svg b/packages/backend/src/apps/smtp/assets/favicon.svg deleted file mode 100644 index 44b0edb4..00000000 --- a/packages/backend/src/apps/smtp/assets/favicon.svg +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/packages/backend/src/apps/smtp/authentication.ts b/packages/backend/src/apps/smtp/authentication.ts deleted file mode 100644 index 65dfd609..00000000 --- a/packages/backend/src/apps/smtp/authentication.ts +++ /dev/null @@ -1,44 +0,0 @@ -import nodemailer, { Transporter, TransportOptions } from 'nodemailer'; -import type { - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class Authentication implements IAuthentication { - appData: IApp; - connectionData: IJSONObject; - client: Transporter; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.client = nodemailer.createTransport({ - host: connectionData.host, - port: connectionData.port, - secure: connectionData.useTls, - auth: { - user: connectionData.username, - pass: connectionData.password, - }, - } as TransportOptions); - - this.connectionData = connectionData; - this.appData = appData; - } - - async verifyCredentials() { - await this.client.verify(); - - return { - screenName: this.connectionData.username, - }; - } - - async isStillVerified() { - try { - await this.client.verify(); - return true; - } catch (error) { - return false; - } - } -} diff --git a/packages/backend/src/apps/smtp/index.d.ts b/packages/backend/src/apps/smtp/index.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/backend/src/apps/smtp/index.ts b/packages/backend/src/apps/smtp/index.ts deleted file mode 100644 index 8698d03b..00000000 --- a/packages/backend/src/apps/smtp/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Authentication from './authentication'; -import { - IService, - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class SMTP implements IService { - authenticationClient: IAuthentication; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.authenticationClient = new Authentication(appData, connectionData); - } -} diff --git a/packages/backend/src/apps/smtp/info.json b/packages/backend/src/apps/smtp/info.json deleted file mode 100644 index e0317d17..00000000 --- a/packages/backend/src/apps/smtp/info.json +++ /dev/null @@ -1,201 +0,0 @@ -{ - "name": "SMTP", - "key": "smtp", - "iconUrl": "{BASE_URL}/apps/smtp/assets/favicon.svg", - "docUrl": "https://automatisch.io/docs/smtp", - "primaryColor": "2DAAE1", - "supportsConnections": true, - "fields": [ - { - "key": "host", - "label": "Host", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": "The host information Automatisch will connect to.", - "docUrl": "https://automatisch.io/docs/smtp#host", - "clickToCopy": false - }, - { - "key": "username", - "label": "Email/Username", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": "Your SMTP login credentials.", - "docUrl": "https://automatisch.io/docs/smtp#username", - "clickToCopy": false - }, - { - "key": "password", - "label": "Password", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/smtp#password", - "clickToCopy": false - }, - { - "key": "useTls", - "label": "Use TLS?", - "type": "boolean", - "required": false, - "readOnly": false, - "value": false, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/smtp#use-tls", - "clickToCopy": false - }, - { - "key": "port", - "label": "Port", - "type": "integer", - "required": false, - "readOnly": false, - "value": 25, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/smtp#port", - "clickToCopy": false - }, - { - "key": "fromEmail", - "label": "From Email", - "type": "string", - "required": false, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/smtp#from-email", - "clickToCopy": false - } - ], - "authenticationSteps": [ - { - "step": 1, - "type": "mutation", - "name": "createConnection", - "arguments": [ - { - "name": "key", - "value": "{key}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "host", - "value": "{fields.host}" - }, - { - "name": "username", - "value": "{fields.username}" - }, - { - "name": "password", - "value": "{fields.password}" - }, - { - "name": "useTLS", - "value": "{fields.useTls}" - }, - { - "name": "port", - "value": "{fields.port}" - }, - { - "name": "fromEmail", - "value": "{fields.fromEmail}" - } - ] - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - } - ], - "reconnectionSteps": [ - { - "step": 1, - "type": "mutation", - "name": "resetConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "host", - "value": "{fields.host}" - }, - { - "name": "username", - "value": "{fields.username}" - }, - { - "name": "password", - "value": "{fields.password}" - }, - { - "name": "useTLS", - "value": "{fields.useTls}" - }, - { - "name": "port", - "value": "{fields.port}" - }, - { - "name": "fromEmail", - "value": "{fields.fromEmail}" - } - ] - } - ] - }, - { - "step": 3, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - } - ] -} From b42c27b02fc6ab93334f77c1f74f44b9fbff4c12 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 15:09:42 +0200 Subject: [PATCH 24/28] chore: remove unused typeform app --- .../src/apps/typeform/assets/favicon.svg | 6 - .../src/apps/typeform/authentication.ts | 100 -------- packages/backend/src/apps/typeform/index.d.ts | 0 packages/backend/src/apps/typeform/index.ts | 15 -- packages/backend/src/apps/typeform/info.json | 219 ------------------ 5 files changed, 340 deletions(-) delete mode 100644 packages/backend/src/apps/typeform/assets/favicon.svg delete mode 100644 packages/backend/src/apps/typeform/authentication.ts delete mode 100644 packages/backend/src/apps/typeform/index.d.ts delete mode 100644 packages/backend/src/apps/typeform/index.ts delete mode 100644 packages/backend/src/apps/typeform/info.json diff --git a/packages/backend/src/apps/typeform/assets/favicon.svg b/packages/backend/src/apps/typeform/assets/favicon.svg deleted file mode 100644 index 56381390..00000000 --- a/packages/backend/src/apps/typeform/assets/favicon.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/packages/backend/src/apps/typeform/authentication.ts b/packages/backend/src/apps/typeform/authentication.ts deleted file mode 100644 index 0229b42c..00000000 --- a/packages/backend/src/apps/typeform/authentication.ts +++ /dev/null @@ -1,100 +0,0 @@ -import type { - IAuthentication, - IApp, - IField, - IJSONObject, -} from '@automatisch/types'; -import { URLSearchParams } from 'url'; -import createHttpClient, { IHttpClient } from '../../helpers/http-client'; - -export default class Authentication implements IAuthentication { - appData: IApp; - connectionData: IJSONObject; - client: IHttpClient; - - scope: string[] = [ - 'forms:read', - 'forms:write', - 'webhooks:read', - 'webhooks:write', - 'responses:read', - 'accounts:read', - 'workspaces:read', - ]; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.connectionData = connectionData; - this.appData = appData; - this.client = createHttpClient({ baseURL: 'https://api.typeform.com' }); - } - - get oauthRedirectUrl() { - return this.appData.fields.find( - (field: IField) => field.key == 'oAuthRedirectUrl' - ).value; - } - - async createAuthData() { - const searchParams = new URLSearchParams({ - client_id: this.connectionData.consumerKey as string, - redirect_uri: this.oauthRedirectUrl, - scope: this.scope.join(' '), - }); - - const url = `https://api.typeform.com/oauth/authorize?${searchParams.toString()}`; - - return { url }; - } - - async verifyCredentials() { - const params = new URLSearchParams({ - grant_type: 'authorization_code', - code: this.connectionData.oauthVerifier as string, - client_id: this.connectionData.consumerKey as string, - client_secret: this.connectionData.consumerSecret as string, - redirect_uri: this.oauthRedirectUrl, - }); - - const { data: verifiedCredentials } = await this.client.post( - '/oauth/token', - params.toString() - ); - - const { - access_token: accessToken, - expires_in: expiresIn, - token_type: tokenType, - } = verifiedCredentials; - - const { data: user } = await this.client.get('/me', { - headers: { - Authorization: `Bearer ${accessToken}`, - }, - }); - - return { - consumerKey: this.connectionData.consumerKey, - consumerSecret: this.connectionData.consumerSecret, - accessToken, - expiresIn, - tokenType, - userId: user.user_id, - screenName: user.alias, - email: user.email, - }; - } - - async isStillVerified() { - try { - await this.client.get('/me', { - headers: { - Authorization: `Bearer ${this.connectionData.accessToken}`, - }, - }); - - return true; - } catch { - return false; - } - } -} diff --git a/packages/backend/src/apps/typeform/index.d.ts b/packages/backend/src/apps/typeform/index.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/backend/src/apps/typeform/index.ts b/packages/backend/src/apps/typeform/index.ts deleted file mode 100644 index 75291db8..00000000 --- a/packages/backend/src/apps/typeform/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Authentication from './authentication'; -import { - IService, - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class Typeform implements IService { - authenticationClient: IAuthentication; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.authenticationClient = new Authentication(appData, connectionData); - } -} diff --git a/packages/backend/src/apps/typeform/info.json b/packages/backend/src/apps/typeform/info.json deleted file mode 100644 index 3aecd315..00000000 --- a/packages/backend/src/apps/typeform/info.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "name": "Typeform", - "key": "typeform", - "iconUrl": "{BASE_URL}/apps/typeform/assets/favicon.svg", - "docUrl": "https://automatisch.io/docs/typeform", - "primaryColor": "5865f2", - "supportsConnections": true, - "fields": [ - { - "key": "oAuthRedirectUrl", - "label": "OAuth Redirect URL", - "type": "string", - "required": true, - "readOnly": true, - "value": "{WEB_APP_URL}/app/typeform/connections/add", - "placeholder": null, - "description": "When asked to input an OAuth callback or redirect URL in Typeform OAuth, enter the URL above.", - "docUrl": "https://automatisch.io/docs/typeform#oauth-redirect-url", - "clickToCopy": true - }, - { - "key": "consumerKey", - "label": "Client ID", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/typeform#consumer-key", - "clickToCopy": false - }, - { - "key": "consumerSecret", - "label": "Client Secret", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/typeform#consumer-secret", - "clickToCopy": false - } - ], - "authenticationSteps": [ - { - "step": 1, - "type": "mutation", - "name": "createConnection", - "arguments": [ - { - "name": "key", - "value": "{key}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - }, - { - "step": 3, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 4, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - } - ], - "reconnectionSteps": [ - { - "step": 1, - "type": "mutation", - "name": "resetConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 3, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 4, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 6, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - } - ] -} From 12bbcd788703b9abbb3b073142b2f026def3ffd1 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 15:16:16 +0200 Subject: [PATCH 25/28] chore: remove unused twitch app --- .../src/apps/twitch/assets/favicon.svg | 4 - .../backend/src/apps/twitch/authentication.ts | 105 --------- packages/backend/src/apps/twitch/index.d.ts | 0 packages/backend/src/apps/twitch/index.ts | 15 -- packages/backend/src/apps/twitch/info.json | 219 ------------------ 5 files changed, 343 deletions(-) delete mode 100644 packages/backend/src/apps/twitch/assets/favicon.svg delete mode 100644 packages/backend/src/apps/twitch/authentication.ts delete mode 100644 packages/backend/src/apps/twitch/index.d.ts delete mode 100644 packages/backend/src/apps/twitch/index.ts delete mode 100644 packages/backend/src/apps/twitch/info.json diff --git a/packages/backend/src/apps/twitch/assets/favicon.svg b/packages/backend/src/apps/twitch/assets/favicon.svg deleted file mode 100644 index 8adbef1a..00000000 --- a/packages/backend/src/apps/twitch/assets/favicon.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/packages/backend/src/apps/twitch/authentication.ts b/packages/backend/src/apps/twitch/authentication.ts deleted file mode 100644 index 26780bc9..00000000 --- a/packages/backend/src/apps/twitch/authentication.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { - IAuthentication, - IApp, - IField, - IJSONObject, -} from '@automatisch/types'; -import TwitchApi, { TwitchJsOptions } from 'twitch-js'; -import fetchUtil from 'twitch-js/lib/utils/fetch'; - -type TwitchTokenResponse = { - accessToken: string; - refreshToken: string; - expiresIn: string; - tokenType: string; -}; - -export default class Authentication implements IAuthentication { - appData: IApp; - connectionData: IJSONObject; - client: TwitchApi; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.connectionData = connectionData; - this.appData = appData; - - if (this.clientOptions.token) { - this.client = new TwitchApi(this.clientOptions as TwitchJsOptions); - } - } - - get clientOptions() { - return { - token: this.connectionData.accessToken, - clientId: this.connectionData.consumerKey, - log: { enabled: true }, - }; - } - - get oauthRedirectUrl() { - return this.appData.fields.find( - (field: IField) => field.key == 'oAuthRedirectUrl' - ).value; - } - - async createAuthData() { - const { url } = await fetchUtil('https://id.twitch.tv/oauth2/authorize', { - search: { - client_id: this.connectionData.consumerKey, - redirect_uri: this.oauthRedirectUrl, - response_type: 'code', - scope: 'user:read:email', - }, - }); - - return { url }; - } - - async verifyCredentials() { - const verifiedCredentials = (await fetchUtil( - 'https://id.twitch.tv/oauth2/token', - { - method: 'post', - search: { - client_id: this.connectionData.consumerKey, - client_secret: this.connectionData.consumerSecret, - code: this.connectionData.oauthVerifier, - grant_type: 'authorization_code', - redirect_uri: this.oauthRedirectUrl, - }, - } - )) as TwitchTokenResponse; - - this.connectionData.accessToken = verifiedCredentials.accessToken; - - const { api } = new TwitchApi(this.clientOptions as TwitchJsOptions); - - const { data } = await api.get('users'); - const [user] = data; - - return { - consumerKey: this.connectionData.consumerKey, - consumerSecret: this.connectionData.consumerSecret, - accessToken: verifiedCredentials.accessToken, - refreshToken: verifiedCredentials.refreshToken, - expiresIn: verifiedCredentials.expiresIn, - tokenType: verifiedCredentials.tokenType, - userId: user.id, - screenName: user.displayName, - }; - } - - async isStillVerified() { - try { - await fetchUtil('https://id.twitch.tv/oauth2/userinfo', { - headers: { - Authorization: `Bearer ${this.connectionData.accessToken}`, - }, - }); - - return true; - } catch (err) { - return false; - } - } -} diff --git a/packages/backend/src/apps/twitch/index.d.ts b/packages/backend/src/apps/twitch/index.d.ts deleted file mode 100644 index e69de29b..00000000 diff --git a/packages/backend/src/apps/twitch/index.ts b/packages/backend/src/apps/twitch/index.ts deleted file mode 100644 index 42d13c05..00000000 --- a/packages/backend/src/apps/twitch/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Authentication from './authentication'; -import { - IService, - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class Twitch implements IService { - authenticationClient: IAuthentication; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.authenticationClient = new Authentication(appData, connectionData); - } -} diff --git a/packages/backend/src/apps/twitch/info.json b/packages/backend/src/apps/twitch/info.json deleted file mode 100644 index 2931af88..00000000 --- a/packages/backend/src/apps/twitch/info.json +++ /dev/null @@ -1,219 +0,0 @@ -{ - "name": "Twitch", - "key": "twitch", - "iconUrl": "{BASE_URL}/apps/twitch/assets/favicon.svg", - "docUrl": "https://automatisch.io/docs/twitch", - "primaryColor": "2DAAE1", - "supportsConnections": true, - "fields": [ - { - "key": "oAuthRedirectUrl", - "label": "OAuth Redirect URL", - "type": "string", - "required": true, - "readOnly": true, - "value": "{WEB_APP_URL}/app/twitch/connections/add", - "placeholder": null, - "description": "When asked to input an OAuth callback or redirect URL in Twitch OAuth, enter the URL above.", - "docUrl": "https://automatisch.io/docs/twitch#oauth-redirect-url", - "clickToCopy": true - }, - { - "key": "consumerKey", - "label": "Consumer Key", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/twitch#consumer-key", - "clickToCopy": false - }, - { - "key": "consumerSecret", - "label": "Consumer Secret", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": null, - "docUrl": "https://automatisch.io/docs/twitch#consumer-secret", - "clickToCopy": false - } - ], - "authenticationSteps": [ - { - "step": 1, - "type": "mutation", - "name": "createConnection", - "arguments": [ - { - "name": "key", - "value": "{key}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - }, - { - "step": 3, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 4, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - } - ], - "reconnectionSteps": [ - { - "step": 1, - "type": "mutation", - "name": "resetConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "consumerKey", - "value": "{fields.consumerKey}" - }, - { - "name": "consumerSecret", - "value": "{fields.consumerSecret}" - } - ] - } - ] - }, - { - "step": 3, - "type": "mutation", - "name": "createAuthData", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 4, - "type": "openWithPopup", - "name": "openAuthPopup", - "arguments": [ - { - "name": "url", - "value": "{createAuthData.url}" - } - ] - }, - { - "step": 5, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "oauthVerifier", - "value": "{openAuthPopup.code}" - } - ] - } - ] - }, - { - "step": 6, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - } - ] -} From 56b7763488fc6033ab71fdd95c69960ba0ede758 Mon Sep 17 00:00:00 2001 From: Ali BARIN Date: Sun, 9 Oct 2022 15:17:02 +0200 Subject: [PATCH 26/28] chore: remove unused twilio app --- .../src/apps/twilio/assets/favicon.svg | 6 - .../backend/src/apps/twilio/authentication.ts | 44 ------- packages/backend/src/apps/twilio/index.ts | 15 --- packages/backend/src/apps/twilio/info.json | 121 ------------------ 4 files changed, 186 deletions(-) delete mode 100644 packages/backend/src/apps/twilio/assets/favicon.svg delete mode 100644 packages/backend/src/apps/twilio/authentication.ts delete mode 100644 packages/backend/src/apps/twilio/index.ts delete mode 100644 packages/backend/src/apps/twilio/info.json diff --git a/packages/backend/src/apps/twilio/assets/favicon.svg b/packages/backend/src/apps/twilio/assets/favicon.svg deleted file mode 100644 index 3d3a8971..00000000 --- a/packages/backend/src/apps/twilio/assets/favicon.svg +++ /dev/null @@ -1,6 +0,0 @@ - \ No newline at end of file diff --git a/packages/backend/src/apps/twilio/authentication.ts b/packages/backend/src/apps/twilio/authentication.ts deleted file mode 100644 index a2b1d8ca..00000000 --- a/packages/backend/src/apps/twilio/authentication.ts +++ /dev/null @@ -1,44 +0,0 @@ -import type { - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; -import TwilioApi from 'twilio'; - -export default class Authentication implements IAuthentication { - appData: IApp; - connectionData: IJSONObject; - client: TwilioApi.Twilio; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.client = TwilioApi( - connectionData.accountSid as string, - connectionData.authToken as string - ); - - this.connectionData = connectionData; - this.appData = appData; - } - - async verifyCredentials() { - await this.verify(); - - return { - screenName: this.connectionData.accountSid, - }; - } - - async verify() { - try { - await this.client.keys.list({ limit: 1 }); - return true; - } catch (error) { - // Test credentials throw HTTP 403 and thus, we need to have an exception. - return error?.status === 403; - } - } - - async isStillVerified() { - return this.verify(); - } -} diff --git a/packages/backend/src/apps/twilio/index.ts b/packages/backend/src/apps/twilio/index.ts deleted file mode 100644 index f25658d5..00000000 --- a/packages/backend/src/apps/twilio/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -import Authentication from './authentication'; -import { - IService, - IAuthentication, - IApp, - IJSONObject, -} from '@automatisch/types'; - -export default class Twilio implements IService { - authenticationClient: IAuthentication; - - constructor(appData: IApp, connectionData: IJSONObject) { - this.authenticationClient = new Authentication(appData, connectionData); - } -} diff --git a/packages/backend/src/apps/twilio/info.json b/packages/backend/src/apps/twilio/info.json deleted file mode 100644 index ac68b688..00000000 --- a/packages/backend/src/apps/twilio/info.json +++ /dev/null @@ -1,121 +0,0 @@ -{ - "name": "Twilio", - "key": "twilio", - "iconUrl": "{BASE_URL}/apps/twilio/assets/favicon.svg", - "docUrl": "https://automatisch.io/docs/twilio", - "primaryColor": "f22f46", - "supportsConnections": true, - "fields": [ - { - "key": "accountSid", - "label": "Account SID", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": "Log into your Twilio account and find \"API Credentials\" on this page https://www.twilio.com/user/account/settings", - "docUrl": "https://automatisch.io/docs/twilio#host", - "clickToCopy": false - }, - { - "key": "authToken", - "label": "Auth Token", - "type": "string", - "required": true, - "readOnly": false, - "value": null, - "placeholder": null, - "description": "Found directly below your Account SID.", - "docUrl": "https://automatisch.io/docs/twilio#username", - "clickToCopy": false - } - ], - "authenticationSteps": [ - { - "step": 1, - "type": "mutation", - "name": "createConnection", - "arguments": [ - { - "name": "key", - "value": "{key}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "accountSid", - "value": "{fields.accountSid}" - }, - { - "name": "authToken", - "value": "{fields.authToken}" - } - ] - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{createConnection.id}" - } - ] - } - ], - "reconnectionSteps": [ - { - "step": 1, - "type": "mutation", - "name": "resetConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - }, - { - "step": 2, - "type": "mutation", - "name": "updateConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - }, - { - "name": "formattedData", - "value": null, - "properties": [ - { - "name": "accountSid", - "value": "{fields.accountSid}" - }, - { - "name": "authToken", - "value": "{fields.authToken}" - } - ] - } - ] - }, - { - "step": 3, - "type": "mutation", - "name": "verifyConnection", - "arguments": [ - { - "name": "id", - "value": "{connection.id}" - } - ] - } - ] -} From f2f99fda310250c189f7ef946e293f2f84ff7346 Mon Sep 17 00:00:00 2001 From: Thu Huynh <32840471+ThuH2305@users.noreply.github.com> Date: Tue, 11 Oct 2022 23:46:45 +0200 Subject: [PATCH 27/28] docs: fix documentation link in README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d253c346..a55216f5 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ There are other existing solutions in the market, like Zapier and Integromat, so ## Documentation -The official documentation can be found here: [https://automatisch.io/docs](https://automatisch.io/docs) +The official documentation can be found here: [https://automatisch.io/docs/](https://automatisch.io/docs/) ## Installation From 6895378d331757e4fcefe84c1a01613cb47d54ac Mon Sep 17 00:00:00 2001 From: Zeynep Nur Temel Date: Wed, 12 Oct 2022 15:00:33 +0200 Subject: [PATCH 28/28] docs: fix description of Slack connection --- packages/docs/pages/connections/slack.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/docs/pages/connections/slack.md b/packages/docs/pages/connections/slack.md index 891df064..92db6c18 100644 --- a/packages/docs/pages/connections/slack.md +++ b/packages/docs/pages/connections/slack.md @@ -1,7 +1,7 @@ # Slack -:::info This page explains the steps you need to follow to set up the Slack -connection in Automatisch. If any of the steps are outdated, please let us know! +:::info +This page explains the steps you need to follow to set up the Slack connection in Automatisch. If any of the steps are outdated, please let us know! ::: 1. Go to the [link](https://api.slack.com/apps?new_app=1) to **create an app**