Commit Graph

9768 Commits

Author SHA1 Message Date
Azri Kahar
986984e113 Simplify calendar layout's first day options (#16617)
* Simplify calendar layout's first day options

* use type that is more technically accurate
2023-01-09 17:19:49 -05:00
Rijk van Zanten
c249d58a8c Revert "Speed-up api dev scripts by using swc (#16609)" (#17064)
This reverts commit e9a2ce5a9e.
2023-01-09 16:57:03 -05:00
Azri Kahar
7616b25988 Pass emitEvents to query methods in item-read & item-delete operations (#16579)
* fix item-read's readByQuery emitEvents

* fix item-delete's deleteByQuery emitEvents

* tests
2023-01-09 15:50:55 -05:00
Pascal Jufer
e9a2ce5a9e Speed-up api dev scripts by using swc (#16609) 2023-01-09 15:47:41 -05:00
Pascal Jufer
c16be6f644 Type fixes in app (part 1) (#16545)
* Fix paths of imports

* Process not-found.vue as ts

To prevent the following error from 'vue-tsc':
  error TS6504: File '/Users/pascal/Development/directus/app/src/modules/insights/routes/not-found.vue.js' is a JavaScript file. Did you mean to enable the 'allowJs' option?

Note: We could also enable 'allowJS' but since this is the only js file
this seems to be a more fitting fix

* Drop hljs language definition for GraphQL (now in core)

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-01-09 18:29:03 +00:00
Azri Kahar
bc82c7bb8c Throttle idle event listeners (#16555)
* throttle idle event listeners

* export timeout duration to use it in test directly
2023-01-09 12:13:49 -05:00
Andrii Trubai
216930ee92 Render-template layout fix (#16476) 2023-01-09 11:58:32 -05:00
Nitwel
3a52d9e150 Ignore extension folders on lint (#17013)
* ignore extension folders on lint

* Update .eslintignore

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

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2023-01-09 09:49:10 -05:00
ian
1d6e77d5ab Fix last admin check for alterations type inputs (#16595)
* Fix last admin check for alterations type inputs

* Add unit tests

* fix mocks causing side-effects

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-01-09 20:33:13 +08:00
ian
bcbbd81257 Cast numeric filter values as number for _eq and _neq operators (#16657)
* Cast numeric filter values as number for _eq and _neq operators

* Add check for empty string

* Add check for booleans
2023-01-06 16:06:39 -05:00
ian
f0e8f0bef0 Remove TZ conversion for timestamps in MySQL (#16679) 2023-01-06 16:06:09 -05:00
José Varela
c1887bee86 Cache / Permissions: Prevent server crash when command times out (#16927)
* Catch get permissions from cache when command times out

* Update api/src/utils/get-permissions.ts

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

* Use get/set cache for permissions

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-01-06 18:20:14 +00:00
José Varela
d928275447 Storage / S3: Only pass key and secret if defined (#16942)
* Only pass key and secret if defined
Otherwise, use machine config

* Make conditions more readable

* Opionated formatting tweaks

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2023-01-06 12:59:26 -05:00
Rijk van Zanten
b0350d3ce0 Don't double-root file ref (#17039)
Fixes #17022, fixes ENG-392
2023-01-06 12:03:49 -05:00
Roger Stringer
c429ecd57c healthcheck crashes with local file storage (#16944)
* Update api/src/services/server.ts
* remove try catch in write
* Update api/src/services/server.ts

Co-authored-by: Freekrai <freekrai@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2023-01-06 07:17:04 -08:00
ian
daf931a442 Add Khmer (Cambodia) language for i18n (#17007)
* Add Khmer (Cambodia) language for i18n

* Add translation file

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-01-05 15:06:17 -05:00
Azri Kahar
0122c4da4b Add bottom margin to Slider interface to account for field note (#17024)
* add margin when thumb label is always visible

* add z-index to thumb label for field note

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2023-01-05 08:31:15 -05:00
Brainslug
9f60b0f31d Remove auto-increment primary key when saving as copy (#16966)
* check for auto increment when saving as copy

* updated check to cover uuid generated IDs

* attempt to test use-item composable

* updated test objects

* do not rely on is_generated

* fix readonly regression

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2023-01-05 19:07:11 +08:00
Azri Kahar
446dbb87c7 fix removal of item in local storage (#16581) 2023-01-05 11:17:00 +01:00
Brainslug
cbd2af050b Implements server sort in o2m table interface (#16897)
* implements server sort when dealing with multple relational pages

* always use server sort

* fixed unsetting sort

* removed frontend sorting

* make loading total count more accurate

* remove removed prop

Co-authored-by: Nitwel <mail@nitwel.de>
2023-01-04 16:32:05 +01:00
Nitwel
2ac022d286 Extension Improvements (#16822)
* add link command and small improvements

* put local bundles into own folder on link

* get rid of packs and add bundle support for local extensions

* make bundle type extensions work locally and remove traces of pack

* fix hot reloading of bundles

* fix app.js not refreshing

* fixed linter errors

* add endpoint to install extensions

* update package.json validation and support top level extensions

* update endpoints

* added some URL escapes and ran linter

* remove installation part

* readd endpoint

* update dependencies

* fix types and validation in extension-sdk

* run linter

* fix linter

* add defaults to manifest

* Added missing constant export

* ensure all the extension folders

* ignore unneeded vite error

* update linking process

* run parser separate

* add await

* fixed linter errors

Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2023-01-04 15:20:33 +01:00
Gerard Lamusse
9f06c36e0d Disable field selection for alias fields in the system-filter component when functions are used (#14314)
* Disable selecting alias fields to filter on

* Only disable alias fields when in condition mode
2023-01-04 13:27:13 +01:00
ian
802dfa0703 Fix inner query sort limit (#16922)
* Add sort within inner query

* Run tests for all vendors

* Apply limit to all queries

* Enable sorting in MSSQL subquery by setting a limit

* Add tests

* Parse function field names for a2o

* Improve order string spacing

* Update unit test

* Fix mysql5 tests

* Revert testing for all vendors

* Extract original collection name

* Add comment for MSSQL applyLimit helper

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2023-01-04 19:43:17 +08:00
Andrii Trubai
04497ccbd7 Fix translations display width (#16525) 2023-01-04 12:21:58 +01:00
ian
d01c4cbedf Allow env access in Flows Run Script operation (#16111)
* Allow env access in Flows Run Script operation

* Add env variable

* Expose env for consistency

* Remove global variable from run script operation

* Rename env to FLOWS_ENV_ALLOW_LIST

* Use env within data for consistency

* Remove env notice in run script operation

* Remove translation and tests

* Fix unit test

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2023-01-04 10:39:52 +01:00
Pascal Jufer
c3ecbed0b4 Handle plain object body in "Send Email" operation (#16859)
* Handle plain object body in "Send Email" operation

* Update api/src/operations/mail/index.ts

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

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-12-30 14:08:18 +01:00
Brainslug
dc1a218c58 export extension contexts (#16667) 2022-12-23 15:26:32 -05:00
Pascal Jufer
6b68db7127 Remove deprecated npm flag in Dockerfile (#16858) 2022-12-23 11:58:25 -05:00
Azri Kahar
e899244ef3 Add unit tests to several API utility functions (#16662)
* add unit tests to several API util functions

* fix timezone tests to account for daylight saving

* add a note for future reference

* Update api/src/utils/get-date-formatted.test.ts

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

* remove unnecessary note as it is not an issue

* fix getEnv mock in validate-env test

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2022-12-23 16:51:49 +00:00
Azri Kahar
6bf5de1f9d Re-use getEndpoint utility function (#16700)
* re-use getEndpoint util

* rename endpoint var to route in calendar layout

* move loading below early return statements
2022-12-23 11:50:21 -05:00
Azri Kahar
8080e87d46 Minor codestyle tweaks to datetime display & interface (#16678)
* Minor codestyle tweaks to datetime display

* tweak datetime interface

* use all instead of each
2022-12-23 11:49:18 -05:00
Azri Kahar
ddb873e09b Fix getCacheKey path matching for graphql (#16647)
* fix getCacheKey path matching for graphql

* tweak  test
2022-12-23 11:48:45 -05:00
Rijk van Zanten
40f94e6907 Patch Tuesday 🐸 (#16875)
* Update versions

* Fix usage of fullcalendar

* Patch Tuesday Additions 🐸🐸 (#16878)

* Interop default in vitest

* Update exif-reader

* remove deprecated @types/pino

* remove old "grant" package type shim

* Small clean-up of dependencies (#16576)

* Remove outdated type deps & update concurrently

* fix lock file

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

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-12-23 10:45:15 -05:00
Azri Kahar
fdeddf0118 Fix use-items loading state when an existing request gets canceled (#16881)
* prevent canceled requests from clearing loadingTimeout

* rename CancelTokenSource variable

* don't set loading to false if there's still loadingTimeout

* updated request cancellation to use the abort controller

* azri's getItemCount fix

* prevent cancelled requests from throwing errors

* prevent count request from firing twice

* Remove fetchOnInit option

Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-12-22 21:31:43 +00:00
rijkvanzanten
602f5db4f7 v9.22.1 v9.22.1 2022-12-21 17:12:11 -05:00
Rijk van Zanten
4e3215fb13 Allow setting region outside of endpoint (#16877) 2022-12-21 17:08:54 -05:00
Rijk van Zanten
d2fae39372 Delete add-to-project.yml 2022-12-21 15:09:43 -05:00
rijkvanzanten
4c80992fab v9.22.0 2022-12-21 14:39:21 -05:00
rijkvanzanten
8f0fb8b40f v9.22.0 v9.22.0 2022-12-21 14:33:04 -05:00
Rijk van Zanten
0402629131 New Crowdin updates (#16660)
* New translations en-US.yaml (German)

* New translations en-US.yaml (Dutch)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Chinese Simplified)

* New translations en-US.yaml (French, Canada)

* Update source file en-US.yaml

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (French)

* New translations en-US.yaml (Hungarian)

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (Persian)

* New translations en-US.yaml (German)

* New translations en-US.yaml (Italian)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Arabic)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (Serbian (Latin))

* New translations en-US.yaml (Serbian (Latin))

* New translations en-US.yaml (Russian)

* New translations en-US.yaml (German)
2022-12-21 14:23:00 -05:00
rijkvanzanten
ad8dccd6da Update docs 2022-12-21 14:19:50 -05:00
rijkvanzanten
4fea7c476b Add missing peer dep 2022-12-21 12:58:40 -05:00
Rijk van Zanten
519ad3562c Fetch item/total counts separate (#16870)
* Fetch item/total counts separate

* try to add test

* use relative path when importing types

* Async reload counts on batch operations

* Refresh total/item count nicer

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-12-21 12:41:14 -05:00
ian
f1a8e0446f Fix duplicated results and functions in nested filters (#14798)
* Speed query up by reusing existing aliases which reduces table joins

* Use subquery in top level m2o to remove duplicates

* Fix linting

* Apply distinct on primary key field in subqueries

* Use distinct instead as there are only primary keys

* Apply subquery on top level

* Try remove sub sub query

* Test if working for all vendors

* Add support for _none and _some

* Use subquery only when field depth > 1

* Add tests

* Use original table names for columns with functions (#14690)

* Use original table names for columns with functions

* Extract filter function path parsing as shared util

* Fix filter function path when adding node

* Pass the originalCollectionName into filter functions

* Update unit test

* Replace functions within deep GraphQL

* Fix invalid operator error for _none and _some

* Add filter function tests

* Revert triggering for all vendors

* Simplify aliasMap

* Replace functions in filter within GraphQL aggregate query

* Add API support for filtering of alias field

* Mark schema as optional

* Shift logical operators upwards

* Separate recursive parseFilter

* Rework shifting of logical operators

* Error on invalid usage of _none and _some

* Use inner join to preserve sort order

* Run tests for all vendors

* Reuse aliasMap for sort and filter

* Sort on top level query

* Remove unnecessary limit on wrapper query

* Refactor applyQuery options

* Remove duplicates from nested multi relational sort

* Fix offset in MSSQL requiring OrderBy

* Disable schema cache

* Use inner query only for nested sort or multi relational filter

* Fix MSSQL duplicate order column

* Use inner query only for multi relational

* Additional integration tests

* Order within partition for multi relational sorts

* Rename to directus_row_number

* Fix unit test

* Add base sort and filter tests

* Fix Oracle uppercased rowNumber column

* Fix unit test

* Fix top level query sort with function

* Parse functions in inner query

* Increase clarity with knex.ref()

* Remove sort filter for top level primary key

* Fix unit test

* Bypass queries with groupBy

* Add collection to aliasMap to fix functions in nested sort

* Fix multi relational sort with functions

* Add tests for filter and sort with functions

* Fix accidental deletion of brackets

* Fix top level alias filter node interface

* Update M2M sort tests

* Add M2A tests

* Cast m2a primary key as varchar2 for oracle

* Enable filtering tests for M2A

* Fix prototype polluting assignment in aliasMap

* Remove unnecessary currentKey

* Simplify code to increase readability

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

* Fix linting and missing 'this' error

* Revert optional chaining

* Add mysql5 to tests

* Fix mysql5 missing rowNumber()

* Overcome indexing delays in MySQL5

* Verify MySQL5 sorting is in order as the result count varies between runs

* Skip joining when sorting field already exists

* Simplify variable assignment

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

* Fix linting

* Reduce duplicate logic with vars

* Transform _func fields in GraphQL only for valid functions

* Fix unit test

* Fix unsupported date_part() in CrDB

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Roger Stringer <roger@directus.io>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2022-12-21 11:56:18 -05:00
rijkvanzanten
149466c54a Readme typo 2022-12-21 10:04:40 -05:00
Rijk van Zanten
00865fbd84 File Storage 2.0 (#16825)
* Refactor storage logic to testable setup

* Add tests to get storage config

* Add tests for register drivers

* Tests for index

* Organize imports

* Add missing getStorage

* Setup boilerplate for cloudinary drive

* Add build script

* Add cloudinary configuration

* WIP tweaks for R&D

* Start storage abstraction v2

* Make storage manager single file

* Add test coverage

* Organize imports

* Setup local driver boilerplate

* [WIP] Start on local driver 2.0

* Add more methods

* Lunchtime

* Add put method

* Add list method

* [WIP] Try using storage in api

* Use node16 module-resolution

* Lets not mess with apply-query rn

* I love CJS. Death to CJS.

* Use dynamic imports

* Make things work

* Add path normalizer

* Add azure storage driver

* Update lock

* Start on tests

* Add getBuffer test

* Add getStat tests

* Add tests for exists

* Add tests for move

* Add tests for copy

* Add tests for put

* Add tests for delete

* Add test coverage for list

* Add removeLeading option to normalizePath

* Use removeLeading option

* Start on gcs

* Add fullpath test

* Add getStream

* Add getBuffer

* Add getStat

* Add exists

* Add move

* Add copy

* Add put

* Add delete

* Finish DriverGCS

* Cleanup tests a bit

* Start s3

* Add getStream

* Add getBuffer

* Please Wryn

* Add #exists

* Use randomize data

* No more hardcoded values 🙅‍♀️

* Add tests for copy

* Add tests for put

* Add put/copy/delete

* Add tests for delete

* WIP list

* Remove duplicate fullPath check

* Finish AWS tests

* Listen to wryn

* Mission critical tweak

* Add randomization, cleanup tests

* Check src vs dest full path

* Start on Cloudinary

* Add parameter signature helper

* Fix ESM building of shared

* Fix ESM building of shared

* Improve tests

* Update pnpm

* Remove old build commands

* Generated d.ts files

* Fix export naming

* Move ESM only utils to new @directus/utils

* Update lockfile

* Fix type exports

* Implement getStream

* Cleanup tests

* Simplify api

* Simplify API

* Simplify api

* Simplify API

* Add read/stat

* Cleanup / add exists

* Add move

* Add write

* Move uploadChunk to separate method

* Add test for #uploadChunk

* Add tests for write

* Add copy

* Add delete

* Add list

* Add list error handling

* Remove old drive packages

* Start updating API usage of storage

* Use Readable instead of NodeJS.ReadableStream

* Use readable instead of buffer

* Restore shared to main

* Update lockfile

* Use a streaming pipeline for sharp metadata

* Add basic e2e test for local upload and delete

* Fix integer filesize in SQLite

* fixed environment mocking in unit tests

* applied the same env mocking to other tests

* Update api/src/storage/register-drivers.ts

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

* Use sha256 by default

* Add base read test for /assets

* Replace exifr with exif-reader

* Fix tests for storage/index

* Install faking lib for tests

* Add test for register-drivers

* Add tests for register-locations

* Finish tests

* Organize imports

* Resolve Azris comments

* Fix outdated tests

Certainly not the cleanest, but I need to do a bigger pass on all these tests to get them up to date with the latest team requirements. Gonna do that in a separate PR..

* Test for sha256

* Attempt 1 at fixing toString errorr

I'm not seeing this issue locally, so we'll spam a couple commits here to get things going

* Use node 18 in tests?!

* Fix localhost resolution with 127.0.0.1

* Mock getEnv()

* Use @directus/tsconfig instead of duplicated conf

* Does this fix it?

* OK fun detour

* Recreate lockfile

* Update config files

* Use multipart uploads in S3

* Cleanup imports

* File Storage 2.0: Make metadata extraction backward-compatible (#16868)

* Reinstall packages using pnpm instead of manually removing them (#16871)

* Added extra environment setting for sharp processing of invalid images (#16811)

* Added extra environment setting for sharp processing of invalid images

* renamed environment var to `ASSETS_INVALID_IMAGE_SENSITIVITY_LEVEL`

* Remove unused excludes from tsconfig

* Remove copy/paste leftover

* Update packages/utils/readme.md

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

* Update packages/utils/package.json

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

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-12-21 10:04:03 -05:00
Brainslug
4bb8a463f6 Added extra environment setting for sharp processing of invalid images (#16811)
* Added extra environment setting for sharp processing of invalid images

* renamed environment var to `ASSETS_INVALID_IMAGE_SENSITIVITY_LEVEL`
2022-12-21 11:55:12 +01:00
Pascal Jufer
8f5a072352 Enhance loading logic in image component (#16538)
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-12-19 11:06:07 +01:00
Brainslug
7ae8441214 fixed comma separated input for filters (#16618) 2022-12-19 10:21:20 +01:00
Pascal Jufer
f468dfbc96 Use Node.js 18 for Docker image (#16810) 2022-12-18 00:44:46 -05:00