* 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>
* 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>
* 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
* adding comments to env-stub
to improve for autogenerated .env file during install - is this too verbose?
* Completing adding comments to vars
* Update api/src/cli/utils/create-env/env-stub.liquid
Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>
* Thanks to @aidenfoxx
* header changes
* updating db ports to default
* header change again
* Added meaning of values in [ ]
* remove quotes on string bools
* remove in favour of generated env stub
* remove example.env
* use online help for poss env keys
* grammar, needs a comma!
* remove trailing comma
Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>
* Support listen option for allowing server to listen on wanted IP address or host
* Change default listen value from localhost to 0.0.0.0
* Update LISTEN variable to HOST
* fix formatting
* Update docs/configuration/config-options.md
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* tsconfig loosened to match api
* integration test folder and script
* .env mock isn't needed
* mock-env, locations of tests
* I was wrong.
* Updated progress
* schemas => getSchema(), exported getColumnPreprocessor()
* change imports to allow build
* add MockClient as DB Client (should mock getDBClient())
* move authservice into. not used elsewhere
* test passing
* remove unneeded test for this PR
* removed unneded fields from rawItem
* formatting
* createOne test passing
* typo
* removed int specific jest.config
* use systemSchema over getSchema()
* this.knex over getDatabase()
* mock getDatabaseClient
* removed unused mock-env
* formatting
* removed unused collections from schema
* response => responseOnce
* more direct
* unused var
* more tests please!
* test for: createOne no permissions
* removed broken test for now
* clean up
* readOne tests what does into db and returned
* added bindings check
* added into db sql check
* moved tests outside src
* changed ts config
* cli test location changed
* removed looking for tests in src
* readding it for e2e tests? Seems fishy
* Integration tests for ItemsService user tables (#11208)
* renamed ItemsService test to match src file name
* add user table schema
* system/user tables use .each, formatting needed
* format system and user better in title
* tables/table=> schemas/schema
* filter _eq test passing
* comment for later and formatting
* everything in it's right place
* future proofing as more fields are added
* removed duplicate test
* formatting
* readMany() filter: _or
Co-authored-by: Jay Cammarano <jaycammarano@gmail.com>
* added knex check before getDatabase()
* Move util test to tests folder
Co-authored-by: Jay Cammarano <jaycammarano@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* base changes for cockroachdb
* allow creating of tables
* allow deleting of fields
* allow deleting of tables
* rebase
* fix migrations
* bump knex-schema-inspector to 1.7.0
* Update package-lock
* Add cockroach to debugging docker-compose file
* Remove unused import
* Tweak name in example.env
* Force nullable primary keys in cockroach
* Tweak shares migration to run on cockroach
* Rename var for clarification
* suggestion for migration helper
* change to schema and update remaining migrations
* Remove custom cockroach schema in favor of sharing with pg
* Fix migrations for CockroachDB
* Hopefully fix Oracle migrations 🤞🏻
* Make ~~aiden~~ oracle happy
* Resolve branching paths in migrations
* Enable tests for cockroach
* Fix test config
* One more config change for good measure
* Adjust test to match cockroach's bigint auto-int structure
* Increase request timeout for mssql
* Update api/src/database/helpers/schema/types.ts
Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Oreille <33065839+Oreilles@users.noreply.github.com>
Co-authored-by: Aiden Foxx <aiden.foxx.mail@gmail.com>
* Add extension auto reloading to the API
This can be enabled by using the `EXTENSIONS_AUTO_RELOAD` env var.
* Add logger message indicating watch mode
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Moved over oauth impl to new interface
* Fixed most build issues and started addind schema to auth drivers
* Finished up OAuth2 and OpenID drivers
* Removed unused migration and utils
* Fixed minor todos
* Removed old oauth flow
* Changed oauth flow to re-use refresh token
* Added new oauth frontend
* Added font awesome social icons
* Updated authentication documentation
* Update api/src/auth/drivers/oauth2.ts
* Tested implementation and fixed incorrect validation
* Updated docs
* Improved OAuth error handling and re-enabled creating users with provider/identifier
* Removed Session config from docs
* Update app/src/components/v-icon/v-icon.vue
* Removed oauth need to define default roleID
* Added FormatTitle to SSO links
* Prevent local auth without password
* Store OAuth access token in session data
* Update docs/guides/api-config.md
* Fixed copy and removed fontawesome-vue dependency
* More docs fixes
* Crucialy importend type fiks
* Update package-lock
* Remove is-email-allowed check
In favor of more advanced version based on filtering coming later
* Fix JSON type casting
* Delete unused util
* Update type signature to include name
* Add warning when code isn't found in oauth url
and remove obsolete imports
* Auto-continue on successful SSO login
* Tweak type signature
* More type casting shenanigans
* Please the TS gods
* Check for missing token before crashing
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* 1. Create generatePasswordHash util function to standardize how user
passwords are hashed throughout the API instead of directly calling
argon2.hash directly;
2. Add configuration parameters to modify the behavior of the argon2.hash
function used for generating user password hashes;
3. Add docs and placeholders in api/example.env for new parameters;
4. Update argon2 to latest release.
* Also update CLI init command to call generatePasswordHash vs. calling argon2.hash directly.
* docs: sdk auth.password.request url argument (#7757)
* Show a warning if PostGIS is missing (#7759)
* Show a warning if PostGIS is missing
* Remove sqlite-extensions flag
* Remove unused import
* Update WYSIWYG styling
* translations: fix user.status_invited (#7760)
* New Crowdin updates (#7739)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Czech)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Russian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Czech)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* Fix postgis check
* Fix branch emitter logic from grand-to-child (#7763)
* New Crowdin updates (#7762)
* New translations en-US.yaml (Russian)
* New translations en-US.yaml (Slovenian)
* New translations en-US.yaml (Chinese Simplified)
* New translations en-US.yaml (French)
* New translations en-US.yaml (Arabic)
* New translations en-US.yaml (Catalan)
* New translations en-US.yaml (German)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (German)
* New translations en-US.yaml (Hungarian)
* Fix tree-select not allowing groups to be opened in selection mode
* Optimize tree-select open state
* Warn the user when a collapsed group field had an error (#7738)
* warn the user when a collapsed group field had an error
* Replace icon
* Reduce icon size
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* New translations en-US.yaml (Hungarian) (#7764)
* fix WYSIWYG field focus event (#7756)
* Update vue monorepo to v3.2.7 (#7766)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Fix hash link in docs module (#7768)
* Update dependency knex-schema-inspector to v1.6.0 (#7769)
* Use OpenMapTiles font instead of ArcGIS (#7780)
* tiny rewrite in docs/reference/filter-rules (#7771)
* Update dependency sass to v1.39.0 (#7770)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Expose logger through ExtensionContext (#7777)
Fixes#7737.
* Fixes bug when trying to edit geometry in code interface. (#7778)
* Update vue monorepo to v3.2.8 (#7785)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Update dependency npm to v7.22.0 (#7786)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Improve card selection styling (#7787)
* Add environment variable to force-exclude tables from Directus (#7789)
* New Crowdin updates (#7765)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Hungarian)
* New translations en-US.yaml (Polish)
* v9.0.0-rc.92
* Update changelog.md
* Update logging in CLI commands (#7676)
* Replace console logs with logger in CLI commands
* Fix double sparkles in migration command
* Apply suggestions from code review
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* Use stdout for init command output
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* Fix WYSIWYG field not being cleared after "Save and Create New" (#7754)
* fix WYSIWYG field not being cleared
* return empty string when null for tinymce
* Update app/src/components/v-form/form-field.vue
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* fix wrong icon (#7800)
* fix false is proper value (#7796)
* Fix incorrect database exclude tables environment variable in docs. (#7798)
* Datetime interface "Set to now" sets seconds to 0 (#7794)
When "Include seconds" is disabled.
Fixes#7779
* Use https for openmaptiles fonts. (#7801)
* fix type for deep query with underscore prefix (#7815)
* Map selection behaviour (#7811)
* Use https for openmaptiles fonts.
* Changed map selection behaviour: replace instead of adding them by default.
* Fix map interface controls not showing (#7812)
* Fix return error for GraphQL mutations (#7814)
* Apply "in" to query even if array is empty (#7816)
* fetch only avatar id for current user
* apply "in" to query even if array is empty
if the "in" array is empty we need to add it to query anyways,
otherwise all records will be attached causing out of memory on
subsequent calls
* Update dependency pinia to v2.0.0-rc.7 (#7817)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Update modules.md (#7795)
* make csv imports try to parse values to json (#7820)
* fix minor typo in api-hooks.md (#7821)
* Update dependency knex to v0.95.11 (#7819)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
* Rename hash utils file/function to be not password-specific, update all calls to argon2.hash to use the new function, update docs.
* 1. Create generatePasswordHash util function to standardize how user
passwords are hashed throughout the API instead of directly calling
argon2.hash directly;
2. Add configuration parameters to modify the behavior of the argon2.hash
function used for generating user password hashes;
3. Add docs and placeholders in api/example.env for new parameters;
4. Update argon2 to latest release.
* Also update CLI init command to call generatePasswordHash vs. calling argon2.hash directly.
* Rename hash utils file/function to be not password-specific, update all calls to argon2.hash to use the new function, update docs.
* Preserve old behavior of hash function in PayloadService, in case 'value' is not a String.
* Tweak docs
Co-authored-by: José Varela <joselcvarela@gmail.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Ben Haynes <ben@directus.io>
Co-authored-by: Nitwel <nitwel@arcor.de>
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Oreille <33065839+Oreilles@users.noreply.github.com>
Co-authored-by: mikhail sergienko <mikhail.sergienko@gmail.com>
Co-authored-by: Dieter Luypaert <dieterluypaert@gmail.com>
Co-authored-by: Ben Haynes <ben@rngr.org>
Co-authored-by: Sam Milledge <sam@sammilledge.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Harun Kilic <harunkilic@live.dk>
* Replace console logs with logger in CLI commands
* Fix double sparkles in migration command
* Apply suggestions from code review
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* Use stdout for init command output
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
This fixes not being able to build the repo due to type issues
introduced by the Typescript 4.4 option "useUnknownInCatchVariables",
which is enabled by default in strict mode.
* Add conditions field to directus_fields
* Add conditions configuration
* Apply conditional overrides
* Handle conditions in nested groups
* Fix reverse mutating conditions
* Start on filter setup interface
* Move field types/constants to shared
* [WIP] Updated client side filter validation
* Support logical operators in client validation step
* Use new validation util in conditions check
* Add nesting in filter seutp
* Add filter rule setup configurator
* Fixes that should've been done in the merge
* Strip out filter-settings interface
TBD in a new PR
* Move browser to index
* update dependency commander to v8
* Update import to match new version
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>