Commit Graph

2203 Commits

Author SHA1 Message Date
Jay Cammarano
820457690f Optimize media loading across app (#10592)
* v-image and "lazy load" working

* fixed vars

* all the other img uses

* No longer require access token in url for files

* Add lazy loading and size limits

* Rename map-component source prop

* Fix lint warning

* Update app/src/views/public/public-view.vue

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

* Fix lint

* Fix missing file type icon

* Fix null imageInfo error

* Use video.js for media playback

* Fix .js file display

* Update package-lock.json

* Update package-lock.json

* update package.json

* Update pnpm-lock.yaml

* Remove unrelated addition on VDatePicker

* Remove folder abstraction

* Use image data based aspect ratio on preview

* Base app rate throttle on API rate limit config

* Configure app rate limit throttle based on api config

* Convert v-image to script[setup]

* Convert v-media to script[setup]

* Cleanup v-media

* Remove unneeded addTokenToUrl usages

* Remove video.js

It doesn't do authorization headers for mp4/mp3, so it's pointless

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
2022-07-20 15:52:38 -04:00
José Varela
f7a8c36ee6 Do not try to convert Dates (considered an object) (#14520) 2022-07-19 17:54:14 -04:00
Clayton Gulick
ec77b0a203 Enable extensions cache (#14499)
* enable caching for extension assets with ASSETS_CACHE_TTL setting

* simplify implementation
2022-07-19 11:51:32 -04:00
Azri Kahar
f9826afd87 Fix apply snapshot for UUID primary keys (#14506)
* fix apply snapshot for char to uuid primary keys

* account for is_primary_key
2022-07-19 11:24:34 -04:00
Christopher Kapic
090671ea1e Update Knex version to fix CockroachDB relationships showing multiple times (#14509)
* update knex version

* Update all knex uses

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-07-19 10:44:14 -04:00
Rijk van Zanten
27cc3e1bec Move repo to pnpm based workflow (#14350)
* Use pnpm instead of npm

* Setup workspace

* Replace scripts / lerna root stuff

* Add todo file

* Update lock, start updating packages

* Update todo

* [WIP] Keep going on module resolution in pnpm

* Fix final missing deps/types for complete build

* [WIP] Replace npm commands with pnpm alternatives

* Update jest config for v28

* Fix missing package under schema

* Update workflow

* Run CI on fork

* Use local reference

* Remove version from local workflow

* Add build to prepare

* Add Node's max old space size flag to linter

* Idemdito for codeql

* Hyphens? Underscores?

* Bang

* Only build one thing at a time

* Underscores after all?

* Match 7gb of GH

* Set env on prepare

* Jest is driving me nuts

* Downgrade jest

* Add root jest

* We'll get there, eventually.

* 🥳

* Het houdt niet op, niet vanzelf

* attempt to fix e2e

* fix unit test & shared import

* add `debug: true` to CodeQL action

* Fix dev call in shared

* Add missing cross-env

* Add missing geo-json dependency for app

* add flag to prepare action to skip build

* remove debug flag from codeql action

* fix invalid env syntax

* add tslib to app dependencies for tests

* another attempt

* Added missing rimraf dependency for the api prebuild/cleanup scripts

* Added missing ts-node dependency for the api cli script

* update E2E tests readme to use pnpm

* Undo move of extensions sdk

* Fixes nested groups in accordions not rendering fields (#14369)

* initial fix for nested groups in accordions

* removed debug code

* Fix strict relative dates showing "incorrect" (#14390)

* Set rounding method of relative formatted date to floor when strict option is selected

* Add round fn as an option

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

* Don't use locales in generated camelCased values from env (#14401)

Ref https://github.com/directus/directus/discussions/14122

* Fix list panel descending sort (#14396)

* fix list panel descending sort

* Handle missing or explicit desc value

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

* Fix query primary field for system tables (#14402)

* New Crowdin updates (#14403)

* Update source file en-US.yaml

* New translations en-US.yaml (Spanish, Chile)

* New translations en-US.yaml (Spanish, Latin America)

* New translations en-US.yaml (Greek)

* New translations en-US.yaml (Italian)

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

* Fix/wysiwyg context menu (#14404)

* New translations en-US.yaml (Polish) (#14407)

* Encoded the url using encodeURIComponent, so that the url gets sanitzed and so, we did not get 404 error. (#14418)

* Encoded the url using encodeURIComponent, so that the url gets sanitized and we did not get 404 error.

* Added required changes as stated by the reviewer

* Used encodeURI instead of encodeURIComponent to encode the params only

* Solved linting error

* Solved linting errors

* checked with npm run lint, no linting errors found

* fix generateJoi error due to empty permissions when creating new role (#14416)

* fix empty permissions when creating new role

* basic test

* move logic up

* additional test

* Update api/tests/utils/filter-items.test.ts

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

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

* Recreate lockfile

* Fix build of extensions-sdk

* Add missing dependency

* Add some more missing deps

* Update blackbox to use pnpm

* Update workflow to use main

* Update pack to work with pnpm

* Simplify commands

* Remove todo file (completed)

* ADd missing types dep

* Use local test version

* Remove version from local reference

* Call super with context

* Add missing dep

* Simplify workflows

Ref https://github.com/directus/organization/issues/135

* Simplify some more

* Linter is on root

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: brainslug <tim@brainslug.nl>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Gerard Lamusse <gerardlamo@gmail.com>
Co-authored-by: José Varela <joselcvarela@gmail.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Zeel Pathak <60271095+zeel-pathak@users.noreply.github.com>
2022-07-15 17:41:49 -04:00
José Varela
dc850c115e Use same types as count for countDistinct (#14460) 2022-07-15 13:13:45 -04:00
Rijk van Zanten
47e660cb76 Update knex-schema-inspector to 2.0.3 (#14437) 2022-07-14 16:22:41 -04:00
Rijk van Zanten
838770b2be Add GraphQL query POST caching (#14371)
* Add GraphQL query POST caching

Followup to #11462

* Fix condition check
2022-07-14 12:48:47 -04:00
Azri Kahar
64acd2fdb3 fix generateJoi error due to empty permissions when creating new role (#14416)
* fix empty permissions when creating new role

* basic test

* move logic up

* additional test

* Update api/tests/utils/filter-items.test.ts

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

Co-authored-by: ian <licitdev@gmail.com>
2022-07-14 09:14:59 -04:00
Zeel Pathak
4127db78ea Encoded the url using encodeURIComponent, so that the url gets sanitzed and so, we did not get 404 error. (#14418)
* Encoded the url using encodeURIComponent, so that the url gets sanitized and we did not get 404 error.

* Added required changes as stated by the reviewer

* Used encodeURI instead of encodeURIComponent to encode the params only

* Solved linting error

* Solved linting errors

* checked with npm run lint, no linting errors found
2022-07-14 12:43:53 +02:00
Rijk van Zanten
e0a7162931 Don't use locales in generated camelCased values from env (#14401)
Ref https://github.com/directus/directus/discussions/14122
2022-07-12 15:53:03 +02:00
Jay Cammarano
d57ea95e52 Generate joi merge (#13596)
* branch init tests and stuff

* types changed

* added '@' to modules mapper

* removed unneeded dotenv import

* tests passing

* forgot to save before committing

* remove app/generate-joi

* Skip validation if permissions filter is empty

* Remove another generate-joi api util

* Default allowUnknown to true

* Remove wrapping nested filter as Joi.object()

* Remove duplicate nested field from unit test

* Fix between operator for float values

* Removed unused allowUnknown option

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-07-11 19:09:47 +02:00
brainslug
398839be6e v9.14.1 2022-07-08 11:13:22 +02:00
Aiden Foxx
c3a19c44cb Terminate Directus if OpenID discovery fails (#14287) 2022-07-07 11:19:50 +02:00
Azri Kahar
9d094efce9 Fix filename charset for uploaded files (#14286) 2022-07-05 10:37:08 -04:00
Jay Cammarano
c21ea3a41f Unit tests for migrations/run.ts (#10485)
* base neg tests

* more tests for migrations run()

* tests passing

* updated test

Co-authored-by: Jay Cammarano <jaycammarano@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-06-30 19:00:34 -04:00
Nicola Krumschmidt
49f386f729 Enable caching for App assets (#9191)
All assets transformed by Vite are fingerprinted, so they can be cached indefinitely.
The html entrypoint should never be cached to always import the latest assets.
The only downside to this is that files from the "public/" folder are also cached for at least a year.

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-06-30 16:29:41 -04:00
Brainslug
227bfa816d Check if a date string is valid ISO8601 before parsing it (#14127)
* add datetime format check

* updated error message thrown

* removed unneeded "T" from date format

* updated date validation and parsing to use the date-fns functions
2022-06-30 16:04:48 -04:00
ian
e14a6ea401 Emitter emits event in the meta (#14203)
* Emitter emits event in the meta

* Update unit test
2022-06-30 10:12:42 -04:00
Brainslug
49aab29eb7 prevent parseJSON converting strings to numbers (#14057) 2022-06-28 18:08:25 -04:00
Rijk van Zanten
f971eb4f1d Add emitEvents flag to item reads in service (#14164)
* Add emitEvents flag to ItemsService.read*

* Add emitEvents flag to item-read flow operation
2022-06-28 17:32:01 -04:00
Jay Cammarano
2607037ffe Fixes: No notification being created when sendmail fails. (#14131)
* notifications still being made when email fails

* moved try/catch into sendmail

* double checked it works this time

* Add newline for consistency

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-06-28 17:01:31 -04:00
rijkvanzanten
fd55233b11 v9.13.0 2022-06-28 15:52:31 -04:00
Rijk van Zanten
23de088037 Prevent webhooks from registering twice (#14163)
Fixes #13933
2022-06-28 15:40:59 -04:00
Clayton Gulick
43f27b0943 Make path argument optional for snapshot command (#14074)
* make path argument optional for snapshot command

* Cleanup branching paths a tad

Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
2022-06-27 19:50:33 +00:00
Rijk van Zanten
32dd709778 Insights 2.0 (#14096)
* query function added to list

* dashboard reading query, adding to object

* typecasting of filter vals needed still

* numbers accepting strings too

* json-to-graphql-query => devD

* fixed unneeded return in list index.ts

* stitching and calling but not actually calling

* calls on panel change

* query object += new panel before dashboard save

* uuid generated in app not api

* fixed panel ids in query

* fixed the tests I just wrote

* passing the query data down!

* list showing data

* objDiff test moved to test

* metric bug fixes + data

* dashboard logic

* time series conversion started

* timeseries GQL query almost there

* query querying

* chart loading

* aggregate handling improved

* error handling for aggregate+filter errors

* removed query on empty queryObj

* maybe more error handling

* more error handling working

* improvements to erorr handling

* stitchGQL() error return type corrected

* added string fields to COUNT

* pushing up but needs work

* not an endless recursion

* its not pretty but it works.

* throws an error

* system collections supported

* refactor to solve some errors

* loading correct

* metric function fixed

* data loading but not blocking rendering

* removed redundant code.

* relational fields

* deep nesting relations

* options.precision has a default

* relational fields fix. (thanks azri)

* the limit

* limit and time series

* range has a default

* datat to workspace

* v-if

* panels loading

* workspaces dont get data anymore

* package.json

* requested changes

* loading

* get groups util

* timeseries => script setup

* list => script setup

* metric => script setup

* label => script setup

* declare optional props

* loadingPanels: only loading spinner on loading panels

* remove unneeded parseDate!!

* applyDataToPanels tests

* -.only

* remove unneeded steps

* processQuery tests

* tests

* removed unused var

* jest.config and some queryCaller tests

* one more test

* query tests

* typo

* clean up

* fix some but not all bugs

* bugs from merge fixed

* Start cleaning up 🧹

* Refactor custom input type

* Small tweaks in list index

* Cleanup imports

* Require Query object to be returned from query prop

* Tweak return statement

* Fix imports

* Cleanup metric watch effect

* Tweaks tweaks tweaks

* Don't rely on options, simplify fetch logic

* Add paths to validation errors

* [WIP] Start handling things in the store

* Rework query fetching logic into store

* Clean up data passing

* Use composition setup for insights store

* Remove outdated

* Fix missing return

* Allow batch updating in REST API

Allows sending an array of partial items to the endpoints, updating all to their own values

* Add batch update to graphql

* Start integrating edits

* Readd clear

* Add deletion

* Add duplication

* Finish create flow

* Resolve cache refresh on panel config

* Prevent warnings about component name

* Improve loading state

* Finalize dashboard overhaul

* Add auto-refresh sidebar detail

* Add efficient panel reloading

* Set/remove errors on succeeded requests

* Move options rendering to shared

* Fix wrong imports, render options in app

* Selectively reload panels with changed variables

* Ensure newly added panels don't lose data

* Only refresh panel if data query changed

* Never use empty filter object in metric query

* Add default value support to variable panel

* Centralize no-data state

* Only reload data on var change when query is altered

* Fix build

* Fix time series order

* Remove unused utils

* Remove no-longer-used logic

* Mark batch update result as non-nullable in GraphQL schema

* Interim flows fix

* Skip parsing undefined keys

* Refresh insights dashboard when discarding changes

* Don't submit primary key when updating batch

* Handle null prop field better

* Tweak panel padding

Co-authored-by: jaycammarano <jay.cammarano@gmail.com>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
2022-06-27 15:26:42 -04:00
ian
32006bb1fd Mark list result as non-nullable in GraphQL schema (#14094) 2022-06-24 14:49:02 -04:00
Azri Kahar
d57e6bb875 Improve IDs field interaction for Flows item read/update/delete operations when empty (#14090)
* Prevent empty key array in item operations

* tweak visual on app side
2022-06-24 10:43:01 -04:00
Azri Kahar
ea3bf3a597 Fix undefined values in filters for GraphQL (#14080)
* fix undefined values in filters for GraphQL

* add test for not passing variable in filter
2022-06-24 09:36:05 -04:00
José Varela
4a75a2bcbc Return more error messages (#14066) 2022-06-23 14:18:18 -04:00
Azri Kahar
dd00dfbbfd Allow admin to import into system collections (#14065)
* allow admin to import into system collections

* add refresh event after import to relevant pages

* make sure it's limited to admin users
2022-06-23 15:15:38 +00:00
Azri Kahar
817a6c1891 fix action event Flows for related tables (#14034) 2022-06-22 09:30:32 -04:00
Jay Cammarano
8a461b2ef7 add comment (#14029) 2022-06-21 17:06:57 -04:00
Eron Donevan Powell
3fa81b6b9c Docs config refactor (#13945)
* moved config-options.md to self-hosted

* added non-docs files that link to config-options

* moved SSO and fixed links

* moved upgrades-migrations into self-hosted

* moved filter-rules into reference docs and fixed broken links
2022-06-17 11:51:38 -04:00
Azri Kahar
4beb8722fb add Emit Events option to item update/delete operations in Flows (#13921)
* add `Emit Events` option to item update/delete

* update operations docs
2022-06-16 10:11:06 -04:00
José Varela
0f438ef3d0 API: Add env var to opt-out mailer setup verification (#13924)
* Add env var to opt-out mailer setup verification

* Add documentation
2022-06-16 09:15:23 -04:00
Nitwel
37762358fc Add tfa enforce flow (#7805)
* add tfa enforce flow

* add 'tfa-secret' to recommended permissions

* fix if theme if user has dark mode

* oas: rename 'enable-2fa' to 'enable-tfa'

* Add required user fields

* Uniformize styling

* Fix direct and invalid routing

* Add required permission docs

* Fix typescript warnings

* Fix typescript warnings 2

* Allow auto theme

* Nest duplicate condition check

* Fix routing for users without role

* Follow page redirects

* Reduce the use of redirect query

* Improve error UX

* Allow admins to disable 2FA

* Improve autofocus UX

* Override update permission for 'tfa_secret' when role enforces TFA

* Remove permission requirements from docs

Co-authored-by: Jose Varela <joselcvarela@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
2022-06-16 01:27:59 +08:00
Rijk van Zanten
3b2245918d Allow setting a custom filename in the /assets endpoint for SEO (#13907)
* Allow an optional custom filename in the assets route

* Document optional assets endpoint route

* Update docs/reference/files.md
2022-06-15 12:32:36 -04:00
ian
443d3f6734 Add depth limit to filtering (#11845)
* Add depth limit to filtering

* Add depth limit to GraphQL

* Add docs

* Rename environment variable

* Add simple deep filter depth calculation

* Update error message

* Shift fields depth check to base function

* Remove unused var

* Implement GraphQL filter depth

* Add check for _and & _or filters in GraphQL

* Add check for _and & _or filters in REST

* Remove commented code

* Add check for REST filter query

* Add REST tests

* Setup m2m using directus fields

* Add GraphQL tests

* Fix linter error

* Cleanup calculateDepth + add docs/tests

* Remove validator in GraphQL

* Add depth checking for nested sort

* Enable source map to display correct error lines

* Set max relational depth to be at least 2

* Update tests

* Add unit test for deep _sort

* Add minimum value in docs

* Refactor depth validation to be in validateQuery

* Add boolean parameter for calculation of _sort in deep query

* Use array of keys to parse dot notation

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2022-06-15 11:52:54 -04:00
José Varela
08166c89fb Add missing color field (#13906) 2022-06-15 11:28:43 -04:00
José Varela
895100898c Ignore returning not supported messages (#13897) 2022-06-15 10:36:56 -04:00
Azri Kahar
7cefbc9430 sanitize query in item read/update/delete (#13900) 2022-06-15 08:13:22 -04:00
ian
e80f78fa8f Fix date filter with null value on SQLite (#13891) 2022-06-14 10:37:52 -04:00
ian
f8b73ce236 Fix aliased DB table names in filter query (#13575)
* Fix aliased DB table names in filter query

* Rename to originalCollectionName for clarity

* Update api/src/utils/apply-query.ts

Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
2022-06-14 09:14:45 -04:00
Azri Kahar
f17a1d8988 Add migration to rename hook triggers to event (#13879) 2022-06-14 09:07:52 -04:00
Rijk van Zanten
558672a78f Prevent unknown knex methods from being used (#13877)
* Prevent unknown knex methods from being used

* Fix tests
2022-06-13 17:20:27 -04:00
rijkvanzanten
ac694ea64c Another merge to empty object 2022-06-13 16:39:40 -04:00
rijkvanzanten
3549084019 Merge to new object in gql 2022-06-13 16:32:11 -04:00
Rijk van Zanten
89fa6fd36c Upgrade busboy (#13875) 2022-06-13 16:22:41 -04:00