diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5d4399f..45fbb9a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -87,7 +87,7 @@ packages: '@push.rocks/smartstream': 3.0.30 '@push.rocks/smarttime': 4.0.6 '@push.rocks/webstore': 2.0.13 - '@tsclass/tsclass': 4.0.46 + '@tsclass/tsclass': 4.0.50 '@types/express': 4.17.21 body-parser: 1.20.2 cors: 2.8.5 @@ -830,7 +830,7 @@ packages: '@push.rocks/smartpromise': 4.0.3 '@push.rocks/smartpuppeteer': 2.0.2 '@push.rocks/smartunique': 3.0.6 - '@tsclass/tsclass': 4.0.46 + '@tsclass/tsclass': 4.0.50 '@types/express': 4.17.21 express: 4.18.2 pdf-merger-js: 3.4.0 @@ -892,7 +892,7 @@ packages: '@push.rocks/smartxml': 1.0.8 '@push.rocks/smartyaml': 2.0.5 '@push.rocks/webrequest': 3.0.34 - '@tsclass/tsclass': 4.0.46 + '@tsclass/tsclass': 4.0.50 dev: true /@push.rocks/smartsocket@2.0.24: @@ -1335,8 +1335,8 @@ packages: type-fest: 2.19.0 dev: true - /@tsclass/tsclass@4.0.46: - resolution: {integrity: sha512-UovPUvlozv1ftJp4KW5tt4MP/LQCNP3lSCinjyIrLkopOymczyzONUGvSAAwOBf1XBE9bO0tI4KtRuXWN9XBXQ==} + /@tsclass/tsclass@4.0.50: + resolution: {integrity: sha512-ICUe4hfebpvbn8JkReGP1m3DCTq6S5FIhLJzbFx9F7tx6dn909fA9YIEHkFeMj2X7fT5aGvAXOZRlT52GsnSUw==} dependencies: type-fest: 4.10.2 dev: true diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index bb67722..0cbff81 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@push.rocks/npmextra', - version: '4.0.16', + version: '5.0.0', description: 'do more with npm' } diff --git a/ts/npmextra.classes.appdata.ts b/ts/npmextra.classes.appdata.ts index 631fc86..3d836da 100644 --- a/ts/npmextra.classes.appdata.ts +++ b/ts/npmextra.classes.appdata.ts @@ -59,12 +59,12 @@ export class AppData { this.options.dirPath = nogitAppData; } } - this.kvStore = new KeyValueStore( - 'custom', - 'appkv', - this.options.dirPath, - this.options.requiredKeys - ); + this.kvStore = new KeyValueStore({ + typeArg: 'custom', + identityArg: 'appkv', + customPath: this.options.dirPath, + mandatoryKeys: this.options.requiredKeys + }); if (this.options.envMapping) { const qenvInstance = new plugins.qenv.Qenv(process.cwd(), '~/.cloudlyrc'); diff --git a/ts/npmextra.classes.keyvaluestore.ts b/ts/npmextra.classes.keyvaluestore.ts index c9107ca..26ffbd7 100644 --- a/ts/npmextra.classes.keyvaluestore.ts +++ b/ts/npmextra.classes.keyvaluestore.ts @@ -5,11 +5,18 @@ import { Task } from '@push.rocks/taskbuffer'; export type TKeyValueStore = 'custom' | 'userHomeDir'; +export interface IKvStoreConstructorOptions { + typeArg: TKeyValueStore; + identityArg: string; + customPath?: string; + mandatoryKeys?: string[]; +} + /** * kvStore is a simple key value store to store data about projects between runs */ -export class KeyValueStore { - private dataObject: any = {}; +export class KeyValueStore { + private dataObject: Partial = {}; private deletedObject: any = {}; private mandatoryKeys: Set = new Set(); public changeSubject = new plugins.smartrx.rxjs.Subject(); @@ -82,19 +89,19 @@ export class KeyValueStore { * @param identityArg * @param customPath Optional custom path for the keyValue store */ - constructor(typeArg: TKeyValueStore, identityArg: string, customPath?: string, mandatoryKeys?: string[]) { - if (customPath && typeArg !== 'custom') { + constructor(optionsArg: IKvStoreConstructorOptions) { + if (optionsArg.customPath && optionsArg.typeArg !== 'custom') { throw new Error('customPath can only be provided if typeArg is custom'); } - if (typeArg === 'custom' && !customPath) { + if (optionsArg.typeArg === 'custom' && !optionsArg.customPath) { throw new Error('customPath must be provided if typeArg is custom'); } - this.type = typeArg; - this.identity = identityArg; - this.customPath = customPath; // Store custom path if provided + this.type = optionsArg.typeArg; + this.identity = optionsArg.identityArg; + this.customPath = optionsArg.customPath; // Store custom path if provided this.initFilePath(); - if (mandatoryKeys) { - this.setMandatoryKeys(mandatoryKeys); + if (optionsArg.mandatoryKeys) { + this.setMandatoryKeys(optionsArg.mandatoryKeys); } }