insomnia/packages/insomnia-smoke-test/server/index.ts

138 lines
4.0 KiB
TypeScript
Raw Normal View History

import crypto from 'node:crypto';
import * as bodyParser from 'body-parser';
import * as cookieParser from 'cookie-parser';
import express from 'express';
Initial WebSocket support (#5043) * [INS-1697] Create WebSocket Request (#5041) * add fail safe Co-authored-by: Mark Kim <mark.kim@konghq.com> * Websockets IPC API (#5044) * add url to ws-request model * fix webSocketRequest typo and add url * add websocket api and expose it through preload ipc * add typings Co-authored-by: Mark Kim <mark.kim@konghq.com> * [INS-1701] Create/Close Websocket Connection (#5046) * add websocket action bar and its components * remove comments * clean up * reflect on the electron api * remove unused files * import name change * add styling * remove commet * add suggested changes * remove default value * Add WebSocketRequest to sidebar and update types (#5048) * [INS-1700] Delete Websocket Request (#5055) * add websocket actions dropdown * add actions to websocket request in sidebar * [INS-1703] Display WebSocket messages - first pass (#5054) * Update event types to improve inference * Update websocket response pane to fetch/subscribe and display the events * [INS-1693] Add WS echo server for smoke tests (#5050) Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> * fix sidebar unit tests (#5064) * [INS-1776] adds `ws` dependency explicitly (#5066) * [INS-1702] WebSocket Send Message (#5052) * add initial changes for websocket message * add abstraction for db operation and websocket operation * remove console * add rename * add basic testing * add basic testing * add unit tests * add form event type * add comments * disallow exporting context directly * add suggested changes * refresh the query * using useDeepCompareEffect * rename variable * add mock * clean up * clean up * correct the file name * add some changes * removing nedb-context and its hooks * remove database changes for event sending * [INS-1778] Fix Global Module Typing Issue (#5065) * fix typings * add jest import * [INS-1703] View WebSocket Messages (#5074) * save changes * add styles and move files around * remove unused code * clean up some components * add clean up * add timestamp component * add unit tests * add case * add style changes * [INS-1786] WebSocket headers tab (#5080) * first ui pass * extract and wire up bulk editor * raise ready state, move send * add upgrade header debug logs * can pass header to websocket upgrade * implement readOnly headers * add upgrade event and sent headers * clean up * fill out http upgrade into the event * change upgrade message * read only headers while connected * remove upgrade event * revert bulk editor change * fix header editable toggle * add nunjucks todos * improve readOnly implementation * disable codemirror/nunjucks for websocket headers * take calculated headers out of the data model * move hardcoded default headers down the tree * fix request url rendering issue * removed spammy warning * clarify prop name * refine pair typing * change placeholder * remove readOnly header property * fix readOnly header layout * Update packages/insomnia/src/ui/components/dropdowns/websocket-request-actions-dropdown.tsx * Show HTTP->WS upgrade (handshake) (#5091) * first pass as event * add handshake ui * add timeline tab * simplify ResponseTimelineViewer * transform res debug modal to change timeline props * decouple timeline fetching from timeline component * timeline ui pass * record headers in request and response models * can view timeline history * write timeline to file * some timeline * can persist event logs * put interface beside usage * add note * add event log history * remove table event row * tidying up * make ws colors match * enable multiple open connections * close open connections at app exit * remove old test * Update packages/insomnia/src/models/request-version.ts * fix type * default readystate * fix preview css scroll Co-authored-by: James Gatz <jamesgatzos@gmail.com> * INS-1788: Add control flow to improve responsiveness. (#5094) * INS-1788: Add control flow for responsiveness. This prevents events from flooding the UI thread entirely. * Add additional code comments. * fixup: webSocketEvent -> webSocketEvents * display response headers (#5102) * Show errors in timeline (#5100) * remove unused context provider * show errors in event tab * updates timeline with message and close * clean up * show errors in timeline * fix WebSocket capitalisation * make timeline reader specific to ws * write outbound messages to the timeline * fix type * Make the head row sticky in the events table (#5103) * Add client certificate support to websocket connections (#5112) * [INS-1810] close connection on response change (#5104) * close ws connection when response is changed * add delete logic for the queue mapg * set error response to active response * useRef for CodeEditor * extract closeRequest * use requestId to eliminate inconsistencies * refactor extract clean up methods * timeline feedback * change type annotation * fix type * Revert "use requestId to eliminate inconsistencies" This reverts commit 98335a927e8c0cab21dc5d5b4ecd852e3d9c5190. * [INS-1803] show cookie tab in response pane (#5105) * hard code sending and storing to true * make tab naming consistent * hard code cookie settings to false * fix headers isDisabled bug * [INS-1805] Add Auth Header Tab (#5115) * add minimal change to the auth flow * add disable state * adding dropdown disable * simplify reducer * fix lint * [INS-1839] Rename tab Header everywhere (#5119) * can import/export websocket requests (#5122) * use responseId for timeline name (#5124) * add react-virtual to virtualize the event log view (#5126) * [INS-1833] Include Auth Header in Headers mapping for WebSocket Connection (#5120) * add auth to the header * remove console log * remove unneeded async * add success redirect logic to websocket server * add unexpected-response handler * remove digest auth (#5129) * remove auth header and outbound message timeline (#5130) * [INS-1840] Add Connected Status Label and Extras (#5131) * add status related changes * text label change * WebSocket ipc typing proposal (#5125) * make consistent with main bridge * rename webSocket * remove deviated mock * use consistent arrow function defintions * Update packages/insomnia/src/main/network/websocket.ts * Set the environment for websocket responses (#5132) * first pass (#5123) * [INS-1843] Add more checks to WS smoke test (#5138) * Fix failing websocket smoke test * Add remaining websocket smoke server endopints to fixtures * Add checks for basic-auth, bearer and redirect * Rm assertion * can select payload type (#5133) * Implement nunjucks rendering for websocket urls, authentication, headers and urls (#5134) * fix websocket->webSocket (#5142) * bug fix (#5144) * INS-1844: Implement basic event view functionality. (#5146) * INS-1844: Implement basic event view functionality * CSS fix to align Preview button with tab buttons. * Reverse the order of WebSocket events (#5148) * Reverse the event log order in the view and subscribe to messages after the latest * WebSocket response model (#5147) * init websocket-response model * add websocket response model * remove unused timeline getter * remove unused functionality from the ws-response model * can select and save payload message and preview mode (#5143) * [INS-1838] Add Empty State (#5140) * add empty state * use the empty state pane Co-authored-by: gatzjames <jamesgatzos@gmail.com> * Bug/stabilise-ws-fetch-method (#5152) * just poll * remove cts and eventlog channel * Fix/nitpicks (#5156) * remove unused names * fix copypasta icon * ensure all subcompnent drop state on request change * move empty state to response pane * add websockets to quick switch (#5159) * [INS-1800] Remove value validity check in the WebSocket headers (#5154) * remove valid value check in the headers * add header name filtering Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Jack Kavanagh <jackkav@gmail.com> Co-authored-by: John Chadwick <86682572+johnwchadwick@users.noreply.github.com> Co-authored-by: David Marby <david@dmarby.se>
2022-09-09 14:53:28 +00:00
import { readFileSync } from 'fs';
import { createHandler } from 'graphql-http/lib/use/http';
Initial WebSocket support (#5043) * [INS-1697] Create WebSocket Request (#5041) * add fail safe Co-authored-by: Mark Kim <mark.kim@konghq.com> * Websockets IPC API (#5044) * add url to ws-request model * fix webSocketRequest typo and add url * add websocket api and expose it through preload ipc * add typings Co-authored-by: Mark Kim <mark.kim@konghq.com> * [INS-1701] Create/Close Websocket Connection (#5046) * add websocket action bar and its components * remove comments * clean up * reflect on the electron api * remove unused files * import name change * add styling * remove commet * add suggested changes * remove default value * Add WebSocketRequest to sidebar and update types (#5048) * [INS-1700] Delete Websocket Request (#5055) * add websocket actions dropdown * add actions to websocket request in sidebar * [INS-1703] Display WebSocket messages - first pass (#5054) * Update event types to improve inference * Update websocket response pane to fetch/subscribe and display the events * [INS-1693] Add WS echo server for smoke tests (#5050) Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> * fix sidebar unit tests (#5064) * [INS-1776] adds `ws` dependency explicitly (#5066) * [INS-1702] WebSocket Send Message (#5052) * add initial changes for websocket message * add abstraction for db operation and websocket operation * remove console * add rename * add basic testing * add basic testing * add unit tests * add form event type * add comments * disallow exporting context directly * add suggested changes * refresh the query * using useDeepCompareEffect * rename variable * add mock * clean up * clean up * correct the file name * add some changes * removing nedb-context and its hooks * remove database changes for event sending * [INS-1778] Fix Global Module Typing Issue (#5065) * fix typings * add jest import * [INS-1703] View WebSocket Messages (#5074) * save changes * add styles and move files around * remove unused code * clean up some components * add clean up * add timestamp component * add unit tests * add case * add style changes * [INS-1786] WebSocket headers tab (#5080) * first ui pass * extract and wire up bulk editor * raise ready state, move send * add upgrade header debug logs * can pass header to websocket upgrade * implement readOnly headers * add upgrade event and sent headers * clean up * fill out http upgrade into the event * change upgrade message * read only headers while connected * remove upgrade event * revert bulk editor change * fix header editable toggle * add nunjucks todos * improve readOnly implementation * disable codemirror/nunjucks for websocket headers * take calculated headers out of the data model * move hardcoded default headers down the tree * fix request url rendering issue * removed spammy warning * clarify prop name * refine pair typing * change placeholder * remove readOnly header property * fix readOnly header layout * Update packages/insomnia/src/ui/components/dropdowns/websocket-request-actions-dropdown.tsx * Show HTTP->WS upgrade (handshake) (#5091) * first pass as event * add handshake ui * add timeline tab * simplify ResponseTimelineViewer * transform res debug modal to change timeline props * decouple timeline fetching from timeline component * timeline ui pass * record headers in request and response models * can view timeline history * write timeline to file * some timeline * can persist event logs * put interface beside usage * add note * add event log history * remove table event row * tidying up * make ws colors match * enable multiple open connections * close open connections at app exit * remove old test * Update packages/insomnia/src/models/request-version.ts * fix type * default readystate * fix preview css scroll Co-authored-by: James Gatz <jamesgatzos@gmail.com> * INS-1788: Add control flow to improve responsiveness. (#5094) * INS-1788: Add control flow for responsiveness. This prevents events from flooding the UI thread entirely. * Add additional code comments. * fixup: webSocketEvent -> webSocketEvents * display response headers (#5102) * Show errors in timeline (#5100) * remove unused context provider * show errors in event tab * updates timeline with message and close * clean up * show errors in timeline * fix WebSocket capitalisation * make timeline reader specific to ws * write outbound messages to the timeline * fix type * Make the head row sticky in the events table (#5103) * Add client certificate support to websocket connections (#5112) * [INS-1810] close connection on response change (#5104) * close ws connection when response is changed * add delete logic for the queue mapg * set error response to active response * useRef for CodeEditor * extract closeRequest * use requestId to eliminate inconsistencies * refactor extract clean up methods * timeline feedback * change type annotation * fix type * Revert "use requestId to eliminate inconsistencies" This reverts commit 98335a927e8c0cab21dc5d5b4ecd852e3d9c5190. * [INS-1803] show cookie tab in response pane (#5105) * hard code sending and storing to true * make tab naming consistent * hard code cookie settings to false * fix headers isDisabled bug * [INS-1805] Add Auth Header Tab (#5115) * add minimal change to the auth flow * add disable state * adding dropdown disable * simplify reducer * fix lint * [INS-1839] Rename tab Header everywhere (#5119) * can import/export websocket requests (#5122) * use responseId for timeline name (#5124) * add react-virtual to virtualize the event log view (#5126) * [INS-1833] Include Auth Header in Headers mapping for WebSocket Connection (#5120) * add auth to the header * remove console log * remove unneeded async * add success redirect logic to websocket server * add unexpected-response handler * remove digest auth (#5129) * remove auth header and outbound message timeline (#5130) * [INS-1840] Add Connected Status Label and Extras (#5131) * add status related changes * text label change * WebSocket ipc typing proposal (#5125) * make consistent with main bridge * rename webSocket * remove deviated mock * use consistent arrow function defintions * Update packages/insomnia/src/main/network/websocket.ts * Set the environment for websocket responses (#5132) * first pass (#5123) * [INS-1843] Add more checks to WS smoke test (#5138) * Fix failing websocket smoke test * Add remaining websocket smoke server endopints to fixtures * Add checks for basic-auth, bearer and redirect * Rm assertion * can select payload type (#5133) * Implement nunjucks rendering for websocket urls, authentication, headers and urls (#5134) * fix websocket->webSocket (#5142) * bug fix (#5144) * INS-1844: Implement basic event view functionality. (#5146) * INS-1844: Implement basic event view functionality * CSS fix to align Preview button with tab buttons. * Reverse the order of WebSocket events (#5148) * Reverse the event log order in the view and subscribe to messages after the latest * WebSocket response model (#5147) * init websocket-response model * add websocket response model * remove unused timeline getter * remove unused functionality from the ws-response model * can select and save payload message and preview mode (#5143) * [INS-1838] Add Empty State (#5140) * add empty state * use the empty state pane Co-authored-by: gatzjames <jamesgatzos@gmail.com> * Bug/stabilise-ws-fetch-method (#5152) * just poll * remove cts and eventlog channel * Fix/nitpicks (#5156) * remove unused names * fix copypasta icon * ensure all subcompnent drop state on request change * move empty state to response pane * add websockets to quick switch (#5159) * [INS-1800] Remove value validity check in the WebSocket headers (#5154) * remove valid value check in the headers * add header name filtering Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Jack Kavanagh <jackkav@gmail.com> Co-authored-by: John Chadwick <86682572+johnwchadwick@users.noreply.github.com> Co-authored-by: David Marby <david@dmarby.se>
2022-09-09 14:53:28 +00:00
import { createServer } from 'https';
import { join } from 'path';
2021-07-22 23:04:56 +00:00
import { basicAuthRouter } from './basic-auth';
import githubApi from './github-api';
import gitlabApi from './gitlab-api';
import { schema } from './graphql';
import { startGRPCServer } from './grpc';
Api V2 (#6135) * Add support for multiple remote projects per Team (#6009) * update fetching of teams * create and delete remote projects * backend project sync using the new teamProjectId in the API * indicator * use team api to get organization data * handle logged out state * remove remote from duplicate modal * remaining insomnia fetch fixes * fix ts issues * fix ts log issue * fix ts error * fix ts update * fix tests * remove log * add types to insomniaFetch * named arguments in vcs --------- Co-authored-by: jackkav <jackkav@gmail.com> * Project Presence (#6079) * fix ts log issue * fix ts update * update fetching of teams * create and delete remote projects * real-time * update api changes * check for successful response * get user profile * cleanup * update fetch * update network status * fix for insomniaFetch new api * insomnia fetch from window * fix missing stat * fix project dropdown * update avatar * update presence when closing the app * update the presence every minute * cleanup presence * use eventsource and improve debugging * Cloud only projects (#6167) * Add support for multiple remote projects per Team (#6009) * update fetching of teams * create and delete remote projects * backend project sync using the new teamProjectId in the API * indicator * use team api to get organization data * handle logged out state * remove remote from duplicate modal * remaining insomnia fetch fixes * fix ts issues * fix ts log issue * fix ts error * fix ts update * fix tests * remove log * add types to insomniaFetch * named arguments in vcs --------- Co-authored-by: jackkav <jackkav@gmail.com> * login routes * cleanup logged in state * update organizations * fixes * update migration * auto init sync on workspaces without git * fix auto init sync * checkpoint * update import options in empty project pane * responsive styles * update package-lock * join an org in sidebar * readability improvements * move modals and root loader to org * cleanup root * expire session take 1 * cleanup default org id * fix ts issue --------- Co-authored-by: jackkav <jackkav@gmail.com> * Add Scratch Pad collection (#6221) * add scratchpad collection * filter scratchpad from cloud migration * disable sync for scratchpad * update settings for scratchpad * log in rename * check if user is logged in or has logged in before * use organization api * organizations api fixes * update urls * move modals to root * update org navbar links * lint fix * type-check * Add form for setting up the staging env * add autolinking * onboarding * remove default org id * staging urls * avatar styles * update urls * use display name for orgs * update settings modal with dev * proper project deletions * fix api calls perf * sidebar improvements * layout styles * disable tests for now * fix boolean * fix data migration * dev settings styles * test init * organization names * link styles * improve scratchpad banner styles * http colors * url bar styles * spinner styles * breadcrumbs styles * help and feedback links * settings to root * onboarding * fetch remote projects on org nav * update avatar styles * use name initials in avatars * don't allow to delete default organization project * add scratchpad checks * tests * workspace settings tabs types * export all workspaces * fix types and personal org * project permission checks * continue with sso * organization avatars * project presence avatars * fix privacy/terms links * add the no-wrap classname * update user name and email in the app * fix delete action * ai fetching * generate tests in sequence to help with rate limiting * wip testing * wip test * improve test and migration script * fix ts * local to cloud projects test * set local-to-cloud-projects.test as slow * fix e2e tests * update settings tests * update more apis that changed from teams -> organizations * simplify remote project migration * org.branding can be undefined * fix imports issue in sr * remove .only * remove unused gql query * fix onboarding height jump * trust some rnd and upload artifacts on failure * fix env vars replacement on prod * fix constant name * bring back checks * fix inso test * add temp changes * fix inconsistent response handling * handle bad auth code errors * show email when logged in * remove the concept of default_project * cleanup auth styles * fix: use scratchpad constants wherever needed and remove seed * fix sentry lint error * migrate with update * add scratch pad fixture and typing * refactor pushSnapshotOnInitialize to always work * remove console.log * remove account from preferences * improve trail-lines styles * fix project sidebar scroll issue * only create diff of projects * fix lint * sync * feat: add plan upgrading modal for git sync (#6516) * feat: add plan upgrading modal for git sync * feat: add plan upgrading modal to project git menu and grid menu * fix: use JSON.parse for getting flag value * update ask modal * remove git option from workspace settings --------- Co-authored-by: gatzjames <jamesgatzos@gmail.com> * sort projectswith default at top * create local copies of remotes * update presence exit update * renames * fix deleting/renaming projects with remoteId * remoteId instead of projectId * remote-collections * fix initializeProjectForTeam * fix missing parentId in remote projects * add missing billing api * add migration page and check for migrations * cleanup project sync logic * fix remote projects updating * add notes * fix backend-project test * fix: use features API for fetching feature list (#6538) * members -> collaborators * remove dev settings * use shouldRunMigrations in onboarding * fix empty pane styles * remove beforeUnload for presence * show expiry info * better error for upgrade in new project action * extend retry period * fallback and control revalidate * add pending indicator for switching organizations * fix exports (#6553) * Sync Organizations (#6551) * organization cache and updates * error handling in org sync * sort organizations * clean up sort * org sort and avatar fallback --------- Co-authored-by: jackkav <jackkav@gmail.com> * Presence updates (#6552) * use remoteId for presence * use project loader for the active project * fix in present users * logic clean * match remoteId checks --------- Co-authored-by: jackkav <jackkav@gmail.com> * add default color to loading indicator * fix redirect loop when there are no projects * scratchpad fallback on initial route load * re-enable ai check * update error in renameProject * db query to get projects in workspace * review fix * comments * remove initModelFrom magic * fix lint issue --------- Co-authored-by: jackkav <jackkav@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Hexxa <hexxa@outlook.com>
2023-09-24 23:12:50 +00:00
import insomniaApi from './insomnia-api';
import { oauthRoutes } from './oauth';
Initial WebSocket support (#5043) * [INS-1697] Create WebSocket Request (#5041) * add fail safe Co-authored-by: Mark Kim <mark.kim@konghq.com> * Websockets IPC API (#5044) * add url to ws-request model * fix webSocketRequest typo and add url * add websocket api and expose it through preload ipc * add typings Co-authored-by: Mark Kim <mark.kim@konghq.com> * [INS-1701] Create/Close Websocket Connection (#5046) * add websocket action bar and its components * remove comments * clean up * reflect on the electron api * remove unused files * import name change * add styling * remove commet * add suggested changes * remove default value * Add WebSocketRequest to sidebar and update types (#5048) * [INS-1700] Delete Websocket Request (#5055) * add websocket actions dropdown * add actions to websocket request in sidebar * [INS-1703] Display WebSocket messages - first pass (#5054) * Update event types to improve inference * Update websocket response pane to fetch/subscribe and display the events * [INS-1693] Add WS echo server for smoke tests (#5050) Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> * fix sidebar unit tests (#5064) * [INS-1776] adds `ws` dependency explicitly (#5066) * [INS-1702] WebSocket Send Message (#5052) * add initial changes for websocket message * add abstraction for db operation and websocket operation * remove console * add rename * add basic testing * add basic testing * add unit tests * add form event type * add comments * disallow exporting context directly * add suggested changes * refresh the query * using useDeepCompareEffect * rename variable * add mock * clean up * clean up * correct the file name * add some changes * removing nedb-context and its hooks * remove database changes for event sending * [INS-1778] Fix Global Module Typing Issue (#5065) * fix typings * add jest import * [INS-1703] View WebSocket Messages (#5074) * save changes * add styles and move files around * remove unused code * clean up some components * add clean up * add timestamp component * add unit tests * add case * add style changes * [INS-1786] WebSocket headers tab (#5080) * first ui pass * extract and wire up bulk editor * raise ready state, move send * add upgrade header debug logs * can pass header to websocket upgrade * implement readOnly headers * add upgrade event and sent headers * clean up * fill out http upgrade into the event * change upgrade message * read only headers while connected * remove upgrade event * revert bulk editor change * fix header editable toggle * add nunjucks todos * improve readOnly implementation * disable codemirror/nunjucks for websocket headers * take calculated headers out of the data model * move hardcoded default headers down the tree * fix request url rendering issue * removed spammy warning * clarify prop name * refine pair typing * change placeholder * remove readOnly header property * fix readOnly header layout * Update packages/insomnia/src/ui/components/dropdowns/websocket-request-actions-dropdown.tsx * Show HTTP->WS upgrade (handshake) (#5091) * first pass as event * add handshake ui * add timeline tab * simplify ResponseTimelineViewer * transform res debug modal to change timeline props * decouple timeline fetching from timeline component * timeline ui pass * record headers in request and response models * can view timeline history * write timeline to file * some timeline * can persist event logs * put interface beside usage * add note * add event log history * remove table event row * tidying up * make ws colors match * enable multiple open connections * close open connections at app exit * remove old test * Update packages/insomnia/src/models/request-version.ts * fix type * default readystate * fix preview css scroll Co-authored-by: James Gatz <jamesgatzos@gmail.com> * INS-1788: Add control flow to improve responsiveness. (#5094) * INS-1788: Add control flow for responsiveness. This prevents events from flooding the UI thread entirely. * Add additional code comments. * fixup: webSocketEvent -> webSocketEvents * display response headers (#5102) * Show errors in timeline (#5100) * remove unused context provider * show errors in event tab * updates timeline with message and close * clean up * show errors in timeline * fix WebSocket capitalisation * make timeline reader specific to ws * write outbound messages to the timeline * fix type * Make the head row sticky in the events table (#5103) * Add client certificate support to websocket connections (#5112) * [INS-1810] close connection on response change (#5104) * close ws connection when response is changed * add delete logic for the queue mapg * set error response to active response * useRef for CodeEditor * extract closeRequest * use requestId to eliminate inconsistencies * refactor extract clean up methods * timeline feedback * change type annotation * fix type * Revert "use requestId to eliminate inconsistencies" This reverts commit 98335a927e8c0cab21dc5d5b4ecd852e3d9c5190. * [INS-1803] show cookie tab in response pane (#5105) * hard code sending and storing to true * make tab naming consistent * hard code cookie settings to false * fix headers isDisabled bug * [INS-1805] Add Auth Header Tab (#5115) * add minimal change to the auth flow * add disable state * adding dropdown disable * simplify reducer * fix lint * [INS-1839] Rename tab Header everywhere (#5119) * can import/export websocket requests (#5122) * use responseId for timeline name (#5124) * add react-virtual to virtualize the event log view (#5126) * [INS-1833] Include Auth Header in Headers mapping for WebSocket Connection (#5120) * add auth to the header * remove console log * remove unneeded async * add success redirect logic to websocket server * add unexpected-response handler * remove digest auth (#5129) * remove auth header and outbound message timeline (#5130) * [INS-1840] Add Connected Status Label and Extras (#5131) * add status related changes * text label change * WebSocket ipc typing proposal (#5125) * make consistent with main bridge * rename webSocket * remove deviated mock * use consistent arrow function defintions * Update packages/insomnia/src/main/network/websocket.ts * Set the environment for websocket responses (#5132) * first pass (#5123) * [INS-1843] Add more checks to WS smoke test (#5138) * Fix failing websocket smoke test * Add remaining websocket smoke server endopints to fixtures * Add checks for basic-auth, bearer and redirect * Rm assertion * can select payload type (#5133) * Implement nunjucks rendering for websocket urls, authentication, headers and urls (#5134) * fix websocket->webSocket (#5142) * bug fix (#5144) * INS-1844: Implement basic event view functionality. (#5146) * INS-1844: Implement basic event view functionality * CSS fix to align Preview button with tab buttons. * Reverse the order of WebSocket events (#5148) * Reverse the event log order in the view and subscribe to messages after the latest * WebSocket response model (#5147) * init websocket-response model * add websocket response model * remove unused timeline getter * remove unused functionality from the ws-response model * can select and save payload message and preview mode (#5143) * [INS-1838] Add Empty State (#5140) * add empty state * use the empty state pane Co-authored-by: gatzjames <jamesgatzos@gmail.com> * Bug/stabilise-ws-fetch-method (#5152) * just poll * remove cts and eventlog channel * Fix/nitpicks (#5156) * remove unused names * fix copypasta icon * ensure all subcompnent drop state on request change * move empty state to response pane * add websockets to quick switch (#5159) * [INS-1800] Remove value validity check in the WebSocket headers (#5154) * remove valid value check in the headers * add header name filtering Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Jack Kavanagh <jackkav@gmail.com> Co-authored-by: John Chadwick <86682572+johnwchadwick@users.noreply.github.com> Co-authored-by: David Marby <david@dmarby.se>
2022-09-09 14:53:28 +00:00
import { startWebSocketServer } from './websocket';
const app = express();
app.use(cookieParser.default());
const port = 4010;
Initial WebSocket support (#5043) * [INS-1697] Create WebSocket Request (#5041) * add fail safe Co-authored-by: Mark Kim <mark.kim@konghq.com> * Websockets IPC API (#5044) * add url to ws-request model * fix webSocketRequest typo and add url * add websocket api and expose it through preload ipc * add typings Co-authored-by: Mark Kim <mark.kim@konghq.com> * [INS-1701] Create/Close Websocket Connection (#5046) * add websocket action bar and its components * remove comments * clean up * reflect on the electron api * remove unused files * import name change * add styling * remove commet * add suggested changes * remove default value * Add WebSocketRequest to sidebar and update types (#5048) * [INS-1700] Delete Websocket Request (#5055) * add websocket actions dropdown * add actions to websocket request in sidebar * [INS-1703] Display WebSocket messages - first pass (#5054) * Update event types to improve inference * Update websocket response pane to fetch/subscribe and display the events * [INS-1693] Add WS echo server for smoke tests (#5050) Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> * fix sidebar unit tests (#5064) * [INS-1776] adds `ws` dependency explicitly (#5066) * [INS-1702] WebSocket Send Message (#5052) * add initial changes for websocket message * add abstraction for db operation and websocket operation * remove console * add rename * add basic testing * add basic testing * add unit tests * add form event type * add comments * disallow exporting context directly * add suggested changes * refresh the query * using useDeepCompareEffect * rename variable * add mock * clean up * clean up * correct the file name * add some changes * removing nedb-context and its hooks * remove database changes for event sending * [INS-1778] Fix Global Module Typing Issue (#5065) * fix typings * add jest import * [INS-1703] View WebSocket Messages (#5074) * save changes * add styles and move files around * remove unused code * clean up some components * add clean up * add timestamp component * add unit tests * add case * add style changes * [INS-1786] WebSocket headers tab (#5080) * first ui pass * extract and wire up bulk editor * raise ready state, move send * add upgrade header debug logs * can pass header to websocket upgrade * implement readOnly headers * add upgrade event and sent headers * clean up * fill out http upgrade into the event * change upgrade message * read only headers while connected * remove upgrade event * revert bulk editor change * fix header editable toggle * add nunjucks todos * improve readOnly implementation * disable codemirror/nunjucks for websocket headers * take calculated headers out of the data model * move hardcoded default headers down the tree * fix request url rendering issue * removed spammy warning * clarify prop name * refine pair typing * change placeholder * remove readOnly header property * fix readOnly header layout * Update packages/insomnia/src/ui/components/dropdowns/websocket-request-actions-dropdown.tsx * Show HTTP->WS upgrade (handshake) (#5091) * first pass as event * add handshake ui * add timeline tab * simplify ResponseTimelineViewer * transform res debug modal to change timeline props * decouple timeline fetching from timeline component * timeline ui pass * record headers in request and response models * can view timeline history * write timeline to file * some timeline * can persist event logs * put interface beside usage * add note * add event log history * remove table event row * tidying up * make ws colors match * enable multiple open connections * close open connections at app exit * remove old test * Update packages/insomnia/src/models/request-version.ts * fix type * default readystate * fix preview css scroll Co-authored-by: James Gatz <jamesgatzos@gmail.com> * INS-1788: Add control flow to improve responsiveness. (#5094) * INS-1788: Add control flow for responsiveness. This prevents events from flooding the UI thread entirely. * Add additional code comments. * fixup: webSocketEvent -> webSocketEvents * display response headers (#5102) * Show errors in timeline (#5100) * remove unused context provider * show errors in event tab * updates timeline with message and close * clean up * show errors in timeline * fix WebSocket capitalisation * make timeline reader specific to ws * write outbound messages to the timeline * fix type * Make the head row sticky in the events table (#5103) * Add client certificate support to websocket connections (#5112) * [INS-1810] close connection on response change (#5104) * close ws connection when response is changed * add delete logic for the queue mapg * set error response to active response * useRef for CodeEditor * extract closeRequest * use requestId to eliminate inconsistencies * refactor extract clean up methods * timeline feedback * change type annotation * fix type * Revert "use requestId to eliminate inconsistencies" This reverts commit 98335a927e8c0cab21dc5d5b4ecd852e3d9c5190. * [INS-1803] show cookie tab in response pane (#5105) * hard code sending and storing to true * make tab naming consistent * hard code cookie settings to false * fix headers isDisabled bug * [INS-1805] Add Auth Header Tab (#5115) * add minimal change to the auth flow * add disable state * adding dropdown disable * simplify reducer * fix lint * [INS-1839] Rename tab Header everywhere (#5119) * can import/export websocket requests (#5122) * use responseId for timeline name (#5124) * add react-virtual to virtualize the event log view (#5126) * [INS-1833] Include Auth Header in Headers mapping for WebSocket Connection (#5120) * add auth to the header * remove console log * remove unneeded async * add success redirect logic to websocket server * add unexpected-response handler * remove digest auth (#5129) * remove auth header and outbound message timeline (#5130) * [INS-1840] Add Connected Status Label and Extras (#5131) * add status related changes * text label change * WebSocket ipc typing proposal (#5125) * make consistent with main bridge * rename webSocket * remove deviated mock * use consistent arrow function defintions * Update packages/insomnia/src/main/network/websocket.ts * Set the environment for websocket responses (#5132) * first pass (#5123) * [INS-1843] Add more checks to WS smoke test (#5138) * Fix failing websocket smoke test * Add remaining websocket smoke server endopints to fixtures * Add checks for basic-auth, bearer and redirect * Rm assertion * can select payload type (#5133) * Implement nunjucks rendering for websocket urls, authentication, headers and urls (#5134) * fix websocket->webSocket (#5142) * bug fix (#5144) * INS-1844: Implement basic event view functionality. (#5146) * INS-1844: Implement basic event view functionality * CSS fix to align Preview button with tab buttons. * Reverse the order of WebSocket events (#5148) * Reverse the event log order in the view and subscribe to messages after the latest * WebSocket response model (#5147) * init websocket-response model * add websocket response model * remove unused timeline getter * remove unused functionality from the ws-response model * can select and save payload message and preview mode (#5143) * [INS-1838] Add Empty State (#5140) * add empty state * use the empty state pane Co-authored-by: gatzjames <jamesgatzos@gmail.com> * Bug/stabilise-ws-fetch-method (#5152) * just poll * remove cts and eventlog channel * Fix/nitpicks (#5156) * remove unused names * fix copypasta icon * ensure all subcompnent drop state on request change * move empty state to response pane * add websockets to quick switch (#5159) * [INS-1800] Remove value validity check in the WebSocket headers (#5154) * remove valid value check in the headers * add header name filtering Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Jack Kavanagh <jackkav@gmail.com> Co-authored-by: John Chadwick <86682572+johnwchadwick@users.noreply.github.com> Co-authored-by: David Marby <david@dmarby.se>
2022-09-09 14:53:28 +00:00
const httpsPort = 4011;
const grpcPort = 50051;
const rawParser = bodyParser.raw({
inflate: true,
type: '*/*',
});
app.get('/pets/:id', (req, res) => {
res.status(200).send({ id: req.params.id });
});
app.get('/builds/check/*', (_req, res) => {
res.status(200).send({
url: 'https://github.com/Kong/insomnia/releases/download/core@2023.5.6/Insomnia.Core-2023.5.6.zip',
name: '2099.1.0',
});
});
async function echoHandler(req: any, res: any) {
res.status(200).send({
method: req.method,
headers: req.headers,
data: req.body.toString(),
cookies: req.cookies,
});
};
app.get('/echo', rawParser, echoHandler);
app.post('/echo', rawParser, echoHandler);
app.get('/sleep', (_req, res) => {
res.status(200).send({ sleep: true });
});
app.get('/cookies', (_req, res) => {
res
.status(200)
.header('content-type', 'text/plain')
.cookie('insomnia-test-cookie', 'value123')
.send(`${_req.headers['cookie']}`);
});
app.use('/file', express.static('fixtures/files'));
app.use('/auth/basic', basicAuthRouter);
githubApi(app);
gitlabApi(app);
Api V2 (#6135) * Add support for multiple remote projects per Team (#6009) * update fetching of teams * create and delete remote projects * backend project sync using the new teamProjectId in the API * indicator * use team api to get organization data * handle logged out state * remove remote from duplicate modal * remaining insomnia fetch fixes * fix ts issues * fix ts log issue * fix ts error * fix ts update * fix tests * remove log * add types to insomniaFetch * named arguments in vcs --------- Co-authored-by: jackkav <jackkav@gmail.com> * Project Presence (#6079) * fix ts log issue * fix ts update * update fetching of teams * create and delete remote projects * real-time * update api changes * check for successful response * get user profile * cleanup * update fetch * update network status * fix for insomniaFetch new api * insomnia fetch from window * fix missing stat * fix project dropdown * update avatar * update presence when closing the app * update the presence every minute * cleanup presence * use eventsource and improve debugging * Cloud only projects (#6167) * Add support for multiple remote projects per Team (#6009) * update fetching of teams * create and delete remote projects * backend project sync using the new teamProjectId in the API * indicator * use team api to get organization data * handle logged out state * remove remote from duplicate modal * remaining insomnia fetch fixes * fix ts issues * fix ts log issue * fix ts error * fix ts update * fix tests * remove log * add types to insomniaFetch * named arguments in vcs --------- Co-authored-by: jackkav <jackkav@gmail.com> * login routes * cleanup logged in state * update organizations * fixes * update migration * auto init sync on workspaces without git * fix auto init sync * checkpoint * update import options in empty project pane * responsive styles * update package-lock * join an org in sidebar * readability improvements * move modals and root loader to org * cleanup root * expire session take 1 * cleanup default org id * fix ts issue --------- Co-authored-by: jackkav <jackkav@gmail.com> * Add Scratch Pad collection (#6221) * add scratchpad collection * filter scratchpad from cloud migration * disable sync for scratchpad * update settings for scratchpad * log in rename * check if user is logged in or has logged in before * use organization api * organizations api fixes * update urls * move modals to root * update org navbar links * lint fix * type-check * Add form for setting up the staging env * add autolinking * onboarding * remove default org id * staging urls * avatar styles * update urls * use display name for orgs * update settings modal with dev * proper project deletions * fix api calls perf * sidebar improvements * layout styles * disable tests for now * fix boolean * fix data migration * dev settings styles * test init * organization names * link styles * improve scratchpad banner styles * http colors * url bar styles * spinner styles * breadcrumbs styles * help and feedback links * settings to root * onboarding * fetch remote projects on org nav * update avatar styles * use name initials in avatars * don't allow to delete default organization project * add scratchpad checks * tests * workspace settings tabs types * export all workspaces * fix types and personal org * project permission checks * continue with sso * organization avatars * project presence avatars * fix privacy/terms links * add the no-wrap classname * update user name and email in the app * fix delete action * ai fetching * generate tests in sequence to help with rate limiting * wip testing * wip test * improve test and migration script * fix ts * local to cloud projects test * set local-to-cloud-projects.test as slow * fix e2e tests * update settings tests * update more apis that changed from teams -> organizations * simplify remote project migration * org.branding can be undefined * fix imports issue in sr * remove .only * remove unused gql query * fix onboarding height jump * trust some rnd and upload artifacts on failure * fix env vars replacement on prod * fix constant name * bring back checks * fix inso test * add temp changes * fix inconsistent response handling * handle bad auth code errors * show email when logged in * remove the concept of default_project * cleanup auth styles * fix: use scratchpad constants wherever needed and remove seed * fix sentry lint error * migrate with update * add scratch pad fixture and typing * refactor pushSnapshotOnInitialize to always work * remove console.log * remove account from preferences * improve trail-lines styles * fix project sidebar scroll issue * only create diff of projects * fix lint * sync * feat: add plan upgrading modal for git sync (#6516) * feat: add plan upgrading modal for git sync * feat: add plan upgrading modal to project git menu and grid menu * fix: use JSON.parse for getting flag value * update ask modal * remove git option from workspace settings --------- Co-authored-by: gatzjames <jamesgatzos@gmail.com> * sort projectswith default at top * create local copies of remotes * update presence exit update * renames * fix deleting/renaming projects with remoteId * remoteId instead of projectId * remote-collections * fix initializeProjectForTeam * fix missing parentId in remote projects * add missing billing api * add migration page and check for migrations * cleanup project sync logic * fix remote projects updating * add notes * fix backend-project test * fix: use features API for fetching feature list (#6538) * members -> collaborators * remove dev settings * use shouldRunMigrations in onboarding * fix empty pane styles * remove beforeUnload for presence * show expiry info * better error for upgrade in new project action * extend retry period * fallback and control revalidate * add pending indicator for switching organizations * fix exports (#6553) * Sync Organizations (#6551) * organization cache and updates * error handling in org sync * sort organizations * clean up sort * org sort and avatar fallback --------- Co-authored-by: jackkav <jackkav@gmail.com> * Presence updates (#6552) * use remoteId for presence * use project loader for the active project * fix in present users * logic clean * match remoteId checks --------- Co-authored-by: jackkav <jackkav@gmail.com> * add default color to loading indicator * fix redirect loop when there are no projects * scratchpad fallback on initial route load * re-enable ai check * update error in renameProject * db query to get projects in workspace * review fix * comments * remove initModelFrom magic * fix lint issue --------- Co-authored-by: jackkav <jackkav@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Hexxa <hexxa@outlook.com>
2023-09-24 23:12:50 +00:00
insomniaApi(app);
app.get('/delay/seconds/:duration', (req, res) => {
const delaySec = Number.parseInt(req.params.duration || '2');
setTimeout(() => {
res.send(`Delayed by ${delaySec} seconds`);
}, delaySec * 1000);
});
2024-04-05 15:22:10 +00:00
oauthRoutes(port).then(router => app.use('/oidc', router));
app.get('/', (_req, res) => {
res.status(200).send();
});
app.all('/graphql', createHandler({ schema }));
2023-07-07 12:36:41 +00:00
app.use(express.json()); // Used to parse JSON bodies
// SSE routes
let subscribers: { id: string; response: express.Response }[] = [];
app.get('/events', (request, response) => {
const headers = {
'Content-Type': 'text/event-stream',
'Connection': 'keep-alive',
'Cache-Control': 'no-cache',
};
response.writeHead(200, headers);
const subscriberId = crypto.randomUUID();
const data = `data: ${JSON.stringify({ id: subscriberId })}\n\n`;
response.write(data);
const subscriber = {
id: subscriberId,
response,
};
subscribers.push(subscriber);
setInterval(() => {
// const id = subscriberId;
const data = JSON.stringify({ message: 'Time: ' + new Date().toISOString().slice(11, 19) });
// response.write('id: ' + id + '\n');
response.write('data: ' + data + '\n\n');
}, 1000);
2023-07-07 12:36:41 +00:00
request.on('close', () => {
console.log(`${subscriberId} Connection closed`);
subscribers = subscribers.filter(sub => sub.id !== subscriberId);
});
});
app.post('/send-event', (request, response) => {
// Requires middleware to parse JSON body
console.log('Received event', request.body);
subscribers.forEach(subscriber => subscriber.response.write(`data: ${JSON.stringify(request.body)}\n\n`));
response.json({ success: true });
});
startWebSocketServer(app.listen(port, () => {
console.log(`Listening at http://localhost:${port}`);
console.log(`Listening at ws://localhost:${port}`);
}));
Initial WebSocket support (#5043) * [INS-1697] Create WebSocket Request (#5041) * add fail safe Co-authored-by: Mark Kim <mark.kim@konghq.com> * Websockets IPC API (#5044) * add url to ws-request model * fix webSocketRequest typo and add url * add websocket api and expose it through preload ipc * add typings Co-authored-by: Mark Kim <mark.kim@konghq.com> * [INS-1701] Create/Close Websocket Connection (#5046) * add websocket action bar and its components * remove comments * clean up * reflect on the electron api * remove unused files * import name change * add styling * remove commet * add suggested changes * remove default value * Add WebSocketRequest to sidebar and update types (#5048) * [INS-1700] Delete Websocket Request (#5055) * add websocket actions dropdown * add actions to websocket request in sidebar * [INS-1703] Display WebSocket messages - first pass (#5054) * Update event types to improve inference * Update websocket response pane to fetch/subscribe and display the events * [INS-1693] Add WS echo server for smoke tests (#5050) Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> * fix sidebar unit tests (#5064) * [INS-1776] adds `ws` dependency explicitly (#5066) * [INS-1702] WebSocket Send Message (#5052) * add initial changes for websocket message * add abstraction for db operation and websocket operation * remove console * add rename * add basic testing * add basic testing * add unit tests * add form event type * add comments * disallow exporting context directly * add suggested changes * refresh the query * using useDeepCompareEffect * rename variable * add mock * clean up * clean up * correct the file name * add some changes * removing nedb-context and its hooks * remove database changes for event sending * [INS-1778] Fix Global Module Typing Issue (#5065) * fix typings * add jest import * [INS-1703] View WebSocket Messages (#5074) * save changes * add styles and move files around * remove unused code * clean up some components * add clean up * add timestamp component * add unit tests * add case * add style changes * [INS-1786] WebSocket headers tab (#5080) * first ui pass * extract and wire up bulk editor * raise ready state, move send * add upgrade header debug logs * can pass header to websocket upgrade * implement readOnly headers * add upgrade event and sent headers * clean up * fill out http upgrade into the event * change upgrade message * read only headers while connected * remove upgrade event * revert bulk editor change * fix header editable toggle * add nunjucks todos * improve readOnly implementation * disable codemirror/nunjucks for websocket headers * take calculated headers out of the data model * move hardcoded default headers down the tree * fix request url rendering issue * removed spammy warning * clarify prop name * refine pair typing * change placeholder * remove readOnly header property * fix readOnly header layout * Update packages/insomnia/src/ui/components/dropdowns/websocket-request-actions-dropdown.tsx * Show HTTP->WS upgrade (handshake) (#5091) * first pass as event * add handshake ui * add timeline tab * simplify ResponseTimelineViewer * transform res debug modal to change timeline props * decouple timeline fetching from timeline component * timeline ui pass * record headers in request and response models * can view timeline history * write timeline to file * some timeline * can persist event logs * put interface beside usage * add note * add event log history * remove table event row * tidying up * make ws colors match * enable multiple open connections * close open connections at app exit * remove old test * Update packages/insomnia/src/models/request-version.ts * fix type * default readystate * fix preview css scroll Co-authored-by: James Gatz <jamesgatzos@gmail.com> * INS-1788: Add control flow to improve responsiveness. (#5094) * INS-1788: Add control flow for responsiveness. This prevents events from flooding the UI thread entirely. * Add additional code comments. * fixup: webSocketEvent -> webSocketEvents * display response headers (#5102) * Show errors in timeline (#5100) * remove unused context provider * show errors in event tab * updates timeline with message and close * clean up * show errors in timeline * fix WebSocket capitalisation * make timeline reader specific to ws * write outbound messages to the timeline * fix type * Make the head row sticky in the events table (#5103) * Add client certificate support to websocket connections (#5112) * [INS-1810] close connection on response change (#5104) * close ws connection when response is changed * add delete logic for the queue mapg * set error response to active response * useRef for CodeEditor * extract closeRequest * use requestId to eliminate inconsistencies * refactor extract clean up methods * timeline feedback * change type annotation * fix type * Revert "use requestId to eliminate inconsistencies" This reverts commit 98335a927e8c0cab21dc5d5b4ecd852e3d9c5190. * [INS-1803] show cookie tab in response pane (#5105) * hard code sending and storing to true * make tab naming consistent * hard code cookie settings to false * fix headers isDisabled bug * [INS-1805] Add Auth Header Tab (#5115) * add minimal change to the auth flow * add disable state * adding dropdown disable * simplify reducer * fix lint * [INS-1839] Rename tab Header everywhere (#5119) * can import/export websocket requests (#5122) * use responseId for timeline name (#5124) * add react-virtual to virtualize the event log view (#5126) * [INS-1833] Include Auth Header in Headers mapping for WebSocket Connection (#5120) * add auth to the header * remove console log * remove unneeded async * add success redirect logic to websocket server * add unexpected-response handler * remove digest auth (#5129) * remove auth header and outbound message timeline (#5130) * [INS-1840] Add Connected Status Label and Extras (#5131) * add status related changes * text label change * WebSocket ipc typing proposal (#5125) * make consistent with main bridge * rename webSocket * remove deviated mock * use consistent arrow function defintions * Update packages/insomnia/src/main/network/websocket.ts * Set the environment for websocket responses (#5132) * first pass (#5123) * [INS-1843] Add more checks to WS smoke test (#5138) * Fix failing websocket smoke test * Add remaining websocket smoke server endopints to fixtures * Add checks for basic-auth, bearer and redirect * Rm assertion * can select payload type (#5133) * Implement nunjucks rendering for websocket urls, authentication, headers and urls (#5134) * fix websocket->webSocket (#5142) * bug fix (#5144) * INS-1844: Implement basic event view functionality. (#5146) * INS-1844: Implement basic event view functionality * CSS fix to align Preview button with tab buttons. * Reverse the order of WebSocket events (#5148) * Reverse the event log order in the view and subscribe to messages after the latest * WebSocket response model (#5147) * init websocket-response model * add websocket response model * remove unused timeline getter * remove unused functionality from the ws-response model * can select and save payload message and preview mode (#5143) * [INS-1838] Add Empty State (#5140) * add empty state * use the empty state pane Co-authored-by: gatzjames <jamesgatzos@gmail.com> * Bug/stabilise-ws-fetch-method (#5152) * just poll * remove cts and eventlog channel * Fix/nitpicks (#5156) * remove unused names * fix copypasta icon * ensure all subcompnent drop state on request change * move empty state to response pane * add websockets to quick switch (#5159) * [INS-1800] Remove value validity check in the WebSocket headers (#5154) * remove valid value check in the headers * add header name filtering Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Jack Kavanagh <jackkav@gmail.com> Co-authored-by: John Chadwick <86682572+johnwchadwick@users.noreply.github.com> Co-authored-by: David Marby <david@dmarby.se>
2022-09-09 14:53:28 +00:00
startWebSocketServer(createServer({
cert: readFileSync(join(__dirname, '../fixtures/certificates/localhost.pem')),
key: readFileSync(join(__dirname, '../fixtures/certificates/localhost-key.pem')),
}, app).listen(httpsPort, () => {
console.log(`Listening at https://localhost:${httpsPort}`);
console.log(`Listening at wss://localhost:${httpsPort}`);
}));
Initial WebSocket support (#5043) * [INS-1697] Create WebSocket Request (#5041) * add fail safe Co-authored-by: Mark Kim <mark.kim@konghq.com> * Websockets IPC API (#5044) * add url to ws-request model * fix webSocketRequest typo and add url * add websocket api and expose it through preload ipc * add typings Co-authored-by: Mark Kim <mark.kim@konghq.com> * [INS-1701] Create/Close Websocket Connection (#5046) * add websocket action bar and its components * remove comments * clean up * reflect on the electron api * remove unused files * import name change * add styling * remove commet * add suggested changes * remove default value * Add WebSocketRequest to sidebar and update types (#5048) * [INS-1700] Delete Websocket Request (#5055) * add websocket actions dropdown * add actions to websocket request in sidebar * [INS-1703] Display WebSocket messages - first pass (#5054) * Update event types to improve inference * Update websocket response pane to fetch/subscribe and display the events * [INS-1693] Add WS echo server for smoke tests (#5050) Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> * fix sidebar unit tests (#5064) * [INS-1776] adds `ws` dependency explicitly (#5066) * [INS-1702] WebSocket Send Message (#5052) * add initial changes for websocket message * add abstraction for db operation and websocket operation * remove console * add rename * add basic testing * add basic testing * add unit tests * add form event type * add comments * disallow exporting context directly * add suggested changes * refresh the query * using useDeepCompareEffect * rename variable * add mock * clean up * clean up * correct the file name * add some changes * removing nedb-context and its hooks * remove database changes for event sending * [INS-1778] Fix Global Module Typing Issue (#5065) * fix typings * add jest import * [INS-1703] View WebSocket Messages (#5074) * save changes * add styles and move files around * remove unused code * clean up some components * add clean up * add timestamp component * add unit tests * add case * add style changes * [INS-1786] WebSocket headers tab (#5080) * first ui pass * extract and wire up bulk editor * raise ready state, move send * add upgrade header debug logs * can pass header to websocket upgrade * implement readOnly headers * add upgrade event and sent headers * clean up * fill out http upgrade into the event * change upgrade message * read only headers while connected * remove upgrade event * revert bulk editor change * fix header editable toggle * add nunjucks todos * improve readOnly implementation * disable codemirror/nunjucks for websocket headers * take calculated headers out of the data model * move hardcoded default headers down the tree * fix request url rendering issue * removed spammy warning * clarify prop name * refine pair typing * change placeholder * remove readOnly header property * fix readOnly header layout * Update packages/insomnia/src/ui/components/dropdowns/websocket-request-actions-dropdown.tsx * Show HTTP->WS upgrade (handshake) (#5091) * first pass as event * add handshake ui * add timeline tab * simplify ResponseTimelineViewer * transform res debug modal to change timeline props * decouple timeline fetching from timeline component * timeline ui pass * record headers in request and response models * can view timeline history * write timeline to file * some timeline * can persist event logs * put interface beside usage * add note * add event log history * remove table event row * tidying up * make ws colors match * enable multiple open connections * close open connections at app exit * remove old test * Update packages/insomnia/src/models/request-version.ts * fix type * default readystate * fix preview css scroll Co-authored-by: James Gatz <jamesgatzos@gmail.com> * INS-1788: Add control flow to improve responsiveness. (#5094) * INS-1788: Add control flow for responsiveness. This prevents events from flooding the UI thread entirely. * Add additional code comments. * fixup: webSocketEvent -> webSocketEvents * display response headers (#5102) * Show errors in timeline (#5100) * remove unused context provider * show errors in event tab * updates timeline with message and close * clean up * show errors in timeline * fix WebSocket capitalisation * make timeline reader specific to ws * write outbound messages to the timeline * fix type * Make the head row sticky in the events table (#5103) * Add client certificate support to websocket connections (#5112) * [INS-1810] close connection on response change (#5104) * close ws connection when response is changed * add delete logic for the queue mapg * set error response to active response * useRef for CodeEditor * extract closeRequest * use requestId to eliminate inconsistencies * refactor extract clean up methods * timeline feedback * change type annotation * fix type * Revert "use requestId to eliminate inconsistencies" This reverts commit 98335a927e8c0cab21dc5d5b4ecd852e3d9c5190. * [INS-1803] show cookie tab in response pane (#5105) * hard code sending and storing to true * make tab naming consistent * hard code cookie settings to false * fix headers isDisabled bug * [INS-1805] Add Auth Header Tab (#5115) * add minimal change to the auth flow * add disable state * adding dropdown disable * simplify reducer * fix lint * [INS-1839] Rename tab Header everywhere (#5119) * can import/export websocket requests (#5122) * use responseId for timeline name (#5124) * add react-virtual to virtualize the event log view (#5126) * [INS-1833] Include Auth Header in Headers mapping for WebSocket Connection (#5120) * add auth to the header * remove console log * remove unneeded async * add success redirect logic to websocket server * add unexpected-response handler * remove digest auth (#5129) * remove auth header and outbound message timeline (#5130) * [INS-1840] Add Connected Status Label and Extras (#5131) * add status related changes * text label change * WebSocket ipc typing proposal (#5125) * make consistent with main bridge * rename webSocket * remove deviated mock * use consistent arrow function defintions * Update packages/insomnia/src/main/network/websocket.ts * Set the environment for websocket responses (#5132) * first pass (#5123) * [INS-1843] Add more checks to WS smoke test (#5138) * Fix failing websocket smoke test * Add remaining websocket smoke server endopints to fixtures * Add checks for basic-auth, bearer and redirect * Rm assertion * can select payload type (#5133) * Implement nunjucks rendering for websocket urls, authentication, headers and urls (#5134) * fix websocket->webSocket (#5142) * bug fix (#5144) * INS-1844: Implement basic event view functionality. (#5146) * INS-1844: Implement basic event view functionality * CSS fix to align Preview button with tab buttons. * Reverse the order of WebSocket events (#5148) * Reverse the event log order in the view and subscribe to messages after the latest * WebSocket response model (#5147) * init websocket-response model * add websocket response model * remove unused timeline getter * remove unused functionality from the ws-response model * can select and save payload message and preview mode (#5143) * [INS-1838] Add Empty State (#5140) * add empty state * use the empty state pane Co-authored-by: gatzjames <jamesgatzos@gmail.com> * Bug/stabilise-ws-fetch-method (#5152) * just poll * remove cts and eventlog channel * Fix/nitpicks (#5156) * remove unused names * fix copypasta icon * ensure all subcompnent drop state on request change * move empty state to response pane * add websockets to quick switch (#5159) * [INS-1800] Remove value validity check in the WebSocket headers (#5154) * remove valid value check in the headers * add header name filtering Co-authored-by: Dimitri Mitropoulos <dimitrimitropoulos@gmail.com> Co-authored-by: Mark Kim <mark.kim@konghq.com> Co-authored-by: Filipe Freire <livrofubia@gmail.com> Co-authored-by: Jack Kavanagh <jackkav@gmail.com> Co-authored-by: John Chadwick <86682572+johnwchadwick@users.noreply.github.com> Co-authored-by: David Marby <david@dmarby.se>
2022-09-09 14:53:28 +00:00
startGRPCServer(grpcPort);