Compare commits

..

10 Commits

Author SHA1 Message Date
a40b6adeef 5.0.7 2024-02-13 02:01:39 +01:00
6ee324a0ef fix(core): update 2024-02-13 02:01:39 +01:00
215a48a409 5.0.6 2024-02-13 01:54:51 +01:00
aeaa6149e4 fix(core): update 2024-02-13 01:54:50 +01:00
75059dfca8 5.0.5 2024-02-13 01:46:23 +01:00
90c0f30ce1 fix(core): update 2024-02-13 01:46:22 +01:00
9a55303978 5.0.4 2024-02-13 00:50:51 +01:00
224125fb8e fix(core): update 2024-02-13 00:50:50 +01:00
df9d197508 5.0.3 2024-02-13 00:48:45 +01:00
ae33716af4 fix(core): update 2024-02-13 00:48:44 +01:00
3 changed files with 13 additions and 11 deletions

View File

@ -1,6 +1,6 @@
{ {
"name": "@push.rocks/npmextra", "name": "@push.rocks/npmextra",
"version": "5.0.2", "version": "5.0.7",
"private": false, "private": false,
"description": "do more with npm", "description": "do more with npm",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",

View File

@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/npmextra', name: '@push.rocks/npmextra',
version: '5.0.2', version: '5.0.7',
description: 'do more with npm' description: 'do more with npm'
} }

View File

@ -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: * creates appdata. If no pathArg is given, data will be stored here:
* ${PWD}/.nogit/appdata * ${PWD}/.nogit/appdata
* @param pathArg * @param pathArg
* @returns * @returns
*/ */
public static async createAndInit(optionsArg: IAppDataOptions = {}) { public static async createAndInit<T = any>(optionsArg: IAppDataOptions = {}): Promise<AppData<T>> {
const appData = new AppData(optionsArg); const appData = new AppData<T>(optionsArg);
await appData.readyDeferred.promise; await appData.readyDeferred.promise;
return appData; return appData;
} }
@ -31,7 +31,7 @@ export class AppData {
// instance // instance
public readyDeferred = plugins.smartpromise.defer(); public readyDeferred = plugins.smartpromise.defer();
public options: IAppDataOptions; public options: IAppDataOptions;
private kvStore: KeyValueStore; private kvStore: KeyValueStore<T>;
constructor(optionsArg: IAppDataOptions = {}) { constructor(optionsArg: IAppDataOptions = {}) {
this.options = optionsArg; this.options = optionsArg;
this.init(); this.init();
@ -67,7 +67,7 @@ export class AppData {
}); });
if (this.options.envMapping) { if (this.options.envMapping) {
const qenvInstance = new plugins.qenv.Qenv(); const qenvInstance = new plugins.qenv.Qenv(process.cwd(), plugins.path.join(process.cwd(), '.nogit'));
// Recursive function to handle nested objects, now includes key parameter // Recursive function to handle nested objects, now includes key parameter
const processEnvMapping = async (key: string, mappingValue: any, parentKey: string = ''): Promise<any> => { const processEnvMapping = async (key: string, mappingValue: any, parentKey: string = ''): Promise<any> => {
@ -77,9 +77,11 @@ export class AppData {
if (mappingValue.endsWith('_JSON')) { if (mappingValue.endsWith('_JSON')) {
envValue = JSON.parse(envValue); envValue = JSON.parse(envValue);
} }
// Determine the correct key to use (top-level or nested) if (!parentKey) {
const effectiveKey = parentKey || key; await this.kvStore.writeKey(key, envValue);
this.kvStore.writeKey(effectiveKey, envValue); } else {
return envValue;
}
} }
} else if (typeof mappingValue === 'object' && mappingValue !== null) { } else if (typeof mappingValue === 'object' && mappingValue !== null) {
const resultObject = {}; const resultObject = {};
@ -91,7 +93,7 @@ export class AppData {
} }
if (parentKey === '') { if (parentKey === '') {
// Only write to kvStore if at the top level // Only write to kvStore if at the top level
this.kvStore.writeKey(key, resultObject); await this.kvStore.writeKey(key, resultObject);
} else { } else {
// For nested objects, return the constructed object instead of writing to kvStore // For nested objects, return the constructed object instead of writing to kvStore
return resultObject; return resultObject;