export class Store { /** @private {string} */ #_storeName; /** @private {boolean} */ #_autoIncrement; /** @private {string|Array} */ #_keyPath; /** @private {Object[]} */ #_indexes; /** * @param {string} storeName * @param {boolean} autoIncrement * @param {string|Array} keyPath * @param {Object[]} indexes */ constructor(storeName, autoIncrement = true, keyPath = "id", indexes = []) { this.#_storeName = storeName; this.#_autoIncrement = autoIncrement; this.#_keyPath = keyPath; this.#_indexes = indexes; } get storeName() { return this.#_storeName; } set storeName(value) { this.#_storeName = value } get autoIncrement() { return this.#_autoIncrement; } set autoIncrement(value) { this.#_autoIncrement = value } get keyPath() { return this.#_keyPath; } set keyPath(value) { this.#_keyPath = value } get indexes() { return this.#_indexes; } set indexes(value) { this.#_indexes = value } } export class Index { /** @private {string} */ #_name; /** @private {string} */ #_keyPath; /** @private {Object} */ #_options = {}; /** * @param {string} keyPath * @param {boolean} isUnique */ constructor(keyPath, isUnique = false) { this.#_name = keyPath; this.#_keyPath = keyPath; this.#_options = { unique: isUnique}; } get name() { return this.#_name; } set name(value) { this.#_name = value; } get keyPath() { return this.#_keyPath; } set keyPath(value) { this.#_keyPath = value; } get options() { return this.#_options; } set options(value) { this.#_options = value; } }