@verdaccio/local-storage
Version:
Local storage implementation
77 lines (76 loc) • 2.79 kB
JavaScript
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