Files
directus/api/package.json
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

234 lines
6.0 KiB
JSON

{
"name": "@directus/api",
"version": "17.1.0",
"description": "Directus is a real-time API and App dashboard for managing SQL database content",
"keywords": [
"directus",
"realtime",
"database",
"content",
"api",
"rest",
"graphql",
"app",
"dashboard",
"headless",
"cms",
"mysql",
"postgresql",
"cockroachdb",
"sqlite",
"framework",
"vue"
],
"homepage": "https://directus.io",
"repository": {
"type": "git",
"url": "https://github.com/directus/directus.git",
"directory": "api"
},
"funding": "https://github.com/directus/directus?sponsor=1",
"license": "BUSL-1.1",
"author": {
"name": "Monospace Inc",
"email": "info@monospace.io",
"url": "https://monospace.io"
},
"maintainers": [
{
"name": "Rijk van Zanten",
"email": "rijkvanzanten@me.com",
"url": "https://github.com/rijkvanzanten"
},
{
"name": "Ben Haynes",
"email": "ben@rngr.org",
"url": "https://github.com/benhaynes"
}
],
"type": "module",
"exports": {
".": "./dist/index.js",
"./*": "./dist/*.js",
"./cli/run.js": "./dist/cli/run.js",
"./package.json": "./package.json"
},
"main": "dist/index.js",
"files": [
"dist"
],
"scripts": {
"build": "tsc --project tsconfig.prod.json && copyfiles \"src/**/*.{yaml,liquid}\" -u 1 dist",
"cli": "NODE_ENV=development SERVE_APP=false tsx src/cli/run.ts",
"dev": "NODE_ENV=development SERVE_APP=true tsx watch --clear-screen=false src/start.ts",
"test": "vitest --watch=false"
},
"dependencies": {
"@authenio/samlify-node-xmllint": "2.0.0",
"@aws-sdk/client-ses": "3.525.0",
"@directus/app": "workspace:*",
"@directus/constants": "workspace:*",
"@directus/env": "workspace:*",
"@directus/errors": "workspace:*",
"@directus/extensions": "workspace:*",
"@directus/extensions-registry": "workspace:*",
"@directus/extensions-sdk": "workspace:*",
"@directus/format-title": "10.1.0",
"@directus/memory": "workspace:*",
"@directus/pressure": "workspace:*",
"@directus/schema": "workspace:*",
"@directus/specs": "workspace:*",
"@directus/storage": "workspace:*",
"@directus/storage-driver-azure": "workspace:*",
"@directus/storage-driver-cloudinary": "workspace:*",
"@directus/storage-driver-gcs": "workspace:*",
"@directus/storage-driver-local": "workspace:*",
"@directus/storage-driver-s3": "workspace:*",
"@directus/storage-driver-supabase": "workspace:*",
"@directus/system-data": "workspace:*",
"@directus/utils": "workspace:*",
"@directus/validation": "workspace:*",
"@godaddy/terminus": "4.12.1",
"@rollup/plugin-alias": "5.1.0",
"@rollup/plugin-node-resolve": "15.2.3",
"@rollup/plugin-virtual": "3.0.2",
"argon2": "0.40.1",
"async": "3.2.5",
"axios": "1.6.7",
"busboy": "1.6.0",
"bytes": "3.1.2",
"camelcase": "8.0.0",
"chalk": "5.3.0",
"chokidar": "3.6.0",
"commander": "12.0.0",
"content-disposition": "0.5.4",
"cookie-parser": "1.4.6",
"cors": "2.8.5",
"cron-parser": "4.9.0",
"date-fns": "3.3.1",
"deep-diff": "1.0.2",
"destroy": "1.2.0",
"directus": "workspace:*",
"dotenv": "16.4.5",
"encodeurl": "1.0.2",
"eventemitter2": "6.4.9",
"execa": "8.0.1",
"exif-reader": "2.0.1",
"express": "4.18.3",
"flat": "6.0.1",
"fs-extra": "11.2.0",
"glob-to-regexp": "0.4.1",
"graphql": "16.8.1",
"graphql-compose": "9.0.10",
"graphql-ws": "5.15.0",
"helmet": "7.1.0",
"icc": "3.0.0",
"inquirer": "9.2.15",
"ioredis": "5.3.2",
"ip-matching": "2.1.2",
"isolated-vm": "4.7.2",
"joi": "17.12.2",
"js-yaml": "4.1.0",
"js2xmlparser": "5.0.0",
"json2csv": "5.0.7",
"jsonwebtoken": "9.0.2",
"keyv": "4.5.4",
"knex": "3.1.0",
"ldapjs": "2.3.3",
"liquidjs": "10.10.1",
"lodash-es": "4.17.21",
"marked": "12.0.0",
"micromustache": "8.0.3",
"mime-types": "2.1.35",
"minimatch": "9.0.3",
"ms": "2.1.3",
"nanoid": "5.0.6",
"node-machine-id": "1.1.12",
"node-schedule": "2.1.1",
"nodemailer": "6.9.11",
"object-hash": "3.0.0",
"openapi3-ts": "4.2.2",
"openid-client": "5.6.4",
"ora": "8.0.1",
"otplib": "12.0.1",
"p-limit": "5.0.0",
"p-queue": "8.0.1",
"papaparse": "5.4.1",
"pino": "8.19.0",
"pino-http": "9.0.0",
"pino-http-print": "3.1.0",
"pino-pretty": "10.3.1",
"qs": "6.11.2",
"rate-limiter-flexible": "5.0.0",
"rollup": "4.12.0",
"samlify": "2.8.11",
"sanitize-html": "2.12.1",
"sharp": "0.33.2",
"snappy": "7.2.2",
"stream-json": "1.8.0",
"tar": "6.2.0",
"tsx": "4.7.1",
"wellknown": "0.5.0",
"ws": "8.16.0",
"zod": "3.22.4",
"zod-validation-error": "3.0.3"
},
"devDependencies": {
"@directus/random": "workspace:*",
"@directus/tsconfig": "workspace:*",
"@directus/types": "workspace:*",
"@ngneat/falso": "7.2.0",
"@types/async": "3.2.24",
"@types/busboy": "1.5.3",
"@types/bytes": "3.1.4",
"@types/content-disposition": "0.5.8",
"@types/cookie-parser": "1.4.7",
"@types/cors": "2.8.17",
"@types/deep-diff": "1.0.5",
"@types/destroy": "1.0.3",
"@types/encodeurl": "1.0.2",
"@types/express": "4.17.21",
"@types/express-serve-static-core": "4.17.43",
"@types/fs-extra": "11.0.4",
"@types/glob-to-regexp": "0.4.4",
"@types/inquirer": "9.0.7",
"@types/js-yaml": "4.0.9",
"@types/json2csv": "5.0.7",
"@types/jsonwebtoken": "9.0.6",
"@types/ldapjs": "2.2.5",
"@types/lodash-es": "4.17.12",
"@types/mime-types": "2.1.4",
"@types/ms": "0.7.34",
"@types/node": "18.19.21",
"@types/node-schedule": "2.1.6",
"@types/nodemailer": "6.4.14",
"@types/object-hash": "3.0.6",
"@types/papaparse": "5.3.14",
"@types/qs": "6.9.12",
"@types/sanitize-html": "2.11.0",
"@types/stream-json": "1.7.7",
"@types/tar": "6.1.11",
"@types/wellknown": "0.5.8",
"@types/ws": "8.5.10",
"@vitest/coverage-v8": "1.3.1",
"copyfiles": "2.4.1",
"form-data": "4.0.0",
"knex-mock-client": "2.0.1",
"typescript": "5.3.3",
"vitest": "1.3.1"
},
"optionalDependencies": {
"@keyv/redis": "2.8.4",
"mysql": "2.18.1",
"nodemailer-mailgun-transport": "2.1.5",
"nodemailer-sendgrid": "1.0.3",
"oracledb": "6.3.0",
"pg": "8.11.3",
"sqlite3": "5.1.7",
"tedious": "17.0.0"
},
"engines": {
"node": ">=18.17.0"
}
}