summaryrefslogtreecommitdiff
path: root/includes/external/addressbook/node_modules/keyv/src
diff options
context:
space:
mode:
Diffstat (limited to 'includes/external/addressbook/node_modules/keyv/src')
-rw-r--r--includes/external/addressbook/node_modules/keyv/src/index.d.ts116
-rw-r--r--includes/external/addressbook/node_modules/keyv/src/index.js264
2 files changed, 0 insertions, 380 deletions
diff --git a/includes/external/addressbook/node_modules/keyv/src/index.d.ts b/includes/external/addressbook/node_modules/keyv/src/index.d.ts
deleted file mode 100644
index 8261a9b..0000000
--- a/includes/external/addressbook/node_modules/keyv/src/index.d.ts
+++ /dev/null
@@ -1,116 +0,0 @@
-import {EventEmitter} from 'events';
-
-type WithRequiredProperties<T, K extends keyof T> = T & Required<Pick<T, K>>;
-
-declare class Keyv<Value = any, Options extends Record<string, any> = Record<string, unknown>> extends EventEmitter {
- /**
- * `this.opts` is an object containing at least the properties listed
- * below. However, `Keyv.Options` allows arbitrary properties as well.
- * These properties can be specified as the second type parameter to `Keyv`.
- */
- opts: WithRequiredProperties<
- Keyv.Options<Value>,
- 'deserialize' | 'namespace' | 'serialize' | 'store' | 'uri'
- > &
- Options;
-
- /**
- * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options.
- */
- constructor(options?: Keyv.Options<Value> & Options);
- /**
- * @param uri The connection string URI.
- *
- * Merged into the options object as options.uri.
- * @param opts The options object is also passed through to the storage adapter. Check your storage adapter docs for any extra options.
- */
- constructor(uri?: string, options?: Keyv.Options<Value> & Options);
-
- /** Returns the value. */
- get<Raw extends boolean = false>(key: string, options?: {raw?: Raw}):
- Promise<(Raw extends false
- ? Value
- : Keyv.DeserializedData<Value>) | undefined>;
-
- /** Returns an array of values. Uses `store.getMany` if it exists, otherwise uses parallel calls to `store.get`. */
- get<Raw extends boolean = false>(
- key: string[],
- options?: {raw?: Raw}
- ): Promise<
- Array<(Raw extends false ? Value : Keyv.DeserializedData<Value>) | undefined>
- >;
-
- /**
- * Set a value.
- *
- * By default keys are persistent. You can set an expiry TTL in milliseconds.
- */
- set(key: string, value: Value, ttl?: number): Promise<true>;
- /**
- * Deletes an entry.
- *
- * Returns `true` if the key existed, `false` if not.
- */
- delete(key: string | string[]): Promise<boolean>;
- /** Delete all entries in the current namespace. */
- clear(): Promise<void>;
- /** Check if key exists in current namespace. */
- has(key: string): Promise<boolean>;
- /** Iterator */
- iterator(namespace?: string): AsyncGenerator<any, void, any>;
- /**
- * Closes the connection.
- *
- * Returns `undefined` when the connection closes.
- */
- disconnect(): Promise<void>;
-}
-
-declare namespace Keyv {
- interface Options<Value> {
- [key: string]: any;
-
- /** Namespace for the current instance. */
- namespace?: string | undefined;
- /** A custom serialization function. */
- serialize?: ((data: DeserializedData<Value>) => string) | undefined;
- /** A custom deserialization function. */
- deserialize?: ((data: string) => DeserializedData<Value> | undefined) | undefined;
- /** The connection string URI. */
- uri?: string | undefined;
- /** The storage adapter instance to be used by Keyv. */
- store?: Store<string | undefined> | undefined;
- /** Default TTL. Can be overridden by specififying a TTL on `.set()`. */
- ttl?: number | undefined;
- /** Specify an adapter to use. e.g `'redis'` or `'mongodb'`. */
- adapter?: 'redis' | 'mongodb' | 'mongo' | 'sqlite' | 'postgresql' | 'postgres' | 'mysql' | undefined;
- /** Enable compression option **/
- compression?: CompressionAdapter | undefined;
- }
-
- interface CompressionAdapter {
- compress(value: any, options?: any): Promise<any>;
- decompress(value: any, options?: any): Promise<any>;
- serialize(value: any): Promise<any>;
- deserialize(value: any): Promise<any>;
- }
-
- interface DeserializedData<Value> {
- value: Value; expires: number | undefined;
- }
-
- type StoredData<Value> = DeserializedData<Value> | string | undefined;
-
- interface Store<Value> {
- get(key: string): Value | Promise<Value | undefined> | undefined;
- set(key: string, value: Value, ttl?: number): any;
- delete(key: string): boolean | Promise<boolean>;
- clear(): void | Promise<void>;
- has?(key: string): boolean | Promise<boolean>;
- getMany?(
- keys: string[]
- ): Array<StoredData<Value>> | Promise<Array<StoredData<Value>>> | undefined;
- }
-}
-
-export = Keyv;
diff --git a/includes/external/addressbook/node_modules/keyv/src/index.js b/includes/external/addressbook/node_modules/keyv/src/index.js
deleted file mode 100644
index dd27264..0000000
--- a/includes/external/addressbook/node_modules/keyv/src/index.js
+++ /dev/null
@@ -1,264 +0,0 @@
-'use strict';
-
-const EventEmitter = require('events');
-const JSONB = require('json-buffer');
-
-const loadStore = options => {
- const adapters = {
- redis: '@keyv/redis',
- rediss: '@keyv/redis',
- mongodb: '@keyv/mongo',
- mongo: '@keyv/mongo',
- sqlite: '@keyv/sqlite',
- postgresql: '@keyv/postgres',
- postgres: '@keyv/postgres',
- mysql: '@keyv/mysql',
- etcd: '@keyv/etcd',
- offline: '@keyv/offline',
- tiered: '@keyv/tiered',
- };
- if (options.adapter || options.uri) {
- const adapter = options.adapter || /^[^:+]*/.exec(options.uri)[0];
- return new (require(adapters[adapter]))(options);
- }
-
- return new Map();
-};
-
-const iterableAdapters = [
- 'sqlite',
- 'postgres',
- 'mysql',
- 'mongo',
- 'redis',
- 'tiered',
-];
-
-class Keyv extends EventEmitter {
- constructor(uri, {emitErrors = true, ...options} = {}) {
- super();
- this.opts = {
- namespace: 'keyv',
- serialize: JSONB.stringify,
- deserialize: JSONB.parse,
- ...((typeof uri === 'string') ? {uri} : uri),
- ...options,
- };
-
- if (!this.opts.store) {
- const adapterOptions = {...this.opts};
- this.opts.store = loadStore(adapterOptions);
- }
-
- if (this.opts.compression) {
- const compression = this.opts.compression;
- this.opts.serialize = compression.serialize.bind(compression);
- this.opts.deserialize = compression.deserialize.bind(compression);
- }
-
- if (typeof this.opts.store.on === 'function' && emitErrors) {
- this.opts.store.on('error', error => this.emit('error', error));
- }
-
- this.opts.store.namespace = this.opts.namespace;
-
- const generateIterator = iterator => async function * () {
- for await (const [key, raw] of typeof iterator === 'function'
- ? iterator(this.opts.store.namespace)
- : iterator) {
- const data = this.opts.deserialize(raw);
- if (this.opts.store.namespace && !key.includes(this.opts.store.namespace)) {
- continue;
- }
-
- if (typeof data.expires === 'number' && Date.now() > data.expires) {
- this.delete(key);
- continue;
- }
-
- yield [this._getKeyUnprefix(key), data.value];
- }
- };
-
- // Attach iterators
- if (typeof this.opts.store[Symbol.iterator] === 'function' && this.opts.store instanceof Map) {
- this.iterator = generateIterator(this.opts.store);
- } else if (typeof this.opts.store.iterator === 'function' && this.opts.store.opts
- && this._checkIterableAdaptar()) {
- this.iterator = generateIterator(this.opts.store.iterator.bind(this.opts.store));
- }
- }
-
- _checkIterableAdaptar() {
- return iterableAdapters.includes(this.opts.store.opts.dialect)
- || iterableAdapters.findIndex(element => this.opts.store.opts.url.includes(element)) >= 0;
- }
-
- _getKeyPrefix(key) {
- return `${this.opts.namespace}:${key}`;
- }
-
- _getKeyPrefixArray(keys) {
- return keys.map(key => `${this.opts.namespace}:${key}`);
- }
-
- _getKeyUnprefix(key) {
- return key
- .split(':')
- .splice(1)
- .join(':');
- }
-
- get(key, options) {
- const {store} = this.opts;
- const isArray = Array.isArray(key);
- const keyPrefixed = isArray ? this._getKeyPrefixArray(key) : this._getKeyPrefix(key);
- if (isArray && store.getMany === undefined) {
- const promises = [];
- for (const key of keyPrefixed) {
- promises.push(Promise.resolve()
- .then(() => store.get(key))
- .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))
- .then(data => {
- if (data === undefined || data === null) {
- return undefined;
- }
-
- if (typeof data.expires === 'number' && Date.now() > data.expires) {
- return this.delete(key).then(() => undefined);
- }
-
- return (options && options.raw) ? data : data.value;
- }),
- );
- }
-
- return Promise.allSettled(promises)
- .then(values => {
- const data = [];
- for (const value of values) {
- data.push(value.value);
- }
-
- return data;
- });
- }
-
- return Promise.resolve()
- .then(() => isArray ? store.getMany(keyPrefixed) : store.get(keyPrefixed))
- .then(data => (typeof data === 'string') ? this.opts.deserialize(data) : (this.opts.compression ? this.opts.deserialize(data) : data))
- .then(data => {
- if (data === undefined || data === null) {
- return undefined;
- }
-
- if (isArray) {
- const result = [];
-
- for (let row of data) {
- if ((typeof row === 'string')) {
- row = this.opts.deserialize(row);
- }
-
- if (row === undefined || row === null) {
- result.push(undefined);
- continue;
- }
-
- if (typeof row.expires === 'number' && Date.now() > row.expires) {
- this.delete(key).then(() => undefined);
- result.push(undefined);
- } else {
- result.push((options && options.raw) ? row : row.value);
- }
- }
-
- return result;
- }
-
- if (typeof data.expires === 'number' && Date.now() > data.expires) {
- return this.delete(key).then(() => undefined);
- }
-
- return (options && options.raw) ? data : data.value;
- });
- }
-
- set(key, value, ttl) {
- const keyPrefixed = this._getKeyPrefix(key);
- if (typeof ttl === 'undefined') {
- ttl = this.opts.ttl;
- }
-
- if (ttl === 0) {
- ttl = undefined;
- }
-
- const {store} = this.opts;
-
- return Promise.resolve()
- .then(() => {
- const expires = (typeof ttl === 'number') ? (Date.now() + ttl) : null;
- if (typeof value === 'symbol') {
- this.emit('error', 'symbol cannot be serialized');
- }
-
- value = {value, expires};
- return this.opts.serialize(value);
- })
- .then(value => store.set(keyPrefixed, value, ttl))
- .then(() => true);
- }
-
- delete(key) {
- const {store} = this.opts;
- if (Array.isArray(key)) {
- const keyPrefixed = this._getKeyPrefixArray(key);
- if (store.deleteMany === undefined) {
- const promises = [];
- for (const key of keyPrefixed) {
- promises.push(store.delete(key));
- }
-
- return Promise.allSettled(promises)
- .then(values => values.every(x => x.value === true));
- }
-
- return Promise.resolve()
- .then(() => store.deleteMany(keyPrefixed));
- }
-
- const keyPrefixed = this._getKeyPrefix(key);
- return Promise.resolve()
- .then(() => store.delete(keyPrefixed));
- }
-
- clear() {
- const {store} = this.opts;
- return Promise.resolve()
- .then(() => store.clear());
- }
-
- has(key) {
- const keyPrefixed = this._getKeyPrefix(key);
- const {store} = this.opts;
- return Promise.resolve()
- .then(async () => {
- if (typeof store.has === 'function') {
- return store.has(keyPrefixed);
- }
-
- const value = await store.get(keyPrefixed);
- return value !== undefined;
- });
- }
-
- disconnect() {
- const {store} = this.opts;
- if (typeof store.disconnect === 'function') {
- return store.disconnect();
- }
- }
-}
-
-module.exports = Keyv;