mirror of
https://github.com/directus/directus.git
synced 2026-01-09 17:48:00 -05:00
Upgrade Node.js runtime version to 22 (#24140)
Co-authored-by: Pascal Jufer <pascal-jufer@bluewin.ch>
This commit is contained in:
32
.changeset/shaggy-crabs-protect.md
Normal file
32
.changeset/shaggy-crabs-protect.md
Normal file
@@ -0,0 +1,32 @@
|
||||
---
|
||||
'directus': minor
|
||||
'create-directus-project': major
|
||||
'@directus/api': major
|
||||
'@directus/constants': major
|
||||
'@directus/env': major
|
||||
'@directus/errors': major
|
||||
'@directus/extensions': major
|
||||
'@directus/extensions-registry': major
|
||||
'@directus/extensions-sdk': major
|
||||
'@directus/format-title': major
|
||||
'@directus/memory': major
|
||||
'@directus/pressure': major
|
||||
'@directus/random': major
|
||||
'@directus/release-notes-generator': major
|
||||
'@directus/schema': major
|
||||
'@directus/sdk': major
|
||||
'@directus/storage': major
|
||||
'@directus/storage-driver-azure': major
|
||||
'@directus/storage-driver-cloudinary': major
|
||||
'@directus/storage-driver-gcs': major
|
||||
'@directus/storage-driver-local': major
|
||||
'@directus/storage-driver-s3': major
|
||||
'@directus/storage-driver-supabase': major
|
||||
'@directus/system-data': major
|
||||
'@directus/types': major
|
||||
'@directus/update-check': major
|
||||
'@directus/utils': major
|
||||
'@directus/validation': major
|
||||
---
|
||||
|
||||
Upgrade required Node.js version to 22
|
||||
17
.github/actions/prepare/action.yml
vendored
17
.github/actions/prepare/action.yml
vendored
@@ -15,14 +15,11 @@ runs:
|
||||
- name: Install Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version-file: package.json
|
||||
registry-url: ${{ inputs.registry }}
|
||||
|
||||
- uses: pnpm/action-setup@v3
|
||||
name: Install pnpm
|
||||
id: pnpm-install
|
||||
with:
|
||||
run_install: false
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
|
||||
- name: Get cache info
|
||||
id: cache-info
|
||||
@@ -31,8 +28,8 @@ runs:
|
||||
echo "os-release=$(node --eval 'console.log(os.release())')" >> $GITHUB_OUTPUT
|
||||
echo "pnpm-cache-dir=$(pnpm store path)" >> $GITHUB_OUTPUT
|
||||
|
||||
- uses: actions/cache@v4
|
||||
name: Setup pnpm cache
|
||||
- name: Setup pnpm cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ${{ steps.cache-info.outputs.pnpm-cache-dir }}
|
||||
key:
|
||||
@@ -47,7 +44,7 @@ runs:
|
||||
- name: Build
|
||||
if: inputs.build == 'true'
|
||||
shell: bash
|
||||
run: pnpm run build
|
||||
env:
|
||||
npm_config_workspace_concurrency: '1'
|
||||
npm_config_workspace_concurrency: 1
|
||||
NODE_OPTIONS: --max_old_space_size=6144
|
||||
run: pnpm run build
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
# syntax=docker/dockerfile:1.4
|
||||
|
||||
ARG NODE_VERSION=22
|
||||
|
||||
####################################################################################################
|
||||
## Build Packages
|
||||
|
||||
FROM node:18-alpine AS builder
|
||||
FROM node:${NODE_VERSION}-alpine AS builder
|
||||
|
||||
ARG TARGETPLATFORM
|
||||
RUN <<EOF
|
||||
@@ -46,7 +48,7 @@ EOF
|
||||
####################################################################################################
|
||||
## Create Production Image
|
||||
|
||||
FROM node:18-alpine AS runtime
|
||||
FROM node:${NODE_VERSION}-alpine AS runtime
|
||||
|
||||
RUN npm install --global pm2@5
|
||||
|
||||
|
||||
@@ -181,7 +181,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/random": "workspace:*",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@directus/types": "workspace:*",
|
||||
"@ngneat/falso": "7.3.0",
|
||||
"@types/async": "3.2.24",
|
||||
@@ -205,7 +205,7 @@
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/mime-types": "2.1.4",
|
||||
"@types/ms": "0.7.34",
|
||||
"@types/node": "18.19.70",
|
||||
"@types/node": "22.10.5",
|
||||
"@types/node-schedule": "2.1.7",
|
||||
"@types/nodemailer": "6.4.17",
|
||||
"@types/object-hash": "3.0.6",
|
||||
@@ -233,6 +233,6 @@
|
||||
"tedious": "18.6.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.17.0"
|
||||
"node": ">=22"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ export const sendReport = async (report: TelemetryReport) => {
|
||||
|
||||
const url = new URL('/v1/metrics', env['TELEMETRY_URL'] as string);
|
||||
|
||||
const headers: HeadersInit = {
|
||||
const headers: ResponseInit['headers'] = {
|
||||
'Content-Type': 'application/json',
|
||||
};
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist"
|
||||
},
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
"@directus/stores": "workspace:*",
|
||||
"@directus/system-data": "workspace:*",
|
||||
"@directus/themes": "workspace:*",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@directus/types": "workspace:*",
|
||||
"@directus/utils": "workspace:*",
|
||||
"@directus/validation": "workspace:*",
|
||||
|
||||
@@ -58,6 +58,6 @@
|
||||
"@directus/update-check": "workspace:*"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
"node": ">=22"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,10 +8,9 @@ To add packages to the Typedocs in the Docs, just follow these steps.
|
||||
|
||||
```diff
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm.json",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist",
|
||||
"lib": ["es2022", "DOM"]
|
||||
"outDir": "dist"
|
||||
},
|
||||
"include": ["src"],
|
||||
+ "typedocOptions": {
|
||||
|
||||
@@ -13,7 +13,7 @@ readTime: 4 min read
|
||||
|
||||
::: tip Minimum Requirements
|
||||
|
||||
You will need to have [version 18 of Node.js](https://nodejs.org/en/download) for the Development environment of
|
||||
You will need to have [version 22 of Node.js](https://nodejs.org/en/download) for the Development environment of
|
||||
Directus.
|
||||
|
||||
You will also need to have the package manager [pnpm](https://pnpm.io) installed. It's recommended to install
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[build.environment]
|
||||
NODE_VERSION = "18"
|
||||
NODE_VERSION = "22"
|
||||
|
||||
[build]
|
||||
publish = ".vitepress/dist"
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"devDependencies": {
|
||||
"@directus/format-title": "workspace:*",
|
||||
"@directus/sdk": "workspace:*",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@pnpm/find-workspace-dir": "7.0.3",
|
||||
"@pnpm/find-workspace-packages": "6.0.9",
|
||||
"markdown-it-for-inline": "2.0.1",
|
||||
|
||||
@@ -13,6 +13,21 @@ these to a minimum, but rest assured we only make them with good reason.
|
||||
|
||||
Starting with Directus 10.0, here is a list of potential breaking changes with remedial action you may need to take.
|
||||
|
||||
## Version 11.4.0
|
||||
|
||||
### Node.js 22
|
||||
|
||||
The required Node.js runtime version has been upgraded to the current LTS version 22.
|
||||
|
||||
Our base Docker image ([`directus/directus`](https://hub.docker.com/r/directus/directus)) has already been updated
|
||||
accordingly. This means that no further steps are necessary for the vast majority of Directus admins.
|
||||
|
||||
For custom, self-hosted setups that are not relying on the official Docker image, it must be ensured that Node.js is
|
||||
upgraded to version 22, and dependencies are rebuilt.
|
||||
|
||||
Additionally, if you're using non-sandboxed extensions, please ensure that the extensions (including their dependencies)
|
||||
are compatible with Node.js 22 as well.
|
||||
|
||||
## Version 11.1.2
|
||||
|
||||
### New Comment Endpoints
|
||||
|
||||
@@ -13,7 +13,7 @@ readTime: 7 min read
|
||||
|
||||
## Requirements
|
||||
|
||||
- Node.js [v18](https://github.com/nodejs/release#release-schedule), specifically version 18.17 or higher.
|
||||
- Node.js [v22](https://github.com/nodejs/release#release-schedule)
|
||||
|
||||
## Server
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"declaration": false,
|
||||
"resolveJsonModule": true
|
||||
|
||||
@@ -1,16 +1,17 @@
|
||||
// @ts-check
|
||||
|
||||
import eslint from '@eslint/js';
|
||||
import eslintJs from '@eslint/js';
|
||||
import eslintConfigPrettier from 'eslint-config-prettier';
|
||||
import eslintPluginVue from 'eslint-plugin-vue';
|
||||
import globals from 'globals';
|
||||
import tseslint from 'typescript-eslint';
|
||||
import process from 'node:process';
|
||||
import typescriptEslint from 'typescript-eslint';
|
||||
|
||||
export default tseslint.config(
|
||||
export default typescriptEslint.config(
|
||||
// Global config
|
||||
{
|
||||
languageOptions: {
|
||||
ecmaVersion: 2022,
|
||||
ecmaVersion: 2023,
|
||||
sourceType: 'module',
|
||||
globals: {
|
||||
...globals.browser,
|
||||
@@ -25,7 +26,7 @@ export default tseslint.config(
|
||||
},
|
||||
|
||||
// Enable recommended rules for JS files
|
||||
eslint.configs.recommended,
|
||||
eslintJs.configs.recommended,
|
||||
|
||||
// Custom basic rules
|
||||
{
|
||||
@@ -77,16 +78,16 @@ export default tseslint.config(
|
||||
},
|
||||
|
||||
// Enable TypeScript plugin and recommended rules for TypeScript files
|
||||
...tseslint.configs.recommended,
|
||||
...typescriptEslint.configs.recommended,
|
||||
|
||||
// Enable Vue plugin and recommended rules for Vue files
|
||||
// @ts-expect-error untyped package
|
||||
...eslintPluginVue.configs['flat/recommended'],
|
||||
{
|
||||
files: ['**/*.vue'],
|
||||
languageOptions: { parserOptions: { parser: tseslint.parser } },
|
||||
languageOptions: { parserOptions: { parser: typescriptEslint.parser } },
|
||||
// Apply recommended TypeScript rules to Vue files as well
|
||||
rules: tseslint.configs.recommended.reduce((rules, config) => ({ ...rules, ...config.rules }), {}),
|
||||
// @ts-expect-error wrong type assertion
|
||||
rules: typescriptEslint.configs.recommended.reduce((rules, config) => ({ ...rules, ...config.rules }), {}),
|
||||
},
|
||||
|
||||
// Custom TypeScript rules
|
||||
@@ -104,7 +105,7 @@ export default tseslint.config(
|
||||
|
||||
// Custom Vue rules
|
||||
{
|
||||
files: ['**/*.{ts,vue}'],
|
||||
files: ['**/*.vue'],
|
||||
rules: {
|
||||
// Same ordering of component tags everywhere
|
||||
'vue/component-tags-order': [
|
||||
|
||||
@@ -14,8 +14,6 @@
|
||||
"@changesets/cli": "2.27.11",
|
||||
"@directus/release-notes-generator": "workspace:*",
|
||||
"@eslint/js": "9.17.0",
|
||||
"@types/eslint__js": "8.42.3",
|
||||
"@types/node": "18",
|
||||
"eslint": "9.17.0",
|
||||
"eslint-config-prettier": "9.1.0",
|
||||
"eslint-plugin-vue": "9.32.0",
|
||||
@@ -26,7 +24,7 @@
|
||||
},
|
||||
"packageManager": "pnpm@9.15.3",
|
||||
"engines": {
|
||||
"node": ">=18.18.0",
|
||||
"node": "22",
|
||||
"pnpm": "9"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
"story:preview": "histoire preview"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@histoire/plugin-vue": "0.17.17",
|
||||
"@vitejs/plugin-vue": "5.2.1",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/vue3",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist"
|
||||
},
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"devDependencies": {
|
||||
"@directus/extensions": "workspace:*",
|
||||
"@directus/sdk": "workspace:*",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@directus/types": "workspace:*",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"dev": "tsup src/index.ts --format=esm --dts --watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2"
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src"]
|
||||
|
||||
@@ -4,17 +4,13 @@ import chalk from 'chalk';
|
||||
|
||||
export default function checkRequirements() {
|
||||
const nodeVersion = process.versions.node;
|
||||
const nodeVersionSplit = nodeVersion.split('.');
|
||||
const major = +nodeVersionSplit[0];
|
||||
const minor = +nodeVersionSplit[1];
|
||||
const currentMajor = +nodeVersion.split('.')[0];
|
||||
|
||||
if (major !== 18 || minor < 17) {
|
||||
const expectedMajor = 22;
|
||||
|
||||
if (currentMajor !== expectedMajor) {
|
||||
console.error(`You are running ${chalk.red(`Node.js ${nodeVersion}`)}.`);
|
||||
|
||||
console.error(
|
||||
`Directus requires ${chalk.green(`Node.js 18`)}, specifically version 18.17 or higher (>=18.17 & <19).`,
|
||||
);
|
||||
|
||||
console.error(`Directus requires ${chalk.green(`Node.js ${expectedMajor}`)}.`);
|
||||
console.error('Please adjust your Node.js version and try again.');
|
||||
|
||||
process.exit(1);
|
||||
|
||||
@@ -33,6 +33,6 @@
|
||||
"update-check": "1.5.4"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.17.0"
|
||||
"node": ">=22"
|
||||
}
|
||||
}
|
||||
|
||||
4
packages/env/package.json
vendored
4
packages/env/package.json
vendored
@@ -26,9 +26,9 @@
|
||||
"test": "vitest --watch=false"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/node": "18.19.70",
|
||||
"@types/node": "22.10.5",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2",
|
||||
|
||||
2
packages/env/tsconfig.json
vendored
2
packages/env/tsconfig.json
vendored
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src"]
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/random": "workspace:*",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/ms": "0.7.34",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"compilerOptions": {
|
||||
"isolatedModules": true
|
||||
},
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src"]
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
"zod": "3.24.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/validate-npm-package-name": "4.0.2",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src"]
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
"vue": "3.5.13"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/inquirer": "9.0.7",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist"
|
||||
},
|
||||
|
||||
@@ -41,10 +41,10 @@
|
||||
"zod": "3.24.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/node": "18.19.70",
|
||||
"@types/node": "22.10.5",
|
||||
"@types/tmp": "0.2.6",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"knex": "3.1.0",
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"compilerOptions": {
|
||||
"types": ["node"]
|
||||
},
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["."]
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"types": []
|
||||
},
|
||||
|
||||
@@ -37,12 +37,9 @@
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2",
|
||||
"vitest": "2.1.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src"]
|
||||
|
||||
@@ -33,8 +33,8 @@
|
||||
"rate-limiter-flexible": "5.0.4"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@types/node": "18.19.70",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/node": "22.10.5",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src/index.ts", "./src/*/index.ts"]
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/random": "workspace:*",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/express": "4.17.21",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src"]
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
"test": "vitest --watch=false"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@types/node": "18.19.70",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/node": "22.10.5",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src"]
|
||||
|
||||
@@ -32,9 +32,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@changesets/types": "6.0.0",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@pnpm/types": "12.2.0",
|
||||
"@types/node": "18.19.70",
|
||||
"@types/node": "22.10.5",
|
||||
"@types/semver": "7.5.8",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"typescript": "5.7.2",
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-cjs",
|
||||
"extends": "@directus/tsconfig/base",
|
||||
"compilerOptions": {
|
||||
"target": "ES2022",
|
||||
"lib": ["ES2023"],
|
||||
"module": "CommonJS",
|
||||
"outDir": "dist"
|
||||
},
|
||||
"include": ["src"]
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
"knex": "3.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2"
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
"@directus/utils": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@ngneat/falso": "7.3.0",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"undici": "6.21.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@ngneat/falso": "7.3.0",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
"@google-cloud/storage": "7.14.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@ngneat/falso": "7.3.0",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
"@directus/storage": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/node": "22.10.5",
|
||||
"@ngneat/falso": "7.3.0",
|
||||
"@types/node": "18.19.70",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
"ms": "2.1.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@ngneat/falso": "7.3.0",
|
||||
"@types/ms": "0.7.34",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
"undici": "6.21.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@ngneat/falso": "7.3.0",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -26,8 +26,8 @@
|
||||
"test": "vitest --watch=false"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@types/node": "18.19.70",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@types/node": "22.10.5",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"@vueuse/core": "12.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@vueuse/shared": "12.3.0",
|
||||
"pinia": "2.3.0",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
"dev": "NODE_ENV=development tsup"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"esbuild": "0.20.2",
|
||||
"esbuild-yaml": "1.2.0",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { DataPermission, Permission } from '../types.js';
|
||||
import type { DataPermission, Permission } from '../types.js';
|
||||
import permissions from './app-access-permissions.yaml';
|
||||
import schemaPermissionsRaw from './schema-access-permissions.yaml';
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ import userFields from './users.yaml';
|
||||
import versionFields from './versions.yaml';
|
||||
import webhookFields from './webhooks.yaml';
|
||||
|
||||
import { FieldMeta } from '../types.js';
|
||||
import type { FieldMeta } from '../types.js';
|
||||
|
||||
export const systemFieldRows: FieldMeta[] = [];
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { RelationMeta } from '../types.js';
|
||||
import type { RelationMeta } from '../types.js';
|
||||
import systemData from './relations.yaml';
|
||||
|
||||
export const systemRelationRows = (systemData['data'] as RelationMeta[]).map(
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/base",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"module": "NodeNext",
|
||||
"lib": ["ES2020"],
|
||||
"types": ["esbuild-yaml/types"]
|
||||
},
|
||||
"include": ["src"],
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
"lodash-es": "4.17.21"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@directus/types": "workspace:*",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@unhead/vue": "1.11.15",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/vue3",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src/index.ts", "./src/*/index.ts"]
|
||||
|
||||
@@ -1,23 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Base",
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"esModuleInterop": true,
|
||||
"skipLibCheck": true,
|
||||
"forceConsistentCasingInFileNames": true,
|
||||
"allowUnusedLabels": false,
|
||||
"allowUnreachableCode": false,
|
||||
"exactOptionalPropertyTypes": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"noImplicitOverride": true,
|
||||
"noImplicitReturns": true,
|
||||
"noPropertyAccessFromIndexSignature": true,
|
||||
"noUncheckedIndexedAccess": true,
|
||||
"noUnusedLocals": true,
|
||||
"noUnusedParameters": true,
|
||||
"checkJs": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"declaration": true
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
MIT License
|
||||
|
||||
Copyright 2025 Monospace, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
||||
documentation files (the “Software”), to deal in the Software without restriction, including without limitation the
|
||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
||||
Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
@@ -1,9 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Node.js 18 CommonJS",
|
||||
"extends": "../base/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"module": "CommonJS",
|
||||
"target": "ES2022"
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Node.js 18 ESM",
|
||||
"extends": "../base/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"module": "Node16",
|
||||
"target": "ES2022",
|
||||
"moduleResolution": "Node16",
|
||||
"verbatimModuleSyntax": true
|
||||
}
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
{
|
||||
"name": "@directus/tsconfig",
|
||||
"version": "2.0.0",
|
||||
"description": "TSConfig files used in Directus projects",
|
||||
"homepage": "https://directus.io",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/directus/directus.git",
|
||||
"directory": "packages/tsconfig"
|
||||
},
|
||||
"funding": "https://github.com/directus/directus?sponsor=1",
|
||||
"license": "MIT",
|
||||
"author": "Rijk van Zanten <rijkvanzanten@me.com>",
|
||||
"exports": {
|
||||
"./base": "./base/tsconfig.json",
|
||||
"./node18-cjs": "./node18-cjs/tsconfig.json",
|
||||
"./node18-esm": "./node18-esm/tsconfig.json",
|
||||
"./vue3": "./vue3/tsconfig.json"
|
||||
}
|
||||
}
|
||||
@@ -1,24 +0,0 @@
|
||||
# @directus/tsconfig
|
||||
|
||||
Shared TSConfig files used by the projects in the Directus ecosystem.
|
||||
|
||||
The following configs are available:
|
||||
|
||||
- [`node18-cjs`](./node18-cjs/tsconfig.json) - Config for CommonJS modules running under Node.js 18
|
||||
- [`node18-esm`](./node18-esm/tsconfig.json) - Config for ESM modules running under Node.js 18
|
||||
- [`vue3`](./vue3/tsconfig.json) - Config for Vue.js 3 modules
|
||||
- [`base`](./base/tsconfig.json) - Set of basic rules (included in all of the configs above)
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
pnpm add @directus/tsconfig
|
||||
```
|
||||
|
||||
To use one of the shared config, extend the local `tsconfig.json` from it:
|
||||
|
||||
```json
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm"
|
||||
}
|
||||
```
|
||||
@@ -1,32 +0,0 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/tsconfig",
|
||||
"display": "Vue.js 3",
|
||||
"extends": "../base/tsconfig.json",
|
||||
"compilerOptions": {
|
||||
// It's recommended to author and ship in ES modules.
|
||||
// This recommendation includes environments like Vitest, Vite Config File, Vite SSR, etc.
|
||||
"module": "ES2022",
|
||||
|
||||
// - Vue 3 supports ES2016+
|
||||
// - For Vite, the actual compilation target is determined by the
|
||||
// `build.target` option in the Vite config.
|
||||
// So don't change the `target` field here. It has to be
|
||||
// at least `ES2020` for dynamic `import()`s and `import.meta` to work correctly.
|
||||
"target": "ES2022",
|
||||
|
||||
// Add DOM definitions.
|
||||
"lib": ["ES2022", "DOM", "DOM.Iterable"],
|
||||
|
||||
// Enable some resolution features that are only available in bundlers.
|
||||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
|
||||
// Any imports or exports without a type modifier are left around. This is important for `<script setup>`.
|
||||
// Anything that uses the type modifier is dropped entirely.
|
||||
"verbatimModuleSyntax": true,
|
||||
|
||||
// Required in Vue projects
|
||||
"jsx": "preserve",
|
||||
"jsxImportSource": "vue"
|
||||
}
|
||||
}
|
||||
@@ -30,7 +30,7 @@
|
||||
"@types/geojson": "7946.0.15"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"knex": "3.1.0",
|
||||
"typescript": "5.7.2",
|
||||
"vue": "3.5.13"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"outDir": "dist"
|
||||
},
|
||||
|
||||
@@ -35,9 +35,9 @@
|
||||
"semver": "7.6.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@npm/types": "2.0.0",
|
||||
"@types/node": "18.19.70",
|
||||
"@types/node": "22.10.5",
|
||||
"@types/semver": "7.5.8",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"strip-ansi": "7.1.0",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"],
|
||||
"typedocOptions": {
|
||||
"entryPoints": ["./src/index.ts"]
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"lib": ["es2022", "dom"]
|
||||
"lib": ["ES2023", "DOM"],
|
||||
"types": []
|
||||
},
|
||||
"include": ["."]
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"compilerOptions": {
|
||||
"types": ["node"]
|
||||
},
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["."]
|
||||
}
|
||||
|
||||
@@ -42,12 +42,12 @@
|
||||
"micromustache": "8.0.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@directus/types": "workspace:*",
|
||||
"@types/fs-extra": "11.0.4",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
"@types/lodash-es": "4.17.12",
|
||||
"@types/node": "18.19.70",
|
||||
"@types/node": "22.10.5",
|
||||
"@types/tmp": "0.2.6",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tmp": "0.2.3",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"types": []
|
||||
},
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
"dist"
|
||||
],
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@directus/types": "workspace:*",
|
||||
"@vitest/coverage-v8": "2.1.8",
|
||||
"tsup": "8.3.5",
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"compilerOptions": {
|
||||
"isolatedModules": true
|
||||
},
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"include": ["src"]
|
||||
}
|
||||
|
||||
2848
pnpm-lock.yaml
generated
2848
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -29,14 +29,13 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/system-data": "workspace:*",
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@types/node-fetch": "2.6.12",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"esbuild-plugin-replace": "1.4.0",
|
||||
"tsup": "8.3.5",
|
||||
"typescript": "5.7.2",
|
||||
"vitest": "2.1.8"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0.0"
|
||||
"node": ">=22"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"lib": ["DOM"]
|
||||
"lib": ["ES2023", "DOM"]
|
||||
},
|
||||
"include": ["src", "tests"],
|
||||
"typedocOptions": {
|
||||
|
||||
@@ -24,7 +24,7 @@ export default defineConfig(() => ({
|
||||
minify: env === 'production',
|
||||
watch: env === 'development',
|
||||
bundle: true,
|
||||
target: 'es2020',
|
||||
target: 'es2023',
|
||||
entry: ['src/index.ts'],
|
||||
esbuildPlugins: [
|
||||
replace({
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@directus/tsconfig": "workspace:*",
|
||||
"@directus/tsconfig": "3.0.0",
|
||||
"@directus/types": "workspace:*",
|
||||
"@directus/utils": "workspace:*",
|
||||
"@types/js-yaml": "4.0.9",
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
{
|
||||
"extends": "@directus/tsconfig/node18-esm",
|
||||
"extends": "@directus/tsconfig/node22",
|
||||
"compilerOptions": {
|
||||
"module": "ESNext",
|
||||
"moduleResolution": "Bundler",
|
||||
"moduleResolution": "bundler",
|
||||
"paths": {
|
||||
"@common/*": ["./common/*"],
|
||||
"@query/*": ["./tests/db/query/*"],
|
||||
|
||||
Reference in New Issue
Block a user