Lint files

This commit is contained in:
Andras Schmelczer 2024-12-20 16:14:46 +00:00
parent 2f7cad602a
commit ff5af8aea5
No known key found for this signature in database
GPG key ID: FC8F2C3D3D1A718C
11 changed files with 184 additions and 276 deletions

View file

@ -1,11 +1,12 @@
import { Logger } from "src/logger";
import { DEFAULT_SETTINGS, SyncSettings } from "./sync-settings";
import {
RelativePath,
DocumentMetadata,
VaultUpdateId,
import type { SyncSettings } from "./sync-settings";
import { DEFAULT_SETTINGS } from "./sync-settings";
import type {
DocumentId,
DocumentMetadata,
RelativePath,
VaultUpdateId,
} from "./document-metadata";
import { Logger } from "src/tracing/logger";
interface StoredDatabase {
documents: Map<RelativePath, DocumentMetadata>;
@ -13,27 +14,31 @@ interface StoredDatabase {
lastSeenUpdateId: VaultUpdateId | undefined;
}
// Todo: split it into settings and documents
export class Database {
private _documents: Map<RelativePath, DocumentMetadata> = new Map();
private _documents = new Map<RelativePath, DocumentMetadata>();
private _settings: SyncSettings;
private _lastSeenUpdateId: VaultUpdateId | undefined;
private onSettingsChangeHandlers: Array<
(newSettings: SyncSettings, oldSettings: SyncSettings) => void
> = [];
private readonly onSettingsChangeHandlers: ((
newSettings: SyncSettings,
oldSettings: SyncSettings
) => void)[] = [];
public constructor(
initialState: Partial<StoredDatabase> | undefined,
private saveData: (data: unknown) => Promise<void>
private readonly saveData: (data: unknown) => Promise<void>
) {
initialState = initialState || {};
initialState ??= {};
if (
// eslint-disable-next-line @typescript-eslint/strict-boolean-expressions
Object.prototype.hasOwnProperty.call(initialState, "documents") &&
initialState.documents
) {
for (const [relativePath, metadata] of Object.entries(
initialState.documents
)) {
// eslint-disable-next-line @typescript-eslint/no-unsafe-type-assertion
this._documents.set(relativePath, metadata as DocumentMetadata);
}
}
@ -46,11 +51,10 @@ export class Database {
)}`
);
this._settings = Object.assign(
{},
DEFAULT_SETTINGS,
initialState.settings || {}
);
this._settings = {
...DEFAULT_SETTINGS,
...(initialState.settings ?? {}),
};
Logger.getInstance().debug(
`Loaded settings: ${JSON.stringify(this._settings, null, 2)}`
@ -74,15 +78,15 @@ export class Database {
public async setSettings(value: SyncSettings): Promise<void> {
const oldSettings = this._settings;
this._settings = value;
this.onSettingsChangeHandlers.forEach((handler) =>
handler(value, oldSettings)
);
this.onSettingsChangeHandlers.forEach((handler) => {
handler(value, oldSettings);
});
await this.save();
}
public addOnSettingsChangeHandlers(
handler: (settings: SyncSettings, oldSettings: SyncSettings) => void
) {
): void {
this.onSettingsChangeHandlers.push(handler);
}