Files
directus/api/package.json
Rijk van Zanten 00865fbd84 File Storage 2.0 (#16825)
* Refactor storage logic to testable setup

* Add tests to get storage config

* Add tests for register drivers

* Tests for index

* Organize imports

* Add missing getStorage

* Setup boilerplate for cloudinary drive

* Add build script

* Add cloudinary configuration

* WIP tweaks for R&D

* Start storage abstraction v2

* Make storage manager single file

* Add test coverage

* Organize imports

* Setup local driver boilerplate

* [WIP] Start on local driver 2.0

* Add more methods

* Lunchtime

* Add put method

* Add list method

* [WIP] Try using storage in api

* Use node16 module-resolution

* Lets not mess with apply-query rn

* I love CJS. Death to CJS.

* Use dynamic imports

* Make things work

* Add path normalizer

* Add azure storage driver

* Update lock

* Start on tests

* Add getBuffer test

* Add getStat tests

* Add tests for exists

* Add tests for move

* Add tests for copy

* Add tests for put

* Add tests for delete

* Add test coverage for list

* Add removeLeading option to normalizePath

* Use removeLeading option

* Start on gcs

* Add fullpath test

* Add getStream

* Add getBuffer

* Add getStat

* Add exists

* Add move

* Add copy

* Add put

* Add delete

* Finish DriverGCS

* Cleanup tests a bit

* Start s3

* Add getStream

* Add getBuffer

* Please Wryn

* Add #exists

* Use randomize data

* No more hardcoded values 🙅‍♀️

* Add tests for copy

* Add tests for put

* Add put/copy/delete

* Add tests for delete

* WIP list

* Remove duplicate fullPath check

* Finish AWS tests

* Listen to wryn

* Mission critical tweak

* Add randomization, cleanup tests

* Check src vs dest full path

* Start on Cloudinary

* Add parameter signature helper

* Fix ESM building of shared

* Fix ESM building of shared

* Improve tests

* Update pnpm

* Remove old build commands

* Generated d.ts files

* Fix export naming

* Move ESM only utils to new @directus/utils

* Update lockfile

* Fix type exports

* Implement getStream

* Cleanup tests

* Simplify api

* Simplify API

* Simplify api

* Simplify API

* Add read/stat

* Cleanup / add exists

* Add move

* Add write

* Move uploadChunk to separate method

* Add test for #uploadChunk

* Add tests for write

* Add copy

* Add delete

* Add list

* Add list error handling

* Remove old drive packages

* Start updating API usage of storage

* Use Readable instead of NodeJS.ReadableStream

* Use readable instead of buffer

* Restore shared to main

* Update lockfile

* Use a streaming pipeline for sharp metadata

* Add basic e2e test for local upload and delete

* Fix integer filesize in SQLite

* fixed environment mocking in unit tests

* applied the same env mocking to other tests

* Update api/src/storage/register-drivers.ts

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

* Use sha256 by default

* Add base read test for /assets

* Replace exifr with exif-reader

* Fix tests for storage/index

* Install faking lib for tests

* Add test for register-drivers

* Add tests for register-locations

* Finish tests

* Organize imports

* Resolve Azris comments

* Fix outdated tests

Certainly not the cleanest, but I need to do a bigger pass on all these tests to get them up to date with the latest team requirements. Gonna do that in a separate PR..

* Test for sha256

* Attempt 1 at fixing toString errorr

I'm not seeing this issue locally, so we'll spam a couple commits here to get things going

* Use node 18 in tests?!

* Fix localhost resolution with 127.0.0.1

* Mock getEnv()

* Use @directus/tsconfig instead of duplicated conf

* Does this fix it?

* OK fun detour

* Recreate lockfile

* Update config files

* Use multipart uploads in S3

* Cleanup imports

* File Storage 2.0: Make metadata extraction backward-compatible (#16868)

* Reinstall packages using pnpm instead of manually removing them (#16871)

* Added extra environment setting for sharp processing of invalid images (#16811)

* Added extra environment setting for sharp processing of invalid images

* renamed environment var to `ASSETS_INVALID_IMAGE_SENSITIVITY_LEVEL`

* Remove unused excludes from tsconfig

* Remove copy/paste leftover

* Update packages/utils/readme.md

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

* Update packages/utils/package.json

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

Co-authored-by: ian <licitdev@gmail.com>
Co-authored-by: Brainslug <tim@brainslug.nl>
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
Co-authored-by: Brainslug <br41nslug@users.noreply.github.com>
2022-12-21 10:04:03 -05:00

232 lines
5.8 KiB
JSON

{
"name": "directus",
"version": "9.21.2",
"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",
"bugs": {
"url": "https://github.com/directus/directus/issues"
},
"repository": {
"type": "git",
"url": "https://github.com/directus/directus.git",
"directory": "api"
},
"funding": "https://github.com/directus/directus?sponsor=1",
"license": "GPL-3.0-only",
"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"
}
],
"exports": {
".": "./dist/index.js",
"./*": "./dist/*.js",
"./package.json": "./package.json"
},
"main": "dist/index.js",
"bin": {
"directus": "cli.js"
},
"files": [
"dist",
"!**/*.test.js",
"!**/__*__/"
],
"scripts": {
"build": "tsc --build && copyfiles \"src/**/*.{yaml,liquid}\" -u 1 dist",
"cli": "NODE_ENV=development SERVE_APP=false ts-node --script-mode --transpile-only src/cli/run.ts",
"dev": "NODE_ENV=development SERVE_APP=false ts-node-dev --files --transpile-only --respawn --watch \".env\" --inspect=0 --exit-child -- src/start.ts",
"start": "npx directus start",
"test": "vitest run",
"test:coverage": "vitest run --coverage",
"test:watch": "vitest"
},
"dependencies": {
"@authenio/samlify-node-xmllint": "2.0.0",
"@aws-sdk/client-ses": "3.211.0",
"@directus/app": "workspace:*",
"@directus/extensions-sdk": "workspace:*",
"@directus/format-title": "9.15.0",
"@directus/schema": "workspace:*",
"@directus/shared": "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:*",
"@godaddy/terminus": "4.11.2",
"@rollup/plugin-alias": "4.0.2",
"@rollup/plugin-virtual": "3.0.1",
"argon2": "0.30.2",
"async": "3.2.4",
"async-mutex": "0.4.0",
"axios": "1.1.3",
"busboy": "1.6.0",
"bytes": "3.1.2",
"camelcase": "6.3.0",
"chalk": "4.1.1",
"chokidar": "3.5.3",
"commander": "9.4.1",
"cookie-parser": "1.4.6",
"cors": "2.8.5",
"csv-parser": "3.0.0",
"date-fns": "2.29.3",
"deep-diff": "1.0.2",
"destroy": "1.2.0",
"dotenv": "16.0.3",
"encodeurl": "1.0.2",
"eventemitter2": "6.4.9",
"execa": "5.1.1",
"exif-reader": "1.0.3",
"express": "4.18.2",
"fast-redact": "3.1.2",
"flat": "5.0.2",
"fs-extra": "10.1.0",
"globby": "11.0.4",
"graphql": "16.6.0",
"graphql-compose": "9.0.10",
"helmet": "6.0.0",
"icc": "2.0.0",
"inquirer": "8.2.4",
"ioredis": "5.2.4",
"joi": "17.7.0",
"js-yaml": "4.1.0",
"js2xmlparser": "5.0.0",
"json2csv": "5.0.7",
"jsonwebtoken": "8.5.1",
"keyv": "4.5.2",
"knex": "2.3.0",
"knex-schema-inspector": "3.0.0",
"ldapjs": "2.3.3",
"liquidjs": "9.42.1",
"lodash": "4.17.21",
"marked": "4.2.2",
"micromustache": "8.0.3",
"mime-types": "2.1.35",
"ms": "2.1.3",
"nanoid": "3.1.23",
"node-cron": "3.0.2",
"node-machine-id": "1.1.12",
"nodemailer": "6.8.0",
"object-hash": "3.0.0",
"openapi3-ts": "3.1.1",
"openid-client": "5.3.0",
"ora": "5.4.0",
"otplib": "12.0.1",
"pino": "8.7.0",
"pino-http": "8.2.1",
"pino-http-print": "3.1.0",
"pino-pretty": "9.1.1",
"qs": "6.11.0",
"rate-limiter-flexible": "2.4.1",
"rollup": "3.3.0",
"samlify": "2.8.7",
"sanitize-html": "2.7.3",
"sharp": "0.31.2",
"snappy": "7.2.2",
"stream-json": "1.7.4",
"strip-bom-stream": "4.0.0",
"tmp-promise": "3.0.3",
"update-check": "1.5.4",
"uuid": "9.0.0",
"uuid-validate": "0.0.3",
"vm2": "3.9.11",
"wellknown": "0.5.0"
},
"devDependencies": {
"@ngneat/falso": "6.3.0",
"@types/async": "3.2.15",
"@types/busboy": "1.5.0",
"@types/bytes": "3.1.1",
"@types/cookie-parser": "1.4.3",
"@types/cors": "2.8.12",
"@types/deep-diff": "1.0.1",
"@types/destroy": "1.0.0",
"@types/encodeurl": "1.0.0",
"@types/exif-reader": "1.0.0",
"@types/express": "4.17.14",
"@types/express-serve-static-core": "4.17.31",
"@types/fast-redact": "3.0.2",
"@types/flat": "5.0.2",
"@types/fs-extra": "9.0.13",
"@types/inquirer": "8.2.1",
"@types/js-yaml": "4.0.5",
"@types/json2csv": "5.0.3",
"@types/jsonwebtoken": "8.5.9",
"@types/keyv": "3.1.4",
"@types/ldapjs": "2.2.5",
"@types/lodash": "4.14.189",
"@types/marked": "4.0.7",
"@types/mime-types": "2.1.1",
"@types/ms": "0.7.31",
"@types/node": "18.11.9",
"@types/node-cron": "3.0.6",
"@types/nodemailer": "6.4.6",
"@types/object-hash": "2.2.1",
"@types/pino": "7.0.4",
"@types/pino-http": "5.8.1",
"@types/qs": "6.9.7",
"@types/sanitize-html": "2.6.2",
"@types/sharp": "0.31.0",
"@types/stream-json": "1.7.2",
"@types/uuid": "8.3.4",
"@types/uuid-validate": "0.0.1",
"@types/wellknown": "0.5.4",
"@vitest/coverage-c8": "0.25.2",
"copyfiles": "2.4.1",
"form-data": "4.0.0",
"knex-mock-client": "1.8.4",
"ts-node": "10.9.1",
"ts-node-dev": "2.0.0",
"typescript": "4.9.3",
"vitest": "0.25.2"
},
"optionalDependencies": {
"@keyv/redis": "2.5.3",
"keyv-memcache": "1.2.5",
"memcached": "2.2.2",
"mysql": "2.18.1",
"nodemailer-mailgun-transport": "2.1.5",
"nodemailer-sendgrid": "1.0.3",
"pg": "8.8.0",
"sqlite3": "5.1.2",
"tedious": "15.1.1"
},
"engines": {
"node": ">=12.20.0"
}
}