{"version":3,"file":"local-memory.mjs","names":[],"sources":["../src/local-memory.ts"],"sourcesContent":["import { errorUtils } from '@verdaccio/core';\nimport type { Callback, Config, Logger, Token, TokenFilter } from '@verdaccio/types';\n\nimport type { IPluginStorage, PluginOptions } from './legacy-plugin-api';\n\nimport type { DataHandler } from './memory-handler';\nimport MemoryHandler from './memory-handler';\n\nexport type ConfigMemory = Config & { limit?: number };\nexport interface MemoryLocalStorage {\n  secret: string;\n  list: string[];\n  files: DataHandler;\n}\n\nconst DEFAULT_LIMIT = 1000;\nclass LocalMemory implements IPluginStorage<ConfigMemory> {\n  private path: string;\n  private limit: number;\n  public logger: Logger;\n  private data: MemoryLocalStorage;\n  public config: ConfigMemory;\n\n  public constructor(config: ConfigMemory, options: PluginOptions<ConfigMemory>) {\n    this.config = config;\n    this.limit = config.limit || DEFAULT_LIMIT;\n    this.logger = options.logger;\n    this.data = this._createEmtpyDatabase();\n    this.path = '/';\n  }\n\n  public getSecret(): Promise<string> {\n    return Promise.resolve(this.data.secret);\n  }\n\n  public setSecret(secret: string): Promise<string | null> {\n    return new Promise((resolve): void => {\n      this.data.secret = secret;\n      resolve(null);\n    });\n  }\n\n  public add(name: string, cb: Callback): void {\n    const { list } = this.data;\n\n    if (list.length < this.limit) {\n      if (list.indexOf(name) === -1) {\n        list.push(name);\n      }\n      cb(null);\n    } else {\n      this.logger.info(\n        { limit: this.limit },\n        'Storage memory has reached limit of @{limit} packages'\n      );\n      cb(new Error('Storage memory has reached limit of limit packages'));\n    }\n  }\n\n  public search(onPackage: Callback, onEnd: Callback, validateName: Function): void {\n    void onPackage;\n    void validateName;\n\n    this.logger.warn('[verdaccio/memory]: search method not implemented, PR is welcome');\n    onEnd();\n  }\n\n  public remove(name: string, cb: Callback): void {\n    const { list } = this.data;\n    const item = list.indexOf(name);\n\n    if (item !== -1) {\n      list.splice(item, 1);\n    }\n\n    cb(null);\n  }\n\n  public get(cb: Callback): void {\n    cb(null, this.data.list);\n  }\n\n  public getPackageStorage(packageInfo: string): MemoryHandler {\n    return new MemoryHandler(packageInfo, this.data.files, this.logger);\n  }\n\n  private _createEmtpyDatabase(): MemoryLocalStorage {\n    const list: string[] = [];\n    const files = {};\n    const emptyDatabase = {\n      list,\n      files,\n      secret: '',\n    };\n\n    return emptyDatabase;\n  }\n\n  public saveToken(_token: Token): Promise<void> {\n    this.logger.warn('[verdaccio/memory][saveToken] save token has not been implemented yet');\n\n    return Promise.reject(errorUtils.getServiceUnavailable('method not implemented'));\n  }\n\n  public deleteToken(user: string, tokenKey: string): Promise<void> {\n    this.logger.warn(\n      { tokenKey, user },\n      '[verdaccio/memory][deleteToken] delete token has not been implemented yet @{user}'\n    );\n\n    return Promise.reject(errorUtils.getServiceUnavailable('method not implemented'));\n  }\n\n  public readTokens(_filter: TokenFilter): Promise<Token[]> {\n    this.logger.warn('[verdaccio/memory][readTokens] read tokens has not been implemented yet ');\n\n    return Promise.reject(errorUtils.getServiceUnavailable('method not implemented'));\n  }\n}\n\nexport default LocalMemory;\n"],"mappings":";;;AAeA,IAAM,gBAAgB;AACtB,IAAM,cAAN,MAA0D;CACxD;CACA;CACA;CACA;CACA;CAEA,YAAmB,QAAsB,SAAsC;EAC7E,KAAK,SAAS;EACd,KAAK,QAAQ,OAAO,SAAS;EAC7B,KAAK,SAAS,QAAQ;EACtB,KAAK,OAAO,KAAK,qBAAqB;EACtC,KAAK,OAAO;CACd;CAEA,YAAoC;EAClC,OAAO,QAAQ,QAAQ,KAAK,KAAK,MAAM;CACzC;CAEA,UAAiB,QAAwC;EACvD,OAAO,IAAI,SAAS,YAAkB;GACpC,KAAK,KAAK,SAAS;GACnB,QAAQ,IAAI;EACd,CAAC;CACH;CAEA,IAAW,MAAc,IAAoB;EAC3C,MAAM,EAAE,SAAS,KAAK;EAEtB,IAAI,KAAK,SAAS,KAAK,OAAO;GAC5B,IAAI,KAAK,QAAQ,IAAI,MAAM,IACzB,KAAK,KAAK,IAAI;GAEhB,GAAG,IAAI;EACT,OAAO;GACL,KAAK,OAAO,KACV,EAAE,OAAO,KAAK,MAAM,GACpB,uDACF;GACA,mBAAG,IAAI,MAAM,oDAAoD,CAAC;EACpE;CACF;CAEA,OAAc,WAAqB,OAAiB,cAA8B;EAIhF,KAAK,OAAO,KAAK,kEAAkE;EACnF,MAAM;CACR;CAEA,OAAc,MAAc,IAAoB;EAC9C,MAAM,EAAE,SAAS,KAAK;EACtB,MAAM,OAAO,KAAK,QAAQ,IAAI;EAE9B,IAAI,SAAS,IACX,KAAK,OAAO,MAAM,CAAC;EAGrB,GAAG,IAAI;CACT;CAEA,IAAW,IAAoB;EAC7B,GAAG,MAAM,KAAK,KAAK,IAAI;CACzB;CAEA,kBAAyB,aAAoC;EAC3D,OAAO,IAAI,cAAc,aAAa,KAAK,KAAK,OAAO,KAAK,MAAM;CACpE;CAEA,uBAAmD;EASjD,OAAO;GALL,MAAA,CAAA;GACA,OAAA,CAAA;GACA,QAAQ;EAGH;CACT;CAEA,UAAiB,QAA8B;EAC7C,KAAK,OAAO,KAAK,uEAAuE;EAExF,OAAO,QAAQ,OAAO,WAAW,sBAAsB,wBAAwB,CAAC;CAClF;CAEA,YAAmB,MAAc,UAAiC;EAChE,KAAK,OAAO,KACV;GAAE;GAAU;EAAK,GACjB,mFACF;EAEA,OAAO,QAAQ,OAAO,WAAW,sBAAsB,wBAAwB,CAAC;CAClF;CAEA,WAAkB,SAAwC;EACxD,KAAK,OAAO,KAAK,0EAA0E;EAE3F,OAAO,QAAQ,OAAO,WAAW,sBAAsB,wBAAwB,CAAC;CAClF;AACF"}