fix(core): update
This commit is contained in:
@@ -3,7 +3,7 @@ import * as paths from './npmextra.paths.js';
|
||||
|
||||
import { Task } from '@push.rocks/taskbuffer';
|
||||
|
||||
export type TKeyValueStore = 'custom' | 'userHomeDir';
|
||||
export type TKeyValueStore = 'custom' | 'userHomeDir' | 'ephemeral';
|
||||
|
||||
export interface IKvStoreConstructorOptions<T> {
|
||||
typeArg: TKeyValueStore;
|
||||
@@ -20,7 +20,7 @@ export class KeyValueStore<T = any> {
|
||||
private deletedObject: Partial<T> = {};
|
||||
private mandatoryKeys: Set<keyof T> = new Set();
|
||||
public changeSubject = new plugins.smartrx.rxjs.Subject<Partial<T>>();
|
||||
|
||||
|
||||
private storedStateString: string = '';
|
||||
public syncTask = new Task({
|
||||
name: 'syncTask',
|
||||
@@ -28,18 +28,20 @@ export class KeyValueStore<T = any> {
|
||||
bufferMax: 1,
|
||||
execDelay: 0,
|
||||
taskFunction: async () => {
|
||||
this.dataObject = {
|
||||
...plugins.smartfile.fs.toObjectSync(this.filePath),
|
||||
...this.dataObject,
|
||||
};
|
||||
for (const key of Object.keys(this.deletedObject) as Array<keyof T>) {
|
||||
delete this.dataObject[key];
|
||||
if (this.type !== 'ephemeral') {
|
||||
this.dataObject = {
|
||||
...plugins.smartfile.fs.toObjectSync(this.filePath),
|
||||
...this.dataObject,
|
||||
};
|
||||
for (const key of Object.keys(this.deletedObject) as Array<keyof T>) {
|
||||
delete this.dataObject[key];
|
||||
}
|
||||
this.deletedObject = {};
|
||||
await plugins.smartfile.memory.toFs(
|
||||
plugins.smartjson.stringifyPretty(this.dataObject),
|
||||
this.filePath
|
||||
);
|
||||
}
|
||||
this.deletedObject = {};
|
||||
await plugins.smartfile.memory.toFs(
|
||||
plugins.smartjson.stringifyPretty(this.dataObject),
|
||||
this.filePath
|
||||
);
|
||||
const newStateString = plugins.smartjson.stringify(this.dataObject);
|
||||
|
||||
// change detection
|
||||
@@ -54,6 +56,10 @@ export class KeyValueStore<T = any> {
|
||||
* computes the identity and filePath
|
||||
*/
|
||||
private initFilePath = () => {
|
||||
if (this.type === 'ephemeral') {
|
||||
// No file path is needed for ephemeral type
|
||||
return;
|
||||
}
|
||||
if (this.customPath) {
|
||||
// Use custom path if provided
|
||||
const absolutePath = plugins.smartpath.transform.makeAbsolute(this.customPath, paths.cwd);
|
||||
@@ -79,7 +85,7 @@ export class KeyValueStore<T = any> {
|
||||
// if no custom path is provided, try to store at home directory
|
||||
public type: TKeyValueStore;
|
||||
public identity: string;
|
||||
public filePath: string;
|
||||
public filePath?: string;
|
||||
private customPath?: string; // Optionally allow custom path
|
||||
|
||||
/**
|
||||
@@ -147,7 +153,9 @@ export class KeyValueStore<T = any> {
|
||||
*/
|
||||
public async wipe(): Promise<void> {
|
||||
this.dataObject = {};
|
||||
await plugins.smartfile.fs.remove(this.filePath);
|
||||
if (this.type !== 'ephemeral') {
|
||||
await plugins.smartfile.fs.remove(this.filePath);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user