mirror of
https://github.com/CaramelFur/Picsur.git
synced 2025-11-02 02:15:46 +01:00
Make backend work with nodenext
This commit is contained in:
@@ -3,15 +3,15 @@ import { ScheduleModule } from '@nestjs/schedule';
|
|||||||
import { ServeStaticModule } from '@nestjs/serve-static';
|
import { ServeStaticModule } from '@nestjs/serve-static';
|
||||||
import cors from 'cors';
|
import cors from 'cors';
|
||||||
import { IncomingMessage, ServerResponse } from 'http';
|
import { IncomingMessage, ServerResponse } from 'http';
|
||||||
import { EarlyConfigModule } from './config/early/early-config.module';
|
import { EarlyConfigModule } from './config/early/early-config.module.js';
|
||||||
import { ServeStaticConfigService } from './config/early/serve-static.config.service';
|
import { ServeStaticConfigService } from './config/early/serve-static.config.service.js';
|
||||||
import { DatabaseModule } from './database/database.module';
|
import { DatabaseModule } from './database/database.module.js';
|
||||||
import { PicsurLayersModule } from './layers/PicsurLayers.module';
|
import { PicsurLayersModule } from './layers/PicsurLayers.module.js';
|
||||||
import { PicsurLoggerModule } from './logger/logger.module';
|
import { PicsurLoggerModule } from './logger/logger.module.js';
|
||||||
import { AuthManagerModule } from './managers/auth/auth.module';
|
import { AuthManagerModule } from './managers/auth/auth.module.js';
|
||||||
import { DemoManagerModule } from './managers/demo/demo.module';
|
import { DemoManagerModule } from './managers/demo/demo.module.js';
|
||||||
import { UsageManagerModule } from './managers/usage/usage.module';
|
import { UsageManagerModule } from './managers/usage/usage.module.js';
|
||||||
import { PicsurRoutesModule } from './routes/routes.module';
|
import { PicsurRoutesModule } from './routes/routes.module.js';
|
||||||
|
|
||||||
const mainCorsConfig = cors({
|
const mainCorsConfig = cors({
|
||||||
origin: '<origin>',
|
origin: '<origin>',
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { EApiKeyBackend } from '../../database/entities/apikey.entity';
|
import { EApiKeyBackend } from '../../database/entities/apikey.entity.js';
|
||||||
import { ApiKeyDbService } from './apikey-db.service';
|
import { ApiKeyDbService } from './apikey-db.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [TypeOrmModule.forFeature([EApiKeyBackend])],
|
imports: [TypeOrmModule.forFeature([EApiKeyBackend])],
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
||||||
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { EApiKeyBackend } from '../../database/entities/apikey.entity';
|
import { EApiKeyBackend } from '../../database/entities/apikey.entity.js';
|
||||||
import { EUserBackend } from '../../database/entities/users/user.entity';
|
import { EUserBackend } from '../../database/entities/users/user.entity.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ApiKeyDbService {
|
export class ApiKeyDbService {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { EImageDerivativeBackend } from '../../database/entities/images/image-derivative.entity';
|
import { EImageDerivativeBackend } from '../../database/entities/images/image-derivative.entity.js';
|
||||||
import { EImageFileBackend } from '../../database/entities/images/image-file.entity';
|
import { EImageFileBackend } from '../../database/entities/images/image-file.entity.js';
|
||||||
import { EImageBackend } from '../../database/entities/images/image.entity';
|
import { EImageBackend } from '../../database/entities/images/image.entity.js';
|
||||||
import { ImageDBService } from './image-db.service';
|
import { ImageDBService } from './image-db.service.js';
|
||||||
import { ImageFileDBService } from './image-file-db.service';
|
import { ImageFileDBService } from './image-file-db.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { AsyncFailable, Fail, FT } from 'picsur-shared/dist/types/failable';
|
|||||||
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
||||||
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
||||||
import { In, LessThan, Repository } from 'typeorm';
|
import { In, LessThan, Repository } from 'typeorm';
|
||||||
import { EImageBackend } from '../../database/entities/images/image.entity';
|
import { EImageBackend } from '../../database/entities/images/image.entity.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ImageDBService {
|
export class ImageDBService {
|
||||||
|
|||||||
@@ -2,14 +2,14 @@ import { Injectable } from '@nestjs/common';
|
|||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { LessThan, Repository } from 'typeorm';
|
import { LessThan, Repository } from 'typeorm';
|
||||||
import { EImageDerivativeBackend } from '../../database/entities/images/image-derivative.entity';
|
import { EImageDerivativeBackend } from '../../database/entities/images/image-derivative.entity.js';
|
||||||
import { EImageFileBackend } from '../../database/entities/images/image-file.entity';
|
import { EImageFileBackend } from '../../database/entities/images/image-file.entity.js';
|
||||||
|
|
||||||
const A_DAY_IN_SECONDS = 24 * 60 * 60;
|
const A_DAY_IN_SECONDS = 24 * 60 * 60;
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { EarlyConfigModule } from '../../config/early/early-config.module';
|
import { EarlyConfigModule } from '../../config/early/early-config.module.js';
|
||||||
import { ESysPreferenceBackend } from '../../database/entities/system/sys-preference.entity';
|
import { ESysPreferenceBackend } from '../../database/entities/system/sys-preference.entity.js';
|
||||||
import { EUsrPreferenceBackend } from '../../database/entities/system/usr-preference.entity';
|
import { EUsrPreferenceBackend } from '../../database/entities/system/usr-preference.entity.js';
|
||||||
import { PreferenceCommonService } from './preference-common.service';
|
import { PreferenceCommonService } from './preference-common.service.js';
|
||||||
import { PreferenceDefaultsService } from './preference-defaults.service';
|
import { PreferenceDefaultsService } from './preference-defaults.service.js';
|
||||||
import { SysPreferenceDbService } from './sys-preference-db.service';
|
import { SysPreferenceDbService } from './sys-preference-db.service.js';
|
||||||
import { UsrPreferenceDbService } from './usr-preference-db.service';
|
import { UsrPreferenceDbService } from './usr-preference-db.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { PrefValueType } from 'picsur-shared/dist/dto/preferences.dto';
|
|||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
||||||
import { EarlyJwtConfigService } from '../../config/early/early-jwt.config.service';
|
import { EarlyJwtConfigService } from '../../config/early/early-jwt.config.service.js';
|
||||||
|
|
||||||
// This specific service holds the default values for system and user preferences
|
// This specific service holds the default values for system and user preferences
|
||||||
// It needs to be in a service because the values depend on the environment
|
// It needs to be in a service because the values depend on the environment
|
||||||
|
|||||||
@@ -1,30 +1,30 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import {
|
import {
|
||||||
DecodedSysPref,
|
DecodedSysPref,
|
||||||
PrefValueType,
|
PrefValueType,
|
||||||
PrefValueTypeStrings,
|
PrefValueTypeStrings,
|
||||||
} from 'picsur-shared/dist/dto/preferences.dto';
|
} from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import {
|
import {
|
||||||
SysPreference,
|
SysPreference,
|
||||||
SysPreferenceList,
|
SysPreferenceList,
|
||||||
SysPreferenceValidators,
|
SysPreferenceValidators,
|
||||||
SysPreferenceValueTypes,
|
SysPreferenceValueTypes,
|
||||||
} from 'picsur-shared/dist/dto/sys-preferences.enum';
|
} from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import {
|
import {
|
||||||
ESysPreferenceBackend,
|
ESysPreferenceBackend,
|
||||||
ESysPreferenceSchema,
|
ESysPreferenceSchema,
|
||||||
} from '../../database/entities/system/sys-preference.entity';
|
} from '../../database/entities/system/sys-preference.entity.js';
|
||||||
import { MutexFallBack } from '../../util/mutex-fallback';
|
import { MutexFallBack } from '../../util/mutex-fallback.js';
|
||||||
import { PreferenceCommonService } from './preference-common.service';
|
import { PreferenceCommonService } from './preference-common.service.js';
|
||||||
import { PreferenceDefaultsService } from './preference-defaults.service';
|
import { PreferenceDefaultsService } from './preference-defaults.service.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SysPreferenceDbService {
|
export class SysPreferenceDbService {
|
||||||
|
|||||||
@@ -1,30 +1,30 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import {
|
import {
|
||||||
DecodedUsrPref,
|
DecodedUsrPref,
|
||||||
PrefValueType,
|
PrefValueType,
|
||||||
PrefValueTypeStrings,
|
PrefValueTypeStrings,
|
||||||
} from 'picsur-shared/dist/dto/preferences.dto';
|
} from 'picsur-shared/dist/dto/preferences.dto';
|
||||||
import {
|
import {
|
||||||
UsrPreference,
|
UsrPreference,
|
||||||
UsrPreferenceList,
|
UsrPreferenceList,
|
||||||
UsrPreferenceValidators,
|
UsrPreferenceValidators,
|
||||||
UsrPreferenceValueTypes,
|
UsrPreferenceValueTypes,
|
||||||
} from 'picsur-shared/dist/dto/usr-preferences.enum';
|
} from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import {
|
import {
|
||||||
EUsrPreferenceBackend,
|
EUsrPreferenceBackend,
|
||||||
EUsrPreferenceSchema,
|
EUsrPreferenceSchema,
|
||||||
} from '../../database/entities/system/usr-preference.entity';
|
} from '../../database/entities/system/usr-preference.entity.js';
|
||||||
import { MutexFallBack } from '../../util/mutex-fallback';
|
import { MutexFallBack } from '../../util/mutex-fallback.js';
|
||||||
import { PreferenceCommonService } from './preference-common.service';
|
import { PreferenceCommonService } from './preference-common.service.js';
|
||||||
import { PreferenceDefaultsService } from './preference-defaults.service';
|
import { PreferenceDefaultsService } from './preference-defaults.service.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UsrPreferenceDbService {
|
export class UsrPreferenceDbService {
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { EarlyConfigModule } from '../../config/early/early-config.module';
|
import { EarlyConfigModule } from '../../config/early/early-config.module.js';
|
||||||
import { HostConfigService } from '../../config/early/host.config.service';
|
import { HostConfigService } from '../../config/early/host.config.service.js';
|
||||||
import { ERoleBackend } from '../../database/entities/users/role.entity';
|
import { ERoleBackend } from '../../database/entities/users/role.entity.js';
|
||||||
import {
|
import {
|
||||||
ImmutableRolesList,
|
ImmutableRolesList,
|
||||||
SystemRoleDefaults,
|
SystemRoleDefaults,
|
||||||
SystemRolesList,
|
SystemRolesList,
|
||||||
} from '../../models/constants/roles.const';
|
} from '../../models/constants/roles.const.js';
|
||||||
import { RoleDbService } from './role-db.service';
|
import { RoleDbService } from './role-db.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [EarlyConfigModule, TypeOrmModule.forFeature([ERoleBackend])],
|
imports: [EarlyConfigModule, TypeOrmModule.forFeature([ERoleBackend])],
|
||||||
|
|||||||
@@ -2,21 +2,21 @@ import { Injectable, Logger } from '@nestjs/common';
|
|||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { ERoleSchema } from 'picsur-shared/dist/entities/role.entity';
|
import { ERoleSchema } from 'picsur-shared/dist/entities/role.entity';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
HasSuccess,
|
HasSuccess,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
||||||
import { In, Repository } from 'typeorm';
|
import { In, Repository } from 'typeorm';
|
||||||
import { ERoleBackend } from '../../database/entities/users/role.entity';
|
import { ERoleBackend } from '../../database/entities/users/role.entity.js';
|
||||||
import { Permissions } from '../../models/constants/permissions.const';
|
import { Permissions } from '../../models/constants/permissions.const.js';
|
||||||
import {
|
import {
|
||||||
ImmutableRolesList,
|
ImmutableRolesList,
|
||||||
RolePermissionsLocks,
|
RolePermissionsLocks,
|
||||||
UndeletableRolesList,
|
UndeletableRolesList,
|
||||||
} from '../../models/constants/roles.const';
|
} from '../../models/constants/roles.const.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class RoleDbService {
|
export class RoleDbService {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { ESystemStateBackend } from '../../database/entities/system/system-state.entity';
|
import { ESystemStateBackend } from '../../database/entities/system/system-state.entity.js';
|
||||||
import { SystemStateDbService } from './system-state-db.service';
|
import { SystemStateDbService } from './system-state-db.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [TypeOrmModule.forFeature([ESystemStateBackend])],
|
imports: [TypeOrmModule.forFeature([ESystemStateBackend])],
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common';
|
|||||||
import { InjectRepository } from '@nestjs/typeorm';
|
import { InjectRepository } from '@nestjs/typeorm';
|
||||||
import { AsyncFailable, Fail, FT } from 'picsur-shared/dist/types/failable';
|
import { AsyncFailable, Fail, FT } from 'picsur-shared/dist/types/failable';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { ESystemStateBackend } from '../../database/entities/system/system-state.entity';
|
import { ESystemStateBackend } from '../../database/entities/system/system-state.entity.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class SystemStateDbService {
|
export class SystemStateDbService {
|
||||||
|
|||||||
@@ -2,12 +2,12 @@ import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
|||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
import { generateRandomString } from 'picsur-shared/dist/util/random';
|
||||||
import { AuthConfigService } from '../../config/early/auth.config.service';
|
import { AuthConfigService } from '../../config/early/auth.config.service.js';
|
||||||
import { EarlyConfigModule } from '../../config/early/early-config.module';
|
import { EarlyConfigModule } from '../../config/early/early-config.module.js';
|
||||||
import { EUserBackend } from '../../database/entities/users/user.entity';
|
import { EUserBackend } from '../../database/entities/users/user.entity.js';
|
||||||
import { PreferenceDbModule } from '../preference-db/preference-db.module';
|
import { PreferenceDbModule } from '../preference-db/preference-db.module.js';
|
||||||
import { RoleDbModule } from '../role-db/role-db.module';
|
import { RoleDbModule } from '../role-db/role-db.module.js';
|
||||||
import { UserDbService } from './user-db.service';
|
import { UserDbService } from './user-db.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -3,29 +3,29 @@ import { InjectRepository } from '@nestjs/typeorm';
|
|||||||
import * as bcrypt from 'bcrypt';
|
import * as bcrypt from 'bcrypt';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
HasSuccess,
|
HasSuccess,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
||||||
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
||||||
import { Repository } from 'typeorm';
|
import { Repository } from 'typeorm';
|
||||||
import { EUserBackend } from '../../database/entities/users/user.entity';
|
import { EUserBackend } from '../../database/entities/users/user.entity.js';
|
||||||
import { Permissions } from '../../models/constants/permissions.const';
|
import { Permissions } from '../../models/constants/permissions.const.js';
|
||||||
import {
|
import {
|
||||||
DefaultRolesList,
|
DefaultRolesList,
|
||||||
SoulBoundRolesList,
|
SoulBoundRolesList,
|
||||||
} from '../../models/constants/roles.const';
|
} from '../../models/constants/roles.const.js';
|
||||||
import {
|
import {
|
||||||
ImmutableUsersList,
|
ImmutableUsersList,
|
||||||
LockedLoginUsersList,
|
LockedLoginUsersList,
|
||||||
UndeletableUsersList,
|
UndeletableUsersList,
|
||||||
} from '../../models/constants/special-users.const';
|
} from '../../models/constants/special-users.const.js';
|
||||||
import { GetCols } from '../../util/collection';
|
import { GetCols } from '../../util/collection.js';
|
||||||
import { SysPreferenceDbService } from '../preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../preference-db/sys-preference-db.service.js';
|
||||||
import { RoleDbService } from '../role-db/role-db.service';
|
import { RoleDbService } from '../role-db/role-db.service.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UserDbService {
|
export class UserDbService {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
||||||
import { EnvPrefix } from '../config.static';
|
import { EnvPrefix } from '../config.static.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AuthConfigService {
|
export class AuthConfigService {
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { ConfigModule } from '@nestjs/config';
|
import { ConfigModule } from '@nestjs/config';
|
||||||
import { AuthConfigService } from './auth.config.service';
|
import { AuthConfigService } from './auth.config.service.js';
|
||||||
import { EarlyJwtConfigService } from './early-jwt.config.service';
|
import { EarlyJwtConfigService } from './early-jwt.config.service.js';
|
||||||
import { HostConfigService } from './host.config.service';
|
import { HostConfigService } from './host.config.service.js';
|
||||||
import { MultipartConfigService } from './multipart.config.service';
|
import { MultipartConfigService } from './multipart.config.service.js';
|
||||||
import { RedisConfigService } from './redis.config.service';
|
import { RedisConfigService } from './redis.config.service.js';
|
||||||
import { ServeStaticConfigService } from './serve-static.config.service';
|
import { ServeStaticConfigService } from './serve-static.config.service.js';
|
||||||
import { TypeOrmConfigService } from './type-orm.config.service';
|
import { TypeOrmConfigService } from './type-orm.config.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
||||||
import { EnvPrefix } from '../config.static';
|
import { EnvPrefix } from '../config.static.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class EarlyJwtConfigService {
|
export class EarlyJwtConfigService {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import {
|
import {
|
||||||
ParseBool,
|
ParseBool,
|
||||||
ParseInt,
|
ParseInt,
|
||||||
ParseString,
|
ParseString,
|
||||||
} from 'picsur-shared/dist/util/parse-simple';
|
} from 'picsur-shared/dist/util/parse-simple';
|
||||||
import { EnvPrefix } from '../config.static';
|
import { EnvPrefix } from '../config.static.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class HostConfigService {
|
export class HostConfigService {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { ParseInt } from 'picsur-shared/dist/util/parse-simple';
|
import { ParseInt } from 'picsur-shared/dist/util/parse-simple';
|
||||||
import { EnvPrefix } from '../config.static';
|
import { EnvPrefix } from '../config.static.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MultipartConfigService {
|
export class MultipartConfigService {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
||||||
import { EnvPrefix } from '../config.static';
|
import { EnvPrefix } from '../config.static.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class RedisConfigService {
|
export class RedisConfigService {
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import {
|
import {
|
||||||
ServeStaticModuleOptions,
|
ServeStaticModuleOptions,
|
||||||
ServeStaticModuleOptionsFactory,
|
ServeStaticModuleOptionsFactory,
|
||||||
} from '@nestjs/serve-static';
|
} from '@nestjs/serve-static';
|
||||||
import { join } from 'path';
|
import { join } from 'path';
|
||||||
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
import { ParseString } from 'picsur-shared/dist/util/parse-simple';
|
||||||
import { EnvPrefix, PackageRoot } from '../config.static';
|
import { EnvPrefix, PackageRoot } from '../config.static.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ServeStaticConfigService
|
export class ServeStaticConfigService
|
||||||
|
|||||||
@@ -2,10 +2,10 @@ import { Injectable, Logger } from '@nestjs/common';
|
|||||||
import { ConfigService } from '@nestjs/config';
|
import { ConfigService } from '@nestjs/config';
|
||||||
import { TypeOrmModuleOptions, TypeOrmOptionsFactory } from '@nestjs/typeorm';
|
import { TypeOrmModuleOptions, TypeOrmOptionsFactory } from '@nestjs/typeorm';
|
||||||
import { ParseInt, ParseString } from 'picsur-shared/dist/util/parse-simple';
|
import { ParseInt, ParseString } from 'picsur-shared/dist/util/parse-simple';
|
||||||
import { EntityList } from '../../database/entities/index';
|
import { EntityList } from '../../database/entities/index.js';
|
||||||
import { MigrationList } from '../../database/migrations/index';
|
import { MigrationList } from '../../database/migrations/index.js';
|
||||||
import { DefaultName, EnvPrefix } from '../config.static';
|
import { DefaultName, EnvPrefix } from '../config.static.js';
|
||||||
import { HostConfigService } from './host.config.service';
|
import { HostConfigService } from './host.config.service.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class TypeOrmConfigService implements TypeOrmOptionsFactory {
|
export class TypeOrmConfigService implements TypeOrmOptionsFactory {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class InfoConfigService {
|
export class InfoConfigService {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { FactoryProvider, Injectable, Logger } from '@nestjs/common';
|
|||||||
import { JwtModuleOptions, JwtOptionsFactory } from '@nestjs/jwt';
|
import { JwtModuleOptions, JwtOptionsFactory } from '@nestjs/jwt';
|
||||||
import ms from 'ms';
|
import ms from 'ms';
|
||||||
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class JwtConfigService implements JwtOptionsFactory {
|
export class JwtConfigService implements JwtOptionsFactory {
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
||||||
import { PreferenceDbModule } from '../../collections/preference-db/preference-db.module';
|
import { PreferenceDbModule } from '../../collections/preference-db/preference-db.module.js';
|
||||||
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service.js';
|
||||||
import { EarlyConfigModule } from '../early/early-config.module';
|
import { EarlyConfigModule } from '../early/early-config.module.js';
|
||||||
import { EarlyJwtConfigService } from '../early/early-jwt.config.service';
|
import { EarlyJwtConfigService } from '../early/early-jwt.config.service.js';
|
||||||
import { InfoConfigService } from './info.config.service';
|
import { InfoConfigService } from './info.config.service.js';
|
||||||
import { JwtConfigService } from './jwt.config.service';
|
import { JwtConfigService } from './jwt.config.service.js';
|
||||||
import { UsageConfigService } from './usage.config.service';
|
import { UsageConfigService } from './usage.config.service.js';
|
||||||
|
|
||||||
// This module contains all configservices that depend on the syspref module
|
// This module contains all configservices that depend on the syspref module
|
||||||
// The syspref module can only be used when connected to the database
|
// The syspref module can only be used when connected to the database
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { URLRegex, UUIDRegex } from 'picsur-shared/dist/util/common-regex';
|
import { URLRegex, UUIDRegex } from 'picsur-shared/dist/util/common-regex';
|
||||||
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service.js';
|
||||||
import { ReportInterval, ReportUrl } from '../config.static';
|
import { ReportInterval, ReportUrl } from '../config.static.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class UsageConfigService {
|
export class UsageConfigService {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { TypeOrmModule } from '@nestjs/typeorm';
|
import { TypeOrmModule } from '@nestjs/typeorm';
|
||||||
import { EarlyConfigModule } from '../config/early/early-config.module';
|
import { EarlyConfigModule } from '../config/early/early-config.module.js';
|
||||||
import { TypeOrmConfigService } from '../config/early/type-orm.config.service';
|
import { TypeOrmConfigService } from '../config/early/type-orm.config.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import { EApiKeySchema } from 'picsur-shared/dist/entities/apikey.entity';
|
import { EApiKeySchema } from 'picsur-shared/dist/entities/apikey.entity';
|
||||||
import {
|
import {
|
||||||
Column,
|
Column,
|
||||||
Entity,
|
Entity,
|
||||||
Index,
|
Index,
|
||||||
ManyToOne,
|
ManyToOne,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import { EUserBackend } from './users/user.entity';
|
import { EUserBackend } from './users/user.entity.js';
|
||||||
|
|
||||||
const OverriddenEApiKeySchema = EApiKeySchema.omit({ user: true }).merge(
|
const OverriddenEApiKeySchema = EApiKeySchema.omit({ user: true }).merge(
|
||||||
z.object({
|
z.object({
|
||||||
|
|||||||
@@ -1,13 +1,13 @@
|
|||||||
import {
|
import {
|
||||||
Column,
|
Column,
|
||||||
Entity,
|
Entity,
|
||||||
Index,
|
Index,
|
||||||
JoinColumn,
|
JoinColumn,
|
||||||
ManyToOne,
|
ManyToOne,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
Unique,
|
Unique,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
import { EImageBackend } from './image.entity';
|
import { EImageBackend } from './image.entity.js';
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
@Unique(['image_id', 'key'])
|
@Unique(['image_id', 'key'])
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
||||||
import {
|
import {
|
||||||
Column,
|
Column,
|
||||||
Entity,
|
Entity,
|
||||||
Index,
|
Index,
|
||||||
JoinColumn,
|
JoinColumn,
|
||||||
ManyToOne,
|
ManyToOne,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
Unique,
|
Unique,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
import { EImageBackend } from './image.entity';
|
import { EImageBackend } from './image.entity.js';
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
@Unique(['image_id', 'variant'])
|
@Unique(['image_id', 'variant'])
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
import { EImage } from 'picsur-shared/dist/entities/image.entity';
|
||||||
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
|
import { Column, Entity, OneToMany, PrimaryGeneratedColumn } from 'typeorm';
|
||||||
import { EImageDerivativeBackend } from './image-derivative.entity';
|
import { EImageDerivativeBackend } from './image-derivative.entity.js';
|
||||||
import { EImageFileBackend } from './image-file.entity';
|
import { EImageFileBackend } from './image-file.entity.js';
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class EImageBackend implements EImage {
|
export class EImageBackend implements EImage {
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
import { EApiKeyBackend } from './apikey.entity';
|
import { EApiKeyBackend } from './apikey.entity.js';
|
||||||
import { EImageDerivativeBackend } from './images/image-derivative.entity';
|
import { EImageDerivativeBackend } from './images/image-derivative.entity.js';
|
||||||
import { EImageFileBackend } from './images/image-file.entity';
|
import { EImageFileBackend } from './images/image-file.entity.js';
|
||||||
import { EImageBackend } from './images/image.entity';
|
import { EImageBackend } from './images/image.entity.js';
|
||||||
import { ESysPreferenceBackend } from './system/sys-preference.entity';
|
import { ESysPreferenceBackend } from './system/sys-preference.entity.js';
|
||||||
import { ESystemStateBackend } from './system/system-state.entity';
|
import { ESystemStateBackend } from './system/system-state.entity.js';
|
||||||
import { EUsrPreferenceBackend } from './system/usr-preference.entity';
|
import { EUsrPreferenceBackend } from './system/usr-preference.entity.js';
|
||||||
import { ERoleBackend } from './users/role.entity';
|
import { ERoleBackend } from './users/role.entity.js';
|
||||||
import { EUserBackend } from './users/user.entity';
|
import { EUserBackend } from './users/user.entity.js';
|
||||||
|
|
||||||
export const EntityList = [
|
export const EntityList = [
|
||||||
EImageBackend,
|
EImageBackend,
|
||||||
|
|||||||
@@ -1,15 +1,15 @@
|
|||||||
import { IsEntityID } from 'picsur-shared/dist/validators/entity-id.validator';
|
import { IsEntityID } from 'picsur-shared/dist/validators/entity-id.validator';
|
||||||
import {
|
import {
|
||||||
Column,
|
Column,
|
||||||
Entity,
|
Entity,
|
||||||
Index,
|
Index,
|
||||||
JoinColumn,
|
JoinColumn,
|
||||||
ManyToOne,
|
ManyToOne,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
Unique,
|
Unique,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
import * as z from 'zod';
|
import * as z from 'zod';
|
||||||
import { EUserBackend } from '../users/user.entity';
|
import { EUserBackend } from '../users/user.entity.js';
|
||||||
|
|
||||||
export const EUsrPreferenceSchema = z.object({
|
export const EUsrPreferenceSchema = z.object({
|
||||||
id: IsEntityID().optional(),
|
id: IsEntityID().optional(),
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
import { ERole } from 'picsur-shared/dist/entities/role.entity';
|
||||||
import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm';
|
import { Column, Entity, Index, PrimaryGeneratedColumn } from 'typeorm';
|
||||||
import type { Permissions } from '../../../models/constants/permissions.const';
|
import type { Permissions } from '../../../models/constants/permissions.const.js';
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class ERoleBackend implements ERole {
|
export class ERoleBackend implements ERole {
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import { EUserSchema } from 'picsur-shared/dist/entities/user.entity';
|
import { EUserSchema } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import {
|
import {
|
||||||
Column,
|
Column,
|
||||||
Entity,
|
Entity,
|
||||||
Index,
|
Index,
|
||||||
OneToMany,
|
OneToMany,
|
||||||
PrimaryGeneratedColumn,
|
PrimaryGeneratedColumn,
|
||||||
} from 'typeorm';
|
} from 'typeorm';
|
||||||
import { z } from 'zod';
|
import { z } from 'zod';
|
||||||
import { EApiKeyBackend } from '../apikey.entity';
|
import { EApiKeyBackend } from '../apikey.entity.js';
|
||||||
import { EUsrPreferenceBackend } from '../system/usr-preference.entity';
|
import { EUsrPreferenceBackend } from '../system/usr-preference.entity.js';
|
||||||
|
|
||||||
// Different data for public and private
|
// Different data for public and private
|
||||||
const OverriddenEUserSchema = EUserSchema.omit({ hashedPassword: true }).merge(
|
const OverriddenEUserSchema = EUserSchema.omit({ hashedPassword: true }).merge(
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
|
import { Newable } from 'picsur-shared/dist/types/newable';
|
||||||
import { MigrationInterface } from 'typeorm';
|
import { MigrationInterface } from 'typeorm';
|
||||||
import { V030A1661692206479 } from './1661692206479-V_0_3_0_a';
|
import { V030A1661692206479 } from './1661692206479-V_0_3_0_a.js';
|
||||||
import { V032A1662029904716 } from './1662029904716-V_0_3_2_a';
|
import { V032A1662029904716 } from './1662029904716-V_0_3_2_a.js';
|
||||||
import { V040A1662314197741 } from './1662314197741-V_0_4_0_a';
|
import { V040A1662314197741 } from './1662314197741-V_0_4_0_a.js';
|
||||||
import { V040B1662485374471 } from './1662485374471-V_0_4_0_b';
|
import { V040B1662485374471 } from './1662485374471-V_0_4_0_b.js';
|
||||||
import { V040C1662535484200 } from './1662535484200-V_0_4_0_c';
|
import { V040C1662535484200 } from './1662535484200-V_0_4_0_c.js';
|
||||||
import { V040D1662728275448 } from './1662728275448-V_0_4_0_d';
|
import { V040D1662728275448 } from './1662728275448-V_0_4_0_d.js';
|
||||||
import { V050A1672154027079 } from './1672154027079-V_0_5_0_a';
|
import { V050A1672154027079 } from './1672154027079-V_0_5_0_a.js';
|
||||||
import { Newable } from 'picsur-shared/dist/types/newable.js';
|
|
||||||
|
|
||||||
export const MigrationList: Newable<MigrationInterface>[] = [
|
export const MigrationList: Newable<MigrationInterface>[] = [
|
||||||
V030A1661692206479,
|
V030A1661692206479,
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { NestFactory } from '@nestjs/core';
|
import { NestFactory } from '@nestjs/core';
|
||||||
import {
|
import {
|
||||||
FastifyAdapter,
|
FastifyAdapter,
|
||||||
NestFastifyApplication,
|
NestFastifyApplication,
|
||||||
} from '@nestjs/platform-fastify';
|
} from '@nestjs/platform-fastify';
|
||||||
import { DataSource } from 'typeorm';
|
import { DataSource } from 'typeorm';
|
||||||
import { TypeOrmConfigService } from './config/early/type-orm.config.service';
|
import { TypeOrmConfigService } from './config/early/type-orm.config.service.js';
|
||||||
import { DatabaseModule } from './database/database.module';
|
import { DatabaseModule } from './database/database.module.js';
|
||||||
|
|
||||||
async function createDataSource() {
|
async function createDataSource() {
|
||||||
// Create nest app
|
// Create nest app
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { EarlyConfigModule } from '../config/early/early-config.module';
|
import { EarlyConfigModule } from '../config/early/early-config.module.js';
|
||||||
import { ImageIdPipe } from './image-id/image-id.pipe';
|
import { ImageIdPipe } from './image-id/image-id.pipe.js';
|
||||||
import { PostFilePipe } from './multipart/postfile.pipe';
|
import { PostFilePipe } from './multipart/postfile.pipe.js';
|
||||||
import { MultiPartPipe } from './multipart/postfiles.pipe';
|
import { MultiPartPipe } from './multipart/postfiles.pipe.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [EarlyConfigModule],
|
imports: [EarlyConfigModule],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Param, PipeTransform, Type } from '@nestjs/common';
|
import { Param, PipeTransform, Type } from '@nestjs/common';
|
||||||
import { ImageFullIdPipe } from './image-full-id.pipe';
|
import { ImageFullIdPipe } from './image-full-id.pipe.js';
|
||||||
|
|
||||||
export const ImageFullIdParam = (
|
export const ImageFullIdParam = (
|
||||||
...pipes: (PipeTransform<any, any> | Type<PipeTransform<any, any>>)[]
|
...pipes: (PipeTransform<any, any> | Type<PipeTransform<any, any>>)[]
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Injectable, PipeTransform } from '@nestjs/common';
|
|||||||
import { Ext2FileType } from 'picsur-shared/dist/dto/mimes.dto';
|
import { Ext2FileType } from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { FT, Fail, HasFailed } from 'picsur-shared/dist/types/failable';
|
import { FT, Fail, HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UUIDRegex } from 'picsur-shared/dist/util/common-regex';
|
import { UUIDRegex } from 'picsur-shared/dist/util/common-regex';
|
||||||
import { ImageFullId } from '../../models/constants/image-full-id.const';
|
import { ImageFullId } from '../../models/constants/image-full-id.const.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ImageFullIdPipe implements PipeTransform<string, ImageFullId> {
|
export class ImageFullIdPipe implements PipeTransform<string, ImageFullId> {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Param, PipeTransform, Type } from '@nestjs/common';
|
import { Param, PipeTransform, Type } from '@nestjs/common';
|
||||||
import { ImageIdPipe } from './image-id.pipe';
|
import { ImageIdPipe } from './image-id.pipe.js';
|
||||||
|
|
||||||
export const ImageIdParam = (
|
export const ImageIdParam = (
|
||||||
...pipes: (PipeTransform<any, any> | Type<PipeTransform<any, any>>)[]
|
...pipes: (PipeTransform<any, any> | Type<PipeTransform<any, any>>)[]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { InjectRequest } from './inject-request.decorator';
|
import { InjectRequest } from './inject-request.decorator.js';
|
||||||
import { PostFilePipe } from './postfile.pipe';
|
import { PostFilePipe } from './postfile.pipe.js';
|
||||||
import { MultiPartPipe } from './postfiles.pipe';
|
import { MultiPartPipe } from './postfiles.pipe.js';
|
||||||
|
|
||||||
export const PostFile = () => InjectRequest(PostFilePipe);
|
export const PostFile = () => InjectRequest(PostFilePipe);
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { Multipart, MultipartFile } from '@fastify/multipart';
|
|||||||
import { Injectable, Logger, PipeTransform, Scope } from '@nestjs/common';
|
import { Injectable, Logger, PipeTransform, Scope } from '@nestjs/common';
|
||||||
import { FastifyRequest } from 'fastify';
|
import { FastifyRequest } from 'fastify';
|
||||||
import { Fail, FT } from 'picsur-shared/dist/types/failable';
|
import { Fail, FT } from 'picsur-shared/dist/types/failable';
|
||||||
import { MultipartConfigService } from '../../config/early/multipart.config.service';
|
import { MultipartConfigService } from '../../config/early/multipart.config.service.js';
|
||||||
|
|
||||||
@Injectable({ scope: Scope.REQUEST })
|
@Injectable({ scope: Scope.REQUEST })
|
||||||
export class PostFilePipe implements PipeTransform {
|
export class PostFilePipe implements PipeTransform {
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { MultipartFile } from '@fastify/multipart';
|
|||||||
import { Injectable, Logger, PipeTransform, Scope } from '@nestjs/common';
|
import { Injectable, Logger, PipeTransform, Scope } from '@nestjs/common';
|
||||||
import { FastifyRequest } from 'fastify';
|
import { FastifyRequest } from 'fastify';
|
||||||
import { FT, Fail } from 'picsur-shared/dist/types/failable';
|
import { FT, Fail } from 'picsur-shared/dist/types/failable';
|
||||||
import { MultipartConfigService } from '../../config/early/multipart.config.service';
|
import { MultipartConfigService } from '../../config/early/multipart.config.service.js';
|
||||||
|
|
||||||
export type FileIterator = AsyncIterableIterator<MultipartFile>;
|
export type FileIterator = AsyncIterableIterator<MultipartFile>;
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +1,14 @@
|
|||||||
import {
|
import {
|
||||||
createParamDecorator,
|
createParamDecorator,
|
||||||
ExecutionContext,
|
ExecutionContext,
|
||||||
SetMetadata,
|
SetMetadata,
|
||||||
UseGuards,
|
UseGuards,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import { Fail, FT } from 'picsur-shared/dist/types/failable';
|
import { Fail, FT } from 'picsur-shared/dist/types/failable';
|
||||||
import { CombineFCDecorators } from 'picsur-shared/dist/util/decorator';
|
import { CombineFCDecorators } from 'picsur-shared/dist/util/decorator';
|
||||||
import { LocalAuthGuard } from '../managers/auth/guards/local-auth.guard';
|
import { LocalAuthGuard } from '../managers/auth/guards/local-auth.guard.js';
|
||||||
import { Permission, Permissions } from '../models/constants/permissions.const';
|
import { Permission, Permissions } from '../models/constants/permissions.const.js';
|
||||||
import AuthFastifyRequest from '../models/interfaces/authrequest.dto';
|
import AuthFastifyRequest from '../models/interfaces/authrequest.dto.js';
|
||||||
|
|
||||||
export const RequiredPermissions = (...permissions: Permissions) => {
|
export const RequiredPermissions = (...permissions: Permissions) => {
|
||||||
return SetMetadata('permissions', permissions);
|
return SetMetadata('permissions', permissions);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
|
import { createParamDecorator, ExecutionContext } from '@nestjs/common';
|
||||||
import { Fail, FT } from 'picsur-shared/dist/types/failable';
|
import { Fail, FT } from 'picsur-shared/dist/types/failable';
|
||||||
import AuthFastifyRequest from '../models/interfaces/authrequest.dto';
|
import AuthFastifyRequest from '../models/interfaces/authrequest.dto.js';
|
||||||
|
|
||||||
export const ReqUser = createParamDecorator(
|
export const ReqUser = createParamDecorator(
|
||||||
(input: any, ctx: ExecutionContext) => {
|
(input: any, ctx: ExecutionContext) => {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { ThrottlerModule } from '@nestjs/throttler';
|
import { ThrottlerModule } from '@nestjs/throttler';
|
||||||
import { MainExceptionFilter } from './exception/exception.filter';
|
import { MainExceptionFilter } from './exception/exception.filter.js';
|
||||||
import { SuccessInterceptor } from './success/success.interceptor';
|
import { SuccessInterceptor } from './success/success.interceptor.js';
|
||||||
import { PicsurThrottlerGuard } from './throttler/PicsurThrottler.guard';
|
import { PicsurThrottlerGuard } from './throttler/PicsurThrottler.guard.js';
|
||||||
import { ZodValidationPipe } from './validate/zod-validator.pipe';
|
import { ZodValidationPipe } from './validate/zod-validator.pipe.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { EarlyConfigModule } from '../config/early/early-config.module';
|
import { EarlyConfigModule } from '../config/early/early-config.module.js';
|
||||||
import { PicsurLoggerService } from './logger.service';
|
import { PicsurLoggerService } from './logger.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [EarlyConfigModule],
|
imports: [EarlyConfigModule],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { ConsoleLogger, Injectable, Scope } from '@nestjs/common';
|
import { ConsoleLogger, Injectable, Scope } from '@nestjs/common';
|
||||||
import { HostConfigService } from '../config/early/host.config.service';
|
import { HostConfigService } from '../config/early/host.config.service.js';
|
||||||
|
|
||||||
@Injectable({ scope: Scope.DEFAULT })
|
@Injectable({ scope: Scope.DEFAULT })
|
||||||
export class PicsurLoggerService extends ConsoleLogger {
|
export class PicsurLoggerService extends ConsoleLogger {
|
||||||
|
|||||||
@@ -3,18 +3,18 @@ import multipart from '@fastify/multipart';
|
|||||||
import fastifyReplyFrom from '@fastify/reply-from';
|
import fastifyReplyFrom from '@fastify/reply-from';
|
||||||
import { NestFactory } from '@nestjs/core';
|
import { NestFactory } from '@nestjs/core';
|
||||||
import {
|
import {
|
||||||
FastifyAdapter,
|
FastifyAdapter,
|
||||||
NestFastifyApplication,
|
NestFastifyApplication,
|
||||||
} from '@nestjs/platform-fastify';
|
} from '@nestjs/platform-fastify';
|
||||||
import { AppModule } from './app.module';
|
import { AppModule } from './app.module.js';
|
||||||
import { HostConfigService } from './config/early/host.config.service';
|
import { HostConfigService } from './config/early/host.config.service.js';
|
||||||
import { MainExceptionFilter } from './layers/exception/exception.filter';
|
import { MainExceptionFilter } from './layers/exception/exception.filter.js';
|
||||||
import { SuccessInterceptor } from './layers/success/success.interceptor';
|
import { SuccessInterceptor } from './layers/success/success.interceptor.js';
|
||||||
import { PicsurThrottlerGuard } from './layers/throttler/PicsurThrottler.guard';
|
import { PicsurThrottlerGuard } from './layers/throttler/PicsurThrottler.guard.js';
|
||||||
import { ZodValidationPipe } from './layers/validate/zod-validator.pipe';
|
import { ZodValidationPipe } from './layers/validate/zod-validator.pipe.js';
|
||||||
import { PicsurLoggerService } from './logger/logger.service';
|
import { PicsurLoggerService } from './logger/logger.service.js';
|
||||||
import { MainAuthGuard } from './managers/auth/guards/main.guard';
|
import { MainAuthGuard } from './managers/auth/guards/main.guard.js';
|
||||||
import { HelmetOptions } from './security';
|
import { HelmetOptions } from './security.js';
|
||||||
|
|
||||||
async function bootstrap() {
|
async function bootstrap() {
|
||||||
const isProduction = process.env['PICSUR_PRODUCTION'] !== undefined;
|
const isProduction = process.env['PICSUR_PRODUCTION'] !== undefined;
|
||||||
|
|||||||
@@ -1,22 +1,22 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { JwtModule } from '@nestjs/jwt';
|
import { JwtModule } from '@nestjs/jwt';
|
||||||
import { PassportModule } from '@nestjs/passport';
|
import { PassportModule } from '@nestjs/passport';
|
||||||
import { ApiKeyDbModule } from '../../collections/apikey-db/apikey-db.module';
|
import { ApiKeyDbModule } from '../../collections/apikey-db/apikey-db.module.js';
|
||||||
import { PreferenceDbModule } from '../../collections/preference-db/preference-db.module';
|
import { PreferenceDbModule } from '../../collections/preference-db/preference-db.module.js';
|
||||||
import { UserDbModule } from '../../collections/user-db/user-db.module';
|
import { UserDbModule } from '../../collections/user-db/user-db.module.js';
|
||||||
import {
|
import {
|
||||||
JwtConfigService,
|
JwtConfigService,
|
||||||
JwtSecretProvider,
|
JwtSecretProvider,
|
||||||
} from '../../config/late/jwt.config.service';
|
} from '../../config/late/jwt.config.service.js';
|
||||||
import { LateConfigModule } from '../../config/late/late-config.module';
|
import { LateConfigModule } from '../../config/late/late-config.module.js';
|
||||||
import { AuthManagerService } from './auth.service';
|
import { AuthManagerService } from './auth.service.js';
|
||||||
import { ApiKeyStrategy } from './guards/apikey.strategy';
|
import { ApiKeyStrategy } from './guards/apikey.strategy.js';
|
||||||
import { GuestStrategy } from './guards/guest.strategy';
|
import { GuestStrategy } from './guards/guest.strategy.js';
|
||||||
import { JwtStrategy } from './guards/jwt.strategy';
|
import { JwtStrategy } from './guards/jwt.strategy.js';
|
||||||
import { LocalAuthGuard } from './guards/local-auth.guard';
|
import { LocalAuthGuard } from './guards/local-auth.guard.js';
|
||||||
import { LocalAuthStrategy } from './guards/local-auth.strategy';
|
import { LocalAuthStrategy } from './guards/local-auth.strategy.js';
|
||||||
import { MainAuthGuard } from './guards/main.guard';
|
import { MainAuthGuard } from './guards/main.guard.js';
|
||||||
import { GuestService } from './guest.service';
|
import { GuestService } from './guest.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { HeaderAPIKeyStrategy } from 'passport-headerapikey';
|
|||||||
import { EUser, EUserSchema } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser, EUserSchema } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { IsApiKey } from 'picsur-shared/dist/validators/api-key.validator';
|
import { IsApiKey } from 'picsur-shared/dist/validators/api-key.validator';
|
||||||
import { ApiKeyDbService } from '../../../collections/apikey-db/apikey-db.service';
|
import { ApiKeyDbService } from '../../../collections/apikey-db/apikey-db.service.js';
|
||||||
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ApiKeyStrategy extends PassportStrategy(
|
export class ApiKeyStrategy extends PassportStrategy(
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import { PassportStrategy } from '@nestjs/passport';
|
|||||||
import { FastifyRequest } from 'fastify';
|
import { FastifyRequest } from 'fastify';
|
||||||
import { Strategy } from 'passport-strategy';
|
import { Strategy } from 'passport-strategy';
|
||||||
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer.js';
|
||||||
import { GuestService } from '../guest.service';
|
import { GuestService } from '../guest.service.js';
|
||||||
|
|
||||||
class GuestPassportStrategy extends Strategy {
|
class GuestPassportStrategy extends Strategy {
|
||||||
// Will be overridden by the nest implementation
|
// Will be overridden by the nest implementation
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ import { ExtractJwt, Strategy as JwtPassportStrategy } from 'passport-jwt';
|
|||||||
import { JwtDataSchema } from 'picsur-shared/dist/dto/jwt.dto';
|
import { JwtDataSchema } from 'picsur-shared/dist/dto/jwt.dto';
|
||||||
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UserDbService } from '../../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../../collections/user-db/user-db.service.js';
|
||||||
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class JwtStrategy extends PassportStrategy(JwtPassportStrategy, 'jwt') {
|
export class JwtStrategy extends PassportStrategy(JwtPassportStrategy, 'jwt') {
|
||||||
|
|||||||
@@ -3,11 +3,11 @@ import { PassportStrategy } from '@nestjs/passport';
|
|||||||
import { Strategy } from 'passport-local';
|
import { Strategy } from 'passport-local';
|
||||||
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
ThrowIfFailed,
|
ThrowIfFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { UserDbService } from '../../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../../collections/user-db/user-db.service.js';
|
||||||
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LocalAuthStrategy extends PassportStrategy(Strategy, 'local') {
|
export class LocalAuthStrategy extends PassportStrategy(Strategy, 'local') {
|
||||||
|
|||||||
@@ -3,17 +3,17 @@ import { Reflector } from '@nestjs/core';
|
|||||||
import { AuthGuard } from '@nestjs/passport';
|
import { AuthGuard } from '@nestjs/passport';
|
||||||
import { EUser, EUserSchema } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser, EUserSchema } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
FT,
|
FT,
|
||||||
Fail,
|
Fail,
|
||||||
Failable,
|
Failable,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
ThrowIfFailed,
|
ThrowIfFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
import { makeUnique } from 'picsur-shared/dist/util/unique';
|
||||||
import { UserDbService } from '../../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../../collections/user-db/user-db.service.js';
|
||||||
import { Permissions } from '../../../models/constants/permissions.const';
|
import { Permissions } from '../../../models/constants/permissions.const.js';
|
||||||
import { isPermissionsArray } from '../../../models/validators/permissions.validator';
|
import { isPermissionsArray } from '../../../models/validators/permissions.validator.js';
|
||||||
|
|
||||||
// This guard extends both the jwt authenticator and the guest authenticator
|
// This guard extends both the jwt authenticator and the guest authenticator
|
||||||
// The order matters here, because this results in the guest authenticator being used as a fallback
|
// The order matters here, because this results in the guest authenticator being used as a fallback
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UserDbService } from '../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../collections/user-db/user-db.service.js';
|
||||||
import { EUserBackend } from '../../database/entities/users/user.entity';
|
import { EUserBackend } from '../../database/entities/users/user.entity.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class GuestService {
|
export class GuestService {
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
||||||
import { SchedulerRegistry } from '@nestjs/schedule';
|
import { SchedulerRegistry } from '@nestjs/schedule';
|
||||||
import { ImageDBModule } from '../../collections/image-db/image-db.module';
|
import { ImageDBModule } from '../../collections/image-db/image-db.module.js';
|
||||||
import { RoleDbModule } from '../../collections/role-db/role-db.module';
|
import { RoleDbModule } from '../../collections/role-db/role-db.module.js';
|
||||||
import { EarlyConfigModule } from '../../config/early/early-config.module';
|
import { EarlyConfigModule } from '../../config/early/early-config.module.js';
|
||||||
import { HostConfigService } from '../../config/early/host.config.service';
|
import { HostConfigService } from '../../config/early/host.config.service.js';
|
||||||
import { DemoManagerService } from './demo.service';
|
import { DemoManagerService } from './demo.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ImageDBModule, EarlyConfigModule, RoleDbModule],
|
imports: [ImageDBModule, EarlyConfigModule, RoleDbModule],
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Injectable, Logger } from '@nestjs/common';
|
import { Injectable, Logger } from '@nestjs/common';
|
||||||
import { ImageDBService } from '../../collections/image-db/image-db.service';
|
import { ImageDBService } from '../../collections/image-db/image-db.service.js';
|
||||||
import { RoleDbService } from '../../collections/role-db/role-db.service';
|
import { RoleDbService } from '../../collections/role-db/role-db.service.js';
|
||||||
import { Permission } from '../../models/constants/permissions.const';
|
import { Permission } from '../../models/constants/permissions.const.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class DemoManagerService {
|
export class DemoManagerService {
|
||||||
|
|||||||
@@ -2,20 +2,20 @@ import { Injectable } from '@nestjs/common';
|
|||||||
import ms from 'ms';
|
import ms from 'ms';
|
||||||
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
||||||
import {
|
import {
|
||||||
FileType,
|
FileType,
|
||||||
SupportedFileTypeCategory,
|
SupportedFileTypeCategory,
|
||||||
} from 'picsur-shared/dist/dto/mimes.dto';
|
} from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { SharpOptions } from 'sharp';
|
import { SharpOptions } from 'sharp';
|
||||||
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service.js';
|
||||||
import { SharpWrapper } from '../../workers/sharp.wrapper';
|
import { SharpWrapper } from '../../workers/sharp.wrapper.js';
|
||||||
import { ImageResult } from './imageresult';
|
import { ImageResult } from './imageresult.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ImageConverterService {
|
export class ImageConverterService {
|
||||||
|
|||||||
@@ -3,14 +3,14 @@ import { Interval } from '@nestjs/schedule';
|
|||||||
import ms from 'ms';
|
import ms from 'ms';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
import { HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { ImageDBModule } from '../../collections/image-db/image-db.module';
|
import { ImageDBModule } from '../../collections/image-db/image-db.module.js';
|
||||||
import { ImageDBService } from '../../collections/image-db/image-db.service';
|
import { ImageDBService } from '../../collections/image-db/image-db.service.js';
|
||||||
import { ImageFileDBService } from '../../collections/image-db/image-file-db.service';
|
import { ImageFileDBService } from '../../collections/image-db/image-file-db.service.js';
|
||||||
import { PreferenceDbModule } from '../../collections/preference-db/preference-db.module';
|
import { PreferenceDbModule } from '../../collections/preference-db/preference-db.module.js';
|
||||||
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service.js';
|
||||||
import { ImageConverterService } from './image-converter.service';
|
import { ImageConverterService } from './image-converter.service.js';
|
||||||
import { ImageProcessorService } from './image-processor.service';
|
import { ImageProcessorService } from './image-processor.service.js';
|
||||||
import { ImageManagerService } from './image.service';
|
import { ImageManagerService } from './image.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ImageDBModule, PreferenceDbModule],
|
imports: [ImageDBModule, PreferenceDbModule],
|
||||||
|
|||||||
@@ -1,19 +1,19 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
FileType,
|
FileType,
|
||||||
ImageFileType,
|
ImageFileType,
|
||||||
SupportedFileTypeCategory,
|
SupportedFileTypeCategory,
|
||||||
} from 'picsur-shared/dist/dto/mimes.dto';
|
} from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { ParseFileType } from 'picsur-shared/dist/util/parse-mime';
|
import { ParseFileType } from 'picsur-shared/dist/util/parse-mime';
|
||||||
import { ImageConverterService } from './image-converter.service';
|
import { ImageConverterService } from './image-converter.service.js';
|
||||||
import { ImageResult } from './imageresult';
|
import { ImageResult } from './imageresult.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ImageProcessorService {
|
export class ImageProcessorService {
|
||||||
|
|||||||
@@ -4,33 +4,33 @@ import { fileTypeFromBuffer, FileTypeResult } from 'file-type';
|
|||||||
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
import { ImageRequestParams } from 'picsur-shared/dist/dto/api/image.dto';
|
||||||
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
||||||
import {
|
import {
|
||||||
AnimFileType,
|
AnimFileType,
|
||||||
FileType,
|
FileType,
|
||||||
ImageFileType,
|
ImageFileType,
|
||||||
Mime2FileType,
|
Mime2FileType,
|
||||||
} from 'picsur-shared/dist/dto/mimes.dto';
|
} from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
import { SysPreference } from 'picsur-shared/dist/dto/sys-preferences.enum';
|
||||||
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
import { UsrPreference } from 'picsur-shared/dist/dto/usr-preferences.enum';
|
||||||
import {
|
import {
|
||||||
AsyncFailable,
|
AsyncFailable,
|
||||||
Fail,
|
Fail,
|
||||||
FT,
|
FT,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
import { FindResult } from 'picsur-shared/dist/types/find-result';
|
||||||
import { ParseFileType } from 'picsur-shared/dist/util/parse-mime';
|
import { ParseFileType } from 'picsur-shared/dist/util/parse-mime';
|
||||||
import { IsQOI } from 'qoi-img';
|
import { IsQOI } from 'qoi-img';
|
||||||
import { ImageDBService } from '../../collections/image-db/image-db.service';
|
import { ImageDBService } from '../../collections/image-db/image-db.service.js';
|
||||||
import { ImageFileDBService } from '../../collections/image-db/image-file-db.service';
|
import { ImageFileDBService } from '../../collections/image-db/image-file-db.service.js';
|
||||||
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../collections/preference-db/sys-preference-db.service.js';
|
||||||
import { UsrPreferenceDbService } from '../../collections/preference-db/usr-preference-db.service';
|
import { UsrPreferenceDbService } from '../../collections/preference-db/usr-preference-db.service.js';
|
||||||
import { EImageDerivativeBackend } from '../../database/entities/images/image-derivative.entity';
|
import { EImageDerivativeBackend } from '../../database/entities/images/image-derivative.entity.js';
|
||||||
import { EImageFileBackend } from '../../database/entities/images/image-file.entity';
|
import { EImageFileBackend } from '../../database/entities/images/image-file.entity.js';
|
||||||
import { EImageBackend } from '../../database/entities/images/image.entity';
|
import { EImageBackend } from '../../database/entities/images/image.entity.js';
|
||||||
import { MutexFallBack } from '../../util/mutex-fallback';
|
import { MutexFallBack } from '../../util/mutex-fallback.js';
|
||||||
import { ImageConverterService } from './image-converter.service';
|
import { ImageConverterService } from './image-converter.service.js';
|
||||||
import { ImageProcessorService } from './image-processor.service';
|
import { ImageProcessorService } from './image-processor.service.js';
|
||||||
import { WebPInfo } from './webpinfo/webpinfo';
|
import { WebPInfo } from './webpinfo/webpinfo.js';
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class ImageManagerService {
|
export class ImageManagerService {
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
import thunks from 'thunks';
|
import thunks from 'thunks';
|
||||||
|
|
||||||
import { StreamParserWritable } from './stream-parser';
|
import { StreamParserWritable } from './stream-parser.js';
|
||||||
|
|
||||||
const { thunk } = thunks;
|
const { thunk } = thunks;
|
||||||
|
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
import { Logger, Module, OnModuleInit } from '@nestjs/common';
|
||||||
import { SchedulerRegistry } from '@nestjs/schedule';
|
import { SchedulerRegistry } from '@nestjs/schedule';
|
||||||
import { ImageDBModule } from '../../collections/image-db/image-db.module';
|
import { ImageDBModule } from '../../collections/image-db/image-db.module.js';
|
||||||
import { SystemStateDbModule } from '../../collections/system-state-db/system-state-db.module';
|
import { SystemStateDbModule } from '../../collections/system-state-db/system-state-db.module.js';
|
||||||
import { UserDbModule } from '../../collections/user-db/user-db.module';
|
import { UserDbModule } from '../../collections/user-db/user-db.module.js';
|
||||||
import { LateConfigModule } from '../../config/late/late-config.module';
|
import { LateConfigModule } from '../../config/late/late-config.module.js';
|
||||||
import { UsageConfigService } from '../../config/late/usage.config.service';
|
import { UsageConfigService } from '../../config/late/usage.config.service.js';
|
||||||
import { UsageService } from './usage.service';
|
import { UsageService } from './usage.service.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [LateConfigModule, SystemStateDbModule, ImageDBModule, UserDbModule],
|
imports: [LateConfigModule, SystemStateDbModule, ImageDBModule, UserDbModule],
|
||||||
|
|||||||
@@ -4,11 +4,11 @@ import fetch from 'node-fetch';
|
|||||||
import * as os from 'os';
|
import * as os from 'os';
|
||||||
import { FallbackIfFailed, HasFailed } from 'picsur-shared/dist/types/failable';
|
import { FallbackIfFailed, HasFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UUIDRegex } from 'picsur-shared/dist/util/common-regex';
|
import { UUIDRegex } from 'picsur-shared/dist/util/common-regex';
|
||||||
import { ImageDBService } from '../../collections/image-db/image-db.service';
|
import { ImageDBService } from '../../collections/image-db/image-db.service.js';
|
||||||
import { SystemStateDbService } from '../../collections/system-state-db/system-state-db.service';
|
import { SystemStateDbService } from '../../collections/system-state-db/system-state-db.service.js';
|
||||||
import { UserDbService } from '../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../collections/user-db/user-db.service.js';
|
||||||
import { HostConfigService } from '../../config/early/host.config.service';
|
import { HostConfigService } from '../../config/early/host.config.service.js';
|
||||||
import { UsageConfigService } from '../../config/late/usage.config.service';
|
import { UsageConfigService } from '../../config/late/usage.config.service.js';
|
||||||
|
|
||||||
interface UsageData {
|
interface UsageData {
|
||||||
id?: string;
|
id?: string;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import tuple from 'picsur-shared/dist/types/tuple';
|
import tuple from 'picsur-shared/dist/types/tuple';
|
||||||
import { Permission, Permissions, PermissionsList } from './permissions.const';
|
import { Permission, Permissions, PermissionsList } from './permissions.const.js';
|
||||||
|
|
||||||
// Config
|
// Config
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { FastifyRequest } from 'fastify';
|
import { FastifyRequest } from 'fastify';
|
||||||
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import { Permissions } from '../constants/permissions.const';
|
import { Permissions } from '../constants/permissions.const.js';
|
||||||
|
|
||||||
// Add typing to FastifyRequest to make using the user object easier
|
// Add typing to FastifyRequest to make using the user object easier
|
||||||
export default interface AuthFastifyRequest extends FastifyRequest {
|
export default interface AuthFastifyRequest extends FastifyRequest {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import { EUserBackend } from '../../database/entities/users/user.entity';
|
import { EUserBackend } from '../../database/entities/users/user.entity.js';
|
||||||
|
|
||||||
export function EUserBackend2EUser(eUser: EUserBackend): EUser {
|
export function EUserBackend2EUser(eUser: EUserBackend): EUser {
|
||||||
if (eUser.hashed_password === undefined) return eUser as EUser;
|
if (eUser.hashed_password === undefined) return eUser as EUser;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { isPermissionsArray as isPArr } from 'picsur-shared/dist/validators/permissions.validator';
|
import { isPermissionsArray as isPArr } from 'picsur-shared/dist/validators/permissions.validator';
|
||||||
import { Permissions, PermissionsList } from '../constants/permissions.const';
|
import { Permissions, PermissionsList } from '../constants/permissions.const.js';
|
||||||
|
|
||||||
export function isPermissionsArray(value: any): value is Permissions {
|
export function isPermissionsArray(value: any): value is Permissions {
|
||||||
return isPArr(value, PermissionsList);
|
return isPArr(value, PermissionsList);
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { ApiKeysModule } from './apikeys/apikeys.module';
|
import { ApiKeysModule } from './apikeys/apikeys.module.js';
|
||||||
import { ExperimentModule } from './experiment/experiment.module';
|
import { ExperimentModule } from './experiment/experiment.module.js';
|
||||||
import { InfoModule } from './info/info.module';
|
import { InfoModule } from './info/info.module.js';
|
||||||
import { PrefModule } from './pref/pref.module';
|
import { PrefModule } from './pref/pref.module.js';
|
||||||
import { RolesApiModule } from './roles/roles.module';
|
import { RolesApiModule } from './roles/roles.module.js';
|
||||||
import { UsageApiModule } from './usage/usage.module';
|
import { UsageApiModule } from './usage/usage.module.js';
|
||||||
import { UserApiModule } from './user/user.module';
|
import { UserApiModule } from './user/user.module.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
|
|||||||
@@ -1,25 +1,25 @@
|
|||||||
import { Body, Controller, Post } from '@nestjs/common';
|
import { Body, Controller, Post } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
ApiKeyCreateResponse,
|
ApiKeyCreateResponse,
|
||||||
ApiKeyDeleteRequest,
|
ApiKeyDeleteRequest,
|
||||||
ApiKeyDeleteResponse,
|
ApiKeyDeleteResponse,
|
||||||
ApiKeyInfoRequest,
|
ApiKeyInfoRequest,
|
||||||
ApiKeyInfoResponse,
|
ApiKeyInfoResponse,
|
||||||
ApiKeyListRequest,
|
ApiKeyListRequest,
|
||||||
ApiKeyListResponse,
|
ApiKeyListResponse,
|
||||||
ApiKeyUpdateRequest,
|
ApiKeyUpdateRequest,
|
||||||
ApiKeyUpdateResponse,
|
ApiKeyUpdateResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/apikeys.dto';
|
} from 'picsur-shared/dist/dto/api/apikeys.dto';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { ApiKeyDbService } from '../../../collections/apikey-db/apikey-db.service';
|
import { ApiKeyDbService } from '../../../collections/apikey-db/apikey-db.service.js';
|
||||||
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator.js';
|
||||||
import {
|
import {
|
||||||
HasPermission,
|
HasPermission,
|
||||||
RequiredPermissions,
|
RequiredPermissions,
|
||||||
} from '../../../decorators/permissions.decorator';
|
} from '../../../decorators/permissions.decorator.js';
|
||||||
import { ReqUserID } from '../../../decorators/request-user.decorator';
|
import { ReqUserID } from '../../../decorators/request-user.decorator.js';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator.js';
|
||||||
|
|
||||||
@Controller('api/apikeys')
|
@Controller('api/apikeys')
|
||||||
@RequiredPermissions(Permission.ApiKey)
|
@RequiredPermissions(Permission.ApiKey)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { ApiKeyDbModule } from '../../../collections/apikey-db/apikey-db.module';
|
import { ApiKeyDbModule } from '../../../collections/apikey-db/apikey-db.module.js';
|
||||||
import { ApiKeysController } from './apikeys.controller';
|
import { ApiKeysController } from './apikeys.controller.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ApiKeyDbModule],
|
imports: [ApiKeyDbModule],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Controller } from '@nestjs/common';
|
import { Controller } from '@nestjs/common';
|
||||||
import { NoPermissions } from '../../../decorators/permissions.decorator';
|
import { NoPermissions } from '../../../decorators/permissions.decorator.js';
|
||||||
@Controller('api/experiment')
|
@Controller('api/experiment')
|
||||||
@NoPermissions()
|
@NoPermissions()
|
||||||
export class ExperimentController {
|
export class ExperimentController {
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { ExperimentController } from './experiment.controller';
|
import { ExperimentController } from './experiment.controller.js';
|
||||||
|
|
||||||
// This is comletely useless module, but is used for testing
|
// This is comletely useless module, but is used for testing
|
||||||
// TODO: remove when out of beta
|
// TODO: remove when out of beta
|
||||||
|
|||||||
@@ -1,23 +1,23 @@
|
|||||||
import { Controller, Get } from '@nestjs/common';
|
import { Controller, Get } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
AllFormatsResponse,
|
AllFormatsResponse,
|
||||||
AllPermissionsResponse,
|
AllPermissionsResponse,
|
||||||
InfoResponse,
|
InfoResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/info.dto';
|
} from 'picsur-shared/dist/dto/api/info.dto';
|
||||||
import {
|
import {
|
||||||
FileType2Ext,
|
FileType2Ext,
|
||||||
FileType2Mime,
|
FileType2Mime,
|
||||||
SupportedAnimFileTypes,
|
SupportedAnimFileTypes,
|
||||||
SupportedImageFileTypes,
|
SupportedImageFileTypes,
|
||||||
} from 'picsur-shared/dist/dto/mimes.dto';
|
} from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { TrackingState } from 'picsur-shared/dist/dto/tracking-state.enum';
|
import { TrackingState } from 'picsur-shared/dist/dto/tracking-state.enum';
|
||||||
import { FallbackIfFailed } from 'picsur-shared/dist/types/failable';
|
import { FallbackIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { HostConfigService } from '../../../config/early/host.config.service';
|
import { HostConfigService } from '../../../config/early/host.config.service.js';
|
||||||
import { InfoConfigService } from '../../../config/late/info.config.service';
|
import { InfoConfigService } from '../../../config/late/info.config.service.js';
|
||||||
import { UsageConfigService } from '../../../config/late/usage.config.service';
|
import { UsageConfigService } from '../../../config/late/usage.config.service.js';
|
||||||
import { NoPermissions } from '../../../decorators/permissions.decorator';
|
import { NoPermissions } from '../../../decorators/permissions.decorator.js';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator.js';
|
||||||
import { PermissionsList } from '../../../models/constants/permissions.const';
|
import { PermissionsList } from '../../../models/constants/permissions.const.js';
|
||||||
|
|
||||||
@Controller('api/info')
|
@Controller('api/info')
|
||||||
@NoPermissions()
|
@NoPermissions()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { LateConfigModule } from '../../../config/late/late-config.module';
|
import { LateConfigModule } from '../../../config/late/late-config.module.js';
|
||||||
import { InfoController } from './info.controller';
|
import { InfoController } from './info.controller.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [LateConfigModule],
|
imports: [LateConfigModule],
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { PreferenceDbModule } from '../../../collections/preference-db/preference-db.module';
|
import { PreferenceDbModule } from '../../../collections/preference-db/preference-db.module.js';
|
||||||
import { SysPrefController } from './sys-pref.controller';
|
import { SysPrefController } from './sys-pref.controller.js';
|
||||||
import { UsrPrefController } from './usr-pref.controller';
|
import { UsrPrefController } from './usr-pref.controller.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [PreferenceDbModule],
|
imports: [PreferenceDbModule],
|
||||||
|
|||||||
@@ -1,16 +1,16 @@
|
|||||||
import { Body, Controller, Get, Logger, Param, Post } from '@nestjs/common';
|
import { Body, Controller, Get, Logger, Param, Post } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
GetPreferenceResponse,
|
GetPreferenceResponse,
|
||||||
MultiplePreferencesResponse,
|
MultiplePreferencesResponse,
|
||||||
UpdatePreferenceRequest,
|
UpdatePreferenceRequest,
|
||||||
UpdatePreferenceResponse,
|
UpdatePreferenceResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/pref.dto';
|
} from 'picsur-shared/dist/dto/api/pref.dto';
|
||||||
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { SysPreferenceDbService } from '../../../collections/preference-db/sys-preference-db.service';
|
import { SysPreferenceDbService } from '../../../collections/preference-db/sys-preference-db.service.js';
|
||||||
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator.js';
|
||||||
import { RequiredPermissions } from '../../../decorators/permissions.decorator';
|
import { RequiredPermissions } from '../../../decorators/permissions.decorator.js';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator.js';
|
||||||
import { Permission } from '../../../models/constants/permissions.const';
|
import { Permission } from '../../../models/constants/permissions.const.js';
|
||||||
|
|
||||||
@Controller('api/pref/sys')
|
@Controller('api/pref/sys')
|
||||||
@RequiredPermissions(Permission.SysPrefAdmin)
|
@RequiredPermissions(Permission.SysPrefAdmin)
|
||||||
|
|||||||
@@ -1,17 +1,17 @@
|
|||||||
import { Body, Controller, Get, Logger, Param, Post } from '@nestjs/common';
|
import { Body, Controller, Get, Logger, Param, Post } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
GetPreferenceResponse,
|
GetPreferenceResponse,
|
||||||
MultiplePreferencesResponse,
|
MultiplePreferencesResponse,
|
||||||
UpdatePreferenceRequest,
|
UpdatePreferenceRequest,
|
||||||
UpdatePreferenceResponse,
|
UpdatePreferenceResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/pref.dto';
|
} from 'picsur-shared/dist/dto/api/pref.dto';
|
||||||
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UsrPreferenceDbService } from '../../../collections/preference-db/usr-preference-db.service';
|
import { UsrPreferenceDbService } from '../../../collections/preference-db/usr-preference-db.service.js';
|
||||||
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator.js';
|
||||||
import { RequiredPermissions } from '../../../decorators/permissions.decorator';
|
import { RequiredPermissions } from '../../../decorators/permissions.decorator.js';
|
||||||
import { ReqUserID } from '../../../decorators/request-user.decorator';
|
import { ReqUserID } from '../../../decorators/request-user.decorator.js';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator.js';
|
||||||
import { Permission } from '../../../models/constants/permissions.const';
|
import { Permission } from '../../../models/constants/permissions.const.js';
|
||||||
|
|
||||||
@Controller('api/pref/usr')
|
@Controller('api/pref/usr')
|
||||||
@RequiredPermissions(Permission.Settings)
|
@RequiredPermissions(Permission.Settings)
|
||||||
|
|||||||
@@ -1,31 +1,31 @@
|
|||||||
import { Body, Controller, Get, Logger, Post } from '@nestjs/common';
|
import { Body, Controller, Get, Logger, Post } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
RoleCreateRequest,
|
RoleCreateRequest,
|
||||||
RoleCreateResponse,
|
RoleCreateResponse,
|
||||||
RoleDeleteRequest,
|
RoleDeleteRequest,
|
||||||
RoleDeleteResponse,
|
RoleDeleteResponse,
|
||||||
RoleInfoRequest,
|
RoleInfoRequest,
|
||||||
RoleInfoResponse,
|
RoleInfoResponse,
|
||||||
RoleListResponse,
|
RoleListResponse,
|
||||||
RoleUpdateRequest,
|
RoleUpdateRequest,
|
||||||
RoleUpdateResponse,
|
RoleUpdateResponse,
|
||||||
SpecialRolesResponse,
|
SpecialRolesResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/roles.dto';
|
} from 'picsur-shared/dist/dto/api/roles.dto';
|
||||||
import { FT, Fail, ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { FT, Fail, ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { RoleDbService } from '../../../collections/role-db/role-db.service';
|
import { RoleDbService } from '../../../collections/role-db/role-db.service.js';
|
||||||
import { UserDbService } from '../../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../../collections/user-db/user-db.service.js';
|
||||||
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator.js';
|
||||||
import { RequiredPermissions } from '../../../decorators/permissions.decorator';
|
import { RequiredPermissions } from '../../../decorators/permissions.decorator.js';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator.js';
|
||||||
import { Permission } from '../../../models/constants/permissions.const';
|
import { Permission } from '../../../models/constants/permissions.const.js';
|
||||||
import {
|
import {
|
||||||
DefaultRolesList,
|
DefaultRolesList,
|
||||||
ImmutableRolesList,
|
ImmutableRolesList,
|
||||||
RolePermissionsLocks,
|
RolePermissionsLocks,
|
||||||
SoulBoundRolesList,
|
SoulBoundRolesList,
|
||||||
UndeletableRolesList,
|
UndeletableRolesList,
|
||||||
} from '../../../models/constants/roles.const';
|
} from '../../../models/constants/roles.const.js';
|
||||||
import { isPermissionsArray } from '../../../models/validators/permissions.validator';
|
import { isPermissionsArray } from '../../../models/validators/permissions.validator.js';
|
||||||
|
|
||||||
@Controller('api/roles')
|
@Controller('api/roles')
|
||||||
@RequiredPermissions(Permission.RoleAdmin)
|
@RequiredPermissions(Permission.RoleAdmin)
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { RoleDbModule } from '../../../collections/role-db/role-db.module';
|
import { RoleDbModule } from '../../../collections/role-db/role-db.module.js';
|
||||||
import { UserDbModule } from '../../../collections/user-db/user-db.module';
|
import { UserDbModule } from '../../../collections/user-db/user-db.module.js';
|
||||||
import { RolesController } from './roles.controller';
|
import { RolesController } from './roles.controller.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [RoleDbModule, UserDbModule],
|
imports: [RoleDbModule, UserDbModule],
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
import { Controller, Logger, Post, Req, Res } from '@nestjs/common';
|
import { Controller, Logger, Post, Req, Res } from '@nestjs/common';
|
||||||
import type { FastifyReply, FastifyRequest } from 'fastify';
|
import type { FastifyReply, FastifyRequest } from 'fastify';
|
||||||
import { FT, Fail, ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { FT, Fail, ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UsageConfigService } from '../../../config/late/usage.config.service';
|
import { UsageConfigService } from '../../../config/late/usage.config.service.js';
|
||||||
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator.js';
|
||||||
import { NoPermissions } from '../../../decorators/permissions.decorator';
|
import { NoPermissions } from '../../../decorators/permissions.decorator.js';
|
||||||
import { ReturnsAnything } from '../../../decorators/returns.decorator';
|
import { ReturnsAnything } from '../../../decorators/returns.decorator.js';
|
||||||
|
|
||||||
@Controller('api/usage')
|
@Controller('api/usage')
|
||||||
@NoPermissions()
|
@NoPermissions()
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { LateConfigModule } from '../../../config/late/late-config.module';
|
import { LateConfigModule } from '../../../config/late/late-config.module.js';
|
||||||
import { UsageController } from './usage.controller';
|
import { UsageController } from './usage.controller.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [LateConfigModule],
|
imports: [LateConfigModule],
|
||||||
|
|||||||
@@ -1,29 +1,29 @@
|
|||||||
import { Body, Controller, Get, Logger, Post } from '@nestjs/common';
|
import { Body, Controller, Get, Logger, Post } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
GetSpecialUsersResponse,
|
GetSpecialUsersResponse,
|
||||||
UserCreateRequest,
|
UserCreateRequest,
|
||||||
UserCreateResponse,
|
UserCreateResponse,
|
||||||
UserDeleteRequest,
|
UserDeleteRequest,
|
||||||
UserDeleteResponse,
|
UserDeleteResponse,
|
||||||
UserInfoRequest,
|
UserInfoRequest,
|
||||||
UserInfoResponse,
|
UserInfoResponse,
|
||||||
UserListRequest,
|
UserListRequest,
|
||||||
UserListResponse,
|
UserListResponse,
|
||||||
UserUpdateRequest,
|
UserUpdateRequest,
|
||||||
UserUpdateResponse,
|
UserUpdateResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/user-manage.dto';
|
} from 'picsur-shared/dist/dto/api/user-manage.dto';
|
||||||
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UserDbService } from '../../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../../collections/user-db/user-db.service.js';
|
||||||
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator.js';
|
||||||
import { RequiredPermissions } from '../../../decorators/permissions.decorator';
|
import { RequiredPermissions } from '../../../decorators/permissions.decorator.js';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator.js';
|
||||||
import { Permission } from '../../../models/constants/permissions.const';
|
import { Permission } from '../../../models/constants/permissions.const.js';
|
||||||
import {
|
import {
|
||||||
ImmutableUsersList,
|
ImmutableUsersList,
|
||||||
LockedLoginUsersList,
|
LockedLoginUsersList,
|
||||||
UndeletableUsersList,
|
UndeletableUsersList,
|
||||||
} from '../../../models/constants/special-users.const';
|
} from '../../../models/constants/special-users.const.js';
|
||||||
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer.js';
|
||||||
|
|
||||||
@Controller('api/user')
|
@Controller('api/user')
|
||||||
@RequiredPermissions(Permission.UserAdmin)
|
@RequiredPermissions(Permission.UserAdmin)
|
||||||
|
|||||||
@@ -1,27 +1,27 @@
|
|||||||
import { Body, Controller, Get, Logger, Post } from '@nestjs/common';
|
import { Body, Controller, Get, Logger, Post } from '@nestjs/common';
|
||||||
import {
|
import {
|
||||||
UserCheckNameRequest,
|
UserCheckNameRequest,
|
||||||
UserCheckNameResponse,
|
UserCheckNameResponse,
|
||||||
UserLoginResponse,
|
UserLoginResponse,
|
||||||
UserMePermissionsResponse,
|
UserMePermissionsResponse,
|
||||||
UserMeResponse,
|
UserMeResponse,
|
||||||
UserRegisterRequest,
|
UserRegisterRequest,
|
||||||
UserRegisterResponse,
|
UserRegisterResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/user.dto';
|
} from 'picsur-shared/dist/dto/api/user.dto';
|
||||||
import type { EUser } from 'picsur-shared/dist/entities/user.entity';
|
import type { EUser } from 'picsur-shared/dist/entities/user.entity';
|
||||||
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
import { ThrowIfFailed } from 'picsur-shared/dist/types/failable';
|
||||||
import { UserDbService } from '../../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../../collections/user-db/user-db.service.js';
|
||||||
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../../decorators/easy-throttle.decorator.js';
|
||||||
import {
|
import {
|
||||||
NoPermissions,
|
NoPermissions,
|
||||||
RequiredPermissions,
|
RequiredPermissions,
|
||||||
UseLocalAuth,
|
UseLocalAuth,
|
||||||
} from '../../../decorators/permissions.decorator';
|
} from '../../../decorators/permissions.decorator.js';
|
||||||
import { ReqUser, ReqUserID } from '../../../decorators/request-user.decorator';
|
import { ReqUser, ReqUserID } from '../../../decorators/request-user.decorator.js';
|
||||||
import { Returns } from '../../../decorators/returns.decorator';
|
import { Returns } from '../../../decorators/returns.decorator.js';
|
||||||
import { AuthManagerService } from '../../../managers/auth/auth.service';
|
import { AuthManagerService } from '../../../managers/auth/auth.service.js';
|
||||||
import { Permission } from '../../../models/constants/permissions.const';
|
import { Permission } from '../../../models/constants/permissions.const.js';
|
||||||
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../../models/transformers/user.transformer.js';
|
||||||
|
|
||||||
@Controller('api/user')
|
@Controller('api/user')
|
||||||
export class UserController {
|
export class UserController {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { AuthManagerModule } from '../../../managers/auth/auth.module';
|
import { AuthManagerModule } from '../../../managers/auth/auth.module.js';
|
||||||
import { UserAdminController } from './user-manage.controller';
|
import { UserAdminController } from './user-manage.controller.js';
|
||||||
import { UserController } from './user.controller';
|
import { UserController } from './user.controller.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [AuthManagerModule],
|
imports: [AuthManagerModule],
|
||||||
|
|||||||
@@ -1,42 +1,42 @@
|
|||||||
import {
|
import {
|
||||||
Body,
|
Body,
|
||||||
Controller,
|
Controller,
|
||||||
Get,
|
Get,
|
||||||
Logger,
|
Logger,
|
||||||
Param,
|
Param,
|
||||||
Post,
|
Post,
|
||||||
Res,
|
Res,
|
||||||
} from '@nestjs/common';
|
} from '@nestjs/common';
|
||||||
import type { FastifyReply } from 'fastify';
|
import type { FastifyReply } from 'fastify';
|
||||||
import {
|
import {
|
||||||
ImageDeleteRequest,
|
ImageDeleteRequest,
|
||||||
ImageDeleteResponse,
|
ImageDeleteResponse,
|
||||||
ImageDeleteWithKeyRequest,
|
ImageDeleteWithKeyRequest,
|
||||||
ImageDeleteWithKeyResponse,
|
ImageDeleteWithKeyResponse,
|
||||||
ImageListRequest,
|
ImageListRequest,
|
||||||
ImageListResponse,
|
ImageListResponse,
|
||||||
ImageUpdateRequest,
|
ImageUpdateRequest,
|
||||||
ImageUpdateResponse,
|
ImageUpdateResponse,
|
||||||
ImageUploadResponse,
|
ImageUploadResponse,
|
||||||
} from 'picsur-shared/dist/dto/api/image-manage.dto';
|
} from 'picsur-shared/dist/dto/api/image-manage.dto';
|
||||||
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
import { Permission } from 'picsur-shared/dist/dto/permissions.enum';
|
||||||
import {
|
import {
|
||||||
FT,
|
FT,
|
||||||
Fail,
|
Fail,
|
||||||
HasFailed,
|
HasFailed,
|
||||||
ThrowIfFailed,
|
ThrowIfFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { EasyThrottle } from '../../decorators/easy-throttle.decorator';
|
import { EasyThrottle } from '../../decorators/easy-throttle.decorator.js';
|
||||||
import { PostFiles } from '../../decorators/multipart/multipart.decorator';
|
import { PostFiles } from '../../decorators/multipart/multipart.decorator.js';
|
||||||
import type { FileIterator } from '../../decorators/multipart/postfiles.pipe';
|
import type { FileIterator } from '../../decorators/multipart/postfiles.pipe.js';
|
||||||
import {
|
import {
|
||||||
HasPermission,
|
HasPermission,
|
||||||
RequiredPermissions,
|
RequiredPermissions,
|
||||||
} from '../../decorators/permissions.decorator';
|
} from '../../decorators/permissions.decorator.js';
|
||||||
import { ReqUserID } from '../../decorators/request-user.decorator';
|
import { ReqUserID } from '../../decorators/request-user.decorator.js';
|
||||||
import { Returns } from '../../decorators/returns.decorator';
|
import { Returns } from '../../decorators/returns.decorator.js';
|
||||||
import { ImageManagerService } from '../../managers/image/image.service';
|
import { ImageManagerService } from '../../managers/image/image.service.js';
|
||||||
import { GetNextAsync } from '../../util/iterator';
|
import { GetNextAsync } from '../../util/iterator.js';
|
||||||
|
|
||||||
@Controller('api/image')
|
@Controller('api/image')
|
||||||
@RequiredPermissions(Permission.ImageUpload)
|
@RequiredPermissions(Permission.ImageUpload)
|
||||||
|
|||||||
@@ -2,26 +2,26 @@ import { Controller, Get, Head, Logger, Query, Res } from '@nestjs/common';
|
|||||||
import { SkipThrottle } from '@nestjs/throttler';
|
import { SkipThrottle } from '@nestjs/throttler';
|
||||||
import type { FastifyReply } from 'fastify';
|
import type { FastifyReply } from 'fastify';
|
||||||
import {
|
import {
|
||||||
ImageMetaResponse,
|
ImageMetaResponse,
|
||||||
ImageRequestParams,
|
ImageRequestParams,
|
||||||
} from 'picsur-shared/dist/dto/api/image.dto';
|
} from 'picsur-shared/dist/dto/api/image.dto';
|
||||||
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
import { ImageEntryVariant } from 'picsur-shared/dist/dto/image-entry-variant.enum';
|
||||||
import { FileType2Mime } from 'picsur-shared/dist/dto/mimes.dto';
|
import { FileType2Mime } from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import {
|
import {
|
||||||
FT,
|
FT,
|
||||||
IsFailure,
|
IsFailure,
|
||||||
ThrowIfFailed,
|
ThrowIfFailed,
|
||||||
} from 'picsur-shared/dist/types/failable';
|
} from 'picsur-shared/dist/types/failable';
|
||||||
import { UserDbService } from '../../collections/user-db/user-db.service';
|
import { UserDbService } from '../../collections/user-db/user-db.service.js';
|
||||||
import { ImageFullIdParam } from '../../decorators/image-id/image-full-id.decorator';
|
import { ImageFullIdParam } from '../../decorators/image-id/image-full-id.decorator.js';
|
||||||
import { ImageIdParam } from '../../decorators/image-id/image-id.decorator';
|
import { ImageIdParam } from '../../decorators/image-id/image-id.decorator.js';
|
||||||
import { RequiredPermissions } from '../../decorators/permissions.decorator';
|
import { RequiredPermissions } from '../../decorators/permissions.decorator.js';
|
||||||
import { Returns } from '../../decorators/returns.decorator';
|
import { Returns } from '../../decorators/returns.decorator.js';
|
||||||
import { ImageManagerService } from '../../managers/image/image.service';
|
import { ImageManagerService } from '../../managers/image/image.service.js';
|
||||||
import type { ImageFullId } from '../../models/constants/image-full-id.const';
|
import type { ImageFullId } from '../../models/constants/image-full-id.const.js';
|
||||||
import { Permission } from '../../models/constants/permissions.const';
|
import { Permission } from '../../models/constants/permissions.const.js';
|
||||||
import { EUserBackend2EUser } from '../../models/transformers/user.transformer';
|
import { EUserBackend2EUser } from '../../models/transformers/user.transformer.js';
|
||||||
import { BrandMessageType, GetBrandMessage } from '../../util/branding';
|
import { BrandMessageType, GetBrandMessage } from '../../util/branding.js';
|
||||||
|
|
||||||
// This is the only controller with CORS enabled
|
// This is the only controller with CORS enabled
|
||||||
@Controller('i')
|
@Controller('i')
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { UserDbModule } from '../../collections/user-db/user-db.module';
|
import { UserDbModule } from '../../collections/user-db/user-db.module.js';
|
||||||
import { DecoratorsModule } from '../../decorators/decorators.module';
|
import { DecoratorsModule } from '../../decorators/decorators.module.js';
|
||||||
import { ImageManagerModule } from '../../managers/image/image-manager.module';
|
import { ImageManagerModule } from '../../managers/image/image-manager.module.js';
|
||||||
import { ImageManageController } from './image-manage.controller';
|
import { ImageManageController } from './image-manage.controller.js';
|
||||||
import { ImageController } from './image.controller';
|
import { ImageController } from './image.controller.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [ImageManagerModule, UserDbModule, DecoratorsModule],
|
imports: [ImageManagerModule, UserDbModule, DecoratorsModule],
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { Module } from '@nestjs/common';
|
import { Module } from '@nestjs/common';
|
||||||
import { PicsurApiModule } from './api/api.module';
|
import { PicsurApiModule } from './api/api.module.js';
|
||||||
import { ImageModule } from './image/image.module';
|
import { ImageModule } from './image/image.module.js';
|
||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [PicsurApiModule, ImageModule],
|
imports: [PicsurApiModule, ImageModule],
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { readFile } from 'fs/promises';
|
import { readFile } from 'fs/promises';
|
||||||
import { resolve } from 'path';
|
import { resolve } from 'path';
|
||||||
import { AsyncFailable, Fail, FT } from 'picsur-shared/dist/types/failable';
|
import { AsyncFailable, Fail, FT } from 'picsur-shared/dist/types/failable';
|
||||||
import { PackageRoot } from '../config/config.static';
|
import { PackageRoot } from '../config/config.static.js';
|
||||||
|
|
||||||
export const BrandingPath = resolve(PackageRoot, '../branding');
|
export const BrandingPath = resolve(PackageRoot, '../branding');
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@ import {
|
|||||||
SharpWorkerResultMessage,
|
SharpWorkerResultMessage,
|
||||||
SharpWorkerSendMessage,
|
SharpWorkerSendMessage,
|
||||||
SupportedSharpWorkerFunctions,
|
SupportedSharpWorkerFunctions,
|
||||||
} from './sharp/sharp.message';
|
} from './sharp/sharp.message.js';
|
||||||
import { SharpResult } from './sharp/universal-sharp';
|
import { SharpResult } from './sharp/universal-sharp.js';
|
||||||
|
|
||||||
const moduleURL = new URL(import.meta.url);
|
const moduleURL = new URL(import.meta.url);
|
||||||
const __dirname = dirname(moduleURL.pathname);
|
const __dirname = dirname(moduleURL.pathname);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import { FileType } from 'picsur-shared/dist/dto/mimes.dto';
|
import { FileType } from 'picsur-shared/dist/dto/mimes.dto';
|
||||||
import { Sharp, SharpOptions } from 'sharp';
|
import { Sharp, SharpOptions } from 'sharp';
|
||||||
import { SharpResult } from './universal-sharp';
|
import { SharpResult } from './universal-sharp.js';
|
||||||
|
|
||||||
type MapSharpFunctions<T extends keyof Sharp> = T extends any
|
type MapSharpFunctions<T extends keyof Sharp> = T extends any
|
||||||
? Sharp[T] extends (...args: any) => any
|
? Sharp[T] extends (...args: any) => any
|
||||||
|
|||||||
@@ -7,8 +7,8 @@ import {
|
|||||||
SharpWorkerOperationMessage,
|
SharpWorkerOperationMessage,
|
||||||
SharpWorkerRecieveMessage,
|
SharpWorkerRecieveMessage,
|
||||||
SharpWorkerSendMessage,
|
SharpWorkerSendMessage,
|
||||||
} from './sharp.message';
|
} from './sharp.message.js';
|
||||||
import { UniversalSharpIn, UniversalSharpOut } from './universal-sharp';
|
import { UniversalSharpIn, UniversalSharpOut } from './universal-sharp.js';
|
||||||
|
|
||||||
export class SharpWorker {
|
export class SharpWorker {
|
||||||
private startTime = 0;
|
private startTime = 0;
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
"exclude": ["node_modules", "dist", "test", "**/*spec.ts"],
|
"exclude": ["node_modules", "dist", "test", "**/*spec.ts"],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"lib": ["es2022"],
|
"lib": ["es2022"],
|
||||||
"module": "ES2022",
|
"module": "NodeNext",
|
||||||
"target": "es2022",
|
"target": "es2022",
|
||||||
|
|
||||||
"outDir": "./dist",
|
"outDir": "./dist",
|
||||||
|
|||||||
Reference in New Issue
Block a user