mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-03-04 02:02:39 -05:00
96 lines
2 KiB
JavaScript
96 lines
2 KiB
JavaScript
/*!
|
|
* lunr.Store
|
|
* Copyright (C) @YEAR Oliver Nightingale
|
|
*/
|
|
|
|
/**
|
|
* lunr.Store is a simple key-value store used for storing sets of tokens for
|
|
* documents stored in index.
|
|
*
|
|
* @constructor
|
|
* @module
|
|
*/
|
|
lunr.Store = function () {
|
|
this.store = {}
|
|
this.length = 0
|
|
}
|
|
|
|
/**
|
|
* Loads a previously serialised store
|
|
*
|
|
* @param {Object} serialisedData The serialised store to load.
|
|
* @returns {lunr.Store}
|
|
* @memberOf Store
|
|
*/
|
|
lunr.Store.load = function (serialisedData) {
|
|
var store = new this
|
|
|
|
store.length = serialisedData.length
|
|
store.store = Object.keys(serialisedData.store).reduce(function (memo, key) {
|
|
memo[key] = lunr.SortedSet.load(serialisedData.store[key])
|
|
return memo
|
|
}, {})
|
|
|
|
return store
|
|
}
|
|
|
|
/**
|
|
* Stores the given tokens in the store against the given id.
|
|
*
|
|
* @param {Object} id The key used to store the tokens against.
|
|
* @param {Object} tokens The tokens to store against the key.
|
|
* @memberOf Store
|
|
*/
|
|
lunr.Store.prototype.set = function (id, tokens) {
|
|
if (!this.has(id)) this.length++
|
|
this.store[id] = tokens
|
|
}
|
|
|
|
/**
|
|
* Retrieves the tokens from the store for a given key.
|
|
*
|
|
* @param {Object} id The key to lookup and retrieve from the store.
|
|
* @returns {Object}
|
|
* @memberOf Store
|
|
*/
|
|
lunr.Store.prototype.get = function (id) {
|
|
return this.store[id]
|
|
}
|
|
|
|
/**
|
|
* Checks whether the store contains a key.
|
|
*
|
|
* @param {Object} id The id to look up in the store.
|
|
* @returns {Boolean}
|
|
* @memberOf Store
|
|
*/
|
|
lunr.Store.prototype.has = function (id) {
|
|
return id in this.store
|
|
}
|
|
|
|
/**
|
|
* Removes the value for a key in the store.
|
|
*
|
|
* @param {Object} id The id to remove from the store.
|
|
* @memberOf Store
|
|
*/
|
|
lunr.Store.prototype.remove = function (id) {
|
|
if (!this.has(id)) return
|
|
|
|
delete this.store[id]
|
|
this.length--
|
|
}
|
|
|
|
/**
|
|
* Returns a representation of the store ready for serialisation.
|
|
*
|
|
* @returns {Object}
|
|
* @memberOf Store
|
|
*/
|
|
lunr.Store.prototype.toJSON = function () {
|
|
return {
|
|
store: this.store,
|
|
length: this.length
|
|
}
|
|
}
|
|
|