Files
directus/docs/dictionary.txt
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

406 lines
3.6 KiB
Plaintext

.env
.npmrc
(A|a)sync
(A|a)utocomplete
(A|a)xios
(B|b)ackend
(B|b)ackend-as-a-(S|s)ervice
(B|b)alancer
(B|b)asemap
(B|b)lackbox
(B|b)ugfixes
(C|)ancelling
(C|c)ancelled
(C|c)harset
(C|c)heckboxes
(C|c)loudinary
(C|c)loudinary's
(C|c)odebase
(C|c)onfigs?
(C|c)ustomizable
(D|d)atacenter
(D|d)atastores
(D|d)atetimes?
(D|d)onut
(D|d)ropdown
(D|d)ropdowns
(DN|dn)
(E|e)ntrypoints?
(F|f)ilesystem
(F|f)ormatter
(F|f)rontend
(F|f)rontmatter
(H|h)ardcode
(H|h)ealthcheck
(H|h)ostname
(I|i)nit
(I|i)ntegrations
(M|m)emcache
(M|m)imetype
(M|m)isconfigured
(M|m)ultitenancy
(N|n)atively
(Q|q)uickstart
(R|r)econfigures
(R|r)elink
(R|r)epo
(R|r)ollup
(S|s)chemas?
(S|s)endmail
(S|s)erverless
(S|s)lugify
(S|s)ortable
(S|s)tepline
(S|s)ubheader
(T|t)extarea
(T|t)ooltips?
(T|t)riage
(T|t)riaging
(U|u)narchive
(U|u)narchived
(U|u)narchiving
(U|u)nfilterable
(U|u)nlink
(U|u)psert
(U|u)tils?
(URI|URIs)
(URL|url)
(W|w)alkthrough
(W|w)ebhook.?
(W|w)ebhooks?
(W|w)ebSocket
(W|w)ebSockets
[0-9]*(KB|MB|GB|K|px|pm|am)
[0-9]*[Kk]i?B
[0-9]*x[0-9]*
[0-9]*x[0-9]*px
[A-Z0-9]{6}
[M|m]onorepo
2FA
45K
ACL
ACS
Alibaba
allowlist
allowList
alwaysdata
anonymized
api
API
APIs
app-centric
architected
Argon2's
argon2(d|i)?
Argon2(d|i)?
auth
Auth
Auth0
authenticator
autoscaling
AWS
backend
Base64
Blackbox
buildout
camelCase
Capterra
Cardgroup
cardinality
CDNs?
changelogs
changeset
changesets
Changesets
CLA
CLI
CloudFront
Cloudinary's
Cloudron
CloudSQL
CMS
CockroachDB
CodeDeploy
CommonJS
composable
composables
config-options
CORS
CPUs?
create-directus-extension
cron
Cron
CRON
crowdin
Crowdin
CrowdIn
Crowdin.
Crowdin's
CRUDS
cryptographic
CSRF
csv
CSV
CTAs?
customizable
customizations
DateTime
DDoS
destructured
Dev
devs
Devtools
DigitalOcean
DigitalOcean's
directus
Directus
directus_(.*)
Directus-(.*)
Directus.
Directus's
Dockerfile
Dockerhub
DOM
double-moustache
dropdown
Duh
e.g.,
EB
EC2
eCommerce
ELB
Elestio
entrypoint
Entrypoint
env
ENV
ESM
EXIF
fallbacks
falsy
FavIcon
filepath
free-form
frontend
G2
Gantt
gcloud
GCP
GCS
GDPR
geo-coordinates
geospatial
Geospatial
getter
GHCR
glibc
Gmail
granularly
GraphQL
greenlight
GUIs?
headshot
Heya
Hoppscotch
HTTPS?
IAM
IETF
IETF's
IIS
iisnode
incongruent
intwined
IoT
ISO8601
iss
iteratively
Jamstack
Javascript
JPG
JS
JS-SDK
json
JSON
JWT
kanban
Kanban
Keycloak
Knex
Koyeb
KPIs
Kubernetes
LDAP
localhost
lowercased
LTS
M1
M2A
M2As
M2M
M2Ms
M2O
M2Os
Mailgun
Mapbox
MDN
Memorystore
MiB
middleware
misconfiguration
misconfigurations
mixins
Mongo
monorepo's
more_horiz
multitenant
mysql_native_password
namespace
netcup
Netlify
nitty-gritty
no-brainer
node[^\s]*
NodeJS
NoSQL
npm
NPM
npx
nullable
Nuxt
O2M
O2Ms
O2O
OAuth
Okta
omnichannel
on-prem
OpenAPI
OpenID
OracleDB
OracleDB's
OSS
OTP
pageClass
param
paywalled
performant
phpMyAdmin
Phusion
Pinia
pino
Pino
Plesk
PNG
pnpm
Postgres
Postgres13
PR
pre-configured
pre-defined
pre-existing
pre-formatted
pre-installed
programmatically
Programmatically
ProgressEvent
PRs
pub/sub
px
px.
reactively
readonly
readTime
rebase
reconfigurations
reconnection
reframe
REKT
relationally
relationally-linked
repo
repurpose
S3
saml
SAML
scalable
Scalable
SCSS
SDK
SDL
semver
SemVer
SemVer-like
SendGrid
SEO
SES
sexualized
SFC
siloed
slugification
slugify
slugifying
SMTP
socio-economic
SSG
SSL
SSO
SSR
StackOverflow
stylization
subdirectory
substring
SuperAdmins?
superset
Superset
SVG
TablePlus
tfa
TFA
TileJSON
TinyMCE
TLS
toc
TrustRadius
truthy
TTL
TTY
UI
UIs?
unarchives
Ungrouped
unintuitive
unpaused
unselectable
upscaled
upvotes
userbase
uuid
UID
UIDs
UUID
UUIDs
UUIDv4
UX
v[0-9]{1,2}
varchar
vCPU
Vercel
viewability
VitePress
(V|v)itest
(V|v)ite
volta
VPC
Vue
Vue's
WebDAV
webhosting
webpage
whitelabeling
whitespace
wireframe
XSS
yaml
YAML
Zeet