Commit Graph

1978 Commits

Author SHA1 Message Date
Pascal Jufer
c0f595ed3b Fix Websocket GraphQL public auth (#18851) 2023-06-09 13:12:54 +02:00
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
Brainslug
9d8f29b792 Add extra type check in apply-diff (#18783) 2023-06-05 15:05:00 +02:00
ian
cd344baac4 Fix parsing of Error objects when redacting (#18777)
* Fix parsing of Error objects when redacting

* Create perfect-ducks-add.md

* Move errorReplacer into redact util

* Use unknown instead of any

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-31 08:40:32 -04:00
Brainslug
f96dcc361f Translation string performance (#18097)
* broken migration

* fixed migration

* created new endpoints for translation strings

* updated to use core endpoint

* bad attempts at making the endpoints sensible

* merge changes

* implemented translation strings service

* re-integrating app logic part 1

* re-integrating app logic part 2

* fixed bad lodash import

* re-integrating app logic part 3

* removed obsolete tests

* make the linter happy

* Create tender-trees-buy.md

* added option to search-input

* implementing search

* fixed resizing and sidebar

* Fix linting

* Remove unused translations update into project settings

* Fix missing translations

* Require read permissions for app access

* Fetch translation strings only when authenticated

* Fix project default language not used when user has default language

* Remove commented line

* Rename variable as content has been changed

* Make the current user check more specific

* Remove translation_string from Settings type

* Remove settings reference in docs

* Update changeset

* Rename migration file to ensure date order

* Rename collection, route, service, controller

* Rename migration

* Adjust collection in settings route

* Fix translations service

* Use new `shouldClearCache` util

* Drop translation_strings column in migration

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

* Added basic api docs

* updated dictionary

* updated dictionary

* Update app/src/interfaces/_system/system-input-translated-string/input-translated-string.vue

Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>

* Update app/src/modules/settings/routes/translation-strings/collection.vue

Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>

* extracted getCurrentLanguage utility

* Use regular collections/items

* Use regular controller

* Fix item view

* Set correct system field config for translations

* Tweaks

* Use UUID

* Finish placeholders

* Use drawer-item

* Add create to the store

* Remove composables

* Add new placeholder

* Fix saving behavior

* Remove previous take

* Rename migration after merge of live preview

* Generate uuid when migrating

* Remove unused showFilter

* Fix linting

* Fix type warnings

* Not needed as settings no longer contain translation_strings

* Remove leftover blank line

* Update getCurrentLanguage with server default and use in hydrate

* Shift getCurrentLanguage to lang folder to be alongside setLanguage

* add elipsis to placeholder

* Remove slug from key, so you can use dots etc in the key

* updated translation value to be type text again

* Rehydrate fields for updated translation values

* Add tooltip

* updated documentation

* enforce key/language uniqueness in the TranslationService

* updated error message

* updated docs menu item to "custom translations"

* Dynamically fetch translation keys for input-translated-string interface

* use get current language in refresh

* Update docs/reference/system/translations.md

* Update docs/reference/system/translations.md

* Update .changeset/tender-trees-buy.md

* Fetch translation keys when new key is created

* Update api/src/services/translations.ts

* Remove translation_strings remnant

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* mark key, language and value as required

* correctly mark fields as required

* Catch duplicate key error when creating from input

* Translate translations :-)

* Update tender-trees-buy.md

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-05-26 12:35:44 -04:00
Pascal Jufer
bce32d90a7 Implement update notifier in directus package (#18738)
* Include update notifier in `directus`

* Don't bundle

* Move updateCheck function to `update-check` package

* Create kind-shoes-jam.md

* Update kind-shoes-jam.md

* Remove wrong dep
2023-05-26 09:55:23 -04:00
ian
4c919bd8f8 Update handler response format for manual flows (#18741)
* Update handler response format for manual flows

* Create olive-ligers-tie.md
2023-05-26 12:32:46 +02:00
ian
1e8dd2c928 Patch following files max upload size (#18737)
* Prevent uncaught error

* Fix typing as null is returned on error

* Remove undefined values from uploadedFiles result

* Create good-ligers-teach.md
2023-05-25 17:42:59 -04:00
Pascal Jufer
065eea01af Fix fetching of all permissions (#18655)
* Fix fetching of all permissions

* Create orange-moose-punch.md

* Revert "Fix fetching of all permissions"

This reverts commit 3122bf03ee.

* temporary fix forcing limit=-1

* renamed query var

---------

Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: ian <licitdev@gmail.com>
2023-05-25 21:30:18 +00:00
Rijk van Zanten
2536d9e90b Add support for FILES_MIME_TYPE_ALLOW_LIST env var (#18736)
* Install minimatch

* Add support for `FILES_MIME_TYPE_ALLOW_LIST`

* Add reference

* Add changeset

* Update docs/self-hosted/config-options.md

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

---------

Co-authored-by: ian <licitdev@gmail.com>
2023-05-25 17:25:47 -04:00
Rijk van Zanten
3363ca6422 Add env var for max file upload size (#18735)
* Add limit to file size

* Delete temp db record on file upload failure

* Emit empty value on upload failure

* Rename assets->files

* Update reference

* Finalize rename

* Add changeset

* Add proper exception
2023-05-25 15:24:14 -04:00
ian
93cba4e1b6 Optimise countDistinct aggregation on primary key field (#18717)
* Optimise countDistinct aggregation on primary key field

* Create green-boxes-hope.md
2023-05-26 02:14:02 +08:00
Pascal Jufer
4683227272 Update openapi3-ts to v4 (#18722)
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2023-05-25 17:36:32 +02:00
Azri Kahar
c705227cdc Remove docs CDN from the base CSP config (#18728)
* remove docs cdn from the base CSP config

* changeset
2023-05-25 16:49:54 +02:00
Nitwel
ed8b0e0394 Live preview (#17794)
* Add split view to the private view

* add more functionality to split view

* change text

* add simple size settings

* finish basic live preview feature

* add reload functionality

* update pnpm-lock

* update to newer design

* remove console.log

* Fix height of main content

* update design

* finishing fixes

* run linter

* finishing cleanup

* rebuild lock file

* lint fix

* hide preview for collections without preview urls

* fix refresh and eslint error

* use v-text-overflow for preview url

* use bottom placement for consistency

because other buttons such as Open in New Window and Refresh shows their tooltip at the bottom.

* tiny code tweak with early return

* remove fun parts and change divider color

* fix preview for singletons

* slightly improve the refresh button feedback

* hide zoom in fullscreen/desktop view

it is disabled in fullcreen, but some users may think they can click it, so I've opted to hide it instead. Especially since switching from mobile to desktop mode always resets it to 100%.

* tiny early return tweak

* opt to fix v-select disabled state cursor

* reverse zoom scaling order

* prevent preview going out of bounds when zoomed

* fix dragging when pointer enters iframe

* reinstate previous code tweak

* regenerate lock file

* use lockfile from main

* Dear linter...

* chore: add live preview to sidebar

* docs: add frontmatter

* docs: add intro

* docs: before you start

* docs: live preview in directus

* docs: draft mode in nextjs

* docs: fetch with draft mode

* docs: preview content in directus

* docs: next steps

* docs: update

* docs: updates

* docs: add live preview to collections

* docs: add live preview to item

* docs: updates

* docs: update

* chore: updates to the nextjs guide

* chore: updates to collections

* chore: updates to items

* Nuxt 3 guide

* Small Next guide fixes

* Added tips

* Spellcheck fixes

* Rework resizement

* Move debounce to private-view

* Update Nuxt 3 guides - styling and sentence clarity.

* add refreshLivePreview custom property to window

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>

* remove remaining "window as any" typecasts

* Show 'grab-bar' only if wrapper is in viewport

* toggle preview instead of split in mobile view

* tweak to unwrap nested IF conditions

* do not change preview button icon when enabled

* hide grab-bar in mobile

* check main content width instead of window width

* Fix save-and-stay not updating preview url

* Update refresh button function call

* Add frame loader to prevent flashing

* Prevent scrollbar flashing when toggling splitview

* lift specific logic from v-resizable to private-view

This piece of logic was meant only for the content area and shouldn't affect every v-resizable usages

* use v-show instead of v-if to hide main content

v-resizable has an internalWidth that should not be reset when user resize the left navigation bar, as well as the form shouldn't be re-rendered

* check target to hide the grab-bar in toggle mode

as we're only hiding the target rather than disabling the wrapper, we had to check whether the target is visible as well to determine whether to show the grab-bar

* Fix zoom behaviour & remove leftovers

* remove wrapperIsVisible check

in favor of only relying on targetIsVisible check

* Revert "Add frame loader to prevent flashing"

This reverts commit e4c2d3d4bd.

* Final tweaks

- Enhance frame zoom
- Min width for frame
- Hide main content based on overall size
  (ensure it works for all browser sizes)
- Various enhancements & fixes

* Update migration date

* Create rare-bananas-melt.md

* Better naming for remaining width var

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

---------

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Esther Agbaje <folasadeagbaje@gmail.com>
Co-authored-by: Kevin Lewis <kvn@lws.io>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
2023-05-25 16:29:12 +02:00
ian
80cca54d18 Enable caching for requests from data studio (#18484)
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-25 08:37:54 +02:00
Nicola Krumschmidt
60be3c2b40 Add synchronization across horizontally scaled instances to schedule flows and hooks (#18584)
* Add synchronization to schedule flows and hooks

Fixes #15052

* Add changeset

* Add test

* Add to sequential list

* Fix spelling in changeset

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: ian <licitdev@gmail.com>
2023-05-24 17:16:42 -04:00
Pascal Jufer
bcda7d227d Disable disable depreacted marked options (#18685) 2023-05-22 11:19:21 -04:00
Pascal Jufer
a708ec79d8 Redact additional keys in logs of Flows (#18534)
* Redact additional keys in logs of Flows

* Create moody-poems-pump.md

* Move REDACTED_TEXT to constants package & update tests

* Revert "Move REDACTED_TEXT to constants package & update tests"

This reverts commit 0f5b227253.

* Update redacted value in blackbox test

* Use own redact implementation

* Move REDACTED_TEXT to constants package

* Replace outdated comment

* Fix misleading return type

Since values might change (redacted), output isn't necessarily the same type anymore
2023-05-19 09:41:04 -04:00
ian
cf1d6a640d Remove server info (#18648)
* Remove OS info

* Add changeset

* Update unit test

* Remove Directus version

* Remove unused dependency

* Update changeset

* Update example in docs

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Update changeset

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-18 19:28:48 +00:00
Pascal Jufer
377b2889ec More sensible default formats for image auto conversion (#18615)
* Prevent auto conversion of png to jpg images

* Create red-swans-march.md

* Update transformation tests

* Update blackbox test

* Fix image allocation

* Fix test again :-)

* Convert formats with transparency support to png (if no accept header)

* Update tests & add final fallback

* Update changeset

* Update blackbox test

---------

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-05-16 13:50:27 -04:00
Brainslug
40129c9e2c Fix for unknown filter fields (#18630)
* fix api throwing 500 error for unknown filter fields

* Create lucky-falcons-collect.md

---------

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-05-16 12:27:54 -04:00
Aiden Foxx
62520c5057 Send null for auth_data if undefined (#18607)
* openid: Send null if auth_data is undefined

* oauth2: Send null if auth_data is undefined

* Create ninety-mails-heal.md

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-15 14:24:54 -04:00
ian
94e8153baf Sanitize column only when applying snapshot diff (#18579)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-15 13:41:57 +02:00
Brainslug
af55402680 Adding a maximum for query limit (#17309)
* Adding a maximum for query limit

* fixed bad env check

* using the getEnv function to make it better testable

* updated sanitize-query tests

* added tests for the validate query function

* Added DEFAULT_QUERY_LIMIT as fallback instead

* make the linter happy

* accept infinity as max_query_limit

* fixed merge conflicts

* added missing import

* moved docs PR into main repo

* added missing import

* renamed vars

* basic page size limiting

* Update app/src/layouts/cards/cards.vue

* Update app/src/layouts/map/map.vue

* Update app/src/layouts/tabular/tabular.vue

* Update app/src/layouts/tabular/tabular.vue

* Create paginate util

* extracted page size logic to composable and implemented default usage in app

* updated paginate utility

* using the new fetch-all utility

* removed limit: -1 for api calls that do not support it

* fix linter

* removed console log

* making the linter happy

* Create loud-flowers-yawn.md

* Add tests for no / unlimited limit

* Cover all cases for max limit in sanitizeQuery

* Get rid of non-null assertion

* added test for composable

* Update var names in documentation

* replace hardcoded limit default with env var

* update default page size behavior

* fixed test

* update server info api reference

* include queryLimit in graphql server info

* use configured max limit in calendar layout

* use configured max limit in kanban layout

* account for max query limit in use-revisions

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-05-12 21:59:03 +08:00
Brainslug
110413e473 clear item cache when permissions change (#18526)
* clear item cache when permissions change

* Create slow-timers-fold.md

* Add tests

---------

Co-authored-by: ian <licitdev@gmail.com>
2023-05-12 01:18:40 +08:00
Rijk van Zanten
b56fc107a5 Add Pressure-based rate limiter (#17873)
* Start setting up @directus/pressure

* Build pressure middleware

* Add basic readme

* Install @directus/pressure

* Fix this binding

* Experiment

* Add defaults util

* Cleanup

* Fix export

* Use directus defaults

* Start tests

* Add random-utils package

* Finish testing for monitor

* Add prod deployment

* Stop building test files in prod

* My favorite

* Integrate pressure handler

* Add decent defaults

* Add retry header + custom error support

* Clean-up merge conflict & sort imports

* Fix build

* Remove default value for retry after

* Verify sampleInterval value

* ran eslint

* updated package lock

* updated vitest

* Create slimy-zebras-jam.md

* Added basic docs for config options

* updated pnpm lock and changeset

* Update & align new packages

* Update .changeset/slimy-zebras-jam.md

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
2023-05-10 14:17:53 +00:00
Tim Spickermann
d633e11631 Fix field presets for relational fields are not working (#16560)
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-05-05 17:19:46 +02:00
Arthur Yidi
13433b6ea7 Graceful database shutdown for bootstrap CLI (#18465)
* graceful shutdown for boostrap cli

changeset

sign contributors

* Update changeset

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-04 13:20:23 +02:00
Brainslug
a9f397de1f Prevent parsing non-decimal values in search (#18383)
* prevent parsing non-decimal values in search

* Create rare-deers-clap.md

* Adjust format of changeset

* Add explaining comment to return logic of validateNumber

* remove float with zeros check

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-03 09:42:28 -04:00
Brainslug
c74b5da7b9 Improved flows error class handling (#18421)
* improved flows error handling

* Create gentle-cars-watch.md

* updated changeset
2023-05-03 09:40:45 -04:00
Rijk van Zanten
44b4863788 Require curly brackets in if statements when they're multi-line (#18387)
* Enable Curly rule

* Fix curly misuse
2023-05-02 16:02:43 -04:00
Brainslug
1fba5ebf94 Load cjs custom migrations (#18385) 2023-05-02 21:10:19 +02:00
ian
69061c1284 Add Cache option for Flows webhook trigger (#18277)
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-02 15:17:07 +00:00
Brainslug
06ff0c2ef9 Fixes _offset=0 in deep filters (#18382) 2023-05-02 12:34:50 +02:00
Jan Arends
8b8858da9a Support multipart/form-data to apply schema diffs (#18321)
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-02 10:24:46 +00:00
Nicola Krumschmidt
af2ce35d67 Add shared javascript file ext constant (#18350)
* Add shared javascript file ext constant

* Add changeset
2023-04-27 17:18:02 -04:00
Aiden Foxx
2f3fb229bc Correctly set user "auth_data" after auth.update hook (#18310) 2023-04-26 21:01:03 +02:00
Brainslug
2ced6b0a0b Prevent thumbnail duplication (#18316) 2023-04-26 20:39:20 +02:00
Rijk van Zanten
2bc226d16f Change license to BSL-1.1 (#18330)
* Change license to BSL1.1

* Mark major version

* Fix formatting

* Remove duplicate heading

* Update formatting

* Copy paste error

* Update license

* Update license

* Format covenants

* Update readme.md

* Update licenses for packages

* Update readme.md

* Update contributors.yml

OG... but to be clear, rijkvanzanten is the one who really built all of this ❤️

* Tweak license in openapi

* Update packages/specs/src/openapi.yaml

* Add MIT license headers

* Use v10 in examples

* Update additional examples

* Update generate-extensions-entrypoint.test.ts

* Update tests to use latest v9 and v10 versions

* use lowercase for naming consistency

* change casing for api license

* Update migrations doc

* Update dictionary

* Consistent ordering of license field in app/package.json

* Use major version in specs again (but as string)

So it's valid for all v10 versions

* Consolidate readme's

---------

Co-authored-by: Ben Haynes <ben@directus.io>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-04-26 14:10:42 -04:00
ian
f850bcbacd Revert "enabling auto-purge to prevent schema cache issues out-of-the-box (#18303)" (#18308)
This reverts commit 4ccfd2a4ae.
2023-04-24 11:56:52 -04:00
Brainslug
4ccfd2a4ae enabling auto-purge to prevent schema cache issues out-of-the-box (#18303) 2023-04-24 08:40:26 -04:00
Jonathan Schneider
67c4df0e78 [Feat] Flow: Add Mail Templates (#15829)
* add mail templates to flow (proposal)

* add template placeholder to base

* add translations

* add test

* update lint

* accept cla

* fix mail operation unit test

* eslint fix

* Fix linting

* Add test for custom template and data

* Fix import for ts 5

* Another ts type fix

---------

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-04-21 15:41:35 -04:00
Nicola Krumschmidt
b69f380275 Fix extension reloading for local bundle extensions (#18287)
Fixes #17694
2023-04-21 14:23:53 -04:00
Pascal Jufer
17afb9a3bc Patch Tuesday 🐸 (#18260)
* Update `@directus/api` deps (minor)

 @aws-sdk/client-ses          3.292.0  →   3.316.0
 @godaddy/terminus             4.11.2  →    4.12.0
 @rollup/plugin-alias           4.0.3  →     4.0.4
 @rollup/plugin-node-resolve   15.0.1  →    15.0.2
 @types/node                  18.15.3  →  18.15.11
 @vitest/coverage-c8           0.29.3  →    0.30.1
 axios                          1.3.4  →     1.3.6
 fs-extra                      11.1.0  →    11.1.1
 helmet                         6.0.1  →     6.1.5
 ioredis                        5.3.1  →     5.3.2
 joi                           17.8.4  →    17.9.1
 liquidjs                      10.6.1  →    10.7.0
 marked                        4.2.12  →     4.3.0
 nanoid                         3.3.4  →     3.3.6
 rollup                        3.19.1  →    3.20.6
 sharp                         0.31.3  →    0.32.0
 vitest                        0.29.3  →    0.30.1
 vm2                           3.9.16  →    3.9.17

* Update `@directus/api` deps (major)

 @rollup/plugin-alias     4.0.4  →     5.0.0
 @types/inquirer          8.2.6  →     9.0.3
 @types/node           18.15.11  →  18.15.12
 camelcase                6.3.0  →     7.0.1
 chalk                    4.1.2  →     5.2.0
 commander                9.5.0  →    10.0.1
 execa                    5.1.1  →     7.1.1
 icc                      2.0.0  →     3.0.0
 inquirer                 8.2.5  →     9.1.5
 ~ldapjs                   2.3.3  →     3.0.2~
 nanoid                   3.3.6  →     4.0.2
 ~openapi3-ts              3.2.0  →     4.1.1~
 ora                      5.4.1  →     6.3.0
 strip-bom-stream         4.0.0  →     5.0.0
 tedious                 15.1.3  →    16.0.0
 typescript               4.9.5  →     5.0.4

* Update `@directus/app` deps

 @babel/core                             7.21.3  →    7.21.4
 @babel/preset-env                       7.20.2  →    7.21.4
 @fortawesome/fontawesome-svg-core        6.3.0  →     6.4.0
 @fortawesome/free-brands-svg-icons       6.3.0  →     6.4.0
 @fullcalendar/core                       6.1.4  →     6.1.5
 @fullcalendar/daygrid                    6.1.4  →     6.1.5
 @fullcalendar/interaction                6.1.4  →     6.1.5
 @fullcalendar/list                       6.1.4  →     6.1.5
 @fullcalendar/timegrid                   6.1.4  →     6.1.5
 @pinia/testing                          0.0.15  →    0.0.16
 @popperjs/core                          2.11.6  →    2.11.7
 @storybook/addon-actions            7.0.0-rc.4  →     7.0.6
 @storybook/addon-backgrounds        7.0.0-rc.4  →     7.0.6
 @storybook/addon-docs               7.0.0-rc.4  →     7.0.6
 @storybook/addon-essentials         7.0.0-rc.4  →     7.0.6
 @storybook/addon-links              7.0.0-rc.4  →     7.0.6
 @storybook/addon-mdx-gfm            7.0.0-rc.4  →     7.0.6
 @storybook/addon-measure            7.0.0-rc.4  →     7.0.6
 @storybook/addon-outline            7.0.0-rc.4  →     7.0.6
 @storybook/client-api               7.0.0-rc.4  →     7.0.6
 @storybook/client-logger            7.0.0-rc.4  →     7.0.6
 @storybook/vue3                     7.0.0-rc.4  →     7.0.6
 @storybook/vue3-vite                7.0.0-rc.4  →     7.0.6
 @types/diff                              5.0.2  →     5.0.3
 @types/dompurify                         3.0.0  →     3.0.2
 @types/lodash                         4.14.191  →  4.14.194
 @vitejs/plugin-vue                       4.0.0  →     4.1.0
 @vue/test-utils                          2.3.1  →     2.3.2
 apexcharts                              3.37.1  →    3.39.0
 axios                                    1.3.4  →     1.3.6
 dompurify                                3.0.1  →     3.0.2
 happy-dom                                8.9.0  →     9.8.4
 marked                                  4.2.12  →     4.3.0
 nanoid                                   4.0.1  →     4.0.2
 pinia                                   2.0.33  →    2.0.34
 sass                                    1.59.3  →    1.62.0
 storybook                           7.0.0-rc.4  →     7.0.6
 typescript                               4.9.5  →     5.0.4
 vite                                     4.1.4  →     4.2.2
 vitest                                  0.29.3  →    0.30.1
 webpack                                 5.76.2  →    5.80.0

* Update root deps

* Update `@directus/composables` deps

* Update `@directus/constant` deps

* Update `create-directus-extension` deps

* Update `@directus/exceptions` deps

* tsconfig workaround: ignoreDeprecations

* Update `@directus/extensions-sdk` deps

* Update `@directus/schema` deps

* Update `@directus/storage` deps

* Update `@directus/storage-driver-azure` deps

* Update `@directus/storage-driver-cloudinary` deps

* Update `@directus/storage-driver-gcs` deps

* Update `@directus/storage-driver-local` deps

* Update `@directus/storage-driver-s3` deps

* Update `@directus/types` deps

* Update `@directus/update-check` deps

* Update `@directus/utils` deps

* tsconfig workaround in schema: ignoreDeprecations

* tsconfig workaround in remaining packages: ignoreDeprecations

* Update `tests-blackbox` deps

* Revert "tsconfig workaround: ignoreDeprecations"

This reverts commit 5d97da55e3.

* Revert tsconfig override

* Update tsconfig

* Fix imports in @directus/utils

* Fix imports in composables

* Fix imports in extensions-sdk

* Fix imports in @directus/api

* Move RateLimiterAbstract to types import as well

* Bump pnpm to 8.3.1

* Update `docs` deps

> [...] the @vueuse/head package will be deprecated. If you're setting up this package on a new project, you should use the @unhead/vue package directly [...]

* Remove obselete dep `concurrently` from extensions-sdk

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

* New day, new updates

Also forgot to include minor updates of deps in `tests-blackbox` in previous
commit

* Fix `api` tests

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-04-21 12:59:27 -04:00
Nicola Krumschmidt
054188d810 Fix extension reloading (#18257)
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-19 22:45:36 +02:00
Rijk van Zanten
8ffb92ffa1 Remove cache flushing on startup (#18238)
* Remove cache flushing on startup

* Flush caches on migrate

* Add current API version to cache key

* Fix expect hashes in test
2023-04-19 12:26:01 -04:00
Rijk van Zanten
12e38da419 Don't fail on format=auto without accept header (#18235) 2023-04-18 17:12:46 -04:00
bicouy0
84cb5028c7 Vary on accept when auto converting assets (#18228) (#18229) 2023-04-18 09:10:08 -04:00
Rijk van Zanten
c48309ab68 Last eslint tweak (#18198)
* Should be there now

* Format
2023-04-14 17:40:50 -04:00