30 Commits

Author SHA1 Message Date
Rijk van Zanten
1005738267 Tweak last quirks in hooks error example (#19122) 2023-07-11 11:16:45 +02:00
Connor
f63716af1b update example (#19117) 2023-07-10 23:41:53 +02:00
Connor
92621429ee Linting and Formatting Upgrade (#18892)
* add docs to eslint

* update prettier ignore

* fix vitepress linting

* eslint ignore fixes

* prettier run

* update prettier ignore

* fix formatting

* enable linting of markdown files

* revert format command change

* fix irregular whitespace

* update dictionary

* (Changelog) Create four-boxes-shake.md

* Rework ESLint / Prettier setup

- Disable js/ts/vue files for Prettier to ensure linting/formatting is
  only happening via ESLint
- Rework formatting of code blocks in md files
  - Disable formatting of code blocks in md files under '/docs' by Prettier
  - Instead use "eslint-plugin-markdown" to format & __lint__ js*/ts*/vue such code blocks
  - Replace unmaintained "eslint-plugin-md" plugin by official "eslint-plugin-markdown" plugin
  - I'll check whether we can use this to format other code blocks
    (json, html, ...) as well
- Restructure, clean-up and apply some fixes to the ESLint config
  (Note: Not ready for flat config yet since not supported by
  vscode-eslint)
- Enable cache for ESLint / Prettier in scripts
- Clean-up ignore file
  - Explicit folder declaration (.../)
  - Don't ignore all 'extensions' folders in ESLint (only
    '/api/extensions/')
  - Enable formatting in '/.github' folder

* Fix all formatting issues with Prettier

* Update md files under /docs/.typedocs

* Fix lint issues in vue/js files

* ESLint / Prettier config revision v2

Enable Prettier for md code blocks, but only as warnings since it can
get into the way with Vitepress md extensions like '[!code ...]'
comments

* Remove prettier-ignore comments

* Make spellchecker happy

* Remove changeset

* Revert lint setup for code blocks

There are many cases in the docs where linting / formatting of code
blocks doesn't make
sense:
- Code block is only an excerpt - linter fails
- Code block contains special comments (e.g. markdown extensions) which
  needs to remain at the same place - formatting would break it
- ...

* Apply lint issues / formatting from temp lint setup

* Run formatter

* Fix merge failure

* Simplify & modernize ESLint / Prettier setup

No longer run Prettier via ESLint. Nowadays, this is the recommended
setup. There's no real need to run it this way, it's just an additional
layer.

Add VS Code settings to make the work with the new setup easier.

* Remove unused eslint disable directives

* Make editorconfig more useful

* Fix formatting issues reported by editorconfig

* Format files with Prettier

* Enable formatting of source translations file

* Format source translations file

* Remove unnecessary console error

* Remove unnecessary line

* Only ignore md files under .changeset

* Add CI reporter for Prettier

* Fail job on wrongly formatted files

* Fix format

* Test Prettier action on changed/added file

* Use simple CI format check for now & no cache

* Revert "Test Prettier action on changed/added file"

This reverts commit 4f7d8826ad.

* Introduce code blocks check for docs

* Fix code block issues

* Ignore auto-generated packages dir

* Fix comment position

* Also lint `/app/.storybook`

* Reformat modified files

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-06-29 11:54:01 +02:00
Rijk van Zanten
ca3e7f521f Upgrade previous "Extensions" system to new "Errors" model (#18797)
* Typecheck across packages that are built with esbuild

* Boilerplate new Errors package

* No need, tsup checks with --dts

* Switch to tsup

* Setup dev script

* Add readme

* More boilerplaty things

* Finish createError function

* Install @directus/random

* Downgrade node types

* Add utility function to check if an error is a DirectusError

* Use new is-error check

* Install errors package

* Add failed validation common error

* Export common errors

* Move joi convertion to utils

* Export failed validation

* Use new failed validation error in validate-batch

* Enhance typing output of createError

* Remove outdir (handled by tsup now)

* Replace Exception with Error

* Replace exception in test

* Remove exceptions from app

* Remove exceptions from app

* Remove failed validation exception from users service

* Remove old failed validation exception from shared

* Remove exceptions package in favor of errors

* Uninstall exceptions

* Replace baseexception check

* Migrate content too large error

* Critical detail

* Replace ForbiddenException

* WIP remove exceptions

* Add ForbiddenError to errors

* HitRateLimitError

* Move validation related error/helper to new validation package

* Add index

* Add docs

* Install random

* Convert TokenExpired

* Convert user-suspended

* Convert invalid-credentials

* Move UnsupportedMediaType

* Replace wrong imports for forbidden

* Convert invalid-ip

* Move invalid provider

* Move InvalidOtp

* Convert InvalidToken

* Move MethodNotAllowed

* Convert range not satisfiable

* Move unexpect response

* Move UnprocessableContent

* Move IllegalAssetTransformation

* Move RouteNotFound

* Finalize not found

* Various db errors

* Move value too long

* Move not null

* Move record-not-unique

* Move value out of range

* Finish db errors

* Service unavailable

* GQL errors

* Update packages/validation/src/errors/failed-validation.ts

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

* Update packages/validation/src/errors/failed-validation.ts

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

* InvalidQuery

* Add test for invalid query message constructor

* Invalid Payload

* Finalize exceptions move

* Improve type of isDirectusError

* Various fixes

* Fix build in api

* Update websocket exceptions use

* Allow optional reason for invalid config

* Update errors usage in utils

* Remove unused package from errors

* Update lockfile

* Update api/src/auth/drivers/ldap.ts

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

* Update packages/validation/src/utils/joi-to-error-extensions.ts

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

* Put error codes in shared enum

* Replace instanceof checks in api

* Fix tests I think

* Tweak override names

* Fix linter warnings

* Set snapshots

* Start fixing BB tests

* Fix blackbox tests

* Add changeset

* Update changeset

* Update extension docs to use new createError abstraction

* 🙄

* Fix graphql validation error name

* 🥳

* use ErrorCode.Forbidden

* fix blackbox auth login test

* Add license files

* Rename preMutationException to preMutationError

* Remove unused ms dep & sort package.json

* Remove periods from error messages for consistency

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

* Add optional code check

* Use updated error code checker

* Rename InvalidConfigError to InvalidProviderConfigError

---------

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: ian <licitdev@gmail.com>
2023-06-27 17:22:26 -04: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
76555bc41d Add documentation for auth create and update hooks (#18641)
* Add documentation for auth create and update hooks

* Create pretty-lobsters-look.md
2023-05-17 18:34:18 -04:00
Matthew Rumery
bf10c943c8 Fix broken links in the documentation (#18377)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-05-02 10:03:32 +02:00
Rijk van Zanten
2609c954aa Update hooks.md
Fixes https://github.com/directus/directus/issues/18219
2023-04-17 14:25:11 -04:00
Rijk van Zanten
c723085902 Move docs to monorepo (#18052)
* Move docs to monorepo

* Tweaks
2023-04-04 18:23:58 -04:00
Rijk van Zanten
288e7d62b9 Move docs folder to dedicated repo (#14192)
* Move docs to https://github.com/directus/docs

* Update included docs
2022-06-29 13:47:45 -04:00
Dominic Marcelino
a64bfa3796 Update hooks.md (#13367) 2022-05-17 13:02:55 -04:00
Eron Donevan Powell
afe0f0e499 fixed tip issue (#12938) 2022-04-22 10:46:46 -04:00
rijkvanzanten
02747d9afc Fixed typo 2022-03-11 10:23:59 -05:00
Dominic Marcelino
625c89f74c Update hooks.md - add system collection "files", fix payload parameter (#12094)
* Update hooks.md

* Delete event does not contains the whole payload but the payload keys
* files filter and hooks exist except for create/update

* Update docs/extensions/hooks.md

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2022-03-11 09:50:25 -05:00
Rijk van Zanten
eec21d8d9a Add "items.sort" event (#11954)
* Adds the 'sort_updated' event emit after items are sorted

Signed-off-by: Mihovil Ilakovac <mihovil.ilakovac@gmail.com>

* Updates the event name to 'sort_update'. Docs.

Signed-off-by: Mihovil Ilakovac <mihovil.ilakovac@gmail.com>

* Updates the event name to `sort`

* Add item/to to hook, fix docs

Co-authored-by: Mihovil Ilakovac <mihovil.ilakovac@gmail.com>
2022-03-04 19:58:47 -05:00
Rijk van Zanten
eea9f45624 Add authenticate hook to implement custom auth checks against current request (#11942)
* Add "authenticate" filter hook that allows custom auth check

* Start on test

* Update Jest, restructure API tests, start implementing authenticate test

* Move access token verify to util function

* Ensure jest can show inline warnings on correct lines

* Update is-directus-jwt to use jsonwebtoken decode + add tests

* Remove unused package

* Tweak and finish + test authenticate

* Tweak test

* Add authenticate filter to docs

* Don't scan tests for codeql

* No seriously, ignore tests
2022-03-03 16:29:13 -05:00
Brainslug
35c3f90c9a added event emitter to extension context and updated docs (#10529) 2021-12-15 21:29:06 +00:00
Nicola Krumschmidt
90b59d89e0 Extension docs updates (#8611)
* Rename API Endpoints docs to Endpoints to align with Hooks

* Add a Creating Extensions page to the docs

* Update individual extension docs pages

* Apply latest changes to hook docs

* Move available events to a dedicated section in hook docs
2021-12-06 13:08:31 -05:00
Azri Kahar
19cbe896b4 docs updates on file library, content sidebar etc (#10334) 2021-12-06 09:36:00 -05:00
Oreille
e03bb391b0 Add items.read filter hook (#10279) 2021-12-03 16:37:04 +00:00
Jay Cammarano
57494d8cca removed security hole (#10174) 2021-11-30 21:28:33 +00:00
Jay Cammarano
2e821f1b2c Reorganize the Hooks Documentation (#10033)
* reorganized hooks

* clean up text

* reordered performance warning

* create a hook rework

* spelling
2021-11-24 17:12:29 -05:00
José Varela
ca19cb1a99 emit auth.jwt on refresh (#9661) 2021-11-09 14:01:38 -05:00
gkielwasser
053d2a6a37 Expose server instance in action hook 'server.start' (#9616)
* Expose server instance in action hook 'server.start'

* Expose server in start/stop

* Update documentation
2021-11-09 16:28:24 +00:00
Tyler Forest-Hauser
3cbd908839 Small fixes for Hooks documentation (#9497)
Remove erroneous closing bracket and remove index position from input as it should be an object in this context, not an array.
2021-11-04 23:16:09 +00:00
Nicola Krumschmidt
7fcebf3768 Clarify hook register function parameter descriptions in docs (#9489)
* Clarify hook register function parameter descriptions in docs

* Update package-lock.json

* Update docs/extensions/hooks.md

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

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2021-11-04 17:03:15 -04:00
Nicola Krumschmidt
3d0e086c55 Rework hook registration (#8027)
* Rework hook registration

* Remove event and action fields from hook payloads

* Move "error" action to "request.error" filter

* Emit meta and context objects in filters and actions

* Run filters sequentially

* Update hook templates

* Fix CLI hook test

* Also emit `<collection>.items.crud` when emitting `items.crud`.

* Update hook docs

Co-authored-by: Oreilles <oreilles.github@nitoref.io>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-11-03 17:18:56 -04:00
Aiden Foxx
b6cb3253f6 Added the provider to auth hooks (#9059)
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-10-26 15:36:08 -04:00
Rijk van Zanten
cfe9d0ffb9 Re-add missing oauth docs (#9170) 2021-10-26 14:17:15 -04:00
Ben Haynes
1b87e4555f Docs structure (#9071)
* WIP

* updates

* docs updates

* structure

* big structure update

* docs module icon change

* in-app docs nav

* more content and structure changes

* Remove redundant

* Fix docs build in app

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2021-10-25 21:19:23 -04:00