UNPKG

@verdaccio/local-storage

Version:

Local storage implementation

77 lines (76 loc) 2.79 kB
const require_runtime = require("./_virtual/_rolldown/runtime.js"); let debug = require("debug"); debug = require_runtime.__toESM(debug); let lodash = require("lodash"); lodash = require_runtime.__toESM(lodash); let path = require("path"); path = require_runtime.__toESM(path); let lowdb = require("lowdb"); lowdb = require_runtime.__toESM(lowdb); let lowdb_adapters_FileAsync = require("lowdb/adapters/FileAsync"); lowdb_adapters_FileAsync = require_runtime.__toESM(lowdb_adapters_FileAsync); let lowdb_adapters_Memory = require("lowdb/adapters/Memory"); lowdb_adapters_Memory = require_runtime.__toESM(lowdb_adapters_Memory); //#region src/token.ts var debug$1 = (0, debug.default)("verdaccio:plugin:local-storage:token"); var TOKEN_DB_NAME = ".token-db.json"; var TokenActions = class { config; tokenDb; constructor(config) { this.config = config; this.tokenDb = null; } _dbGenPath(dbName, config) { const selfPath = config.configPath ?? config.self_path; return path.default.join(path.default.resolve(path.default.dirname(selfPath || ""), config.storage, dbName)); } async getTokenDb() { if (!this.tokenDb) { debug$1("token database is not defined"); let adapter; if (process.env.NODE_ENV === "test") { debug$1("token memory adapter"); adapter = new lowdb_adapters_Memory.default(""); } else { debug$1("token async adapter"); adapter = new lowdb_adapters_FileAsync.default(this._dbGenPath(TOKEN_DB_NAME, this.config)); } debug$1("token bd generated"); this.tokenDb = await (0, lowdb.default)(adapter); } return this.tokenDb; } async saveToken(token) { debug$1("token key %o", token.key); const db = await this.getTokenDb(); const userData = await db.get(token.user).value(); debug$1("user data %o", userData); if (lodash.default.isNil(userData)) { await db.set(token.user, [token]).write(); debug$1("token user %o new database", token.user); } else await db.get(token.user).push(token).write(); debug$1("data %o", await db.getState()); debug$1("token saved %o", token.user); } async deleteToken(user, tokenKey) { const db = await this.getTokenDb(); const userTokens = await db.get(user).value(); if (lodash.default.isNil(userTokens)) throw new Error("user not found"); debug$1("tokens %o - %o", userTokens, userTokens.length); const remainingTokens = userTokens.filter(({ key }) => { debug$1("key %o", key); return key !== tokenKey; }); await db.set(user, remainingTokens).write(); debug$1("removed tokens key %o", tokenKey); } async readTokens(filter) { const { user } = filter; debug$1("read tokens with %o", user); return await (await this.getTokenDb()).get(user).value() || []; } }; //#endregion exports.default = TokenActions; //# sourceMappingURL=token.js.map