28 Commits

Author SHA1 Message Date
Rijk van Zanten
e5ba369c24 v10.13.2 2024-08-06 14:26:11 -04:00
Brainslug
4094e938b0 SDK remove dependency on system-data package (#23146)
* Added local isSystemCollection check for SDK

* prettier

* Create cool-peaches-enjoy.md

* resolve lockfile

* resolve lockfile
2024-08-02 13:49:10 -04:00
Pascal Jufer
a9cca2cea6 Introduce created_on date field for files and adjust uploaded_on to be updated with every upload (#23035)
* Update date fields on directus_files

* Add changeset

* Use knex update instead of raw

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2024-07-23 13:00:25 -04:00
dependabot[bot]
cdfae6e365 Bump tsup from 8.1.2 to 8.2.2 (#23079)
Bumps [tsup](https://github.com/egoist/tsup) from 8.1.2 to 8.2.2.
- [Release notes](https://github.com/egoist/tsup/releases)
- [Changelog](https://github.com/egoist/tsup/blob/dev/.releaserc.json)
- [Commits](https://github.com/egoist/tsup/compare/v8.1.2...v8.2.2)

---
updated-dependencies:
- dependency-name: tsup
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-23 13:06:47 +02:00
dependabot[bot]
b77a3857e6 Bump tsup from 8.1.0 to 8.1.2 (#23060)
Bumps [tsup](https://github.com/egoist/tsup) from 8.1.0 to 8.1.2.
- [Release notes](https://github.com/egoist/tsup/releases)
- [Changelog](https://github.com/egoist/tsup/blob/dev/.releaserc.json)
- [Commits](https://github.com/egoist/tsup/compare/v8.1.0...v8.1.2)

---
updated-dependencies:
- dependency-name: tsup
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-19 09:28:52 +02:00
daedalus
bde5d9b01d Merge commit from fork 2024-07-17 13:26:54 -04:00
Brainslug
844d4e7f33 v10.13.0 (#22903) 2024-07-02 17:38:58 +02:00
Brainslug
266e043c0e Add support for the TUS protocol (#22673)
* WIP initial TUS tests

* WIP further tus integration

* WIP authenticate uploads

* boilerplate stuff

* Migrated handlers

* resolving type errors

* tackle some build errors

* WIP moving resumable uploads to its own package

* added migration and integrated local file storage into directus files

* cleaned up local store

* cleaned up failed experiments

* prettier

* Add tus_data and tus_id to system data

* Improve file upload progress estimation for multiple files

* bypass creating a revision per uploaded chunk

* fixed accidental commit

* Fix pause/resume for multiple uploads

* Null coalesce all the way

* Added directus locking logic

* prettier

* Small tweak (added resume uploads dialog)

* authentication

* Add remove to resumable uploads

* added delete endpoint and cleaned old service setup

* WIP s3 storage adapter

* Less breaking of interfaces, more breaking of text

* Moved local adapter to its own package

* Prettying some things up

* Sort resumable uploads by creation time

* Fix resumable uploads dialog popping up on second file upload

* Move buttons around & properly handle error

* s3

* A few changes

- Make S3 driver work more reliable
- Move common logic to tus driver class
- Respect `folder` when uploading from a different folder
- Implement cleanup for both local and S3

* synced dependencies

* accept presets

* Remove extra code for folder, as this is handled in presets now

* Rename migration to most recent date

* updated lcokfile

* prettier

* dont fully rely on the sudo service

* removed unused import

* Hide partial file uploads from the API

* satisfy linter

* Refactor tus into storage driver

* Fix merge conflicts

* Update pnpm-lock

* Fix typing issue

* nuked tus driver packages

* updated environment vars

* prettier

* Change type import style

* Fix S3 cleanup

* Use `modified_on` instead of tus creation date

* Pass chunk size to storage drivers

* Add sudo service to scheduled job

* Make cleanup work even if no upload was done before

* Remove "Resume Uploads" interface

* Update packages/env/src/constants/defaults.ts

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

* Add config docs

* Add resumable to dictionary

* moved chunk filter to service

* simplify middleware

* use lodash

* Update api/src/services/tus/data-store.ts

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

* move to devDeps

* package lock

* fixed import

* updated test mocking

* Create a new TUS server handler for every request instead of one global one

* Allow for tree-shaking tus-client

* Rename resumable-uploads.ts to tus.ts

* Extract meta data from uploaded file

* Only consider full parts or the final part for bytesUploaded in S3

* Add additional sanity check to S3 driver

* Remove pause/resume functionality

* fixed file replacement

* Remove unused expose

* Reintroduce defineExpose and expose abort

* Broken file replace

* fixed replacement

* prettier

* added filesize in replace

* update metadata extraction

* Remove unused import

* updated package-lock

* extra validation check

* oops

---------

Co-authored-by: Hannes Küttner <kuettner.hannes@gmail.com>
Co-authored-by: Hannes Küttner <4376726+hanneskuettner@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
2024-07-02 17:00:59 +02:00
Rijk van Zanten
6f393ff50d Set uploaded_on through Directus flag (#22885)
* Set uploaded_on date in flag

Fixes #22884

* Add changeset

* Fix quotes

* Update .changeset/neat-grapes-kick.md

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

* Improve changeset

---------

Co-authored-by: ian <licitdev@gmail.com>
2024-07-01 13:58:24 -04:00
Hannes Küttner
68898441f1 Added missing relations to system-data (#22844) 2024-06-25 15:27:57 +02:00
Pascal Jufer
f6627b1f6f Add a default preset for bookmarks (#22699)
* Add a default preset for bookmarks

* Add changeset
2024-06-14 14:58:45 -04:00
dependabot[bot]
2333f812b3 Bump tsup from 8.0.2 to 8.1.0 (#22678)
Bumps [tsup](https://github.com/egoist/tsup) from 8.0.2 to 8.1.0.
- [Release notes](https://github.com/egoist/tsup/releases)
- [Changelog](https://github.com/egoist/tsup/blob/dev/.releaserc.json)
- [Commits](https://github.com/egoist/tsup/compare/v8.0.2...v8.1.0)

---
updated-dependencies:
- dependency-name: tsup
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-06 14:53:54 +02:00
Brainslug
e469b49583 release 10.12 (#22652) 2024-06-04 17:34:36 +02:00
Brainslug
ba9749c31f Added session next_token to system-data (#22605) 2024-05-29 21:11:22 +02:00
Rijk van Zanten
0d6c6b90b0 v10.11.0 2024-05-07 18:01:38 -04:00
Daniel Biegler
c893b9fa65 Add public registration (#22125)
* WIP: add new register dummy-route

* fix notice on register route

* WIP register form

* WIP: registering ui and controller for testing

* fix lint ordering problem

* wip: users service

* add migration, initial style for fields in settings

* redo how emails will be filtered

* WIP add filter in the register handler

* conditionally render register link depending on settings

* WIP: add email validation

* wip add email sending

* make clicking the email link work

* rm console log

* update controller

* dont send emails for existing emails

* add translation

* only show register link when unauthenticated

* add different redirects

* only allow selecting non-admin roles

* redirect to users page

* update translation

* move logic from controller to usersservice

* rm remnant of logic from controller

* add stall time to registration

* update translation

* rm comments

* rm unused var

* add changeset

* update translation for success

* remove sso related stuff from registration

* also allow setting first and last name

* update error check

* add @directus/errors to app

* replace error strings with enum

* rename to public_registration

* rename to public_registration_verify_email

* add notes to fields

* add types package to changeset

* dont stall if no work is being done

* allow null-role and resending of reg. email

* add public registration env vars, rm RATE_LIMITER_GLOBAL_STORE

RATE_LIMITER_GLOBAL_STORE wasnt being used. Lets just stick to RATE_LIMITER_STORE for all rate limiters. TODO: also remove from docs!

* use ratelimiter for registration, use stall time env var

* add registration limiter docs, rm global store variable from docs

* update changeset

* add ignore-notice

Co-authored-by: Hannes Küttner <4376726+hanneskuettner@users.noreply.github.com>

* use and document new `EMAIL_VERIFICATION_TOKEN_TTL`, also doc `REGISTER_STALL_TIME`

* change variable name

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

* apply variable rename to usage

* change backticks to single quote

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

* inline variables

* add fields to server info, update types

- The other ratelimiters also expose points and duration, done
- Add `public_registration_verify_email` so that we can render different success messages

* tiny wording tweak of registration mail

* add new user status 'unverified' and check for it

* add unverified status translation

* decouple email verification and validation

* enable register rate limiter by default and up its config

* add autocomplete=new-password on the registration form

* added sdk functions

* add gql query for new fields

* added register api reference

* updated verify sdk function name

* added reference block for email verify endpoint

* updated reference examples

* WIP: add gql resolvers

* add ratelimiter to mutation

* remove ratelimiter registration point+duration info

* rm points and duration from gql

* Update docs/reference/system/users.md

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

---------

Co-authored-by: Hannes Küttner <4376726+hanneskuettner@users.noreply.github.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-05-07 23:20:24 +02:00
Pascal Jufer
537d7f1e36 Revert "Consolidate content versioning (#22227)" (#22412)
This reverts commit 5a258dd406.
2024-05-07 17:25:19 +08:00
ian
5a258dd406 Consolidate content versioning (#22227)
* Add migration

* Use the new delta field

* Add cast-json flag

* Fix typing

* Fetch existing deltas if version created during migration

* Add changeset

* Add version delta field into sdk schema
2024-05-06 21:02:23 +02:00
Pascal Jufer
160b982928 Patch Tuesday 🐸 (#22063)
Co-authored-by: Hannes Küttner <4376726+hanneskuettner@users.noreply.github.com>
2024-04-30 10:49:20 +02:00
Rijk van Zanten
bd4b8b5949 v10.10.5 2024-04-03 15:47:12 -04:00
Daniel Biegler
7f14e387ed Fix 15553 remove webhooks (1/2) (#21808)
* add deprecation notice to webhooks

I dont like how the "Flows"-Link is not a real router-link so it reloads the page but we could sort this out later in the PR

* add feature flag store

* make links reactive

* add depreaction to webhook item route too

* better progressive deprecation, update translation

* fix batch deletion of webhooks

* remove batch editing (it doesnt work), remove irrelevant now code

* add changeset

* add up migration

* improve upon migration

* disallow creation of new webhooks

* remove create action

* remove isvisible field

no longer used

* remove feature flags store

no longer needed

* rm featureflag store remnants

* hide webhook fields from migration

* update comment

* change width of notice

* rm button for creating webhooks

* add changeset

* Update api/src/database/migrations/20240311A-deprecate-webhooks.ts

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

* Update api/src/controllers/webhooks.ts

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

* prettier

* add changeset for system data

* update changesets

* remove top padding

* update deprecation notice

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

* remove ability to patch webhooks and relevant snippets from its item route

* rm bottom padding since v-form has its own

* remove Flows created by the up-migration

* only add run-script if needed

* filter whitespace values out

* deprecate webhooks on service level

* fix tests for webhooksservice

* reuse deprecation error

* add deprecation and update test for updateBatch

* update changeset

* remove webhook initialization and handling

* remove check for POST

people could use raw values for PATCH, SEARCH, etc.

* Filter empty collections in migration

* skip run script for GET requests

---------

Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <tim@brainslug.nl>
2024-03-28 17:10:06 +01:00
daedalus
7bea23b7f5 Add the ability to configure the error, bug and feature URLs (#21174)
* add report url fields

* update field template to be agnostic

* add changeset

* various fixes

* rename handler to load path level

* add translations

* updated docs

* fix tests

* add placeholder support for system-display-template

* refactor project to report and move to their own settings section

* example urls should be more concrete

Co-Authored-By: Pascal Jufer <5363448+paescuj@users.noreply.github.com>

* move hardcoded default report urls to constants

Co-Authored-By: Pascal Jufer <5363448+paescuj@users.noreply.github.com>

* Make nav reactive, so URL changes are immediate

* change order of report urls

* change icon to feedback

* move composable to top level

* remove ref, use from prop

* Update .changeset/tender-timers-develop.md

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

* rm select_a_collection_or_tree_fields translation key

---------

Co-authored-by: Pascal Jufer <5363448+paescuj@users.noreply.github.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Daniel Biegler <DanielBiegler@users.noreply.github.com>
2024-03-13 15:04:25 +01:00
Rijk van Zanten
9d88df621f v10.10.0 2024-03-05 16:45:58 -05:00
Pascal Jufer
82b23a57d4 Add the Directus Marketplace (#21674)
* Add support for MIGRATIONS_PATH (#20627)

* Deprecate "local" extension types (#20624)

* No longer resolve local non-package extensions

* Remove local extensions from watcher

* Install fs-extra for app dev

* Replace usage of get-extensions

* Rename create functions to match behavior

* Drop extensions prefix from cli create

* Drop name requirement from cli add

* Drop extensions name regex checks

* Don't rely on regex for extension identification

* Add changeset

* Fix build for @directus/extensions

* Don't ensure nested dirs

* Load npm dependency by name prefix

* Throw more helpful error when pkg json is missing

* Fix dependency loading paths

* Only load local extensions if extensions path exists

* Fix merge conflict

* Remove unused fs-extra

* Only sync extensions if location is defined

* `extensions` -> `localExtensions`

* Fix resolving of package extensions

- consistent usage of term "package extensions"
- enhance error messages

* Fix syncing extension from storage

* Revert-revert change from #20627

---------

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>

* Add back `MIGRATIONS_PATH` to `@directus/env` (#21053)

* Setup browse endpoint for browsing Directus extensions (#21033)

* Rename tag directus-custom to directus-extension

* Devil's in the details

* [WIP] Start on search lib

* Setup extensions-registry package

* Update pnpm lock

* Move registry search fn to new package

* Squash bugs

* Remove unused deps

* Remove unused dep in `extensions`

* Add tests for validate-limit

* Finish test coverage

* Remove unused constant

* Add back lodash-es 😇

* Install extensions-registry

* Add default keywords

* Expose registry endpoint in rest api

* Add describe module

* Reinstal pnpm

* Drop reliance on author field

The problem is that there's no requirement for it to be a valid(ated) user. Publisher is the only field we can rely on being an existing NPM user.

* Update convertSearchResult test after author change

* Format

* Allow anything after the route

To support packages with scopes

* Add test for describe

* Add more tests

* Throw unprocessablecontenterror instead of error

* Install errors pkg

* Finish test coverage

* Don't require description

* Don't wrap individual keywords

* Run formatter

* Add changeset

* Update packages/extensions-registry/src/modules/search/utils/validate-text.ts

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

* Return sandbox information

* Drop support for directus-custom keyword

* Set type to null for multiple tags

* Restart api for new registry

* Add version utility

* Add out-of-date error

* Add assertion for api versions

* Finish new list method

* Add describe

* Use updated registry functions

* Fix controller usage

* Return output in data flag to be consistent

* Add tests for the describe module

* Add tests for list module

* Finish tests for extensions-registry package

* Remove vscode shenanigans

---------

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

* Project Forum: Browse UX (#21276)

* Render marketplace route in-app

* Update api list integration

* Add support for limit/offset in list

* Boilerplate route for drawer

* Render extension readme in drawer

* Render extension detail as separate page

* Setup markup for extension banner

* Render readme with markdown styling

* Boilerplate metadata block

* Use v-list for extension metadata metrics

* Render compatibility metric

* Show downloads and publish date

* Refactor to individual files

* Fix missing import

* Add size metric

* Show author on metadat

* Show verified badge

* Finish metadata

* Run formatter

* Style forum detail banner (#21290)

* Style banner contents

* Add background art

* Add banner styles to default dark mode theme

* Undo base style change to avoid conflict

* Add beta chip badge to settings nav (#21296)

* Add layout styling for detail page (#21297)

* Render metadata as grid if size allows

* Finish layout for detail page

* Fix alignment of count

* Fix search-input active state

* Finalize forum header

* Add marketplace banner

* Style registry filter

* Change v-list-item height to min-height

Allows rows for forum registry to grow

* Finalize styling for extension list item

* Finalize styling for registry

* Don't rely on format util

* Forum account detail page (#21299)

* Add support for author describe endpoint

* Boilerplate author page

* Add author endpoint

* Update naming to account

* Render github name on registry list

* Render user's name + avatar on detail

* Load account data on account page

* Restructure module

* Render account banner on account page

* Render account metadata

* Finish account detail page

* Run formatter

* Add sidebar info detail sections

* install extensions from registry (#21070)

* added an endpoint to install extensions from registries

* add changeset

* Revert format/lint scripts

* Update pnpm-lock

* Remove unused dependency

* Add download module to extensions-registry abstraction

* Download from extension registry instead of direct npm

* Throw on error

* Install based on version ID rather than name

* Install based on ID in body

Allows us to extend it in the future if need be

* Download to tmp path instead of extensions

* Save to extensions manager flattened

* Use const for package folder name

* Run more in try/catch to avoid server exit

* Remove changeset

* Undo docs updates

We'll do all docs in a single PR :)

---------

Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>

* Manage extensions by directus_extensions primary key instead of npm package name (#21300)

* Add marketplace migration

* Include bundle info

* Rename name to folder

* Store name as folder

* [WIP] Change name to ID

* Update API to use UUIDs for extensions

* Update app to use extensions id

* Run formatter

* Add changeset

* Update generate-app-entrypoint to use updated format

* Fix graphql usage

* Format

* Add forum uninstall endpoint (#21301)

* Bootstrap uninstall

* Finish uninstall endpoint

* Use shared extensions store state for managing extensions in settings (#21317)

* Use extensionsstore for extensions management

* Use shared store for extensions state and modification

* Remove unused emit

* Adds install/uninstall GUI elements for project forum (#21319)

* Use warning color for incompatible

* Styling tweaks

* Transition optional background color

* Add keys for installing

* Add install button to extension detail

* Finish install button

* Add uninstall option to extensions item

* Empty local cached extensions on start

* Add (hopefully) temporary hack to await reload

* Add install / uninstall buttons

* Update lockfile

* Fix bundle entries not rendering properly

* Clean up spinner styling

* Properly wait for reload to be done

* Run formatter

* Fix registry name

* Fix local extension loading

* Render location/company in byline

* Rearchitect metadata to unstyled listitems

* Add max-width to page container

* Only allow admins to install/uninstall extensions

* Remove unused link

* Disable eslint for map use

* Run formatter

* Add no-results indicator (#21389)

* Add no-results indicator

* add error state as well

* Standardize trailing slash

* Standardize pk check

* Resolve unnecessary check

* Move all deps to dev deps in app

* Optimize exec order

* Pull data from top level package

* Redesign filter bar

* Reset page count on filter change

* Use default padding on top of page

Feels weird now, but there's a theme-update coming that'll make this make sense :)

* Show first/last in pagination

* Auto-format package name

* Use updated registry api return names

* Add sorting by total downloads

* Add sparkline for downloads

* Add a bit of padding

* Finalize sparkline styling

* Run formatterg

* Add sandbox flag in list call

* Add MARKETPLACE_TRUST env var

* Set sandbox requirement on download

* Render list item badge

* Fix padding

* Show license in gui

* Add support for multiple maintainers

* Add activity tracking for install

* Make incompatibility notice friendlier

* Tweak margin of sparkline

* Update default CSP headers to include github content

* Make extension readme selectable

* Consistent icon, add tooltips

* Reduce size of install button

* Run formatter

* Render readme anchors with target blank

* Add min width to v-select components

* Fix background on search input

* Reduce padding on marketplace pages

* Fix showing no results

* Be consistent

* Render type filter menu in full height

* Clean up compatibility notice

* Hide count result when search count is 0

* Use v-show instead

* Bump no results notice down a bit

* Cleanup size of install buttons

* Use buttons for install / author

* Fix sparkline rendering

* Add better loading state for extension detail page

* Add spinners

* Render proper error message in case readme is missing

* Use heart logo for marketplace

* Add image border shadow

* Add loading banner on account page

* Show reload warning as persistent notification

* Only show one notification

* Update snapshot

* Add padding to verified icon

* Base extensions id on package id, show installed badge

* Sync pagination / search / filter with URL

Special shoutout to Tim

* Next max ext (#21541)

* Add limit exceeded error

* Add limit exceeded translation

* Add extensions_limit env var

* Load extensions limit in app

* Don't allow installing unknown versions

* Don't require installed flag

* Return bundled entries in describe

* Update chip to match style

* Prevent install on limit reached

* Run formatter

* Fix bundle loading

* Resolve npm extensions by package manifest (#21478)

* Merge main into next (#21669)

* Clean-up deps

* Don't export type (as long as not used anywhere)

* Update semver to latest

* Relax compatibility notice

* Use more suitable icon for version

* Re-render download charts on color-scheme change

* Link extensions to marketplace

---------

Co-authored-by: Rijk van Zanten <rijkvanzanten@me.com>
Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Mahendra Kumar <22556323+mahendraHegde@users.noreply.github.com>
2024-03-04 14:34:59 -05:00
Pascal Jufer
068591def0 Patch Happy Monday 🐸 (#21667) 2024-03-04 03:47:55 +01:00
Brainslug
838c841a65 Add CJS exports for system-data package (#21614)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-02-29 02:13:29 +00:00
Rijk van Zanten
bad22bf1ff v10.9.2 2024-02-14 11:21:02 -05:00
Brainslug
2c4883ae42 Filter system collections based on the system property (#21197)
Co-authored-by: Jan Arends <jan.arends@mailbox.org>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
2024-02-14 14:40:57 +01:00