chore(server,cli,web): housekeeping and stricter code style (#6751)

* add unicorn to eslint

* fix lint errors for cli

* fix merge

* fix album name extraction

* Update cli/src/commands/upload.command.ts

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>

* es2k23

* use lowercase os

* return undefined album name

* fix bug in asset response dto

* auto fix issues

* fix server code style

* es2022 and formatting

* fix compilation error

* fix test

* fix config load

* fix last lint errors

* set string type

* bump ts

* start work on web

* web formatting

* Fix UUIDParamDto as UUIDParamDto

* fix library service lint

* fix web errors

* fix errors

* formatting

* wip

* lints fixed

* web can now start

* alphabetical package json

* rename error

* chore: clean up

---------

Co-authored-by: Ben McCann <322311+benmccann@users.noreply.github.com>
Co-authored-by: Jason Rasmussen <jrasm91@gmail.com>
This commit is contained in:
Jonathan Jogenfors 2024-02-02 04:18:00 +01:00 committed by GitHub
parent e4d0560d49
commit f44fa45aa0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
218 changed files with 2471 additions and 1244 deletions

View file

@ -132,7 +132,7 @@ export const defaults = Object.freeze<SystemConfig>({
watch: {
enabled: false,
usePolling: false,
interval: 10000,
interval: 10_000,
},
},
server: {
@ -184,22 +184,30 @@ export class SystemConfigCore {
const hasFeature = await this.hasFeature(feature);
if (!hasFeature) {
switch (feature) {
case FeatureFlag.SMART_SEARCH:
case FeatureFlag.SMART_SEARCH: {
throw new BadRequestException('Smart search is not enabled');
case FeatureFlag.FACIAL_RECOGNITION:
}
case FeatureFlag.FACIAL_RECOGNITION: {
throw new BadRequestException('Facial recognition is not enabled');
case FeatureFlag.SIDECAR:
}
case FeatureFlag.SIDECAR: {
throw new BadRequestException('Sidecar is not enabled');
case FeatureFlag.SEARCH:
}
case FeatureFlag.SEARCH: {
throw new BadRequestException('Search is not enabled');
case FeatureFlag.OAUTH:
}
case FeatureFlag.OAUTH: {
throw new BadRequestException('OAuth is not enabled');
case FeatureFlag.PASSWORD_LOGIN:
}
case FeatureFlag.PASSWORD_LOGIN: {
throw new BadRequestException('Password login is not enabled');
case FeatureFlag.CONFIG_FILE:
}
case FeatureFlag.CONFIG_FILE: {
throw new BadRequestException('Config file is not set');
default:
}
default: {
throw new ForbiddenException(`Missing required feature: ${feature}`);
}
}
}
}
@ -278,9 +286,9 @@ export class SystemConfigCore {
for (const validator of this.validators) {
await validator(newConfig, oldConfig);
}
} catch (e) {
this.logger.warn(`Unable to save system config due to a validation error: ${e}`);
throw new BadRequestException(e instanceof Error ? e.message : e);
} catch (error) {
this.logger.warn(`Unable to save system config due to a validation error: ${error}`);
throw new BadRequestException(error instanceof Error ? error.message : error);
}
const updates: SystemConfigEntity[] = [];
@ -330,19 +338,20 @@ export class SystemConfigCore {
private async loadFromFile(filepath: string, force = false) {
if (force || !this.configCache) {
try {
const file = JSON.parse((await this.repository.readFile(filepath)).toString());
const file = await this.repository.readFile(filepath);
const json = JSON.parse(file.toString());
const overrides: SystemConfigEntity<SystemConfigValue>[] = [];
for (const key of Object.values(SystemConfigKey)) {
const value = _.get(file, key);
this.unsetDeep(file, key);
const value = _.get(json, key);
this.unsetDeep(json, key);
if (value !== undefined) {
overrides.push({ key, value });
}
}
if (!_.isEmpty(file)) {
this.logger.warn(`Unknown keys found: ${JSON.stringify(file, null, 2)}`);
if (!_.isEmpty(json)) {
this.logger.warn(`Unknown keys found: ${JSON.stringify(json, null, 2)}`);
}
this.configCache = overrides;