|
|
|
|
@@ -15,15 +15,15 @@ export interface IAppDataOptions {
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export class AppData {
|
|
|
|
|
export class AppData<T = any> {
|
|
|
|
|
/**
|
|
|
|
|
* creates appdata. If no pathArg is given, data will be stored here:
|
|
|
|
|
* ${PWD}/.nogit/appdata
|
|
|
|
|
* @param pathArg
|
|
|
|
|
* @returns
|
|
|
|
|
*/
|
|
|
|
|
public static async createAndInit(optionsArg: IAppDataOptions = {}) {
|
|
|
|
|
const appData = new AppData(optionsArg);
|
|
|
|
|
public static async createAndInit<T = any>(optionsArg: IAppDataOptions = {}): Promise<AppData<T>> {
|
|
|
|
|
const appData = new AppData<T>(optionsArg);
|
|
|
|
|
await appData.readyDeferred.promise;
|
|
|
|
|
return appData;
|
|
|
|
|
}
|
|
|
|
|
@@ -31,7 +31,7 @@ export class AppData {
|
|
|
|
|
// instance
|
|
|
|
|
public readyDeferred = plugins.smartpromise.defer();
|
|
|
|
|
public options: IAppDataOptions;
|
|
|
|
|
private kvStore: KeyValueStore;
|
|
|
|
|
private kvStore: KeyValueStore<T>;
|
|
|
|
|
constructor(optionsArg: IAppDataOptions = {}) {
|
|
|
|
|
this.options = optionsArg;
|
|
|
|
|
this.init();
|
|
|
|
|
@@ -79,7 +79,7 @@ export class AppData {
|
|
|
|
|
}
|
|
|
|
|
// Determine the correct key to use (top-level or nested)
|
|
|
|
|
const effectiveKey = parentKey || key;
|
|
|
|
|
this.kvStore.writeKey(effectiveKey, envValue);
|
|
|
|
|
await this.kvStore.writeKey(effectiveKey, envValue);
|
|
|
|
|
}
|
|
|
|
|
} else if (typeof mappingValue === 'object' && mappingValue !== null) {
|
|
|
|
|
const resultObject = {};
|
|
|
|
|
@@ -91,7 +91,7 @@ export class AppData {
|
|
|
|
|
}
|
|
|
|
|
if (parentKey === '') {
|
|
|
|
|
// Only write to kvStore if at the top level
|
|
|
|
|
this.kvStore.writeKey(key, resultObject);
|
|
|
|
|
await this.kvStore.writeKey(key, resultObject);
|
|
|
|
|
} else {
|
|
|
|
|
// For nested objects, return the constructed object instead of writing to kvStore
|
|
|
|
|
return resultObject;
|
|
|
|
|
|