Commit Graph

65 Commits

Author SHA1 Message Date
Brainslug
cfddabd9ee Integrating Websockets in Directus 🕸️🧦 (#14737)
* added emitter context

* partial items tests

* updated items handler tests

* fixed test after merge

* forgot the event context

* fixed auth message parsing for graphql subscriptions

* fixed type strictness

* fixed graphql subscription bug

* bumped websocket dependencies

* touched up some dangling code

* updated itemsservice usage

* disabled overkill logs

* double checked environment type processing

* fixed missed capitalization

* fixed subscription payloads

* Added explicit string type casting

* removed obsolete "trimUpper" utility

* using the parseJSON utility consistently

* pinned dependencies

* parse environment variables

* fixed pnpm-lock

* GraphQL Subscriptions for all events

* fixed typo

* added event data to the graphql definition

* fix payload for delete events

* Added optional chaining for type to prevent fatal crashes on invalid messages

* fix failing on getting type from undefined

* Update api/src/websocket/exceptions.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Add proper ZodError handling

* added the zod-validation-error parser

* allow disabling the rate limiter

* Update api/src/websocket/controllers/base.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* updated starting logs

* fixed email/password expiration logic

* added tests for getMessageType

* simplified message parsing and dropped capitalization

* updated authenticate test

* switched to lower cased message.type to prevent spreading "toUpperCase" around

* cleaned up debug logs

* cast enabled config to boolean

* Update api/src/websocket/controllers/rest.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Update api/src/websocket/handlers/subscribe.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Update api/src/websocket/handlers/subscribe.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Update api/src/websocket/handlers/items.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Update api/src/websocket/controllers/base.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Update api/src/websocket/handlers/heartbeat.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Suggested fixes by Azri

* removed redundant try-catch

* fixed authentication timeout
added returning the refresh token when authenticating

* updated pnpm lock after merge

* Fixed authentication modes for GraphQL according to best practices

* implement useFakeTimers in heartbeat unit test

* implement useFakeTimers in items unit test

* Update api/src/services/server.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* removed obsolete authentication.verbose toggle

* added email flag to message validation

* switched to ternary for consistency

* moved getSchema out of for loop

* added singleton logic to items handler

* close the socket after failed auth for non-public connections

* disabled system collections for rest subscriptions

* re-ran pnpm i

* allow for multiple subscripitions in the memory messenger

* - fixed system collection subscriptions
- abstracted hook message bus
- fixed graphql horizontal scaling

* remove logic from root context for tests

* fix reading created item

* fix linter

* typo and extra safe guard suggested by azri

* prevent setting long timeouts in favor of a shared interval

* prevent unsubscribing all existing subscriptions when omitting "uid"

* - extracted getService utility
- block system collections mutation in the items handler
- implemented the correct services for system collections

* allow numeric uid's to be used

* fixed the types for numeric uid's to be used

* added missing await's

* fixed type imports after merge

* removed unused imports

* Update api/src/websocket/controllers/hooks.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Update api/src/websocket/controllers/hooks.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* Update api/src/messenger.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>

* improved error for graphql subscriptions

* fixed TS Modernization conflicts

* fixed TS Modernization conflicts

* fixed conflicts after merge

* removed unused name property

* abstracxted environment configuration

* respond to ping messages when heartbeat disabled

* something something merge

* moved toBoolean to it's own util file

* replaced old socket naming

* removed old exception

* fixed typo

* Update api/src/env.ts

Co-authored-by: ian <licitdev@gmail.com>

* Update api/src/websocket/handlers/heartbeat.test.ts

Co-authored-by: ian <licitdev@gmail.com>

* Update api/src/websocket/handlers/heartbeat.ts

Co-authored-by: ian <licitdev@gmail.com>

* Update api/src/services/server.ts

Co-authored-by: ian <licitdev@gmail.com>

* fixed for linter

* add server_info_websocket in graphql

* Add base REST websocket tests

* do merge things

* fixing things

* fixed failing unit test

* Update dependencies

* Move tests

* Update lockfile

* Use new paths when spawning

* return websockets to opt-in

* Enable websockets for tests

* Test with ephemeral access token

* no camelcasing gql subscriptions

* use underscore for gql event

* Remove unused import

* Add base GraphQL subscription tests

* Fix accidental comment

* Add some relational tests

* Organize imports

Using VS Code's default organize import

* Run ESlint formatting

* One more opinionated formatting change

* Formatting

* Fix message sequence not in order

* Remove relational batch update tests

* Test horizontal scaling

* using toboolean util for server_info

* removed unneeded type cast

* found the gql request type

* extra usage of the toBoolean util

* merge the authentication middleware and get-account-for-token util

* updated utility test

* fixed middleware unit test

* Add return

* Remove user filtering and close conns

* Fix reused accountability

* fixed failing util test

* added subscription unit tests

* added missing mock

* trigger workflow

* Revert "trigger workflow"

This reverts commit 4f544b0c1b.

* Trigger testing for all vendors

* add unsubscription confirmation

* Wait for unsubscription confirmation

* Fix incorrect sending of unsubscription confirmation

* updated ubsubscribe logic

* Update count for unsubscription message

* Fix sequence for UUID pktype in MSSQL

* Increase auth timeout

* Add start index when getting messages

* Fix subscription retrieval and cast uid to string

* Remove nested ternary

* Revert "Increase auth timeout"

This reverts commit 10707409c4.

* Terminate connection instead of close

* fixed merge

* re-added missing packages after merge resolve

* fixed type imports

* Create lazy-cows-happen.md

Added changeset

* Minor bump for "directus" package as well

* fixed "strict" auth mode for graphql subscriptions

* removed nested ternary

* Add websocket tests to sequential flow

* Disable pressure limiter for blackbox tests

* fix merge

* WebSockets Documentation (#18254)

* Small repsonsive styling fix on Card

* REST getting started guide

* Authentication guide

* REST subscription guides

* JS Chat guide

* Sidebar websocket guides section

* Added config options

* Respoinding to brainslug's review

* Fixed incorrect header on guides/rt/subs

* Fixed spellchecker

* Correct full code example on guides/rt/chat/js

* Fixed JS chat tut

* Order of steps in js chat guide updated for easier following-along

* Realtime chat Vue Guide

* feat: create react.js file

* feat: add set up for directus project

* docs: create react boilder plate

* docs: initialize connection

* docs: set up submission methods

* docs: establish websocket connection

* docs: subscribe to messages

* docs: create new messages

* docs: display new messages

* docs: display historical messages

* docs: next steps

* docs: full code sample

* docs: clean up

* docs: add name to contributors

* docs: add react card

* docs: updates to react chat

* Added live poll result guide

* docs: intro

* docs: before you begin

* docs: install packages

* docs: authenticate connection

* docs: query and mutation

* docs: utilize hooks

* docs: subscribe to changes

* docs: create helper functions

* docs: display messages

* docs: summary

* docs: full sample code

* chore: add card for webscockets with graphql

* docs: intro

* docs: subscribe to changes

* docs: handling changes

* docs: crud operations

* docs: unsubscribing from changes

* docs: updates

* chore: add card

* chore: updates to graphql docs

* chore: updates to getting started

* chore: updates to subscription

* chore: updates to real chat guide

* Added WebSockets Operations Guide

* Consistent titles

* Contributors component for docs

* Triggering Netlify

* Add operations to sidebar

* Fix operations link

* Small formatting changes

* Clarity around property values

* Removed unused values in Contributors component

* Prompt for default choice

* Tabs & lowercase doctypes

* Semicolons

* Event overwerites -> event listeners

* Spacing

* Flipped order of websockets guide to match GQL

---------

Co-authored-by: Esther Agbaje <folasadeagbaje@gmail.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* fixed typo

* removed unused import

* added tests for "to-boolean" and "exceptions"

* added websocket service tests

* quote environment variable to satisfy dictionary

* GraphQL Subscriptions update (#18804)

* updated graphql subscription structure

* updated graphql examples

* Create hungry-points-rescue.md

* using `key` instead of `ID` on the toplevel

* removed changeset

* fixed the graphql type after the rename to `key`

* retrun data null for delete events to prevent non-nullable gql error

* updated missed ID reference in the docs

* updated missed ID reference in the docs

* renamed "payload" to "data" in the REST Subscription response

* fixed missed reference to payload

* added optional event filter for REST subscriptions

* updated docs for event filter

* Update docs/guides/real-time/subscriptions/websockets.md

Co-authored-by: ian <licitdev@gmail.com>

---------

Co-authored-by: ian <licitdev@gmail.com>

* added messenger unit test

* always send subscription confirmation

* Add event to subscription options

* Update tests

* Add tests for event filtering

* Revert testing for all vendors

* Remove obsolete console comment

* Update comment

* Correct event in JS WS guide

* Fix collection name to match name used in subscription

* Fix collection name in other guides

* Fix diffs in doc & enhance chart example

* Complete sentence in GraphQL guide

* Small update to config description

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Nitwel <mail@nitwel.de>
Co-authored-by: Kevin Lewis <kvn@lws.io>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Esther Agbaje <folasadeagbaje@gmail.com>
2023-06-08 18:54:50 +00:00
Rijk van Zanten
c310afa846 Rely on npm Workspaces for module resolving (#4656)
* Move devDeps to API

* Move app to npm workspaces

* Tweaks / add lockfiles

* Add locks, fix devdeps across packages

* Move eslint config rootlevel

* Use eslint fix for vue files instead of vue-cli-service

* Add global prettier format option

* Create lockfiles for all packages

* Replace husky with simple-git-hooks
2021-03-24 16:01:49 -04:00
rijkvanzanten
aa15da7c65 v9.0.0-rc.51 2021-03-16 15:56:56 -04:00
rijkvanzanten
42507ae52f v9.0.0-rc.50 2021-03-12 18:32:20 -05:00
rijkvanzanten
b17f3e0911 v9.0.0-rc.49 2021-03-11 18:57:25 -05:00
rijkvanzanten
3803333025 v9.0.0-rc.48 2021-03-11 07:42:15 -05:00
rijkvanzanten
71bf628955 v9.0.0-rc.47 2021-03-11 07:38:26 -05:00
rijkvanzanten
33f36d2485 v9.0.0-rc.46 2021-03-10 17:39:31 -05:00
rijkvanzanten
87ed604f18 v9.0.0-rc.45 2021-03-05 18:03:27 -05:00
rijkvanzanten
8aedc29aa1 v9.0.0-rc.44 2021-02-26 17:32:48 -05:00
rijkvanzanten
64b012bccc Revert "Link devDependencies"
This reverts commit 63ec4b8e60.
2021-02-24 19:03:26 -05:00
rijkvanzanten
63ec4b8e60 Link devDependencies 2021-02-24 18:27:01 -05:00
rijkvanzanten
42ab1cce49 v9.0.0-rc.43 2021-02-23 17:18:22 -05:00
rijkvanzanten
055ebcb69b v9.0.0-rc.42 2021-02-19 17:22:06 -05:00
rijkvanzanten
8d1bd064c6 v9.0.0-rc.41 2021-02-18 17:14:22 -05:00
rijkvanzanten
fbf72b32ac v9.0.0-rc.40 2021-02-16 20:44:55 -05:00
rijkvanzanten
b6837b24cb v9.0.0-rc.39 2021-02-16 18:37:45 -05:00
rijkvanzanten
b3d0e2bcea v9.0.0-rc.38 2021-02-16 12:05:34 -05:00
rijkvanzanten
e3fabe22a4 v9.0.0-rc.37 2021-02-12 18:23:59 -05:00
rijkvanzanten
998c0fd148 v9.0.0-rc.36 2021-02-11 18:16:56 -05:00
rijkvanzanten
9ec8f0d973 v9.0.0-rc.35 2021-02-11 13:23:59 -05:00
rijkvanzanten
83b4ff1b43 Fix my locked package 2021-02-05 19:09:04 -05:00
rijkvanzanten
db278a02b1 Add another missing dep 2021-02-05 19:05:41 -05:00
rijkvanzanten
262b59c44d Add missing dependency 2021-02-05 19:01:56 -05:00
Rijk van Zanten
817ccf3620 Overhaul docs (#3951)
* Add Quickstart Guide

* Update installation

* Remove unused files

* Update support/backing

* Tweaks in concepts

* Setup file structure for API reference 2.0

* Setup page layout for reference

* Add clean-urls plugin

* getting started updates

* Finish authentication rest

* getting started updates

* Render stylus in 2 spaces

* Various

* Various

* Finish activity docs

* Add collections reference

* Add extension reference

* concepts updates

* Fields/tweaks

* Add files doc

* Add revisions

* concepts docs

* More api reference

* Finish rest api reference (finally)

* initial concepts

* More things

* Add assets api ref

* Move sections from file to assets

* Add environment variables

* contributing docs

* Add field transforms page

* Left align table headers

* concept links

* Add API config

* Fix mobile nav

* Add migrating a project

* doc link fixes

Co-authored-by: Ben Haynes <ben@rngr.org>
2021-02-05 18:51:54 -05:00
Rijk van Zanten
5450de0351 Update Docs (#3905)
* Allow formatted value display for numbers

* Move the docs website into monorepo

* Fix build

* Tweak docs build setup

* Fix tips, pull in images

* Add syntax highlighting to docs

* Restructure nav, add divider

* Fix tips formatting

* Add prettier config

* Add editorconfig
2021-02-02 11:55:04 -05:00
rijkvanzanten
b2263e614a v9.0.0-rc.34 2021-01-29 17:14:12 -05:00
rijkvanzanten
91cb0cc58f v9.0.0-rc.33 2021-01-28 17:54:19 -05:00
rijkvanzanten
a7cd02a5a6 v9.0.0-rc.32 2021-01-25 18:10:01 -05:00
rijkvanzanten
39de4591b6 v9.0.0-rc.31 2021-01-21 14:53:30 -05:00
rijkvanzanten
c9c764d242 v9.0.0-rc.30 2021-01-15 17:33:35 -05:00
rijkvanzanten
53c0164ca1 v9.0.0-rc.29 2021-01-15 11:54:50 -05:00
rijkvanzanten
9666cf44fe v9.0.0-rc.28 2020-12-31 15:45:47 -05:00
rijkvanzanten
225efcf50c v9.0.0-rc.27 2020-12-28 15:26:01 -05:00
rijkvanzanten
bb8bdc9f20 v9.0.0-rc.26 2020-12-21 16:37:37 -05:00
rijkvanzanten
7fad80417d v9.0.0-rc.25 2020-12-21 15:54:55 -05:00
rijkvanzanten
637c7a32ef v9.0.0-rc.24 2020-12-16 18:44:53 -05:00
rijkvanzanten
f45b42efec v9.0.0-rc.23 2020-12-11 18:20:32 -05:00
rijkvanzanten
4dc8d7e742 v9.0.0-rc.22 2020-12-09 08:35:17 -05:00
rijkvanzanten
203f3f7bbb v9.0.0-rc.21 2020-12-08 18:37:41 -05:00
rijkvanzanten
5bcb004ca6 v9.0.0-rc.20 2020-12-03 13:23:00 -05:00
rijkvanzanten
8c5db5d927 Update docs docs docs 2020-12-02 12:28:37 -05:00
rijkvanzanten
d7b74e3473 v9.0.0-rc.19 2020-11-27 21:01:35 -05:00
rijkvanzanten
8272786315 v9.0.0-rc.18 2020-11-25 16:40:39 -05:00
rijkvanzanten
56028c4136 v9.0.0-rc.17 2020-11-20 15:31:31 -05:00
rijkvanzanten
c2057c2680 v9.0.0-rc.16 2020-11-20 15:26:25 -05:00
rijkvanzanten
290d272b54 v9.0.0-rc.15 2020-11-18 21:09:22 -05:00
rijkvanzanten
71ab1dc2da Update specs 2020-11-18 09:39:39 -05:00
rijkvanzanten
07dd583060 Fix package resolution
Ref #882
2020-11-05 10:33:39 -05:00
rijkvanzanten
0cbdcace62 v9.0.0-rc.7 2020-11-05 09:47:49 -05:00