fix(appdata): Fix iteration over overwriteObject in AppData and update configuration for dependency and path handling

This commit is contained in:
2025-08-15 12:12:26 +00:00
parent 5e0edecf18
commit 62e61168a0
25 changed files with 5821 additions and 2835 deletions

View File

@@ -39,7 +39,7 @@ export class KeyValueStore<T = any> {
this.deletedObject = {};
await plugins.smartfile.memory.toFs(
plugins.smartjson.stringifyPretty(this.dataObject),
this.filePath
this.filePath,
);
}
const newStateString = plugins.smartjson.stringify(this.dataObject);
@@ -62,10 +62,16 @@ export class KeyValueStore<T = any> {
}
if (this.customPath) {
// Use custom path if provided
const absolutePath = plugins.smartpath.transform.makeAbsolute(this.customPath, paths.cwd);
const absolutePath = plugins.smartpath.transform.makeAbsolute(
this.customPath,
paths.cwd,
);
this.filePath = absolutePath;
if (plugins.smartfile.fs.isDirectorySync(this.filePath)) {
this.filePath = plugins.path.join(this.filePath, this.identity + '.json');
this.filePath = plugins.path.join(
this.filePath,
this.identity + '.json',
);
}
plugins.smartfile.fs.ensureFileSync(this.filePath, '{}');
return;
@@ -129,7 +135,10 @@ export class KeyValueStore<T = any> {
/**
* writes a specific key to the keyValueStore
*/
public async writeKey<K extends keyof T>(keyArg: K, valueArg: T[K]): Promise<void> {
public async writeKey<K extends keyof T>(
keyArg: K,
valueArg: T[K],
): Promise<void> {
await this.writeAll({
[keyArg]: valueArg,
} as unknown as Partial<T>);
@@ -174,22 +183,28 @@ export class KeyValueStore<T = any> {
}
private setMandatoryKeys(keys: Array<keyof T>) {
keys.forEach(key => this.mandatoryKeys.add(key));
keys.forEach((key) => this.mandatoryKeys.add(key));
}
public async getMissingMandatoryKeys(): Promise<Array<keyof T>> {
await this.readAll();
return Array.from(this.mandatoryKeys).filter(key => !(key in this.dataObject));
return Array.from(this.mandatoryKeys).filter(
(key) => !(key in this.dataObject),
);
}
public async waitForKeysPresent<K extends keyof T>(keysArg: K[]): Promise<void> {
const missingKeys = keysArg.filter(keyArg => !this.dataObject[keyArg]);
public async waitForKeysPresent<K extends keyof T>(
keysArg: K[],
): Promise<void> {
const missingKeys = keysArg.filter((keyArg) => !this.dataObject[keyArg]);
if (missingKeys.length === 0) {
return;
}
return new Promise<void>((resolve, reject) => {
const subscription = this.changeSubject.subscribe(() => {
const missingKeys = keysArg.filter(keyArg => !this.dataObject[keyArg]);
const missingKeys = keysArg.filter(
(keyArg) => !this.dataObject[keyArg],
);
if (missingKeys.length === 0) {
subscription.unsubscribe();
resolve();
@@ -198,8 +213,10 @@ export class KeyValueStore<T = any> {
});
}
public async waitForAndGetKey<K extends keyof T>(keyArg: K): Promise<T[K] | undefined> {
public async waitForAndGetKey<K extends keyof T>(
keyArg: K,
): Promise<T[K] | undefined> {
await this.waitForKeysPresent([keyArg]);
return this.readKey(keyArg);
}
}
}