* feat(server): allow ratelimiting to be explicitly disabled
- allows rate limiter to be enabled or disabled explicitly
- example .env file for testing now explicitly disables it
- disables rate limiter in CI tests, except where explicitly testing the rate limiter
* fixed test util throwing + added new tests
* more tests
* more tests
* various model tests
* version tests
* removed shitty old tests
* lint fix
* workspaceProjectsUpdated test
* workspace updated on invite
* workspace subs support team changes
* tests fix
* test fix hopefully?
* userProjectsUpdated.added test
* multi region support
* userStreamAdded
* commit subs tested
* fix for proj workspace assignment
* undo commitHelper main changes
* disable all ffs mode
* createTestWorkspace support when workspaces arent enabled
* project create fix
* workspace projects updated subscription
* WIP new workspace sub
* updated workspaceCreated
* updated workspaceUpdated
* BE for workspace updated sub
* workspace updated sub
* ts err fix
* fix(workspaces): allow workspace delete for paid workspaces
* feat(gendo): multi region gendo with new api integration and limits
* feat(gendo): user credits
* feat: adds limits to gendo panel, and terms and conditions link
* fix: reworks setting back camera view
* feat(gendo): webhook signature verification
* fix(gendo): nullability
* test(blobstorage): fix test dependency injection
---------
Co-authored-by: Dimitrie Stefanescu <didimitrie@gmail.com>
* chore(server): graceful shutdown
- stop() on the apollo server should be called
* chore(server): gracefully drain apollo server
* Allow grace period to be configured
* Terminus manages the readiness and liveness endpoints
* terminus is responsible for stopping the graphql server
* remove logging on shutdown
* Remove redundant parameter
* move healthchecks out of business modules to top-level directory
- terminus can only handle readiness check, not liveness
- app needs to return readiness handler, so that server terminus can use it
* fix tests
* Fix broken merge
* fix broken merge
* incorporate review comments
* fix invalid merge
* fix readinesscheck not being passed as parameter
* chore(server): various useful multiregion changes from comments pr
* hopefully fixing CI?
* test fix
* more test fixes??
* more test fixes..
* plz work ;((((
* revert multiregion on by default
* feat(workspaces): add workspace sso feature flag
* feat(workspaceSso): wip validate sso
* feat(workspaces): validate and add sso provider to the workspace with user sso sessions
* feat(workspaces): validate and add sso provider to the workspace with user sso sessions
* WIP
* fix(sso): restructure to handle all branches at end of flow
* fix(sso): add and validate emails used for sso
* fix(sso): park progress
* chore(workspaces): review sso login/valdate
* fix(sso): adjust validate url
* chore(sso): auth header puzzle
* fix(sso): happy-path config
* chore(gql): gqlgen
* fix(sso): almost almost
* fix(sso): auth endpoint
* a lil more terse
* fix(sso): light at the end of the tunnel
* fix(sso): improve catch block error messages
* fix(sso): session lifespan => validUntil
* fix(sso): I think we've got it
* feat(sso): limited workspace values for public sso login
* fix(sso): use factory functions
* fix(sso): til decrypt is single-use
* fix(sso): correct usage of access codes
* fix(sso): use finalize middleware in all routes
* chore(sso): cheeky tweak
* fix(sso): move some types around
* fix(sso): stencil final shape I'm sleepy
* fix(sso): more factories more factories
* fix(sso): on to final boss of factories
* fix(sso): needs a haircut but she works
* fix(sso): init rest w function, not side-effects
* fix(sso): /authn => /sso
* chore(sso): errors
* chore(sso): test test test
* chore(sso): test all the corners
* feat(sso): list workspace sso memberships
* chore(sso): tests, expose in rest
* fix(sso): sketch active user auth
* fix(sso): expose search via gql
* fix(sso): active user session information
* chore(sso): sso session test utils
* chore(sso): test sso session repo/services
* chore(sso): gqlgen
* fix(sso): simplify gql resolver structure
* chore(sso): gqlgen
---------
Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
* WIP create modal
* babababa
* create dialog looks ok
* FE largely there
* workss
* cleanup
* fixed up test plumbing to avoid deadlocks and simplify GQL calls
* test fix
* added all tests
* CI fix
* feat(workspaces): add workspace sso feature flag
* feat(workspaceSso): wip validate sso
* feat(workspaces): validate and add sso provider to the workspace with user sso sessions
* feat(workspaces): validate and add sso provider to the workspace with user sso sessions
* WIP
* fix(sso): restructure to handle all branches at end of flow
* fix(sso): add and validate emails used for sso
* fix(sso): park progress
* chore(workspaces): review sso login/valdate
* fix(sso): adjust validate url
* chore(sso): auth header puzzle
* fix(sso): happy-path config
* chore(gql): gqlgen
* fix(sso): almost almost
* fix(sso): auth endpoint
* a lil more terse
* fix(sso): light at the end of the tunnel
* fix(sso): improve catch block error messages
* fix(sso): session lifespan => validUntil
* fix(sso): I think we've got it
* feat(sso): limited workspace values for public sso login
* fix(sso): use factory functions
* fix(sso): til decrypt is single-use
* fix(sso): correct usage of access codes
* fix(sso): use finalize middleware in all routes
* chore(sso): cheeky tweak
* fix(sso): move some types around
* fix(sso): stencil final shape I'm sleepy
* fix(sso): more factories more factories
* fix(sso): on to final boss of factories
* fix(sso): needs a haircut but she works
* fix(sso): init rest w function, not side-effects
* fix(sso): /authn => /sso
* chore(sso): errors
* chore(sso): test test test
* chore(sso): test all the corners
---------
Co-authored-by: Gergő Jedlicska <gergo@jedlicska.com>
Co-authored-by: Mike Tasset <mike.tasset@gmail.com>
* feat(multi region config): mount file and read config from file
* feat(helm): allow multi region config to be mounted from a secret
* Allow the file name to be amended
* fix(file import): server port was broken when localhost was canonical url
- use getServerOrigin() instead of directly calling process.env.CANONICAL_URL
- where server is calling itself, use 127.0.0.1 instead of CANONICAL_URL.
- where server is calling itself (i.e. 127.0.0.1, use the server's listening port and not default for protocol http/80, https/443
- tidy some areas where process.env was called directly; should use envHelper.
* fix tests