feat(mocking-ftp-server): Implment a mocking FTP server using ftp-srv

This commit is contained in:
T. R. Bernstein
2025-03-25 13:17:50 +01:00
parent 9a39b296c6
commit 9ae9dfa344
13 changed files with 485 additions and 29 deletions

View File

@@ -10,6 +10,7 @@
"devDependencies": {
"@playwright/test": "latest",
"@tabshift/typescript-config": "catalog:",
"@tabshift/mocking-ftp-server": "workspace:",
"@types/node": "catalog:",
"regexp.escape": "^2.0.1",
"typescript": "catalog:",

View File

@@ -0,0 +1,14 @@
-----BEGIN CERTIFICATE-----
MIICGDCCAb4CCQDw+TSCEj7/rzAKBggqhkjOPQQDAjCBkjELMAkGA1UEBhMCREUx
HTAbBgNVBAgMFEJhZGVuLVfDg8K8cnR0ZW1iZXJnMREwDwYDVQQHDAhGcmVpYnVy
ZzEfMB0GA1UECgwWQXN0endlaWcgR21iSCAmIENvLiBLRzERMA8GA1UECwwIVGFi
c2hpZnQxHTAbBgNVBAMMFGhvc3QuZG9ja2VyLmludGVybmFsMCAXDTI1MDMyNTEx
NTM0NFoYDzQ3NjMwMjE5MTE1MzQ0WjCBkjELMAkGA1UEBhMCREUxHTAbBgNVBAgM
FEJhZGVuLVfDg8K8cnR0ZW1iZXJnMREwDwYDVQQHDAhGcmVpYnVyZzEfMB0GA1UE
CgwWQXN0endlaWcgR21iSCAmIENvLiBLRzERMA8GA1UECwwIVGFic2hpZnQxHTAb
BgNVBAMMFGhvc3QuZG9ja2VyLmludGVybmFsMFkwEwYHKoZIzj0CAQYIKoZIzj0D
AQcDQgAESgwMI8bJ+sVYAxh2X+biczCXoSAjSRJDWBfVsV9kvolpQejZSm+1Ou1i
+zTT9tswQSAisOQjk+vvb2600q4/KTAKBggqhkjOPQQDAgNIADBFAiEAtyAWJIhX
bOdTliCfWlrfpQ10ZHy4Hd9KV4TFK4HloEUCIAj9bEtqT8trh2qA8oGs/mUnL7Tj
IB/QFNBymahFIjoX
-----END CERTIFICATE-----

View File

@@ -0,0 +1,5 @@
-----BEGIN PRIVATE KEY-----
MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgqscjZi0QT8iAApGI
vshpsOKJ3ohvTQHZJSP+o33uopChRANCAARKDAwjxsn6xVgDGHZf5uJzMJehICNJ
EkNYF9WxX2S+iWlB6NlKb7U67WL7NNP22zBBICKw5COT6+9vbrTSrj8p
-----END PRIVATE KEY-----

View File

@@ -0,0 +1,27 @@
{
"name": "@tabshift/mocking-ftp-server",
"description": "A simple FTP server for mocking in E2E tests",
"private": true,
"version": "1.0.0",
"type": "module",
"exports": {
".": {
"require": "./dist/index.js",
"import": "./dist/index.js",
"types": "./src/index.ts"
}
},
"files": [
"dist",
"certs"
],
"devDependencies": {
"@tabshift/typescript-config": "catalog:",
"@types/node": "catalog:",
"ftp-srv": "^4.6.3",
"memfs": "^4.17.0",
"typescript": "catalog:"
},
"author": "T. R. Bernstein <bhdacms01-project@tabshift.dev>",
"license": "EUPL-1.2"
}

View File

@@ -0,0 +1,4 @@
export type Account = {
username: string
password: string
}

View File

@@ -0,0 +1,3 @@
export type FileEntries = {
[filename: string]: string
}

View File

@@ -0,0 +1,8 @@
import type { Account } from './account.js'
import type { FileEntries } from './file-entries.js'
export interface FTPServerOptions {
users?: Account[]
files?: FileEntries
tls?: Boolean
}

View File

@@ -0,0 +1,49 @@
import type { FileEntries } from './file-entries.js'
import type { FTPServerOptions } from './ftp-server-options.js'
import type { ServerConnection } from './server-connection.js'
import type { SecureContextOptions } from 'node:tls'
import * as fs from 'node:fs'
import * as path from 'node:path'
import { fileURLToPath } from 'node:url'
import { Volume } from 'memfs'
import FtpServer from 'ftp-srv'
import noOpLogger from './noop-logger.js'
const __dirname = path.dirname(fileURLToPath(import.meta.url))
function createVirtualFS(rootDir: string, files?: FileEntries) {
return Volume.fromJSON(files ?? {}, rootDir)
}
export async function startMockFTPServer(connection: ServerConnection, options?: FTPServerOptions) {
let tls: SecureContextOptions = {}
if (options?.tls ?? false) {
tls = {
key: fs.readFileSync(path.resolve(__dirname, '../certs/key.pem')),
cert: fs.readFileSync(path.resolve(__dirname, '../certs/cert.pem'))
}
}
const ftpServer = new FtpServer({
url: `ftp://${connection.host}:${connection.port}`,
anonymous: false,
log: noOpLogger,
tls,
timeout: 300
})
const rootDir = '/ftp'
const vfs = createVirtualFS(rootDir, options?.files)
ftpServer.on('login', ({ username, password }, resolve, reject) => {
const validUser = options?.users?.find((u) => u.username === username && u.password === password)
if (!validUser) {
return reject(new Error('Invalid username or password'))
}
resolve({ fs: vfs.promises, root: rootDir })
})
await ftpServer.listen()
return ftpServer
}

View File

@@ -0,0 +1,22 @@
var methods = [
'debug',
'info',
'warn',
'error',
'critical',
'alert',
'emergency',
'notice',
'trace',
'verbose',
'fatal'
]
type LoggerValue = () => void | Logger
type Logger = { [key: string]: LoggerValue }
const logger: Logger = {}
for (let method of methods) {
logger[method] = function () {}
}
logger['child'] = () => logger
export default logger

View File

@@ -0,0 +1,4 @@
export interface ServerConnection {
host: string
port: number
}

View File

@@ -0,0 +1,6 @@
{
"extends": "@tabshift/typescript-config/base.json",
"compilerOptions": {
"outDir": "dist"
}
}

View File

@@ -34,3 +34,4 @@ directus = { path = "Apps/Directus CMS" }
hda-directus = { path = "Apps/HDA Directus Template" }
hda-cms-extension = { path = "Library/HDA Directus Extension" }
hda-cms-extension-e2e = { path = "Library/HDA Directus Extension E2E" }
mocking-ftp-server = { path = "Library/Mocking FTP Server" }

370
pnpm-lock.yaml generated
View File

@@ -11,7 +11,7 @@ catalogs:
version: 1.0.0
'@types/node':
specifier: latest
version: 22.13.11
version: 22.13.13
typescript:
specifier: latest
version: 5.8.2
@@ -94,6 +94,9 @@ importers:
'@playwright/test':
specifier: latest
version: 1.51.1
'@tabshift/mocking-ftp-server':
specifier: 'workspace:'
version: link:../Mocking FTP Server
'@tabshift/typescript-config':
specifier: 'catalog:'
version: 1.0.0
@@ -110,6 +113,24 @@ importers:
specifier: ^3.24.2
version: 3.24.2
Library/Mocking FTP Server:
devDependencies:
'@tabshift/typescript-config':
specifier: 'catalog:'
version: 1.0.0
'@types/node':
specifier: 'catalog:'
version: 22.13.13
ftp-srv:
specifier: ^4.6.3
version: 4.6.3
memfs:
specifier: ^4.17.0
version: 4.17.0
typescript:
specifier: 'catalog:'
version: 5.8.2
packages:
'@authenio/samlify-node-xmllint@2.0.0':
@@ -1454,6 +1475,24 @@ packages:
'@js-joda/core@5.6.4':
resolution: {integrity: sha512-ChdLDTYMEoYoiKZMT90wZMEdGvZ2/QZMnhvjvEqeO5oLoxUfSiLzfe6Lhf3g88+MhZ+utbAu7PAxX1sZkLo5pA==}
'@jsonjoy.com/base64@1.1.2':
resolution: {integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
'@jsonjoy.com/json-pack@1.2.0':
resolution: {integrity: sha512-io1zEbbYcElht3tdlqEOFxZ0dMTYrHz9iMf0gqn1pPjZFTCgM5R4R5IMA20Chb2UPYYsxjzs8CgZ7Nb5n2K2rA==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
'@jsonjoy.com/util@1.5.0':
resolution: {integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
'@keyv/redis@2.8.5':
resolution: {integrity: sha512-e9W1faN32A1Wy5726qtorAvPu1Xffh75ngfQQtETQ0hIN/FQtK0RcBTz/OH/vwDvLX8zrzdu0sWq/KoSHDYfVw==}
engines: {node: '>= 14'}
@@ -2228,6 +2267,9 @@ packages:
'@types/node@22.13.11':
resolution: {integrity: sha512-iEUCUJoU0i3VnrCmgoWCXttklWcvoCIx4jzcP22fioIVSdTmjgoEvmAO/QPw6TcS9k5FrNgn4w7q5lGOd1CT5g==}
'@types/node@22.13.13':
resolution: {integrity: sha512-ClsL5nMwKaBRwPcCvH8E7+nU4GxHVx1axNvMZTFHMEfNI7oahimt26P5zjVCRrjiIWj6YFXfE1v3dEp94wLcGQ==}
'@types/parse-json@4.0.2':
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
@@ -2616,6 +2658,11 @@ packages:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
bunyan@1.8.15:
resolution: {integrity: sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==}
engines: {'0': node >=0.10.0}
hasBin: true
busboy@1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
@@ -2730,6 +2777,9 @@ packages:
resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==}
engines: {node: '>= 12'}
cliui@6.0.0:
resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==}
clone@1.0.4:
resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==}
engines: {node: '>=0.8'}
@@ -3116,6 +3166,10 @@ packages:
supports-color:
optional: true
decamelize@1.2.0:
resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==}
engines: {node: '>=0.10.0'}
decamelize@6.0.0:
resolution: {integrity: sha512-Fv96DCsdOgB6mdGl67MT5JaTNKRzrzill5OH5s8bjYJXVlcXyPYGyPsUkWyGV5p1TXI5esYIYMMeDJL0hEIwaA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -3209,6 +3263,10 @@ packages:
resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==}
engines: {node: '>=12'}
dtrace-provider@0.8.8:
resolution: {integrity: sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==}
engines: {node: '>=0.10'}
dunder-proto@1.0.1:
resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
engines: {node: '>= 0.4'}
@@ -3444,6 +3502,10 @@ packages:
resolution: {integrity: sha512-OuWNfjfP05JcpAP3JPgAKUhWefjMRfI5iAoSsvE24ANYWJaepAtlSgWECSVEuRgSXpyNEc9DJwG/TZpgcOqyig==}
engines: {node: '>=16'}
find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
find-up@6.3.0:
resolution: {integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -3521,6 +3583,11 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
ftp-srv@4.6.3:
resolution: {integrity: sha512-k9q06Ab04CwY7n9HL5H5Zn+/ccohUUH8K2UjQ6dnAlE3NIFdqFI8Paanq+WFbfawZXeK29vP0zgZWfr28N33dw==}
engines: {node: '>=12'}
hasBin: true
function-bind@1.1.2:
resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
@@ -3606,6 +3673,10 @@ packages:
resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==}
hasBin: true
glob@6.0.4:
resolution: {integrity: sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==}
deprecated: Glob versions prior to v9 are no longer supported
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
@@ -3759,6 +3830,10 @@ packages:
humanize-ms@1.2.1:
resolution: {integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==}
hyperdyperid@1.2.0:
resolution: {integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==}
engines: {node: '>=10.18'}
icc@3.0.0:
resolution: {integrity: sha512-UJ4TQuwih9YRoUIR/nGluSUXwPEPOQVFIcFziERtAv0OGWAeEg7E5FviTVLfI1b2eOVRVtqhLfosdOQHYO7EpA==}
engines: {node: '>=14'}
@@ -3838,6 +3913,9 @@ packages:
ip-matching@2.1.2:
resolution: {integrity: sha512-/ok+VhKMasgR5gvTRViwRFQfc0qYt9Vdowg6TO4/pFlDCob5ZjGPkwuOoQVCd5OrMm20zqh+1vA8KLJZTeWudg==}
ip@1.1.9:
resolution: {integrity: sha512-cyRxvOEpNHNtchU3Ln9KC/auJgup87llfQpQ+t5ghoC/UhL16SWzbueiCsdTnWmqAWl7LadfuwhlqmtOaqMHdQ==}
ipaddr.js@1.9.1:
resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==}
engines: {node: '>= 0.10'}
@@ -4177,6 +4255,10 @@ packages:
engines: {node: '>=14'}
hasBin: true
locate-path@5.0.0:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
locate-path@7.2.0:
resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -4294,6 +4376,10 @@ packages:
resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==}
engines: {node: '>= 0.6'}
memfs@4.17.0:
resolution: {integrity: sha512-4eirfZ7thblFmqFjywlTmuWVSvccHAJbn1r8qQLzmTO11qcqpohOjmY2mFce6x7x7WtskzRqApPD0hv+Oa74jg==}
engines: {node: '>= 4.0.0'}
merge-descriptors@1.0.1:
resolution: {integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==}
@@ -4395,6 +4481,10 @@ packages:
mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
mkdirp@0.5.6:
resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==}
hasBin: true
mkdirp@1.0.4:
resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==}
engines: {node: '>=10'}
@@ -4408,6 +4498,9 @@ packages:
mnemonist@0.39.8:
resolution: {integrity: sha512-vyWo2K3fjrUw8YeeZ1zF0fy6Mu59RHokURlld8ymdUPjMlD9EC9ov1/YPqTgqRvUN9nTr3Gqfz29LYAmu0PHPQ==}
moment@2.30.1:
resolution: {integrity: sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==}
mri@1.1.4:
resolution: {integrity: sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==}
engines: {node: '>=4'}
@@ -4429,6 +4522,10 @@ packages:
resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==}
engines: {node: ^18.17.0 || >=20.5.0}
mv@2.1.1:
resolution: {integrity: sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==}
engines: {node: '>=0.8.0'}
mysql2@3.11.0:
resolution: {integrity: sha512-J9phbsXGvTOcRVPR95YedzVSxJecpW5A5+cQ57rhHIFXteTP10HCs+VBjS7DHIKfEaI1zQ5tlVrquCd64A6YvA==}
engines: {node: '>= 8.0'}
@@ -4437,6 +4534,9 @@ packages:
resolution: {integrity: sha512-eLoBxg6wE/rZkJPhU/xRX1WTpkFEwDJEN96oxFrTsqBdbT5ec295Q+CoHrL9IT0DipqKhmGcaZmwOt8OON5x1w==}
engines: {node: '>=12.0.0'}
nan@2.22.2:
resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==}
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -4458,6 +4558,10 @@ packages:
native-duplexpair@1.0.0:
resolution: {integrity: sha512-E7QQoM+3jvNtlmyfqRZ0/U75VFgCls+fSkbml2MpgWkWyz3ox8Y58gNhfuziuQYGNNQAbFZJQck55LHCnCK6CA==}
ncp@2.0.0:
resolution: {integrity: sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==}
hasBin: true
ndjson@2.0.0:
resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==}
engines: {node: '>=10'}
@@ -4655,6 +4759,10 @@ packages:
resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==}
engines: {node: '>=4'}
p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
p-limit@3.1.0:
resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
engines: {node: '>=10'}
@@ -4667,6 +4775,10 @@ packages:
resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
engines: {node: '>=18'}
p-locate@4.1.0:
resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
engines: {node: '>=8'}
p-locate@6.0.0:
resolution: {integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -4691,6 +4803,10 @@ packages:
resolution: {integrity: sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==}
engines: {node: '>=14.16'}
p-try@2.2.0:
resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==}
engines: {node: '>=6'}
package-json-from-dist@1.0.1:
resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==}
@@ -4722,6 +4838,10 @@ packages:
resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==}
engines: {node: '>= 0.8'}
path-exists@4.0.0:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
path-exists@5.0.0:
resolution: {integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==}
engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
@@ -5236,6 +5356,13 @@ packages:
engines: {node: '>= 6'}
deprecated: request has been deprecated, see https://github.com/request/request/issues/3142
require-directory@2.1.1:
resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==}
engines: {node: '>=0.10.0'}
require-main-filename@2.0.0:
resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==}
resolve-from@4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'}
@@ -5275,6 +5402,11 @@ packages:
rfdc@1.4.1:
resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
rimraf@2.4.5:
resolution: {integrity: sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==}
deprecated: Rimraf versions prior to v4 are no longer supported
hasBin: true
rimraf@3.0.2:
resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==}
deprecated: Rimraf versions prior to v4 are no longer supported
@@ -5329,6 +5461,9 @@ packages:
safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
safe-json-stringify@1.2.0:
resolution: {integrity: sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==}
safe-push-apply@1.0.0:
resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==}
engines: {node: '>= 0.4'}
@@ -5675,6 +5810,12 @@ packages:
engines: {node: '>=10'}
hasBin: true
thingies@1.21.0:
resolution: {integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==}
engines: {node: '>=10.18'}
peerDependencies:
tslib: ^2
thirty-two@1.0.2:
resolution: {integrity: sha512-OEI0IWCe+Dw46019YLl6V10Us5bi574EvlJEOcAkB29IzQ/mYD1A6RyNHLjZPiHCmuodxvgF6U+vZO1L15lxVA==}
engines: {node: '>=0.2.6'}
@@ -5711,6 +5852,12 @@ packages:
tr46@0.0.3:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
tree-dump@1.0.2:
resolution: {integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==}
engines: {node: '>=10.0'}
peerDependencies:
tslib: '2'
tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
@@ -5963,6 +6110,9 @@ packages:
resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==}
engines: {node: '>= 0.4'}
which-module@2.0.1:
resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==}
which-typed-array@1.1.19:
resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==}
engines: {node: '>= 0.4'}
@@ -6024,6 +6174,9 @@ packages:
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
engines: {node: '>=0.4'}
y18n@4.0.3:
resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==}
yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
@@ -6040,6 +6193,14 @@ packages:
engines: {node: '>= 14'}
hasBin: true
yargs-parser@18.1.3:
resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==}
engines: {node: '>=6'}
yargs@15.4.1:
resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==}
engines: {node: '>=8'}
yocto-queue@0.1.0:
resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
engines: {node: '>=10'}
@@ -7162,9 +7323,9 @@ snapshots:
'@directus/constants': 12.0.0
'@directus/env': 3.1.0(vue@3.5.11(typescript@5.8.2))
'@directus/errors': 1.0.0
'@directus/extensions': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/extensions-registry': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/extensions-sdk': 12.0.2(@types/node@20.17.24)(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(terser@5.39.0)(typescript@5.8.2)
'@directus/extensions': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/extensions-registry': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/extensions-sdk': 12.0.2(@types/node@20.17.24)(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(terser@5.39.0)(typescript@5.8.2)
'@directus/format-title': 11.0.0
'@directus/memory': 2.0.1(vue@3.5.11(typescript@5.8.2))
'@directus/pressure': 2.0.0(vue@3.5.11(typescript@5.8.2))
@@ -7416,10 +7577,10 @@ snapshots:
'@directus/storage': 12.0.0
ms: 2.1.3
'@directus/extensions-registry@2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))':
'@directus/extensions-registry@2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))':
dependencies:
'@directus/errors': 1.0.0
'@directus/extensions': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/extensions': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/utils': 12.0.0(vue@3.5.11(typescript@5.8.2))
ky: 1.7.2
lodash-es: 4.17.21
@@ -7441,13 +7602,13 @@ snapshots:
- vue
- vue-router
'@directus/extensions-sdk@12.0.2(@types/node@20.17.24)(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(terser@5.39.0)(typescript@5.8.2)':
'@directus/extensions-sdk@12.0.2(@types/node@20.17.24)(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(terser@5.39.0)(typescript@5.8.2)':
dependencies:
'@directus/composables': 11.1.0(vue@3.4.27(typescript@5.8.2))
'@directus/constants': 12.0.0
'@directus/extensions': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))
'@directus/extensions': 2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))
'@directus/themes': 1.0.0(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(vue@3.4.27(typescript@5.8.2))
'@directus/types': 12.0.1(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))
'@directus/types': 12.0.1(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))
'@directus/utils': 12.0.0(vue@3.4.27(typescript@5.8.2))
'@rollup/plugin-commonjs': 25.0.8(rollup@3.29.4)
'@rollup/plugin-json': 6.1.0(rollup@3.29.4)
@@ -7595,11 +7756,11 @@ snapshots:
- typescript
- vue-router
'@directus/extensions@2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))':
'@directus/extensions@2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))':
dependencies:
'@directus/constants': 12.0.0
'@directus/themes': 1.0.0(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(vue@3.4.27(typescript@5.8.2))
'@directus/types': 12.0.1(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))
'@directus/types': 12.0.1(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))
'@directus/utils': 12.0.0(vue@3.4.27(typescript@5.8.2))
'@types/express': 4.17.21
fs-extra: 11.2.0
@@ -7621,11 +7782,11 @@ snapshots:
- supports-color
- tedious
'@directus/extensions@2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))':
'@directus/extensions@2.0.1(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(pino@9.2.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))':
dependencies:
'@directus/constants': 12.0.0
'@directus/themes': 1.0.0(@unhead/vue@1.11.20(vue@3.5.11(typescript@5.8.2)))(pinia@2.3.1(typescript@5.8.2)(vue@3.5.11(typescript@5.8.2)))(vue@3.5.11(typescript@5.8.2))
'@directus/types': 12.0.1(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/types': 12.0.1(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))
'@directus/utils': 12.0.0(vue@3.5.11(typescript@5.8.2))
'@types/express': 4.17.21
fs-extra: 11.2.0
@@ -7906,7 +8067,7 @@ snapshots:
pinia: 2.3.1(typescript@5.8.2)(vue@3.5.13(typescript@5.8.2))
vue: 3.5.13(typescript@5.8.2)
'@directus/types@12.0.1(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))':
'@directus/types@12.0.1(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.4.27(typescript@5.8.2))':
dependencies:
'@directus/constants': 12.0.0
'@directus/schema': 12.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)
@@ -7924,7 +8085,7 @@ snapshots:
- supports-color
- tedious
'@directus/types@12.0.1(knex@3.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))':
'@directus/types@12.0.1(knex@3.1.0(pg@8.12.0))(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)(vue@3.5.11(typescript@5.8.2))':
dependencies:
'@directus/constants': 12.0.0
'@directus/schema': 12.1.0(mysql2@3.11.0)(pg@8.12.0)(sqlite3@5.1.7)(tedious@18.2.0)
@@ -8677,6 +8838,22 @@ snapshots:
'@js-joda/core@5.6.4':
optional: true
'@jsonjoy.com/base64@1.1.2(tslib@2.8.1)':
dependencies:
tslib: 2.8.1
'@jsonjoy.com/json-pack@1.2.0(tslib@2.8.1)':
dependencies:
'@jsonjoy.com/base64': 1.1.2(tslib@2.8.1)
'@jsonjoy.com/util': 1.5.0(tslib@2.8.1)
hyperdyperid: 1.2.0
thingies: 1.21.0(tslib@2.8.1)
tslib: 2.8.1
'@jsonjoy.com/util@1.5.0(tslib@2.8.1)':
dependencies:
tslib: 2.8.1
'@keyv/redis@2.8.5':
dependencies:
ioredis: 5.4.1
@@ -9638,13 +9815,13 @@ snapshots:
'@types/body-parser@1.19.5':
dependencies:
'@types/connect': 3.4.38
'@types/node': 22.13.10
'@types/node': 22.13.11
'@types/caseless@0.12.5': {}
'@types/connect@3.4.38':
dependencies:
'@types/node': 22.13.10
'@types/node': 22.13.11
'@types/cookie@0.6.0': {}
@@ -9660,7 +9837,7 @@ snapshots:
'@types/express-serve-static-core@4.19.6':
dependencies:
'@types/node': 22.13.10
'@types/node': 22.13.11
'@types/qs': 6.9.18
'@types/range-parser': 1.2.7
'@types/send': 0.17.4
@@ -9696,6 +9873,10 @@ snapshots:
dependencies:
undici-types: 6.20.0
'@types/node@22.13.13':
dependencies:
undici-types: 6.20.0
'@types/parse-json@4.0.2': {}
'@types/qs@6.9.18': {}
@@ -9704,14 +9885,14 @@ snapshots:
'@types/readable-stream@4.0.18':
dependencies:
'@types/node': 22.13.10
'@types/node': 22.13.11
safe-buffer: 5.1.2
optional: true
'@types/request@2.48.12':
dependencies:
'@types/caseless': 0.12.5
'@types/node': 22.13.10
'@types/node': 22.13.11
'@types/tough-cookie': 4.0.5
form-data: 2.5.3
@@ -9720,12 +9901,12 @@ snapshots:
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5
'@types/node': 22.13.10
'@types/node': 22.13.11
'@types/serve-static@1.15.7':
dependencies:
'@types/http-errors': 2.0.4
'@types/node': 22.13.10
'@types/node': 22.13.11
'@types/send': 0.17.4
'@types/tough-cookie@4.0.5': {}
@@ -10163,8 +10344,7 @@ snapshots:
readable-stream: 4.7.0
optional: true
bluebird@3.7.2:
optional: true
bluebird@3.7.2: {}
body-parser@1.20.2:
dependencies:
@@ -10240,6 +10420,13 @@ snapshots:
builtin-modules@3.3.0: {}
bunyan@1.8.15:
optionalDependencies:
dtrace-provider: 0.8.8
moment: 2.30.1
mv: 2.1.1
safe-json-stringify: 1.2.0
busboy@1.6.0:
dependencies:
streamsearch: 1.1.0
@@ -10364,6 +10551,12 @@ snapshots:
cli-width@4.1.0: {}
cliui@6.0.0:
dependencies:
string-width: 4.2.3
strip-ansi: 6.0.1
wrap-ansi: 6.2.0
clone@1.0.4: {}
cluster-key-slot@1.1.2: {}
@@ -10590,6 +10783,8 @@ snapshots:
dependencies:
ms: 2.1.3
decamelize@1.2.0: {}
decamelize@6.0.0: {}
decode-uri-component@0.2.2: {}
@@ -10753,6 +10948,11 @@ snapshots:
dotenv@16.4.5: {}
dtrace-provider@0.8.8:
dependencies:
nan: 2.22.2
optional: true
dunder-proto@1.0.1:
dependencies:
call-bind-apply-helpers: 1.0.2
@@ -11126,6 +11326,11 @@ snapshots:
common-path-prefix: 3.0.0
pkg-dir: 7.0.0
find-up@4.1.0:
dependencies:
locate-path: 5.0.0
path-exists: 4.0.0
find-up@6.3.0:
dependencies:
locate-path: 7.2.0
@@ -11200,6 +11405,16 @@ snapshots:
fsevents@2.3.3:
optional: true
ftp-srv@4.6.3:
dependencies:
bluebird: 3.7.2
bunyan: 1.8.15
ip: 1.1.9
lodash: 4.17.21
moment: 2.30.1
uuid: 3.4.0
yargs: 15.4.1
function-bind@1.1.2: {}
function.prototype.name@1.1.8:
@@ -11315,6 +11530,15 @@ snapshots:
package-json-from-dist: 1.0.1
path-scurry: 1.11.1
glob@6.0.4:
dependencies:
inflight: 1.0.6
inherits: 2.0.4
minimatch: 3.1.2
once: 1.4.0
path-is-absolute: 1.0.1
optional: true
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
@@ -11495,6 +11719,8 @@ snapshots:
ms: 2.1.3
optional: true
hyperdyperid@1.2.0: {}
icc@3.0.0: {}
iconv-lite@0.4.24:
@@ -11603,6 +11829,8 @@ snapshots:
ip-matching@2.1.2: {}
ip@1.1.9: {}
ipaddr.js@1.9.1: {}
is-array-buffer@3.0.5:
@@ -11947,6 +12175,10 @@ snapshots:
dependencies:
commander: 10.0.1
locate-path@5.0.0:
dependencies:
p-locate: 4.1.0
locate-path@7.2.0:
dependencies:
p-locate: 6.0.0
@@ -12061,6 +12293,13 @@ snapshots:
media-typer@0.3.0: {}
memfs@4.17.0:
dependencies:
'@jsonjoy.com/json-pack': 1.2.0(tslib@2.8.1)
'@jsonjoy.com/util': 1.5.0(tslib@2.8.1)
tree-dump: 1.0.2(tslib@2.8.1)
tslib: 2.8.1
merge-descriptors@1.0.1: {}
merge-stream@2.0.0: {}
@@ -12152,6 +12391,11 @@ snapshots:
mkdirp-classic@0.5.3: {}
mkdirp@0.5.6:
dependencies:
minimist: 1.2.8
optional: true
mkdirp@1.0.4:
optional: true
@@ -12161,6 +12405,8 @@ snapshots:
dependencies:
obliterator: 2.0.5
moment@2.30.1: {}
mri@1.1.4: {}
ms@2.0.0: {}
@@ -12173,6 +12419,13 @@ snapshots:
mute-stream@2.0.0: {}
mv@2.1.1:
dependencies:
mkdirp: 0.5.6
ncp: 2.0.0
rimraf: 2.4.5
optional: true
mysql2@3.11.0:
dependencies:
aws-ssl-profiles: 1.1.2
@@ -12191,6 +12444,9 @@ snapshots:
lru-cache: 7.18.3
optional: true
nan@2.22.2:
optional: true
nanoid@3.3.11: {}
nanoid@5.0.7: {}
@@ -12202,6 +12458,9 @@ snapshots:
native-duplexpair@1.0.0:
optional: true
ncp@2.0.0:
optional: true
ndjson@2.0.0:
dependencies:
json-stringify-safe: 5.0.1
@@ -12482,6 +12741,10 @@ snapshots:
p-finally@1.0.0: {}
p-limit@2.3.0:
dependencies:
p-try: 2.2.0
p-limit@3.1.0:
dependencies:
yocto-queue: 0.1.0
@@ -12494,6 +12757,10 @@ snapshots:
dependencies:
yocto-queue: 1.2.1
p-locate@4.1.0:
dependencies:
p-limit: 2.3.0
p-locate@6.0.0:
dependencies:
p-limit: 4.0.0
@@ -12519,6 +12786,8 @@ snapshots:
p-timeout@6.1.4: {}
p-try@2.2.0: {}
package-json-from-dist@1.0.1: {}
packrup@0.1.2: {}
@@ -12544,6 +12813,8 @@ snapshots:
parseurl@1.3.3: {}
path-exists@4.0.0: {}
path-exists@5.0.0: {}
path-is-absolute@1.0.1:
@@ -13161,6 +13432,10 @@ snapshots:
uuid: 3.4.0
optional: true
require-directory@2.1.1: {}
require-main-filename@2.0.0: {}
resolve-from@4.0.0: {}
resolve-from@5.0.0: {}
@@ -13199,6 +13474,11 @@ snapshots:
rfdc@1.4.1: {}
rimraf@2.4.5:
dependencies:
glob: 6.0.4
optional: true
rimraf@3.0.2:
dependencies:
glob: 7.2.3
@@ -13325,6 +13605,9 @@ snapshots:
safe-buffer@5.2.1: {}
safe-json-stringify@1.2.0:
optional: true
safe-push-apply@1.0.0:
dependencies:
es-errors: 1.3.0
@@ -13402,8 +13685,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
set-blocking@2.0.0:
optional: true
set-blocking@2.0.0: {}
set-function-length@1.2.2:
dependencies:
@@ -13780,7 +14062,7 @@ snapshots:
'@azure/identity': 3.4.2
'@azure/keyvault-keys': 4.9.0
'@js-joda/core': 5.6.4
'@types/node': 22.13.10
'@types/node': 22.13.11
bl: 6.1.0
iconv-lite: 0.6.3
js-md4: 0.3.2
@@ -13808,6 +14090,10 @@ snapshots:
commander: 2.20.3
source-map-support: 0.5.21
thingies@1.21.0(tslib@2.8.1):
dependencies:
tslib: 2.8.1
thirty-two@1.0.2: {}
thread-stream@2.7.0:
@@ -13842,6 +14128,10 @@ snapshots:
tr46@0.0.3: {}
tree-dump@1.0.2(tslib@2.8.1):
dependencies:
tslib: 2.8.1
tslib@1.14.1: {}
tslib@2.8.1: {}
@@ -13958,8 +14248,7 @@ snapshots:
utils-merge@1.0.1: {}
uuid@3.4.0:
optional: true
uuid@3.4.0: {}
uuid@8.3.2: {}
@@ -14090,6 +14379,8 @@ snapshots:
is-weakmap: 2.0.2
is-weakset: 2.0.4
which-module@2.0.1: {}
which-typed-array@1.1.19:
dependencies:
available-typed-arrays: 1.0.7
@@ -14149,6 +14440,8 @@ snapshots:
xtend@4.0.2:
optional: true
y18n@4.0.3: {}
yallist@4.0.0: {}
yallist@5.0.0: {}
@@ -14157,6 +14450,25 @@ snapshots:
yaml@2.7.0: {}
yargs-parser@18.1.3:
dependencies:
camelcase: 5.0.0
decamelize: 1.2.0
yargs@15.4.1:
dependencies:
cliui: 6.0.0
decamelize: 1.2.0
find-up: 4.1.0
get-caller-file: 2.0.5
require-directory: 2.1.1
require-main-filename: 2.0.0
set-blocking: 2.0.0
string-width: 4.2.3
which-module: 2.0.1
y18n: 4.0.3
yargs-parser: 18.1.3
yocto-queue@0.1.0: {}
yocto-queue@1.2.1: {}