Make sure node version is correct

This commit is contained in:
Caramel
2024-11-01 16:42:13 +01:00
parent 10dfb3a579
commit 770c296d8a
5 changed files with 42 additions and 4 deletions

View File

@@ -55,6 +55,7 @@
"qoi-img": "^2.2.0",
"reflect-metadata": "^0.2.2",
"rxjs": "^7.8.1",
"semver": "^7.6.3",
"sharp": "^0.33.5",
"stream-parser": "^0.3.1",
"thunks": "^4.9.6",
@@ -72,6 +73,7 @@
"@types/passport-jwt": "^4.0.1",
"@types/passport-local": "^1.0.38",
"@types/passport-strategy": "^0.2.38",
"@types/semver": "^7.5.8",
"@types/supertest": "^6.0.2",
"prettier": "^3.3.3",
"source-map-support": "^0.5.21",

View File

@@ -1,8 +1,15 @@
import { MiddlewareConsumer, Module, NestModule } from '@nestjs/common';
import {
Logger,
MiddlewareConsumer,
Module,
NestModule,
OnModuleInit,
} from '@nestjs/common';
import { ScheduleModule } from '@nestjs/schedule';
import { ServeStaticModule } from '@nestjs/serve-static';
import cors from 'cors';
import { IncomingMessage, ServerResponse } from 'http';
import semver from 'semver';
import { EarlyConfigModule } from './config/early/early-config.module.js';
import { ServeStaticConfigService } from './config/early/serve-static.config.service.js';
import { DatabaseModule } from './database/database.module.js';
@@ -13,6 +20,8 @@ import { DemoManagerModule } from './managers/demo/demo.module.js';
import { UsageManagerModule } from './managers/usage/usage.module.js';
import { PicsurRoutesModule } from './routes/routes.module.js';
const supportedNodeVersions = ['^16.17.0', '^18.6.0', '>=20.0.0'];
const mainCorsConfig = cors({
origin: '<origin>',
});
@@ -64,11 +73,26 @@ const imageCacheSet = (
PicsurLayersModule,
],
})
export class AppModule implements NestModule {
export class AppModule implements NestModule, OnModuleInit {
private readonly logger = new Logger(AppModule.name);
configure(consumer: MiddlewareConsumer) {
consumer.apply(mainCorsConfig).exclude('i/(.*)').forRoutes('*');
consumer
.apply(imageCorsConfig, imageCorsOverride, imageCacheSet)
.forRoutes('i/(.*)');
}
onModuleInit() {
const nodeVersion = process.version;
if (!supportedNodeVersions.some((v) => semver.satisfies(nodeVersion, v))) {
this.logger.error(
`Unsupported Node version: ${nodeVersion}. Transcoding performance will be severely degraded.`,
);
this.logger.log(
`Supported Node versions: ${supportedNodeVersions.join(', ')}`,
);
}
}
}

View File

@@ -1,5 +1,6 @@
import { Injectable } from '@nestjs/common';
import {
AnimFileType,
FileType,
ImageFileType,
SupportedFileTypeCategory,

View File

@@ -6,7 +6,7 @@ import {
} from 'picsur-shared/dist/dto/mimes.dto';
import { QOIdecode, QOIencode } from 'qoi-img';
import sharp, { Sharp, SharpOptions } from 'sharp';
import { SharpWorkerFinishOptions } from './sharp.message';
import { SharpWorkerFinishOptions } from './sharp.message.js';
export interface SharpResult {
data: Buffer;

13
pnpm-lock.yaml generated
View File

@@ -143,6 +143,9 @@ importers:
rxjs:
specifier: ^7.8.1
version: 7.8.1
semver:
specifier: ^7.6.3
version: 7.6.3
sharp:
specifier: ^0.33.5
version: 0.33.5
@@ -189,6 +192,9 @@ importers:
'@types/passport-strategy':
specifier: ^0.2.38
version: 0.2.38
'@types/semver':
specifier: ^7.5.8
version: 7.5.8
'@types/supertest':
specifier: ^6.0.2
version: 6.0.2
@@ -2045,7 +2051,7 @@ packages:
peerDependencies:
'@angular/compiler-cli': ^18.0.0
typescript: ~5.5.4
webpack: ^5.54.0
webpack: '>=5.76.0'
'@ngui/common@1.0.0':
resolution: {integrity: sha512-T0vX6jFLR+19iUVqM0J6lQkcDo6Iaq8pptzMJDEjLG3HkpgeM9SYxiTFV3+yHuP4QzQQ6/VP8gJ+1f4M7iZv5Q==}
@@ -2465,6 +2471,9 @@ packages:
'@types/retry@0.12.2':
resolution: {integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==}
'@types/semver@7.5.8':
resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==}
'@types/send@0.17.4':
resolution: {integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==}
@@ -8268,6 +8277,8 @@ snapshots:
'@types/retry@0.12.2': {}
'@types/semver@7.5.8': {}
'@types/send@0.17.4':
dependencies:
'@types/mime': 1.3.5