diff --git a/packages/insomnia-components/src/assets/icn-checkmark-circle.svg b/packages/insomnia-components/src/assets/icn-checkmark-circle.svg new file mode 100644 index 0000000000..1fdfdf74e1 --- /dev/null +++ b/packages/insomnia-components/src/assets/icn-checkmark-circle.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/insomnia-components/src/assets/icn-disconnected.svg b/packages/insomnia-components/src/assets/icn-disconnected.svg new file mode 100644 index 0000000000..0cc8d7d8e1 --- /dev/null +++ b/packages/insomnia-components/src/assets/icn-disconnected.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/insomnia-components/src/assets/icn-receive.svg b/packages/insomnia-components/src/assets/icn-receive.svg new file mode 100644 index 0000000000..8dec06e7cb --- /dev/null +++ b/packages/insomnia-components/src/assets/icn-receive.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/insomnia-components/src/assets/icn-sent.svg b/packages/insomnia-components/src/assets/icn-sent.svg new file mode 100644 index 0000000000..454ca330e1 --- /dev/null +++ b/packages/insomnia-components/src/assets/icn-sent.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/packages/insomnia-components/src/assets/icn-system-event.svg b/packages/insomnia-components/src/assets/icn-system-event.svg new file mode 100644 index 0000000000..025cbfa7d1 --- /dev/null +++ b/packages/insomnia-components/src/assets/icn-system-event.svg @@ -0,0 +1,3 @@ + + + diff --git a/packages/insomnia-components/src/svg-icon.tsx b/packages/insomnia-components/src/svg-icon.tsx index 2c0ccbde30..275573329e 100644 --- a/packages/insomnia-components/src/svg-icon.tsx +++ b/packages/insomnia-components/src/svg-icon.tsx @@ -8,10 +8,12 @@ import { SvgIcnBrackets } from './assets/svgr/IcnBrackets'; import { SvgIcnBug } from './assets/svgr/IcnBug'; import { SvgIcnBurgerMenu } from './assets/svgr/IcnBurgerMenu'; import { SvgIcnCheckmark } from './assets/svgr/IcnCheckmark'; +import { SvgIcnCheckmarkCircle } from './assets/svgr/IcnCheckmarkCircle'; import { SvgIcnChevronDown } from './assets/svgr/IcnChevronDown'; import { SvgIcnChevronUp } from './assets/svgr/IcnChevronUp'; import { SvgIcnClock } from './assets/svgr/IcnClock'; import { SvgIcnCookie } from './assets/svgr/IcnCookie'; +import { SvgIcnDisconnected } from './assets/svgr/IcnDisconnected'; import { SvgIcnDraftingCompass } from './assets/svgr/IcnDraftingCompass'; import { SvgIcnDragGrip } from './assets/svgr/IcnDragGrip'; import { SvgIcnElevator } from './assets/svgr/IcnElevator'; @@ -43,10 +45,13 @@ import { SvgIcnPlus } from './assets/svgr/IcnPlus'; import { SvgIcnProhibited } from './assets/svgr/IcnProhibited'; import { SvgIcnQuestion } from './assets/svgr/IcnQuestion'; import { SvgIcnQuestionFill } from './assets/svgr/IcnQuestionFill'; +import { SvgIcnReceive } from './assets/svgr/IcnReceive'; import { SvgIcnSearch } from './assets/svgr/IcnSearch'; import { SvgIcnSecCert } from './assets/svgr/IcnSecCert'; +import { SvgIcnSent } from './assets/svgr/IcnSent'; import { SvgIcnSuccess } from './assets/svgr/IcnSuccess'; import { SvgIcnSync } from './assets/svgr/IcnSync'; +import { SvgIcnSystemEvent } from './assets/svgr/IcnSystemEvent'; import { SvgIcnTrashcan } from './assets/svgr/IcnTrashcan'; import { SvgIcnTriangle } from './assets/svgr/IcnTriangle'; import { SvgIcnUser } from './assets/svgr/IcnUser'; @@ -122,7 +127,11 @@ export const IconEnum = { warning: 'warning', warningCircle: 'warning-circle', x: 'x', - + disconnected: 'disconnected', + checkmarkCircle: 'checkmark-circle', + receive: 'receive', + sent: 'sent', + systemEvent: 'system-event', /** Blank icon */ empty: 'empty', } as const; @@ -224,6 +233,11 @@ export class SvgIcon extends Component { [IconEnum.warningCircle]: [ThemeEnum.default, SvgIcnWarningCircle], [IconEnum.warning]: [ThemeEnum.notice, SvgIcnWarning], [IconEnum.x]: [ThemeEnum.default, SvgIcnX], + [IconEnum.disconnected]: [ThemeEnum.default, SvgIcnDisconnected], + [IconEnum.receive]: [ThemeEnum.default, SvgIcnReceive], + [IconEnum.sent]: [ThemeEnum.default, SvgIcnSent], + [IconEnum.checkmarkCircle]: [ThemeEnum.default, SvgIcnCheckmarkCircle], + [IconEnum.systemEvent]: [ThemeEnum.default, SvgIcnSystemEvent], }; render() { diff --git a/packages/insomnia-smoke-test/fixtures/certificates/client.localhost-client-key.pem b/packages/insomnia-smoke-test/fixtures/certificates/client.localhost-client-key.pem new file mode 100644 index 0000000000..65e60dfa66 --- /dev/null +++ b/packages/insomnia-smoke-test/fixtures/certificates/client.localhost-client-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQDQaumV23vAEqn4 +KAJ+zQ7nKlLWVwhqMjOS7pz3HohLf4HER6SQ6bhXj2dlsW2TEDZQcOxw9jyTs4Wu +ckpqWy//UQ4LawQ3FGpst2kFAtFY6D93odh0mjPCLzQlXpcGKs6LOzlWAXWxrV6k +HRCsPT6ytnSOZNMlDNQKB+dZJ+vFz2c5LYyPXUkVenYsYH38E/ZFIz5GVRJlLhcH +IKRK3cJoGSQfljlFFDDiwvHc5/hszKIA0zHjk4MmnSw4Dm1P7fiFsI8zZEkNACBG +O/Lf6lcWX8r+1LfrGsmRfku4GrP5LXWD/ToLgmo2CAP3TBM9ftCggKhTbJfZxMWb +Q3DAui1RAgMBAAECggEBAKKM4AW7Gzdg1yPuwJN5B0iQH++ADdYVtVfBtraeH5sS +pXkaj2VehCH2fKQ5z8ZFfLcce6xWwERKXdcC2Ls+x56P7y5ElxMGX0LPgZ8g5Xo8 +GVQK7LF0my22dys2LP/oXxMEa+GCXfLnzsqcyKYtVjs4RovQY0WgTbhNFcjZc+/g +PL3DclvJHJ5n9Bb+ufxJO3K7i4sxD8gcGfgXTVSghM+VCkslw0BJcqpNyGgEjI64 +FTf7Qu1E0rKRGT0EKm70RffoZpLNdpMR/9GMHE5CAMSGie27AK2X8OKCgmqCh3Kp +wKqy3hRNnk9LNfhaan2LuprKlv11bJwAFAQIJSKtzOkCgYEA6n3NI5U4h//w0SeG +eaoOqXDyWmjSj4w1MbPV4sPvs1hG0iXn+w7+dfocXGawoPyu5zB9MhGf3mRB/8dp +6gb+xvYYSoVysh4VboBMJbWBlkWH4/q5KBnwuEVZDPy5fDpK449SlVmiqfpOH7hZ +wzGV5Wdwzofxp4nVIhCT/ryFYP8CgYEA44jcXh9rOHeRySo4ZofBP0QqAdT48ffl +D+VZ2q3/DNj67dYPfo8hhnEgsgVPz02ODHh8aMYVQp4OYrXpdh3/qqnWR7BB5ch1 +lVFSOjytp17TSEm//vXz+WzSyrtlInGjqGazUGMpz+9j672be4y+wdxeyNDq04lr +UQXIAsP0Ia8CgYAvhA5th29NH6/MshWt0afm7dwuNc91BxRAXhCZQtrvnJO9QbEg +TomBnozgrG5eMNXAQzMbUjby+Z3mFqJ/qas25edGMoRrU21EVvsXKRB5Qt2mdMfQ +OHFu5Z6F4zAy3B0Qv5ocaW1sxCvQgaquwv183tkdAK8XI/bsUC+tDsZ4QQKBgQDL +kYTnSODa0k9CVV3Ejaydd9TFcs+PXKQ5ho7PkWBhFDfcVeni5xetesUvwITZCaAP +FDTqYF5hDZv9QJexL8Gv5OdrmAw9Ew3wG6Ofqu4KklIhmKoH5/DxtSUacHJZUKaF +Ye0H/NBJ0vnozeivrwpz0z+SFyghPg8fnDaIEtz2zQKBgHfG8/eXi1ZOiv1nLEuZ +SvJY8IU89aTqhgVsVk0g6h1jEBhZI4mTyvJe4OyC2JjxX4YD9gxu2AXSf2w7yU94 +jRZdqJpLoXtcbIy9nAdYa0AyyyPKzwcSUepO2pqE3QCOSwxlplEqrWVzD9FyHFGJ +0RyshruFkeq15L6ud/6fY8Wz +-----END PRIVATE KEY----- diff --git a/packages/insomnia-smoke-test/fixtures/certificates/client.localhost-client.pem b/packages/insomnia-smoke-test/fixtures/certificates/client.localhost-client.pem new file mode 100644 index 0000000000..c594558490 --- /dev/null +++ b/packages/insomnia-smoke-test/fixtures/certificates/client.localhost-client.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIESDCCArCgAwIBAgIRAKkiT43PW7dM415hMVMjLlIwDQYJKoZIhvcNAQELBQAw +ezEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSgwJgYDVQQLDB9kYXZp +ZEBETWFyYnktV29yayAoRGF2aWQgTWFyYnkpMS8wLQYDVQQDDCZta2NlcnQgZGF2 +aWRARE1hcmJ5LVdvcmsgKERhdmlkIE1hcmJ5KTAeFw0yMjA4MjUxMzQ1NTBaFw0y +NDExMjUxNDQ1NTBaMFMxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9wbWVudCBjZXJ0 +aWZpY2F0ZTEoMCYGA1UECwwfZGF2aWRARE1hcmJ5LVdvcmsgKERhdmlkIE1hcmJ5 +KTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANBq6ZXbe8ASqfgoAn7N +DucqUtZXCGoyM5LunPceiEt/gcRHpJDpuFePZ2WxbZMQNlBw7HD2PJOzha5ySmpb +L/9RDgtrBDcUamy3aQUC0VjoP3eh2HSaM8IvNCVelwYqzos7OVYBdbGtXqQdEKw9 +PrK2dI5k0yUM1AoH51kn68XPZzktjI9dSRV6dixgffwT9kUjPkZVEmUuFwcgpErd +wmgZJB+WOUUUMOLC8dzn+GzMogDTMeOTgyadLDgObU/t+IWwjzNkSQ0AIEY78t/q +VxZfyv7Ut+sayZF+S7gas/ktdYP9OguCajYIA/dMEz1+0KCAqFNsl9nExZtDcMC6 +LVECAwEAAaNvMG0wDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMC +BggrBgEFBQcDATAfBgNVHSMEGDAWgBQgZSNC3VSTkAucIY9/41pfQ64sozAbBgNV +HREEFDASghBjbGllbnQubG9jYWxob3N0MA0GCSqGSIb3DQEBCwUAA4IBgQB4JLAo +j24DvacnTOxPu7gtpLFfB7ykgeAhzdWla7Maqp62lnasYUL9+nX8+aNOxYbd3uq/ +55uSBBy2jnxce2B0oqkRhB0uOPZNwJsJXIZEp+anhz9E9jrgZhdMCDuhrwn5amPc +UmisabO5rPrFxmhKVhkoWHFPKVVOqqlnUt9UdFQsdIQoKYuX1BNro0QDOQ/p4Z7y +tCd6DsyhgV3iTDN3GkBv4fbYxxjD5tyxYKjCAwmcebOwEtAbHXFYpyVg0bNqEq0S +YofcZHkxFtBXV1Ayb1yhNYqNTu3VHTQkkE+XO2vJGBhbueKWQADLZ2fQ+8qkTqL8 +AQ3YX4UQKcWcqwRUWpmEmr+XNfqYq8UrbO/liuPh0uQh7WkxHGlLMPe76jeK1FJP +P8T+Ivh7x7MCj2G/KlwIb7OgpjCuKeR28aSz3+WDInF4lydUwHDZveByVidBaD32 +NIZeX3K8nj7tGpchbDHLiCtdSwTEXFKBPm5EcvAO92alis7mozgGrG3dK1M= +-----END CERTIFICATE----- diff --git a/packages/insomnia-smoke-test/fixtures/certificates/localhost-key.pem b/packages/insomnia-smoke-test/fixtures/certificates/localhost-key.pem new file mode 100644 index 0000000000..d5c1caea10 --- /dev/null +++ b/packages/insomnia-smoke-test/fixtures/certificates/localhost-key.pem @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDTqFvEgk21fa9Z +e1OhPQ5BcUDIBLSY3F+1nNv5U0HKzUKEcoU+d0TER2/iNYPs2yLU2mK1UMgQsJfB +j/2ER0kVBSwJ4uk02HqtXtv/E9/RkwYycUsHZFX6wk8HVEKqfIxSgApGBoT15//l +DYFkJwtMvwib5szzmyVswHrYC15HY67o6PkNPyMfn/erOnu4akf0CA1lIg/2haeu +EmTx3mPs677f9xUt6MFHRAAZS6HZKu6THcW6VtOUybj9D+slDwQBJ2aS5Lq79VJd +cBXxCbq2UkXK/bIHkylQ2gtK2Gq8CvbnxmrGU9pXrIFRT7xLQTaUFxXeUMbGO98k +5Wu62FP9AgMBAAECggEBAMc+PCyvMPHBP9jvNFmbPRkzwHTJoSwof1xaLeT1kACV +2qENoQqdgbl3OgZqtCa6Xn6amcLvKXY0lpbash7ccBp+hOdFmJxrkIg1vMjQ76e8 +TGAdsDBkLl/gnD5c/mi41+stpv4mUvGdlJENdplN++AiELuZt6M2kDNgugM4KGbv +45cwuu0DDldCSlp9ujFvn4QipEzf4wcNqvMyaNCzGw/7FyRQncZTe9J3E1RV+Tow +UWqXSR3LhRUNpn65khtPBgkE+ffAFf6d2+wwm5Cex+VOTlMQnkgtk6IgAweBkXY4 +KBmzTupm1TqfQX16zUzDaq3zO2YUhwAMwxo2Dm2rIE0CgYEA29vOXaD8PXepMwDw +2tJS/c3WKNgTeZ1B8vQxlduwfuJeMHVXF20y2kO2rhEsrPTIUX7mM8Bj59vP9rcX +2P4GTBjvsvZj/yYrFV2EyXu+LjPbPMJCi8P/J8w8f0Pwy3xME/awdi477rm43cjn +cBlZNAl0KK3npDd5L5Dfs7fAuu8CgYEA9nNvdQ2EqH1wychTeg3Mj2CsnFI/lPAm +CmUL/Dmt47NXMkG+i1DfyaKTqF7M2+cWphzsk3ppwLfU2am2Uk9DgQl7BkFoLCXY +7xD0gfIAQKrbLKo9wHvjdn3j8rbnDb/A4qCA3ea5kItWviQbUdgl3amnp9Ts2tE8 +3H09kLmZz9MCgYBbXonw10p8sRIcJDP0fJwI5lYuOz48uGID+f/xa49569GBCgLb +tYIAu0tcI78RUdk+JSK+NyJN5UgUHBtJDqjHT0Wudj8wdkhJZMgeg9KRmPNv2LuX +IikT/QjXSwDzUAC9+zNyqdw2ZfCyGyAzshUkTxl7Hmq6EGPIpMiTA7aQ+QKBgQDr +2Kp4DRi/mVPfdnsUWbJCH5Tv//Hi2TK+Tdb7aENVnaG7cZkkf5+5uYCu5xIK+4n8 +K7/mnoYnrITgS/4zpLEIAoeeA+fqH8oLdmFXHb1KJXebtctkseqK0YzcEFbrHG89 +MbZBJPS+M+ouCiWu3DfYeev8u9Jy0Tv6EUxifIuKiwKBgQDJPmxCPM3HS3fvO+7w +DlMtR52IKjohaKmMnt5EtNUR1Xs9vZCa51SvNWA6YJ+zqoGQVCXUoy77O43cewK3 +crv3Hz4wWENG/bVfJQlkpFS4t+RJzNqEzeXSYQxFVfQlnhoeEAj/cZWuOJpkhmC2 +2JkrwTxrofjxbbfD/m56XUusQg== +-----END PRIVATE KEY----- diff --git a/packages/insomnia-smoke-test/fixtures/certificates/localhost.pem b/packages/insomnia-smoke-test/fixtures/certificates/localhost.pem new file mode 100644 index 0000000000..bd5854826c --- /dev/null +++ b/packages/insomnia-smoke-test/fixtures/certificates/localhost.pem @@ -0,0 +1,25 @@ +-----BEGIN CERTIFICATE----- +MIIENzCCAp+gAwIBAgIRAPKpJUU8eOZ/zg0WbmKsy8IwDQYJKoZIhvcNAQELBQAw +ezEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSgwJgYDVQQLDB9kYXZp +ZEBETWFyYnktV29yayAoRGF2aWQgTWFyYnkpMS8wLQYDVQQDDCZta2NlcnQgZGF2 +aWRARE1hcmJ5LVdvcmsgKERhdmlkIE1hcmJ5KTAeFw0yMjA4MjUxMzQ1MzdaFw0y +NDExMjUxNDQ1MzdaMFMxJzAlBgNVBAoTHm1rY2VydCBkZXZlbG9wbWVudCBjZXJ0 +aWZpY2F0ZTEoMCYGA1UECwwfZGF2aWRARE1hcmJ5LVdvcmsgKERhdmlkIE1hcmJ5 +KTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANOoW8SCTbV9r1l7U6E9 +DkFxQMgEtJjcX7Wc2/lTQcrNQoRyhT53RMRHb+I1g+zbItTaYrVQyBCwl8GP/YRH +SRUFLAni6TTYeq1e2/8T39GTBjJxSwdkVfrCTwdUQqp8jFKACkYGhPXn/+UNgWQn +C0y/CJvmzPObJWzAetgLXkdjrujo+Q0/Ix+f96s6e7hqR/QIDWUiD/aFp64SZPHe +Y+zrvt/3FS3owUdEABlLodkq7pMdxbpW05TJuP0P6yUPBAEnZpLkurv1Ul1wFfEJ +urZSRcr9sgeTKVDaC0rYarwK9ufGasZT2lesgVFPvEtBNpQXFd5QxsY73yTla7rY +U/0CAwEAAaNeMFwwDgYDVR0PAQH/BAQDAgWgMBMGA1UdJQQMMAoGCCsGAQUFBwMB +MB8GA1UdIwQYMBaAFCBlI0LdVJOQC5whj3/jWl9DriyjMBQGA1UdEQQNMAuCCWxv +Y2FsaG9zdDANBgkqhkiG9w0BAQsFAAOCAYEAORoaX+VVxk2HyJZveHJgQGcKgOwm +0jm3VQ2d4fFlfiAsLbpkZAeTApu1A4ylan8q6clmraP7GyNf7iZ3OMPkS4vVONMs +sJmFkrKsES4mF3CHKK7+8/bRtB0Y0yTGDxWOiQpZ3Ok6S84WTPylFyTZi4GVRN8P ++KhOaGleNLaf4m2ts0RbMh33va3UKn1b5VgxhdQKGUHcQYTwhmXVW3GDNv2W0Adk +hCaHIDIDAKoCZVm6HYcf/GW4EhJaujnxSWPR8os25+DePeHhrgKvlHMyyevSLcqP +U+ZN3Lk8nNIgCOuhPke7J71IJAX4lklljfeL0sQHDd/5mwLlEtWvaRNGfovnfBfL +ut5Pq0QU2WkOMwdYPJ62fuCm9GX58tXb9MfezFst0EEpf2S0Tn/7TvIXq7DOfzZu +htaGf6HrfkV159ULFuAEog+2HwvPGW3wLVQN5n6QgV/uv0W40Wm1SVpEGG4cK1r4 +emap+9mwik3/bLP0xeuTG8S6X7MZde3By1xo +-----END CERTIFICATE----- diff --git a/packages/insomnia-smoke-test/fixtures/certificates/rootCA-key.pem b/packages/insomnia-smoke-test/fixtures/certificates/rootCA-key.pem new file mode 100644 index 0000000000..21eb9ab557 --- /dev/null +++ b/packages/insomnia-smoke-test/fixtures/certificates/rootCA-key.pem @@ -0,0 +1,40 @@ +-----BEGIN PRIVATE KEY----- +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 +TmvRvDdQuagS/w4gM0gSrA== +-----END PRIVATE KEY----- diff --git a/packages/insomnia-smoke-test/fixtures/certificates/rootCA.pem b/packages/insomnia-smoke-test/fixtures/certificates/rootCA.pem new file mode 100644 index 0000000000..43d0f148c1 --- /dev/null +++ b/packages/insomnia-smoke-test/fixtures/certificates/rootCA.pem @@ -0,0 +1,28 @@ +-----BEGIN CERTIFICATE----- +MIIExTCCAy2gAwIBAgIQb/tURt+KKadPV6mtgAlcPDANBgkqhkiG9w0BAQsFADB7 +MR4wHAYDVQQKExVta2NlcnQgZGV2ZWxvcG1lbnQgQ0ExKDAmBgNVBAsMH2Rhdmlk +QERNYXJieS1Xb3JrIChEYXZpZCBNYXJieSkxLzAtBgNVBAMMJm1rY2VydCBkYXZp +ZEBETWFyYnktV29yayAoRGF2aWQgTWFyYnkpMB4XDTIyMDgyNTEzNDM1N1oXDTMy +MDgyNTEzNDM1N1owezEeMBwGA1UEChMVbWtjZXJ0IGRldmVsb3BtZW50IENBMSgw +JgYDVQQLDB9kYXZpZEBETWFyYnktV29yayAoRGF2aWQgTWFyYnkpMS8wLQYDVQQD +DCZta2NlcnQgZGF2aWRARE1hcmJ5LVdvcmsgKERhdmlkIE1hcmJ5KTCCAaIwDQYJ +KoZIhvcNAQEBBQADggGPADCCAYoCggGBAKLHiTPWPJMi8CG3MuqDjRels3BtmDRU +M9eTA+1vph84D6T+k+49E+uFiRWjJs2pa1AsG2iXvtJS6/LK0lm0pjWBFMzgfPD5 +mhF4Q9XV6QmvkMGoxeRVAciWmiQVCyBf91b+/N9DSONx8y0cT4VgskpZnddvL59W +SNKX1Xvm4wcPd/mSUmZco9MwaUEp/5oLBOUG9d2f2hcCp/6NBCLVvzG98Z1cwFgS +E6hbgdt0+HAwe7MyUXnLyzoJ31YxCgRWsqICpPsLinv0aAvABPqWtsKa/Dzm3s0p +z/b6jwm8XzkBwz1eSi7J2Ew+xaXTS98Cmc3oQQlhfz4/lWZyiYILl9XKDHNk6P8S +Wkh/Hg5fLf2Wcksai/h62li1XlEMqua9KOJ3rBeKZgc5ELuxaQlTs+qcfGijKWDN +s6yqUKnsZVkvMB65IyfAl+yZInsZUw2rlSRC/0rKDHAWYy46BHTztSLfjTL5G6ox +nMl0GjD7ZoJg/D7NmD6ertkAQJlslb86aQIDAQABo0UwQzAOBgNVHQ8BAf8EBAMC +AgQwEgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHQ4EFgQUIGUjQt1Uk5ALnCGPf+Na +X0OuLKMwDQYJKoZIhvcNAQELBQADggGBACVC0yCFLKD5BqBbvHOTPh4pDGl+dmxR +Ta/GjZvXisbxKA/YlwZ+deENLW8veYoDgr7QEOb8QvXiqdd/no+rAU18KnTlwOsD +ITITqF8tStTJKPBubws4S9fhQIeDs+7MS7mW7lfbIz4ho77KcweSbndak9NW7cBl +AwoCPcK/uCH0F2EHDNAQnxf1OVdRREPWD4/Di9EhYr6T5BaRVuD/pB4eYUb9shqD +6vLKVYb/vpYIHc5vEDYT4cmaFW8rXJc+gHZzs+SkTpjvUKZrz9JRrdAji+djPQlD +ZRry4t9De7nVdCZDGjbwzwuEtJxoveldDKcZ/BtRb7dVbU7SB6WqKjUzqlnCoLdE +eZBU2d6+r/ojnPCxHgzVRzABYF4vakIYg4VDVFYEVqdnBo8n5PJLX2gAHbaasOQ4 +hPYthHs8RVk2O5+A/mBVeE09yCwhOAxvqi91ttS4uuN2ullmr07232Wzgc64GSJf +g1WKYRpirTEbH49z3lXRIwGaq2J1xArHsA== +-----END CERTIFICATE----- diff --git a/packages/insomnia-smoke-test/fixtures/websockets.yaml b/packages/insomnia-smoke-test/fixtures/websockets.yaml new file mode 100644 index 0000000000..d6f8b8f333 --- /dev/null +++ b/packages/insomnia-smoke-test/fixtures/websockets.yaml @@ -0,0 +1,87 @@ +_type: export +__export_format: 4 +__export_date: 2022-08-31T10:40:21.266Z +__export_source: insomnia.desktop.app:v2022.5.0 +resources: + - _id: ws-req_0ba3ad1a7a81483a8f0c0caab4e8998c + parentId: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + modified: 1661942223227 + created: 1661942202873 + name: localhost:4010 + url: ws://localhost:4010 + metaSortKey: -1661942202873 + headers: [] + authentication: {} + _type: websocket_request + - _id: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + parentId: null + modified: 1661942194367 + created: 1661942194367 + name: WebSockets + description: "" + scope: collection + _type: workspace + - _id: ws-req_c522379d686b44179e9626fc6c8ed88a + parentId: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + modified: 1662451274029 + created: 1662451239058 + name: basic-auth + url: ws://localhost:4010/basic-auth + metaSortKey: -1661942202823 + headers: [] + authentication: + type: basic + useISO88591: false + disabled: false + username: user + password: password + _type: websocket_request + - _id: ws-req_2157c597bcbb4614b64c7c99c6f7a982 + parentId: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + modified: 1662451369688 + created: 1662451318293 + name: bearer + url: ws://localhost:4010/bearer + metaSortKey: -1661942202723 + headers: [] + authentication: + type: bearer + token: insomnia-cool-token-!!!1112113243111 + disabled: false + _type: websocket_request + - _id: ws-req_6b9c944a7f034fcb8b0a92e5442538d7 + parentId: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + modified: 1662451456879 + created: 1662451430343 + name: redirect + url: ws://localhost:4010/redirect + metaSortKey: -1661942202623 + headers: [] + authentication: {} + _type: websocket_request + - _id: env_78d7375877d288dfb527a256e6d7e92dce4ff968 + parentId: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + modified: 1661942194375 + created: 1661942194375 + name: Base Environment + data: {} + dataPropertyOrder: null + color: null + isPrivate: false + metaSortKey: 1661942194375 + _type: environment + - _id: jar_78d7375877d288dfb527a256e6d7e92dce4ff968 + parentId: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + modified: 1661942194378 + created: 1661942194378 + name: Default Jar + cookies: [] + _type: cookie_jar + - _id: spc_2d11197686aa40ec8f5f072727af4a7a + parentId: wrk_db59cf2b74764e6a80c0dcbcf3d67130 + modified: 1661942194369 + created: 1661942194369 + fileName: ws example + contents: "" + contentType: yaml + _type: api_spec diff --git a/packages/insomnia-smoke-test/package-lock.json b/packages/insomnia-smoke-test/package-lock.json index 144b94d8f1..1e0ea56767 100644 --- a/packages/insomnia-smoke-test/package-lock.json +++ b/packages/insomnia-smoke-test/package-lock.json @@ -22,6 +22,7 @@ "@types/oidc-provider": "^7.8.1", "@types/ramda": "^0.27.45", "@types/uuid": "^8.3.4", + "@types/ws": "^8.5.3", "concurrently": "^7.0.0", "cross-env": "^7.0.3", "execa": "^5.0.0", @@ -38,6 +39,7 @@ "ramda-adjunct": "^2.34.0", "ts-node": "^9.1.1", "uuid": "^8.3.2", + "ws": "^8.8.1", "xvfb-maybe": "^0.2.1" } }, @@ -1453,6 +1455,15 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", "dev": true }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/yargs": { "version": "17.0.10", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", @@ -5644,6 +5655,27 @@ "node": "^12.13.0 || ^14.15.0 || >=16" } }, + "node_modules/ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/xvfb-maybe": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/xvfb-maybe/-/xvfb-maybe-0.2.1.tgz", @@ -6957,6 +6989,15 @@ "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==", "dev": true }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, "@types/yargs": { "version": "17.0.10", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.10.tgz", @@ -10192,6 +10233,13 @@ "signal-exit": "^3.0.7" } }, + "ws": { + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", + "dev": true, + "requires": {} + }, "xvfb-maybe": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/xvfb-maybe/-/xvfb-maybe-0.2.1.tgz", diff --git a/packages/insomnia-smoke-test/package.json b/packages/insomnia-smoke-test/package.json index 70b73d13ee..e22ccaee25 100644 --- a/packages/insomnia-smoke-test/package.json +++ b/packages/insomnia-smoke-test/package.json @@ -41,6 +41,7 @@ "@types/oidc-provider": "^7.8.1", "@types/ramda": "^0.27.45", "@types/uuid": "^8.3.4", + "@types/ws": "^8.5.3", "concurrently": "^7.0.0", "cross-env": "^7.0.3", "execa": "^5.0.0", @@ -57,6 +58,7 @@ "ramda-adjunct": "^2.34.0", "ts-node": "^9.1.1", "uuid": "^8.3.2", + "ws": "^8.8.1", "xvfb-maybe": "^0.2.1" } } diff --git a/packages/insomnia-smoke-test/server/index.ts b/packages/insomnia-smoke-test/server/index.ts index 4d6cadd29a..5b8acd0bbe 100644 --- a/packages/insomnia-smoke-test/server/index.ts +++ b/packages/insomnia-smoke-test/server/index.ts @@ -1,5 +1,8 @@ import express from 'express'; import { graphqlHTTP } from 'express-graphql'; +import { readFileSync } from 'fs'; +import { createServer } from 'https'; +import { join } from 'path'; import { basicAuthRouter } from './basic-auth'; import githubApi from './github-api'; @@ -7,9 +10,11 @@ import gitlabApi from './gitlab-api'; import { root, schema } from './graphql'; import { startGRPCServer } from './grpc'; import { oauthRoutes } from './oauth'; +import { startWebSocketServer } from './websocket'; const app = express(); const port = 4010; +const httpsPort = 4011; const grpcPort = 50051; app.get('/pets/:id', (req, res) => { @@ -55,7 +60,23 @@ app.use('/graphql', graphqlHTTP({ })); startGRPCServer(grpcPort).then(() => { - app.listen(port, () => { + const server = app.listen(port, () => { console.log(`Listening at http://localhost:${port}`); + console.log(`Listening at ws://localhost:${port}`); }); + + const httpsServer = createServer({ + cert: readFileSync(join(__dirname, '../fixtures/certificates/localhost.pem')), + ca: readFileSync(join(__dirname, '../fixtures/certificates/rootCA.pem')), + key: readFileSync(join(__dirname, '../fixtures/certificates/localhost-key.pem')), + // Only allow connections using valid client certificates + requestCert: true, + rejectUnauthorized: true, + }, app); + httpsServer.listen(httpsPort, () => { + console.log(`Listening at https://localhost:${httpsPort}`); + console.log(`Listening at wss://localhost:${httpsPort}`); + }); + + startWebSocketServer(server, httpsServer); }); diff --git a/packages/insomnia-smoke-test/server/websocket.ts b/packages/insomnia-smoke-test/server/websocket.ts new file mode 100644 index 0000000000..de19084886 --- /dev/null +++ b/packages/insomnia-smoke-test/server/websocket.ts @@ -0,0 +1,83 @@ +import { IncomingMessage, Server } from 'http'; +import { Socket } from 'net'; +import { WebSocket, WebSocketServer } from 'ws'; + +/** + * Starts an echo WebSocket server that receives messages from a client and echoes them back. + */ +export function startWebSocketServer(server: Server, httpsServer: Server) { + const wsServer = new WebSocketServer({ noServer: true }); + const wssServer = new WebSocketServer({ noServer: true }); + + server.on('upgrade', (request, socket, head) => { + upgrade(wsServer, request, socket, head); + }); + httpsServer.on('upgrade', (request, socket, head) => { + upgrade(wssServer, request, socket, head); + }); + wsServer.on('connection', handleConnection); + wssServer.on('connection', handleConnection); +} + +const handleConnection = (ws: WebSocket, req: IncomingMessage) => { + console.log('WebSocket connection was opened'); + console.log('Upgrade headers:', req.headers); + + ws.on('message', (message, isBinary) => { + if (isBinary) { + ws.send(message); + return; + } + if (message.toString() === 'close') { + ws.close(1003, 'Invalid message type'); + } + ws.send(message.toString()); + }); + + ws.on('close', () => { + console.log('WebSocket connection was closed'); + }); +}; +const redirectOnSuccess = (socket: Socket) => { + socket.end(`HTTP/1.1 302 Found +Location: ws://localhost:4010 + +`); + return; +}; +const return401withBody = (socket: Socket) => { + socket.end(`HTTP/1.1 401 Unauthorized + + + + +
+

401 Unauthorized

+
+ + `); + return; +}; +const upgrade = (wss: WebSocketServer, request: IncomingMessage, socket: Socket, head: Buffer) => { + if (request.url === '/redirect') { + return redirectOnSuccess(socket); + } + if (request.url === '/bearer') { + if (request.headers.authorization !== 'Bearer insomnia-cool-token-!!!1112113243111') { + return401withBody(socket); + return; + } + return redirectOnSuccess(socket); + } + if (request.url === '/basic-auth') { + // login with user:password + if (request.headers.authorization !== 'Basic dXNlcjpwYXNzd29yZA==') { + return401withBody(socket); + return; + } + return redirectOnSuccess(socket); + } + wss.handleUpgrade(request, socket, head, ws => { + wss.emit('connection', ws, request); + }); +}; diff --git a/packages/insomnia-smoke-test/tests/websocket.test.ts b/packages/insomnia-smoke-test/tests/websocket.test.ts new file mode 100644 index 0000000000..590221ba04 --- /dev/null +++ b/packages/insomnia-smoke-test/tests/websocket.test.ts @@ -0,0 +1,52 @@ +import { expect } from '@playwright/test'; + +import { loadFixture } from '../playwright/paths'; +import { test } from '../playwright/test'; + +test('can make websocket connection', async ({ app, page }) => { + test.slow(process.platform === 'darwin' || process.platform === 'win32', 'Slow app start on these platforms'); + const statusTag = page.locator('[data-testid="response-status-tag"]:visible'); + const responseBody = page.locator('[data-testid="response-pane"] >> [data-testid="CodeEditor"]:visible', { + has: page.locator('.CodeMirror-activeline'), + }); + + await page.click('[data-testid="project"]'); + await page.click('text=Create'); + + const text = await loadFixture('websockets.yaml'); + await app.evaluate(async ({ clipboard }, text) => clipboard.writeText(text), text); + + await page.click('button:has-text("Clipboard")'); + await page.click('text=CollectionWebSocketsjust now'); + + await page.click('button:has-text("localhost:4010")'); + await page.click('text=Connect'); + await expect(statusTag).toContainText('101 Switching Protocols'); + await page.click('[data-testid="response-pane"] >> [role="tab"]:has-text("Timeline")'); + await expect(responseBody).toContainText('WebSocket connection established'); + + await page.click('text=Disconnect'); + await expect(responseBody).toContainText('Closing connection with code 1005'); + + // Can connect with Basic Auth + await page.click('button:has-text("basic-auth")'); + await page.click('text=Connect'); + await expect(statusTag).toContainText('101 Switching Protocols'); + await page.click('[data-testid="response-pane"] >> [role="tab"]:has-text("Timeline")'); + await expect(responseBody).toContainText('> authorization: Basic dXNlcjpwYXNzd29yZA=='); + + // Can connect with Bearer Auth + await page.click('button:has-text("bearer")'); + await page.click('text=Connect'); + await expect(statusTag).toContainText('101 Switching Protocols'); + await page.click('[data-testid="response-pane"] >> [role="tab"]:has-text("Timeline")'); + await expect(responseBody).toContainText('> authorization: Bearer insomnia-cool-token-!!!1112113243111'); + + // Can handle redirects + await page.click('button:has-text("redirect")'); + await page.click('text=Connect'); + await expect(statusTag).toContainText('101 Switching Protocols'); + await page.click('[data-testid="response-pane"] >> [role="tab"]:has-text("Timeline")'); + await expect(responseBody).toContainText('WebSocket connection established'); + +}); diff --git a/packages/insomnia/package-lock.json b/packages/insomnia/package-lock.json index 1d9a1aa1d3..538b61d1ab 100644 --- a/packages/insomnia/package-lock.json +++ b/packages/insomnia/package-lock.json @@ -98,6 +98,7 @@ "@types/tough-cookie": "^2.3.7", "@types/uuid": "^8.3.4", "@types/vkbeautify": "^0.99.2", + "@types/ws": "^8.5.3", "@types/yaml": "^1.9.7", "@vitejs/plugin-react": "^1.2.0", "buffer": "^6.0.3", @@ -140,6 +141,7 @@ "react-sortable-hoc": "^2.0.0", "react-tabs": "^3.2.3", "react-use": "^17.2.4", + "react-virtual": "2.10.4", "redux": "^4.1.2", "redux-mock-store": "^1.5.4", "redux-thunk": "^2.4.1", @@ -151,7 +153,8 @@ "typescript": "^4.5.5", "vite": "^2.8.6", "vite-plugin-commonjs-externals": "^0.1.1", - "vkbeautify": "^0.99.1" + "vkbeautify": "^0.99.1", + "ws": "^8.8.1" } }, "node_modules/@ampproject/remapping": { @@ -3162,6 +3165,12 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, + "node_modules/@reach/observe-rect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", + "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==", + "dev": true + }, "node_modules/@repeaterjs/repeater": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", @@ -17604,6 +17613,21 @@ "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==", "dev": true }, + "node_modules/react-virtual": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/react-virtual/-/react-virtual-2.10.4.tgz", + "integrity": "sha512-Ir6+oPQZTVHfa6+JL9M7cvMILstFZH/H3jqeYeKI4MSUX+rIruVwFC6nGVXw9wqAw8L0Kg2KvfXxI85OvYQdpQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/tannerlinsley" + ], + "dependencies": { + "@reach/observe-rect": "^1.1.0" + }, + "peerDependencies": { + "react": "^16.6.3 || ^17.0.0" + } + }, "node_modules/read-config-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", @@ -20379,9 +20403,9 @@ } }, "node_modules/ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "dev": true, "engines": { "node": ">=10.0.0" @@ -22979,6 +23003,12 @@ "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" }, + "@reach/observe-rect": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@reach/observe-rect/-/observe-rect-1.2.0.tgz", + "integrity": "sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==", + "dev": true + }, "@repeaterjs/repeater": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@repeaterjs/repeater/-/repeater-3.0.4.tgz", @@ -34248,6 +34278,15 @@ } } }, + "react-virtual": { + "version": "2.10.4", + "resolved": "https://registry.npmjs.org/react-virtual/-/react-virtual-2.10.4.tgz", + "integrity": "sha512-Ir6+oPQZTVHfa6+JL9M7cvMILstFZH/H3jqeYeKI4MSUX+rIruVwFC6nGVXw9wqAw8L0Kg2KvfXxI85OvYQdpQ==", + "dev": true, + "requires": { + "@reach/observe-rect": "^1.1.0" + } + }, "read-config-file": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.2.0.tgz", @@ -36425,9 +36464,9 @@ } }, "ws": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", - "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "version": "8.8.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", + "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", "dev": true, "requires": {} }, diff --git a/packages/insomnia/package.json b/packages/insomnia/package.json index c8250b2309..14476ed550 100644 --- a/packages/insomnia/package.json +++ b/packages/insomnia/package.json @@ -153,6 +153,7 @@ "@types/tough-cookie": "^2.3.7", "@types/uuid": "^8.3.4", "@types/vkbeautify": "^0.99.2", + "@types/ws": "^8.5.3", "@types/yaml": "^1.9.7", "@vitejs/plugin-react": "^1.2.0", "buffer": "^6.0.3", @@ -196,6 +197,7 @@ "react-sortable-hoc": "^2.0.0", "react-tabs": "^3.2.3", "react-use": "^17.2.4", + "react-virtual": "2.10.4", "redux": "^4.1.2", "redux-mock-store": "^1.5.4", "redux-thunk": "^2.4.1", @@ -207,7 +209,8 @@ "typescript": "^4.5.5", "vite": "^2.8.6", "vite-plugin-commonjs-externals": "^0.1.1", - "vkbeautify": "^0.99.1" + "vkbeautify": "^0.99.1", + "ws": "^8.8.1" }, "dev": { "dev-server-port": 3334 diff --git a/packages/insomnia/src/__jest__/mock-code-editor.tsx b/packages/insomnia/src/__jest__/mock-code-editor.tsx index e71b1efffb..985b63b5a2 100644 --- a/packages/insomnia/src/__jest__/mock-code-editor.tsx +++ b/packages/insomnia/src/__jest__/mock-code-editor.tsx @@ -12,6 +12,7 @@ export class MockCodeEditor extends PureComponent { render() { const { id, onChange, placeholder, defaultValue } = this.props; return