* Setup build chain
* Initial structure
* Typing, exports, fix build
* Reorganize
* prutsen met output types
* Thursday fun times
* failed experiments in feature composition
* got feature flags on the client
* using interfaces instead of literals
* messed with decorators
* split up decorators
* added fetch and ws types
* reintroduced the global.d.ts we'll figure that out later
* reworked composables
* some changes
* experimenting with commands
* got the read item command working again with types
* trying authentication
* basic gql implementation
* Super basic websocket implementation
* renamed websocket composable and removed obsolete code
* Typing relational fields
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* fixed recursive type
* SDK revamp revamp (#18916)
* Split up files
* Simplify some more (too much?)
* Oh boy we figured out object extending
* OK JK now we're there
* OK getting somewhere real now
* Start structuring type helpers
* Types werken zowaar!
* Remove unneeded "T"'s for readability
* Added support for array relational types
* split up query nesting logic
* make relational fields optional to support multiple relations
* improved readability
* updated REST
* Move URL to top level
* Remove T
* recursively join fields in params
* cleaning up
* updated graphql implementation
* removing old unused code
---------
Co-authored-by: Brainslug <tim@brainslug.nl>
* Reduce global reuse of rest
* Start messing with output types
* Return it from the rest command
* first level schema output filtering
* It works!! but will need some docs for context
* Added some comments
* removed export keyword from types that do not need to be exported
* cleaned up debug script
* graphql update
* Added dom for WebSocket and Fetch typings
* initial readme setup
* moved some types
* removed accidental commit
* Refactor `useDirectus` and improve token handling (#18966)
* Add comment and reduce code of useDirectus
* Add fabian-hiller to contributors.yml
* Change token handling of useDirectus client
---------
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
* Change ClientConfig type back to interface (#18968)
* initial realtime feature
* started on some ws commands and implemented message receiving callback
* disabled rest config for now
* setup auth extension boilerplate
* Added some websocket examples to the readme
* docs: add getting started guide
* docs: add link to previous sdk
* docs: updates
* implemented readItem
* updated readItems
* Added delete commands
* docs: updates to snippets and phrasing
* updated lockfile
* Update dictionary
* docs: removed repeated typescript snippet
* Enrich package.json for SDK
* docs: update snippet
* Fix casing of readme
* added create items commands
* fixed read items output
* removed obsolete types
* added update commands
* updated tsup
* removed unused dependencies
* implemented basic memory storage fallback
* implemented the login function for auth
* implemented refresh and logout auth functions
* docs: update guide
* updated auth refresh logic
* oops, have to actually store the expires at value
* fixed authentication timeout
* added autoRefresh config option
* updated readme
* updated getting started
* docs: updates to guide
* added beta version nr
* removed debug scripts
* added docblocks to the composables
* Added some docblocks
* Added BETA warning to readme
* Added extra type extends object checks
* added a bunch of index files
* updated tsup build entrypoints and exports
* updated import paths
* updated code examples
* docs: removed unnecessary phrases
* Unignore SDK changesets
* Revert "docs: removed unnecessary phrases"
This reverts commit 3559ade873.
* docs: removed unnecessary phrases
* Make sure we export all available functions
* Tweak exports
* Add TypeDoc for new (and old) SDK
* Update docs/guides/sdk/getting-started.md
* Re-add beta version flag in package.json
* Format readme
* Tweaks
* Spellchecker
* v10.4.0
* Add link to TypeDoc of new SDK
* updated query types
* trying to expand the query types
* extending the Query options
* add all exports to the root
* fixed incorrect field mapping
* Abstracted more of the request logic for more flexibility
* partial error handling, global fetch settings and fetch response options
* reworked the requests for better options control and started on better error handling
* type fix
* Run formatter & linter
* Spell fixes
* added onRequest handler
* updated global request hooks
* expanded ItemType to accept singletons
* updated output types for singletons
* fixed fields type generation
* removed rest globaloptions in favor of onRequest
* started singleton command
* different commands for singletons
* ran prettier
* updated readme
* stateless helpers for tomorrow
* support m2a in field types
* added m2a fields parsing and attempt at output typing
* made the base client stateless
* making sure things are exported as needed
* added minimal core table schema for files and users
* added update singleton command
* Added core user read commands
* merged related commands into the same file
* Added create users commands
* Added user update commands
* added user delete commands
* updated query handling
* ran prettier and bumped version
* ran prettier
* disabled global error handling for now
* fixed output formatting for delete commands
* fixed onResponse handling
* fixed item types for create and update
* added missing partial item for create
* ran prettier
* updated readme
* added missing export
* Publish beta version
* Added a bunch of core collection types
* updated users commands
* added more complex core types
* double checked nullable core fields
* fixed core collection merging with custom properties
* added authentication commands
* ran prettier and fixed line endings
* Added all core read commands
* Added all core create commands
* Added all core delete commands
* Added all core update commands
* ran prettier
* renamed `useDirectus` to `createDirectus` and `.use` to `.with` to prevent naming confusion with reacthooks or express middleware.
* ran prettier
* added more misc core commands
* added schema endpoints
* added server api commands
* ran prettier
* added most utility endpoints
* finished utility endpoints
* checking the command typing and jsdoc
* fixed those pesky relational output types
* ran prettier
* removed obsolete type
* initial aggregation typing
* improved aggregation and grouping typing
* ran prettier
* checked exports
* Beta 4
* fixed the m2a fields regression
* added basic client test
* do query parsing at the latest stage
* extra type comments
* reverted accidental commit and ran prettier
* Adjust tsconfig to updated @directus/tsconfig package
* updated websocket event handling
* fixed capitalization
* removed obsolete queryToParams usage
* implemented websocket reconnecting and some non-happy path fixes
* persist subscription across reconnecting
* updated readme
* ran prettier
* 11.0.0-beta.5
* using plurar for uploadFiles ad removed "D" from updateFiles
* fix incorrect paths
* created new util types file
* extracted output types
* fixed input typing issue (for items)
* extracted functions to its own file
* fixed path for presets
* ran prettier
* Applied typing fix to all commands
* fixed naming error `updatedItems` -> `updateItems`
* fixed type error
* Failing types gracefully if no schema is provided
* beta.6
* Clean-up tsup config
- Use documented way to define config
- Doesn't need to be ts file: not type checked, intellisense available
in vscode anyway
- remove default & deprecated options
* added other user commands
* added other share commands
* satisfy prettier
* added string array types to webhook core schema
* fixed plain string request output
* keep nullability for relational fields
* Update documentation guides to use new SDK (#19131)
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Kevin Lewis <kvn@lws.io>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <tim@brainslug.nl>
* Fix error messages for core collections
* updated dictionary
* updated partial item input for fields
* Ready, set, go!
---------
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Fabian Hiller <35291865+fabian-hiller@users.noreply.github.com>
Co-authored-by: Esther Agbaje <folasadeagbaje@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Esther Agbaje <53586167+estheragbaje@users.noreply.github.com>
Co-authored-by: Kevin Lewis <kvn@lws.io>
* [WIP] Cloudinary root
* Attempt to fix `list`
* Fix storage root and filename formatting to sync Cloudinary uploads and deletes (#19231)
* fix(storage-driver-cloudinary): Add file extension in list response
Append file extension from Cloudinary query response for image and video assets on "list" calls.
* fix(storage-driver-cloudinary): Replace upload folder parameters
Replace "folder" param with "asset_folder" and "use_asset_folder_as_public_id_prefix" in uploads
* fix(storage-driver-cloudinary): Fix asset folder params and non media uploads
Only pass "asset_folder" in upload if there is a "root" path configured. For non image and video assets, parse the base path for the public id.
* chore(contributors): added contributor
added self to contributors.yml
* Add changeset
* Remove stray console.log
* Fix tests
* Rename creds to credentials
---------
Co-authored-by: Seth Kaufman <seth.s.kaufman@gmail.com>
* Initial commit to add supabase as a storage driver
* Working supabase implementation
* Slight cleanup
* Started working on tests for storage-driver-supabase
* Updates
* Initial commit to add supabase as a storage driver
* Working supabase implementation
* Slight cleanup
* Started working on tests for storage-driver-supabase
* Updates
* Nicer working tests
* More working tests
* Readable stream
* Working version with all passing tests and types
* Update contributors.yml
* added documentation
* Ran prettier to fix formatting issues
* Ran linter and added Supabase to dictionary
* Fix tsconfig reference
* Organize imports
* Start at v0
* Add changeset
* Lock versions
* storage-driver-supabse: Added fullpath for move and copy arguments
* storage-driver-supabase: Removed resumable uploads
* Update lockfile
---------
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* Add support for deep in useItems
* Add support for computedRef on deep
* Add changeset
---------
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* conversion to abstract sql
* greater than for where clause in pg driver
* refactoring
* forward targets again
* more filter options and fixes
* added filters, moved operator mapping into driver
* removed trim
* add changeset
* removed first type approach
* enhanced abstract sql
* value and set comparison in abstract query
* split up where and intersect again
* preps for where comparison to a set
* typedocs
* fix linter
* The random things we did, who knows
* adding logical conditions (WIP)
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Nicola Krumschmidt <nickrum@users.noreply.github.com>
* Push values to parameters directly
* Fix convert test
* Fix convert filter tests
* Implement filter conversion for logical and negate nodes
* Fix where tests
* Add logical where stringification
* Negate comparison operators directly
* Remove some unneeded parentheses
* Improve parameter index generator type
* Fix formatter issues
* Add todo statements
* Remove unused node type
* Removed unneeded check
* One more unnecessary check
---------
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
Co-authored-by: Nicola Krumschmidt <nickrum@users.noreply.github.com>
Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>
* 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>
* fixed type name
* added sort support
* changeset
* changed order of query parts
* fixed typo in changeset
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
* Assert type instead of using ts-ignore directive
* grammar in docs
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
* removed trim
* refactored constructor
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
* Replace ts-ignore directive in orderBy test
---------
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
* Start on @directus/themes
* Implement theming in app
* Reduce initial ruleset
* Remove test changes from app
* Nothing to see here
* Use appearance in deciding default theme
* Setup typedoc integration
* Add a wip warning
* Support adding additional info to release notes via changesets
* Update test
* Simplify regex since summary is already trimmed by changesets
* Simplify again, split up into new util & add test
* Add comment to regex
* Enhancements
- Better terms: Use "notice" instead of "info"
- Support placing notice everywhere in the summary
- Enhance format of notices in release notes
* Print notices under 'Potential Breaking Changes'
* Update tests
* Update format
* Fix new lines & improve tests
---------
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
* broken migration
* fixed migration
* created new endpoints for translation strings
* updated to use core endpoint
* bad attempts at making the endpoints sensible
* merge changes
* implemented translation strings service
* re-integrating app logic part 1
* re-integrating app logic part 2
* fixed bad lodash import
* re-integrating app logic part 3
* removed obsolete tests
* make the linter happy
* Create tender-trees-buy.md
* added option to search-input
* implementing search
* fixed resizing and sidebar
* Fix linting
* Remove unused translations update into project settings
* Fix missing translations
* Require read permissions for app access
* Fetch translation strings only when authenticated
* Fix project default language not used when user has default language
* Remove commented line
* Rename variable as content has been changed
* Make the current user check more specific
* Remove translation_string from Settings type
* Remove settings reference in docs
* Update changeset
* Rename migration file to ensure date order
* Rename collection, route, service, controller
* Rename migration
* Adjust collection in settings route
* Fix translations service
* Use new `shouldClearCache` util
* Drop translation_strings column in migration
Co-authored-by: ian <licitdev@gmail.com>
* Added basic api docs
* updated dictionary
* updated dictionary
* Update app/src/interfaces/_system/system-input-translated-string/input-translated-string.vue
Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>
* Update app/src/modules/settings/routes/translation-strings/collection.vue
Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>
* extracted getCurrentLanguage utility
* Use regular collections/items
* Use regular controller
* Fix item view
* Set correct system field config for translations
* Tweaks
* Use UUID
* Finish placeholders
* Use drawer-item
* Add create to the store
* Remove composables
* Add new placeholder
* Fix saving behavior
* Remove previous take
* Rename migration after merge of live preview
* Generate uuid when migrating
* Remove unused showFilter
* Fix linting
* Fix type warnings
* Not needed as settings no longer contain translation_strings
* Remove leftover blank line
* Update getCurrentLanguage with server default and use in hydrate
* Shift getCurrentLanguage to lang folder to be alongside setLanguage
* add elipsis to placeholder
* Remove slug from key, so you can use dots etc in the key
* updated translation value to be type text again
* Rehydrate fields for updated translation values
* Add tooltip
* updated documentation
* enforce key/language uniqueness in the TranslationService
* updated error message
* updated docs menu item to "custom translations"
* Dynamically fetch translation keys for input-translated-string interface
* use get current language in refresh
* Update docs/reference/system/translations.md
* Update docs/reference/system/translations.md
* Update .changeset/tender-trees-buy.md
* Fetch translation keys when new key is created
* Update api/src/services/translations.ts
* Remove translation_strings remnant
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
* mark key, language and value as required
* correctly mark fields as required
* Catch duplicate key error when creating from input
* Translate translations :-)
* Update tender-trees-buy.md
---------
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Nicola Krumschmidt <nicola.krumschmidt@freenet.de>
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>
* Add split view to the private view
* add more functionality to split view
* change text
* add simple size settings
* finish basic live preview feature
* add reload functionality
* update pnpm-lock
* update to newer design
* remove console.log
* Fix height of main content
* update design
* finishing fixes
* run linter
* finishing cleanup
* rebuild lock file
* lint fix
* hide preview for collections without preview urls
* fix refresh and eslint error
* use v-text-overflow for preview url
* use bottom placement for consistency
because other buttons such as Open in New Window and Refresh shows their tooltip at the bottom.
* tiny code tweak with early return
* remove fun parts and change divider color
* fix preview for singletons
* slightly improve the refresh button feedback
* hide zoom in fullscreen/desktop view
it is disabled in fullcreen, but some users may think they can click it, so I've opted to hide it instead. Especially since switching from mobile to desktop mode always resets it to 100%.
* tiny early return tweak
* opt to fix v-select disabled state cursor
* reverse zoom scaling order
* prevent preview going out of bounds when zoomed
* fix dragging when pointer enters iframe
* reinstate previous code tweak
* regenerate lock file
* use lockfile from main
* Dear linter...
* chore: add live preview to sidebar
* docs: add frontmatter
* docs: add intro
* docs: before you start
* docs: live preview in directus
* docs: draft mode in nextjs
* docs: fetch with draft mode
* docs: preview content in directus
* docs: next steps
* docs: update
* docs: updates
* docs: add live preview to collections
* docs: add live preview to item
* docs: updates
* docs: update
* chore: updates to the nextjs guide
* chore: updates to collections
* chore: updates to items
* Nuxt 3 guide
* Small Next guide fixes
* Added tips
* Spellcheck fixes
* Rework resizement
* Move debounce to private-view
* Update Nuxt 3 guides - styling and sentence clarity.
* add refreshLivePreview custom property to window
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
* remove remaining "window as any" typecasts
* Show 'grab-bar' only if wrapper is in viewport
* toggle preview instead of split in mobile view
* tweak to unwrap nested IF conditions
* do not change preview button icon when enabled
* hide grab-bar in mobile
* check main content width instead of window width
* Fix save-and-stay not updating preview url
* Update refresh button function call
* Add frame loader to prevent flashing
* Prevent scrollbar flashing when toggling splitview
* lift specific logic from v-resizable to private-view
This piece of logic was meant only for the content area and shouldn't affect every v-resizable usages
* use v-show instead of v-if to hide main content
v-resizable has an internalWidth that should not be reset when user resize the left navigation bar, as well as the form shouldn't be re-rendered
* check target to hide the grab-bar in toggle mode
as we're only hiding the target rather than disabling the wrapper, we had to check whether the target is visible as well to determine whether to show the grab-bar
* Fix zoom behaviour & remove leftovers
* remove wrapperIsVisible check
in favor of only relying on targetIsVisible check
* Revert "Add frame loader to prevent flashing"
This reverts commit e4c2d3d4bd.
* Final tweaks
- Enhance frame zoom
- Min width for frame
- Hide main content based on overall size
(ensure it works for all browser sizes)
- Various enhancements & fixes
* Update migration date
* Create rare-bananas-melt.md
* Better naming for remaining width var
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
---------
Co-authored-by: Azri Kahar <42867097+azrikahar@users.noreply.github.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Esther Agbaje <folasadeagbaje@gmail.com>
Co-authored-by: Kevin Lewis <kvn@lws.io>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
* Remove publishConfig from all packages
* Remove invalid version field
* Move @directus/composables to devDependencies in app
* Resort all package.json files
* Align meta fields
---------
Co-authored-by: rijkvanzanten <rijkvanzanten@me.com>