Commit Graph

749 Commits

Author SHA1 Message Date
David Zacharias
d7930029f7 Resend user invites (#18147)
* Support for re-sending user invites. Close #1799

* Reuse getUserByEmail in user service.

* Add mockImplementation to spies on ItemsServices

* Signed contributors list.

* Fix invite tests

* Fix comments

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-12 13:42:53 -04:00
Nitwel
898b580707 Autoconvert assets if browser supports it (#18012)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-12 15:08:51 +00:00
Nitwel
7f6511d6dc Fix too many SQL Variables (#18001)
* Fix too many SQL Variables

* run linter

* Use lodash' chunk instead of custom for loop

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-12 02:28:49 +00:00
Rijk van Zanten
bce0c1c002 Use lodash set to format error (#18143) 2023-04-11 19:25:42 -04:00
Julius Berger
b207af25ea Add support for AVIF image format (#17303)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-04-11 21:57:38 +00:00
José Varela
54f5081e69 Users: Verify JWT on accept invitation (#16711)
* Adds ability to verify JWT with meaningful errors

* Fix tests

* Apply verify JWT to accept invitation

* Update per review

* Add joselcvarela to contributors

He's a core team member; already signed the CLA outside of GH

---------

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-04-11 15:49:26 -04:00
Diego Leme
aaa0397c3a Block refresh token of suspended users (#17927)
* Block refresh token of suspended users

* Add diegoleme as contributor

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-11 09:22:00 -04:00
ian
b9087c1aca Move activity Action enum from types to constants package (#18126)
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-04-11 08:30:48 +00:00
Azri Kahar
dd3202ce38 Fix diff validation and apply (#18048)
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
2023-04-10 17:53:51 +02:00
ian
fdf0fa2fb8 Add max batch mutation (#17535)
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-04-07 18:25:25 +02:00
Azri Kahar
9bafaef939 Fix falsy default values when reading singleton collection (#18101)
* fix falsy default value for readSingleton

* add unit test

* opt to check null only

* sign CLA
2023-04-07 21:29:36 +08:00
Nitwel
3219bfe38f Fix status on shutdown (#18010)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
2023-04-05 14:50:15 +00:00
Rijk van Zanten
2983e61870 The Great TypeScript Modernization Program Season 3 Episode 6: The Big One (#18014)
* Step 1

* Step 2

* False sense of confidence

* Couple more before dinner

* Update schema package

* Update format-title

* Upgrade specs file

* Close

* Replace ts-node-dev with tsx, and various others

* Replace lodash with lodash-es

* Add lodash-es types

* Update knex import

* More fun is had

* FSE

* Consolidate repos

* Various tweaks and fixes

* Fix specs

* Remove dependency on knex-schema-inspector

* Fix wrong imports of inspector

* Move shared exceptions to new package

* Move constants to separate module

* Move types to new types package

* Use directus/types

* I believe this is no longer needed

* [WIP] Start moving utils to esm

* ESMify Shared

* Move shared utils to  @directus/utils

* Use @directus/utils instead of @directus/shared/utils

* It runs!

* Use correct schemaoverview type

* Fix imports

* Fix the thing

* Start on new update-checker lib

* Use new update-check package

* Swap out directus/shared in app

* Pushing through the last bits now

* Dangerously make extensions SDK ESM

* Use @directus/types in tests

* Copy util function to test

* Fix linter config

* Add missing import

* Hot takes

* Fix build

* Curse these default exports

* No tests in constants

* Add tests

* Remove tests from types

* Add tests for exceptions

* Fix test

* Fix app tests

* Fix import in test

* Fix various tests

* Fix specs export

* Some more tests

* Remove broken integration tests

These were broken beyond repair.. They were also written before we really knew what we we're doing with tests, so I think it's better to say goodbye and start over with these

* Regenerate lockfile

* Fix imports from merge

* I create my own problems

* Make sharp play nice

* Add vitest config

* Install missing blackbox dep

* Consts shouldn't be in types

tsk tsk tsk tsk

* Fix type/const usage in extensions-sdk

* cursed.default

* Reduce circular deps

* Fix circular dep in items service

* vvv

* Trigger testing for all vendors

* Add workaround for rollup

* Prepend the file protocol for the ESM loader to be compatible with Windows
"WARN: Only URLs with a scheme in: file and data are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'c:'"

* Fix postgres

* Schema package updates

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

* Resolve cjs/mjs extensions

* Clean-up eslint config

* fixed extension concatination

* using string interpolation for consistency

* Revert MySQL optimisation

* Revert testing for all vendors

* Replace tsx with esbuild-kit/esm-loader

Is a bit faster and we can rely on the built-in `watch` and `inspect`
functionalities of Node.js

Note: The possibility to watch other files (.env in our case) might be
added in the future, see https://github.com/nodejs/node/issues/45467

* Use exact version for esbuild-kit/esm-loader

* Fix import

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-04-04 17:41:56 -04:00
Azri Kahar
f900e59dcb Add missing fields to GraphQL server info (#17922)
* add rate limiter, rate limiter global and flows

* fix project fields in server info

* add graphql for /utils/random/string

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-04-03 18:07:52 -04:00
Azri Kahar
b8dc4cde9c add missing .toString() password reset url (#18032) 2023-04-03 09:58:46 -04:00
Nitwel
ba69f30a01 Do not override metadata (#17972)
* Do not override metadata

* Update test

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-03-28 11:20:21 -04:00
Rijk van Zanten
cb74665693 noUnusedParameters: true (#17935) 2023-03-24 16:56:18 -04:00
Rijk van Zanten
2bc039607b TS Config Modernization Program Part 4 of almost done (#17934)
* noUncheckedIndexedAccess: true !!!!!!!?!!!!!!!!!!?

* Fix duplicate non-null assertion
2023-03-24 16:43:54 -04:00
Azri Kahar
e0cf496797 Fix auth expires value larger than 32-bit integer for GraphQL (#17908)
* verify blackbox test catches this error

* use GraphQLBigInt for auth expires field

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-03-24 10:18:59 -04:00
Rijk van Zanten
80f4807a09 TS Config Modernization Program Part 3 of many (#17904)
* noImplicitOverride: true

* noImplicitReturns: true

* noPropertyAccessFromIndexSignature: true
2023-03-23 16:47:55 -04:00
ian
cce33436d1 Rework schema caching to use memory (#17763)
Co-authored-by: Nitwel <mail@nitwel.de>
Co-authored-by: Jan Arends <jaads@users.noreply.github.com>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-03-23 12:52:06 +01:00
rijkvanzanten
fa44632c71 Update snapshot 2023-03-22 17:48:17 -04:00
rijkvanzanten
fbb4da2e77 Fix test 2023-03-22 17:27:39 -04:00
rijkvanzanten
fe74c43bc0 Updates 5 of many 2023-03-22 17:02:18 -04:00
rijkvanzanten
f0e0508dd2 Updates 4 of many
This was my favorite so far
2023-03-22 16:55:46 -04:00
rijkvanzanten
71060a51f7 Updates 3 of many 2023-03-22 16:29:36 -04:00
rijkvanzanten
0a137551a8 Updates 2 of many 2023-03-22 16:23:25 -04:00
Rijk van Zanten
1a5f06c791 TSConfig Modernization: Set importsNotUsedAsValues (#17887)
* Set importsNotUsedAsValues

* Fix import
2023-03-22 14:51:27 -04:00
Nitwel
022d77d5d9 Fix keep folder on reupload (#17744)
* Fix deleting data on reupload

* only update folder when necessary

* run linter

* fix replacing filename_download and title

* run linter

* fix if statement

* clean up code

* Remove unused import of 'File'

* cleanup code

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-03-21 16:17:19 +01:00
rijkvanzanten
c938e4be34 Remove comment 2023-03-20 16:53:11 -04:00
Pascal Jufer
0293c88aa3 Patch Tuesday 🐸 (#17811)
* Update root deps

* Update `directus` deps

* Update `@directus/app` deps

* Update usage of knex-mock-client

* Update `@directus/shared` deps

* Update `extensions-sdk` deps

* Update `@directus/specs` 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/utils` deps

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-03-17 15:15:03 +08:00
Nitwel
bbb387fe86 Write full item to revisions (#17729)
* Write full item to revisions

* Get revision data/delta in single call

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-03-09 14:50:04 -06:00
Rijk van Zanten
0154878f27 Improve assets performance (#17734)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: ian <licitdev@gmail.com>
2023-03-08 18:28:36 +01:00
Pascal Jufer
7b89a11ebe Include schema components in OAS (#17712)
* Add missing schema components to required list

* Update expected schema & switch to inline snapshot

---------

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2023-03-06 15:33:53 +01:00
Brainslug
ee7fca3e31 Global rate limiter (#17296)
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-03-02 13:04:22 +01:00
ian
fb41eee1ed Catch IPTC and XMP extraction errors (#17633)
* Catch IPTC and XMP extraction errors

* Add autoPurgeCache option to uploadOne

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

---------

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-02-27 11:05:00 +00:00
Thierry Kühni
9856019c3a Catch ICC parse errors to avoid server crash (#17622)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-02-27 08:21:20 +01:00
Rijk van Zanten
6cb92ea06a Add support for ASSET_TRANSFORM_TIMEOUT env var (#17596)
* Add support for ASSET_TRANSFORM_TIMEOUT env var

* Use string based config

* Timeout on overall promise
2023-02-22 14:39:02 -05:00
ian
9c36d7d8ef Throw validation error after authorization (#17499)
* Throw validation error after authorization

* Improve tests

* Refactor for deleteMany
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Refactor other usages in users service that errors before ForbiddenException

* Update tests

* Adjust test for 'deleteByQuery'

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-02-20 11:57:10 +01:00
Pascal Jufer
e3c755dcf0 Add getMilliseconds util for safer value interpretation (#17498)
* Add `getMilliseconds` util for safer value interpretation

* Test more data types

* Remove remnant

* Customizable fallback with default of undefined

* Clean-up

* Transform getMilliseconds to named export

---------

Co-authored-by: ian <licitdev@gmail.com>
2023-02-17 11:06:26 -05:00
Pascal Jufer
37faf3bd5d Patch Tuesday 🐸 (#17530)
* Update root deps

* Reformat files with new prettier version

* Update `directus` deps

* Update `@directus/app` deps

* Update `@directus/shared` deps

* Update components snapshots after updates

prop order has changed

* Update `extensions-sdk` deps

* pin version of zod in shared

* Update `@directus/storage` deps

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

* Update `storage-driver-cloudinary` deps

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

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

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

* Update `@directus/utils` deps

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-02-16 17:47:39 +08:00
Pascal Jufer
89fbac36ce Catch errors from exif-reader (#17527) 2023-02-15 21:37:51 +00:00
rijkvanzanten
ff53d3e69a Cleanup request handler
Squashed commit of the following:

commit 90368698c8
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Mon Feb 13 15:49:12 2023 -0500

    Cleanup

commit 61514f4509
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Mon Feb 13 15:44:15 2023 -0500

    Rename to index

commit 38fe6b84fa
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Mon Feb 13 15:41:23 2023 -0500

    Test coverage 100%

commit f2e36db95e
Author: rijkvanzanten <rijkvanzanten@me.com>
Date:   Mon Feb 13 15:22:45 2023 -0500

    Split up handler from validator

commit 800ac1968a
Author: Pascal Jufer <pascal-jufer@bluewin.ch>
Date:   Mon Feb 13 20:44:48 2023 +0100

    Use shared axios instance with URL check for outgoing requests
2023-02-13 15:49:24 -05:00
ian
d7f16cd8ac Allow offset and page args for GraphQL aggregated queries (#17481) 2023-02-10 19:09:32 +08:00
Azri Kahar
89fcb19a16 Expose schema endpoints (#14713)
* Expose schema endpoints

* respond with 204

* fix payload for export flag

* allow export as YAML

* use SchemaService

* move getStringFromStream to utils

* clearer exceptions with logs

* check empty request body

* specs

* add bypassCache flag and remove flushCaches calls

* Identify integer typed fields in Oracle

* Fix uuid foreign keys type for Oracle

* Detect autoincrement for CockroachDB

* Bypass cache for fields and relations services

* Add same DB tests

* Test if working for all vendors

* Add schema snapshot testing into sequential flow

* Fix schema re-apply attempts when it's a different database vendor (#14816)

* prevent diffing on certain properties

* fix apply-snapshot test

* prevent updates to autoincrement fields' schema

* sanitize relations

* remove `colleciton.schema.sql` parsing in test

It is now being sanitized by `sanitizeCollection()` function in get-snapshot-diff.ts

* Change concurrency group to not cancel test running on main

* remove multipart for apply & add hash checking

* check incoming version & add force query param

* refine error message & stub for nested hash

* add `vendor` top-level property

as an additional safety net for cross db vendor applies

* sanitize generated schema snapshots

* snapshot joi validation

* diff joi validation

* minor cleanup

* extract applyDiff & use deep-diff applyChange

* use applyDiff in schema service

* Mark vendor as optional

* Update tests to apply diffs

* move force flag check into service

* Patch mssql vendor typo

* Set relation no action in cyclic relations

* Update mysql timestamp default value

* Oracle cannot define no action

* Update oracle timestamp type default values

* add hash checking for outdated diffs

* fix diff service & endpoint

* Add hashes when returning after

* Fix self referencing relations for Oracle

* Add temp fix for CURRENT_TIMESTAMP defaults in Oracle

* clean up driver and database client types

* only require diff hash if not kind N

* update hash comparison logic for create/delete

* Set no action constraint for self referencing M2M in MSSQL

* Add basic hash check tests

* omit default value when hashing auto increments

Specifically for CockroachDB with differing sequences

* add vendor check

* update specs

* Validate vendors with type definition

* Spread the vendors input array

* re-add Export component

* re-add js-yaml to root

* Propagate mutation options for schema apply

* Verify that snapshots differ and clear cache before hash tests

* Fix unit test

* Revert temp fix for CURRENT_TIMESTAMP defaults in Oracle

* Define and reuse type for export format

* Define and reuse list of database clients

* change `were` to `was`

* change `where` to `were`

* add some empty lines for readability

* tweak exception message

* fix test

* use object-hash

* use boolean to check whether file is included

* simplify request content type check

* throw error when multiple files were uploaded

* use nullish coalesce instead of short circuit

* Update api/src/services/schema.ts

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Remove unnecessary `Omit` on `SnapshotWithHash` type

* Revert "Remove unnecessary `Omit` on `SnapshotWithHash` type"

This reverts commit d22ac771ec.

* check empty snapshot earlier

* use allow-list logic via pick instead of omit

* Update api/src/services/schema.ts

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

* Move to own /schema endpoint controller

* Fix refs to schema endpoint

* move streamToString to utils package

* move get-versioned-hash and add test

* extract kind into an enum

* Fix mysql5 timestamp value

* Fix test collection existing on rerun

* resolve TODO comment in blackbox test

* Drop deep level hashes in diff

These hashes are used only for more accurate error reporting
but are otherwise superfluous, since changes are already
detected by the top level hash.
Therefore we remove them in favor of a simpler diff format and
implementation.

* Revert schema "fix" for createItem, add comment

* Strict diff schema validation

* Revert CrDB auto-increment detection patch in 816c998

* Clear systemCache to expose newly added fields

* Use DiffKind constants

* Extract diff & snapshot validation into own tested utils

* Apply suggestions from @azrikahar

* Update knex-schema-inspector to 3.0.1

Includes the fix for CrDB auto-increment detection (knex/knex-schema-inspector#135)

* Update knex-schema-inspector in packages

* Update lock file

* add test for schema service

* add test for export service

* add relevant tests to modified util functions

* fix csv test to account for os end of line

* fix files controller test

* dedupe test data for schema service

* Align schema specs with docs

* Update api/src/controllers/schema.ts

* Revert testing for all vendors

---------

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-01-31 17:36:49 +00:00
Julius Berger
8cbaabd8cd Add return to complete promise rejection (#17335) 2023-01-29 17:10:45 -05:00
ian
91a4a7fca1 Fix CreateMany action hooks (#17066)
* queue action events, emit after transaction

* also queue nested action events

* renamed vars for consistency

* fix import csv/json hooks triggering

* Add unit tests

* Add action verify create tests

* Flip check to improve legibility

---------

Co-authored-by: Ewout Stortenbeker <me@appy.one>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-01-27 16:38:52 +00:00
Benoît Burgener
61cbb0b7f8 GraphQL return original error (#17168) (#17268) 2023-01-23 11:55:32 -05:00
Brainslug
d312bd172d Fix GraphQL server health output (#17113)
* fix graphql server health

* Add tests

Co-authored-by: ian <licitdev@gmail.com>
2023-01-12 13:12:06 +01:00
Azri Kahar
d2a6621153 Add tests for Flows operations (#16580)
* Add tests for Flows operations

* fix notifications test env

* tweaks

* fix env mock
2023-01-11 16:12:16 -05:00