diff --git a/api/api/get.ts b/api/api/get.ts new file mode 100644 index 000000000..9ebc6390b --- /dev/null +++ b/api/api/get.ts @@ -0,0 +1,5 @@ + + +export default function getApi(params, options, callback) { + +} \ No newline at end of file diff --git a/api/index.ts b/api/index.ts new file mode 100644 index 000000000..1bd6ba3e2 --- /dev/null +++ b/api/index.ts @@ -0,0 +1,98 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { ApiResponse, Context, TransportRequestOptions, TransportRequestPromise } from "lib/Transport"; +import { ClientOptions, RequestParams } from ".."; +import { kConfigurationError } from './utils' + +const kCat = Symbol('Cat'); +const kCluster = Symbol('Cluster'); +const kDanglingIndices = Symbol('DanglingIndices'); +const kFeatures = Symbol('Features'); +const kIndices = Symbol('Indices'); +const kIngest = Symbol('Ingest'); +const kNodes = Symbol('Nodes'); +const kShutdown = Symbol('Shutdown'); +const kSnapshot = Symbol('Snapshot'); +const kTasks = Symbol('Tasks'); + +export default class OpenSearchAPI { + [kCat]: symbol | null + [kCluster]: symbol | null + [kDanglingIndices]: symbol | null + [kFeatures]: symbol | null + [kIndices]: symbol | null + [kIngest]: symbol | null + [kNodes]: symbol | null + [kShutdown]: symbol | null + [kSnapshot]: symbol | null + [kTasks]: symbol | null + // TODO: FIX. No configuration error on ClientOptions + [kConfigurationError]: symbol | null + + constructor(opts: ClientOptions) { + this[kCat] = null; + this[kCluster] = null; + this[kDanglingIndices] = null; + this[kFeatures] = null; + this[kIndices] = null; + this[kIngest] = null; + this[kNodes] = null; + this[kShutdown] = null; + this[kSnapshot] = null; + this[kTasks] = null; + // TODO: FIX. No configuration error on ClientOptions. It's in root index.ts + this[kConfigurationError] = null; + } + // get, TContext = Context>( + // params?: RequestParams.SnapshotGet, + // options?: TransportRequestOptions + // ): TransportRequestPromise>; + + // get, TContext = Context>( + // callback: callbackFn + // ): TransportRequestCallback; + + // get, TContext = Context>( + // params: RequestParams.SnapshotGet, + // callback: callbackFn + // ): TransportRequestCallback; + + // get, TContext = Context>( + // params: RequestParams.SnapshotGet, + // options: TransportRequestOptions, + // callback: callbackFn + // ): TransportRequestCallback; + + // cat, TContext = Context>(params: RequestParams.SnapshotGet, callback: callbackFn) + // cat, TContext = Context>(params: RequestParams.SnapshotGet, options: TransportRequestOptions): TransportRequestPromise> { + + // } +} + diff --git a/api/utils.ts b/api/utils.ts new file mode 100644 index 000000000..3f82ed403 --- /dev/null +++ b/api/utils.ts @@ -0,0 +1,68 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const result = { body: null, statusCode: null, headers: null, warnings: null }; +export const kConfigurationError = Symbol('Configuration error'); + +export function handleError(err: symbol, callback: Function) { + if (callback) { + process.nextTick(callback, err, result); + return { then: NOOP, catch: NOOP, abort: NOOP }; + } + return Promise.reject(err); +} + +export function snakeCaseKeys( + acceptedQuerystring: string[], + snakeCase: Record, + querystring: Record +) { + const target = {}; + const keys = Object.keys(querystring); + for (let i = 0, len = keys.length; i < len; i++) { + const key = keys[i]; + target[snakeCase[key] || key] = querystring[key]; + } + return target; +} + +export function normalizeArguments(params, options, callback) { + if (typeof options === 'function') { + callback = options; + options = {}; + } + if (typeof params === 'function' || params == null) { + callback = params; + params = {}; + options = {}; + } + return [params, options, callback]; +} + +export function NOOP(): void {} diff --git a/index.ts b/index.ts new file mode 100644 index 000000000..515e71a72 --- /dev/null +++ b/index.ts @@ -0,0 +1,305 @@ +import { URL } from 'node:url'; +import { OpenSearchAPI } from './src/api'; + +import { version } from './package.json'; +import { ClientOptions, extendsCallback, NodeOptions } from './src/types'; +import { ConfigurationError } from './src/errors'; +import { EventEmitter } from 'node:events' +import * as RequestParams from './src/types/params'; +import { Helpers, Serializer } from './src/transport'; + +const kInitialOptions = Symbol('opensearchjs-initial-options'); +const kChild = Symbol('opensearchjs-child'); +const kExtensions = Symbol('opensearchjs-extensions'); +const kEventEmitter = Symbol('opensearchjs-event-emitter'); + +export class Client extends OpenSearchAPI { + + static serializer: Serializer + static helpers: Helpers + + constructor(opts: ClientOptions = {}) { + super({ ConfigurationError }); + if (opts.cloud && opts[kChild] === undefined) { + const { id, username, password } = opts.cloud; + // the cloud id is `cluster-name:base64encodedurl` + // the url is a string divided by two '$', the first is the cloud url + // the second the opensearch instance, the third the opensearchDashboards instance + const cloudUrls = Buffer.from(id.split(':')[1], 'base64').toString().split('$'); + if (username && password) { + opts.auth = Object.assign({}, opts.auth, { username, password }); + } + opts.node = `https://${cloudUrls[1]}.${cloudUrls[0]}`; + + // Cloud has better performances with compression enabled + // see https://github.com/elastic/elasticsearch-py/pull/704. + // So unless the user specifies otherwise, we enable compression. + if (opts.compression == null) opts.compression = 'gzip'; + if (opts.suggestCompression == null) opts.suggestCompression = true; + if (opts.ssl == null || (opts.ssl && opts.ssl.secureProtocol == null)) { + opts.ssl = opts.ssl || {}; + opts.ssl.secureProtocol = 'TLSv1_2_method'; + } + } + + if (!opts.node && !opts.nodes) { + throw new ConfigurationError('Missing node(s) option'); + } + + if (opts[kChild] === undefined) { + // @ts-expect-error + const checkAuth = getAuth(opts.node || opts.nodes); + if (checkAuth?.username && checkAuth.password) { + opts.auth = Object.assign({}, opts.auth, { + username: checkAuth.username, + password: checkAuth.password, + }); + } + } + + const options = + opts[kChild] !== undefined + ? opts[kChild].initialOptions + : Object.assign( + {}, + { + Connection, + Transport, + Serializer, + ConnectionPool: opts.cloud ? CloudConnectionPool : ConnectionPool, + maxRetries: 3, + requestTimeout: 30000, + pingTimeout: 3000, + sniffInterval: false, + sniffOnStart: false, + sniffEndpoint: '_nodes/_all/http', + sniffOnConnectionFault: false, + resurrectStrategy: 'ping', + suggestCompression: false, + compression: false, + ssl: null, + agent: null, + headers: {}, + nodeFilter: null, + nodeSelector: 'round-robin', + generateRequestId: null, + name: 'opensearch-js', + auth: null, + opaqueIdPrefix: null, + context: null, + proxy: null, + enableMetaHeader: true, + disablePrototypePoisoningProtection: false, + }, + opts + ); + + if (process.env.OPENSEARCH_CLIENT_APIVERSIONING === 'true') { + options.headers = Object.assign( + { accept: 'application/vnd.opensearch+json; compatible-with=7' }, + options.headers + ); + } + + this[kInitialOptions] = options; + this[kExtensions] = []; + this.name = options.name; + + if (opts[kChild] !== undefined) { + this.serializer = options[kChild].serializer; + this.connectionPool = options[kChild].connectionPool; + this[kEventEmitter] = options[kChild].eventEmitter; + } else { + this[kEventEmitter] = new EventEmitter(); + this.serializer = new options.Serializer({ + disablePrototypePoisoningProtection: options.disablePrototypePoisoningProtection, + }); + this.connectionPool = new options.ConnectionPool({ + pingTimeout: options.pingTimeout, + resurrectStrategy: options.resurrectStrategy, + ssl: options.ssl, + agent: options.agent, + proxy: options.proxy, + Connection: options.Connection, + auth: options.auth, + emit: this[kEventEmitter].emit.bind(this[kEventEmitter]), + sniffEnabled: + options.sniffInterval !== false || + options.sniffOnStart !== false || + options.sniffOnConnectionFault !== false, + }); + // Add the connections before initialize the Transport + this.connectionPool.addConnection(options.node || options.nodes); + } + + this.transport = new options.Transport({ + emit: this[kEventEmitter].emit.bind(this[kEventEmitter]), + connectionPool: this.connectionPool, + serializer: this.serializer, + maxRetries: options.maxRetries, + requestTimeout: options.requestTimeout, + sniffInterval: options.sniffInterval, + sniffOnStart: options.sniffOnStart, + sniffOnConnectionFault: options.sniffOnConnectionFault, + sniffEndpoint: options.sniffEndpoint, + suggestCompression: options.suggestCompression, + compression: options.compression, + headers: options.headers, + nodeFilter: options.nodeFilter, + nodeSelector: options.nodeSelector, + generateRequestId: options.generateRequestId, + name: options.name, + opaqueIdPrefix: options.opaqueIdPrefix, + context: options.context, + memoryCircuitBreaker: options.memoryCircuitBreaker, + }); + + this.helpers = new Helpers({ + client: this, + maxRetries: options.maxRetries, + }); + + } + + + get emit() { + return this[kEventEmitter].emit.bind(this[kEventEmitter]); + } + + get on() { + return this[kEventEmitter].on.bind(this[kEventEmitter]); + } + + get once() { + return this[kEventEmitter].once.bind(this[kEventEmitter]); + } + + get off() { + return this[kEventEmitter].off.bind(this[kEventEmitter]); + } + + extend(name: string, fn: extendsCallback): void + extend(name: string, opts: { force: boolean }, fn: extendsCallback): void { + if (typeof opts === 'function') { + fn = opts; + opts = {}; + } + + let [namespace, method] = name.split('.'); + if (method == null) { + method = namespace; + namespace = null; + } + + if (namespace != null) { + if (this[namespace] != null && this[namespace][method] != null && opts.force !== true) { + throw new Error(`The method "${method}" already exists on namespace "${namespace}"`); + } + + if (this[namespace] == null) this[namespace] = {}; + this[namespace][method] = fn({ + makeRequest: this.transport.request.bind(this.transport), + result: { body: null, statusCode: null, headers: null, warnings: null }, + ConfigurationError, + }); + } else { + if (this[method] != null && opts.force !== true) { + throw new Error(`The method "${method}" already exists`); + } + + this[method] = fn({ + makeRequest: this.transport.request.bind(this.transport), + result: { body: null, statusCode: null, headers: null, warnings: null }, + ConfigurationError, + }); + } + + this[kExtensions].push({ name, opts, fn }); + } + + child(opts) { + // Merge the new options with the initial ones + const options = Object.assign({}, this[kInitialOptions], opts); + // Pass to the child client the parent instances that cannot be overriden + options[kChild] = { + connectionPool: this.connectionPool, + serializer: this.serializer, + eventEmitter: this[kEventEmitter], + initialOptions: options, + }; + + /* istanbul ignore else */ + if (options.auth !== undefined) { + options.headers = prepareHeaders(options.headers, options.auth); + } + + const client = new Client(options); + // sync compatible check + const tSymbol = Object.getOwnPropertySymbols(this.transport).filter( + (symbol) => symbol.description === 'compatible check' + )[0]; + client.transport[tSymbol] = this.transport[tSymbol]; + // Add parent extensions + if (this[kExtensions].length > 0) { + this[kExtensions].forEach(({ name, opts, fn }) => { + client.extend(name, opts, fn); + }); + } + return client; + } + + close(callback) { + if (callback == null) { + return new Promise((resolve) => { + this.close(resolve); + }); + } + debug('Closing the client'); + this.connectionPool.empty(callback); + } + +} + +function getAuth(node: string | string[] | NodeOptions | NodeOptions[]) { + if (Array.isArray(node)) { + for (const url of node) { + const auth = getUsernameAndPassword(url); + if (auth?.username !== '' && auth?.password !== '') { + return auth; + } + } + return null; + } + + const auth = getUsernameAndPassword(node); + if (auth?.username !== '' && auth?.password !== '') { + return auth; + } + + return null; + + function getUsernameAndPassword(node: string | NodeOptions) { + /* istanbul ignore else */ + if (typeof node === 'string') { + const { username, password } = new URL(node); + return { + username: decodeURIComponent(username), + password: decodeURIComponent(password), + }; + } else if (node.url instanceof URL) { + return { + username: decodeURIComponent(node.url.username), + password: decodeURIComponent(node.url.password), + }; + } + } +} + +export const events = { + RESPONSE: 'response', + REQUEST: 'request', + SNIFF: 'sniff', + RESURRECT: 'resurrect', + SERIALIZATION: 'serialization', + DESERIALIZATION: 'deserialization', +} as const; diff --git a/lib/Serializer.d.ts b/lib/Serializer.d.ts deleted file mode 100644 index 5e9799996..000000000 --- a/lib/Serializer.d.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright OpenSearch Contributors - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - * - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -export interface SerializerOptions { - disablePrototypePoisoningProtection: boolean | 'proto' | 'constructor'; -} - -export default class Serializer { - constructor(opts?: SerializerOptions); - serialize(object: any): string; - deserialize(json: string): any; - ndserialize(array: any[]): string; - qserialize(object: any): string; -} diff --git a/lib/Serializer.js b/lib/Serializer.ts similarity index 61% rename from lib/Serializer.js rename to lib/Serializer.ts index 06bec7199..31402cd20 100644 --- a/lib/Serializer.js +++ b/lib/Serializer.ts @@ -27,62 +27,72 @@ * under the License. */ -'use strict'; +import Debug from 'debug'; +import { stringify } from 'querystring'; +import sjson from 'secure-json-parse'; +import { DeserializationError, SerializationError } from './errors'; +const debug = Debug('opensearch'); -const { stringify } = require('querystring'); -const debug = require('debug')('opensearch'); -const sjson = require('secure-json-parse'); -const { SerializationError, DeserializationError } = require('./errors'); -const kJsonOptions = Symbol('secure json parse options'); +export interface SerializerOptions { + disablePrototypePoisoningProtection?: boolean | 'proto' | 'constructor'; +} +const kJsonOptions = Symbol('Secure json parse options'); -class Serializer { - constructor(opts = {}) { - const disable = opts.disablePrototypePoisoningProtection; +export class Serializer { + [kJsonOptions]: { + protoAction: 'ignore' | 'error'; + constructorAction: 'ignore' | 'error'; + }; + constructor(opts: SerializerOptions = {}) { + const disable = opts.disablePrototypePoisoningProtection ?? false; this[kJsonOptions] = { protoAction: disable === true || disable === 'proto' ? 'ignore' : 'error', constructorAction: disable === true || disable === 'constructor' ? 'ignore' : 'error', }; } - serialize(object) { + static serialize(object: Record): string { debug('Serializing', object); - let json; + let json: string; try { json = JSON.stringify(object); - } catch (err) { - throw new SerializationError(err.message, object); + } catch (e: unknown) { + const error = e as Error; + throw new SerializationError(error.message, object); } return json; } - deserialize(json) { + static deserialize(json: string): T { debug('Deserializing', json); let object; try { object = sjson.parse(json, this[kJsonOptions]); - } catch (err) { - throw new DeserializationError(err.message, json); + } catch (e: unknown) { + const error = e as Error; + throw new DeserializationError(error.message as string, json); } return object; } - ndserialize(array) { + static ndserialize(array: (string | Record)[]): string { debug('ndserialize', array); - if (Array.isArray(array) === false) { + if (!Array.isArray(array)) { throw new SerializationError('The argument provided is not an array', array); } - let ndjson = ''; + let ndjson: string = ''; for (let i = 0, len = array.length; i < len; i++) { if (typeof array[i] === 'string') { ndjson += array[i] + '\n'; } else { + // @ts-expect-error ndjson += this.serialize(array[i]) + '\n'; } } return ndjson; } - qserialize(object) { + static qserialize(object?: Record): string { debug('qserialize', object); if (object == null) return ''; if (typeof object === 'string') return object; @@ -93,12 +103,12 @@ class Serializer { // OpenSearch will complain about keys without a value if (object[key] === undefined) { delete object[key]; - } else if (Array.isArray(object[key]) === true) { - object[key] = object[key].join(','); + } else if (Array.isArray(object[key])) { + object[key] = (object[key] as string[]).join(','); } } - return stringify(object); + return stringify(object as Record); } } -module.exports = Serializer; +export default Serializer; diff --git a/lib/errors.ts b/lib/errors.ts new file mode 100644 index 000000000..1faad63b3 --- /dev/null +++ b/lib/errors.ts @@ -0,0 +1,320 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +import { ApiResponse, Context } from './Transport'; + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// export declare class OpenSearchClientError extends Error { +// name: string; +// message: string; +// } + +// export declare class TimeoutError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class ConnectionError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class SerializationError extends OpenSearchClientError { +// name: string; +// message: string; +// data: any; +// constructor(message: string, data: any); +// } + +// export declare class DeserializationError extends OpenSearchClientError { +// name: string; +// message: string; +// data: string; +// constructor(message: string, data: string); +// } + +// export declare class ConfigurationError extends OpenSearchClientError { +// name: string; +// message: string; +// constructor(message: string); +// } + +// export declare class ResponseError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// body: TResponse; +// statusCode: number; +// headers: Record; +// constructor(meta: ApiResponse); +// } + +// export declare class RequestAbortedError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class NotCompatibleError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(meta: ApiResponse); +// } + +export class OpenSearchClientError extends Error { + name: string; + constructor(message: string) { + super(message); + this.name = 'OpenSearchClientError'; + } +} + +export class TimeoutError extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, TimeoutError); + this.name = 'TimeoutError'; + this.message = message ?? 'Timeout Error'; + this.meta = meta; + } +} + +export class ConnectionError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, ConnectionError); + this.name = 'ConnectionError'; + this.message = message ?? 'Connection Error'; + this.meta = meta; + } +} + +export class NoLivingConnectionsError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, NoLivingConnectionsError); + this.name = 'NoLivingConnectionsError'; + this.message = + message ?? + 'Given the configuration, the ConnectionPool was not able to find a usable Connection for this request.'; + this.meta = meta; + } +} + +// export declare class SerializationError extends OpenSearchClientError { +// name: string; +// message: string; +// data: any; +// constructor(message: string, data: any); +// } + +// export declare class DeserializationError extends OpenSearchClientError { +// name: string; +// message: string; +// data: string; +// constructor(message: string, data: string); +// } + +export class SerializationError extends OpenSearchClientError { + name: string; + message: string; + data: any; + constructor(message: string, data) { + super(message); + Error.captureStackTrace(this, SerializationError); + this.name = 'SerializationError'; + this.message = message ?? 'Serialization Error'; + this.data = data; + } +} + +export class DeserializationError extends OpenSearchClientError { + name: string; + message: string; + data: any; + constructor(message: string, data: any) { + super(message); + Error.captureStackTrace(this, DeserializationError); + this.name = 'DeserializationError'; + this.message = message ?? 'Deserialization Error'; + this.data = data; + } +} + +export class ConfigurationError extends OpenSearchClientError { + constructor(message: string) { + super(message); + Error.captureStackTrace(this, ConfigurationError); + this.name = 'ConfigurationError'; + this.message = message ?? 'Configuration Error'; + } +} + +// export declare class ResponseError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// body: TResponse; +// statusCode: number; +// headers: Record; +// constructor(meta: ApiResponse); +// } + +export class ResponseError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(meta: ApiResponse) { + super('Response Error'); + Error.captureStackTrace(this, ResponseError); + this.name = 'ResponseError'; + if (meta.body?.error?.type) { + if (Array.isArray(meta.body.error.root_cause)) { + this.message = + `${meta.body.error.type}: ${meta.body.error.root_cause + .map((entry) => `[${entry.type}] Reason: ${entry.reason}`) + .join('; ')}`; + meta.body.error.root_cause; + } else { + this.message = meta.body.error.type; + } + } else { + this.message = 'Response Error'; + } + this.meta = meta; + } + + get body() { + return this.meta.body; + } + + get statusCode() { + if (this.meta.body && typeof this.meta.body.status === 'number') { + return this.meta.body.status; + } + return this.meta.statusCode; + } + + get headers() { + return this.meta.headers; + } + + toString() { + return JSON.stringify(this.meta.body); + } +} + +// export declare class RequestAbortedError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class NotCompatibleError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(meta: ApiResponse); +// } + +export class RequestAbortedError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, RequestAbortedError); + this.name = 'RequestAbortedError'; + this.message = message || 'Request aborted'; + this.meta = meta; + } +} + +export class NotCompatibleError extends OpenSearchClientError { + meta: ApiResponse; + constructor(meta: ApiResponse) { + super('Not Compatible Error'); + Error.captureStackTrace(this, NotCompatibleError); + this.name = 'NotCompatibleError'; + this.message = 'The client noticed that the server is not a supported distribution'; + this.meta = meta; + } +} diff --git a/lib/index.ts b/lib/index.ts new file mode 100644 index 000000000..2e8d3ff31 --- /dev/null +++ b/lib/index.ts @@ -0,0 +1 @@ +export * from './Serializer' \ No newline at end of file diff --git a/lib/pool/index.d.ts b/lib/pool/index.d.ts index fe6954362..1f85b0c24 100644 --- a/lib/pool/index.d.ts +++ b/lib/pool/index.d.ts @@ -43,13 +43,13 @@ interface BaseConnectionPoolOptions { Connection: typeof Connection; } -interface ConnectionPoolOptions extends BaseConnectionPoolOptions { +export interface ConnectionPoolOptions extends BaseConnectionPoolOptions { pingTimeout?: number; resurrectStrategy?: 'ping' | 'optimistic' | 'none'; sniffEnabled?: boolean; } -interface getConnectionOptions { +export interface getConnectionOptions { filter?: nodeFilterFn; selector?: nodeSelectorFn; requestId?: string | number; diff --git a/package.json b/package.json index 03551fcd0..0d676b30d 100644 --- a/package.json +++ b/package.json @@ -3,15 +3,6 @@ "description": "The official OpenSearch client for Node.js", "main": "index.js", "types": "index.d.ts", - "exports": { - ".": { - "require": "./index.js", - "types": "./index.d.ts", - "import": "./index.mjs" - }, - "./aws": "./lib/aws/index.js", - "./*": "./*" - }, "typesVersions": { "*": { ".": [ @@ -59,6 +50,8 @@ "@aws-sdk/types": "^3.160.0", "@babel/eslint-parser": "^7.19.1", "@sinonjs/fake-timers": "github:sinonjs/fake-timers#0bfffc1", + "@types/aws4": "^1.11.2", + "@types/debug": "^4.1.7", "@types/node": "^17.0.45", "convert-hrtime": "^5.0.0", "cross-zip": "^4.0.0", @@ -95,7 +88,8 @@ "debug": "^4.3.1", "hpagent": "^1.2.0", "ms": "^2.1.3", - "secure-json-parse": "^2.4.0" + "secure-json-parse": "^2.4.0", + "typescript": "^4.9.5" }, "resolutions": { "**/strip-ansi": "^6.0.1" diff --git a/src/api/index.ts b/src/api/index.ts new file mode 100644 index 000000000..f9a368abc --- /dev/null +++ b/src/api/index.ts @@ -0,0 +1,103 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { kConfigurationError } from "@/utils"; +import { ClientOptions } from "@/types"; + +const kCat = Symbol('Cat'); +const kCluster = Symbol('Cluster'); +const kDanglingIndices = Symbol('DanglingIndices'); +const kFeatures = Symbol('Features'); +const kIndices = Symbol('Indices'); +const kIngest = Symbol('Ingest'); +const kNodes = Symbol('Nodes'); +const kShutdown = Symbol('Shutdown'); +const kSnapshot = Symbol('Snapshot'); +const kTasks = Symbol('Tasks'); + +export class OpenSearchAPI { + [kCat]: symbol | null + [kCluster]: symbol | null + [kDanglingIndices]: symbol | null + [kFeatures]: symbol | null + [kIndices]: symbol | null + [kIngest]: symbol | null + [kNodes]: symbol | null + [kShutdown]: symbol | null + [kSnapshot]: symbol | null + [kTasks]: symbol | null + // TODO: FIX. No configuration error on ClientOptions + [kConfigurationError]: symbol | null + + constructor(opts: ClientOptions) { + this[kCat] = null; + this[kCluster] = null; + this[kDanglingIndices] = null; + this[kFeatures] = null; + this[kIndices] = null; + this[kIngest] = null; + this[kNodes] = null; + this[kShutdown] = null; + this[kSnapshot] = null; + this[kTasks] = null; + // TODO: FIX. No configuration error on ClientOptions. It's in root index.ts + this[kConfigurationError] = null; + } + + msearch() { + + } + + // get, TContext = Context>( + // params?: RequestParams.SnapshotGet, + // options?: TransportRequestOptions + // ): TransportRequestPromise>; + + // get, TContext = Context>( + // callback: callbackFn + // ): TransportRequestCallback; + + // get, TContext = Context>( + // params: RequestParams.SnapshotGet, + // callback: callbackFn + // ): TransportRequestCallback; + + // get, TContext = Context>( + // params: RequestParams.SnapshotGet, + // options: TransportRequestOptions, + // callback: callbackFn + // ): TransportRequestCallback; + + // cat, TContext = Context>(params: RequestParams.SnapshotGet, callback: callbackFn) + // cat, TContext = Context>(params: RequestParams.SnapshotGet, options: TransportRequestOptions): TransportRequestPromise> { + + // } +} + +export default OpenSearchAPI; \ No newline at end of file diff --git a/src/api/internal/bulk.ts b/src/api/internal/bulk.ts new file mode 100644 index 000000000..d65111ad5 --- /dev/null +++ b/src/api/internal/bulk.ts @@ -0,0 +1,112 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { BulkRequest } from '@/types'; +import { handleError, kConfigurationError, NOOP, normalizeArguments } from '@/utils'; + +const acceptedQuerystring = [ + 'wait_for_active_shards', + 'refresh', + 'routing', + 'timeout', + 'type', + '_source', + '_source_excludes', + '_source_exclude', + '_source_includes', + '_source_include', + 'pipeline', + 'require_alias', + 'pretty', + 'human', + 'error_trace', + 'source', + 'filter_path', +] as const; + +const snakeCase = { + waitForActiveShards: 'wait_for_active_shards', + _sourceExcludes: '_source_excludes', + _sourceExclude: '_source_exclude', + _sourceIncludes: '_source_includes', + _sourceInclude: '_source_include', + requireAlias: 'require_alias', + errorTrace: 'error_trace', + filterPath: 'filter_path', +} as const; + + +export default async function bulkApi(params: BulkRequest, options): TransportRequestPromise> +export default async function bulkApi(params: BulkRequest, callback): TransportRequestCallback +export default async function bulkApi(params: BulkRequest, options: TransportRequestOptions, callback): TransportRequestCallback { + const [_params_, _options_, _callback] = normalizeArguments(params, options, callback); + +} +// function bulkApi(params, options, callback) { +// [params, options, callback] = normalizeArguments(params, options, callback); + +// // check required parameters +// if (params.body == null) { +// const err = new this[kConfigurationError]('Missing required parameter: body'); +// return handleError(err, callback); +// } + +// // check required url components +// if (params.type != null && params.index == null) { +// const err = new this[kConfigurationError]('Missing required parameter of the url: index'); +// return handleError(err, callback); +// } + +// let { method, body, index, type, ...querystring } = params; +// querystring = snakeCaseKeys(acceptedQuerystring, snakeCase, querystring); + +// let path = ''; +// if (index != null && type != null) { +// if (method == null) method = 'POST'; +// path = '/' + encodeURIComponent(index) + '/' + encodeURIComponent(type) + '/' + '_bulk'; +// } else if (index != null) { +// if (method == null) method = 'POST'; +// path = '/' + encodeURIComponent(index) + '/' + '_bulk'; +// } else { +// if (method == null) method = 'POST'; +// path = '/' + '_bulk'; +// } + +// // build request object +// const request = { +// method, +// path, +// bulkBody: body, +// querystring, +// }; + +// return this.transport.request(request, options, callback); +// } + +module.exports = bulkApi; diff --git a/src/api/internal/create.ts b/src/api/internal/create.ts new file mode 100644 index 000000000..a0b826439 --- /dev/null +++ b/src/api/internal/create.ts @@ -0,0 +1,163 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +'use strict'; + +import { callbackFn } from '#/src/types/helpers'; +import { CreateRequest, CreateResponse } from '#/src/types/internal'; +import { + ApiResponse, + TransportRequestCallback, + TransportRequestOptions, + TransportRequestPromise, +} from '#/src/types/transport'; +/* eslint camelcase: 0 */ +/* eslint no-unused-vars: 0 */ + +// const { handleError, snakeCaseKeys, normalizeArguments, kConfigurationError } = require('../utils'); + +import { handleError, normalizeArguments, kConfigurationError } from '@/utils'; + +const acceptedQuerystring = [ + 'wait_for_active_shards', + 'refresh', + 'routing', + 'timeout', + 'version', + 'version_type', + 'pipeline', + 'pretty', + 'human', + 'error_trace', + 'source', + 'filter_path', +]; +const snakeCase = { + waitForActiveShards: 'wait_for_active_shards', + versionType: 'version_type', + errorTrace: 'error_trace', + filterPath: 'filter_path', +}; + +// create( +// params: T.CreateRequest, +// options?: TransportRequestOptions +// ): TransportRequestPromise>; +// create( +// params: T.CreateRequest, +// callback: callbackFn +// ): TransportRequestCallback; +// create( +// params: T.CreateRequest, +// options: TransportRequestOptions, +// callback: callbackFn +// ): TransportRequestCallback; + +/** + * Adds a document with a predefined ID to an index. + *
See Also: {@link https://opensearch.org/docs/2.4/api-reference/document-apis/index-document/ OpenSearch - Index Document} + * + * @memberOf API-Document + * + * @param {Object} params + * @param {string} params.index - Name of the index. + * @param {string} params.id - A unique identifier to attach to the document. + * @param {Object} params.body - The content of the document. + * @param {number} [params.if_seq_no] - Only perform the index operation if the document has the specified sequence number. + * @param {number} [params.if_primary_term] - Only perform the index operation if the document has the specified primary term. + * @param {string} [params.pipeline] - Route the index operation to a certain pipeline. + * @param {string} [params.routing] - value used to assign the index operation to a specific shard. + * @param {string} [params.refresh=false] - If true, OpenSearch refreshes shards to make the operation visible to searching. Valid options are 'true', 'false', and 'wait_for', which tells OpenSearch to wait for a refresh before executing the operation. + * @param {string} [params.timeout=1m] - How long to wait for a response from the cluster. + * @param {number} [params.version] - The document’s version number. + * @param {number} [params.version_type] - Specific version type (options: 'external' and 'external_gte') + * @param {string} [params.wait_for_active_shards] - The number of active shards that must be available before OpenSearch processes the request. Default is 1 (only the primary shard). Set to all or a positive integer. Values greater than 1 require replicas. For example, if you specify a value of 3, the index must have two replicas distributed across two additional nodes for the operation to succeed. + * @param {boolean} [params.require_alias=false] - Specifies whether the target index must be an index alias. + * + * @param {Object} options - Options for {@link Transport#request} + * @param {function} callback - Callback that handles errors and response + * + * @returns {{abort: function(), then: function(), catch: function()}|Promise|*} {@link https://opensearch.org/docs/2.4/api-reference/document-apis/index-document/#response Index Response} + */ + +export function createApi( + params: CreateRequest, + options: TransportRequestOptions +): TransportRequestPromise>; +export function createApi( + params: CreateRequest, + callback: callbackFn +): TransportRequestCallback; +export async function createApi( + params: CreateRequest, + options: TransportRequestOptions, + callback: callbackFn +): Promise { + [params, options, callback] = normalizeArguments(params, options, callback); + + // check required parameters + if (params.id == null) { + const err = new this[kConfigurationError]('Missing required parameter: id'); + return handleError(err, callback); + } + if (params.index == null) { + const err = new this[kConfigurationError]('Missing required parameter: index'); + return handleError(err, callback); + } + if (params.body == null) { + const err = new this[kConfigurationError]('Missing required parameter: body'); + return handleError(err, callback); + } + + let { method, body, id, index, type, ...querystring } = params; + querystring = snakeCaseKeys(acceptedQuerystring, snakeCase, querystring); + + let path = ''; + if (index != null && type != null && id != null) { + if (method == null) method = 'PUT'; + path = `/${encodeURIComponent(index)}/${encodeURIComponent(type)}/${encodeURIComponent( + id + )}/_create`; + } else { + if (method == null) method = 'PUT'; + path = `/${encodeURIComponent(index)}/_create/${encodeURIComponent(id)}`; + } + + // build request object + const request = { + method, + path, + body: body || '', + querystring, + }; + + return this.transport.request(request, options, callback); +} + +module.exports = createApi; diff --git a/src/api/internal/index.ts b/src/api/internal/index.ts new file mode 100644 index 000000000..e69de29bb diff --git a/src/api/internal/msearch.ts b/src/api/internal/msearch.ts new file mode 100644 index 000000000..0603476df --- /dev/null +++ b/src/api/internal/msearch.ts @@ -0,0 +1,147 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// const { handleError, snakeCaseKeys, normalizeArguments, kConfigurationError } = require('../utils'); +import { callbackFn } from '#/src/types/helpers'; +import { MsearchRequest, MsearchResponse } from '#/src/types/internal'; +import { TransportRequestCallback, TransportRequestOptions } from '#/src/types/transport'; +import { normalizeArguments, handleError, kConfigurationError } from '@/utils' + +const acceptedQuerystring = [ + 'search_type', + 'max_concurrent_searches', + 'typed_keys', + 'pre_filter_shard_size', + 'max_concurrent_shard_requests', + 'rest_total_hits_as_int', + 'ccs_minimize_roundtrips', + 'pretty', + 'human', + 'error_trace', + 'source', + 'filter_path', +]; +const snakeCase = { + searchType: 'search_type', + maxConcurrentSearches: 'max_concurrent_searches', + typedKeys: 'typed_keys', + preFilterShardSize: 'pre_filter_shard_size', + maxConcurrentShardRequests: 'max_concurrent_shard_requests', + restTotalHitsAsInt: 'rest_total_hits_as_int', + ccsMinimizeRoundtrips: 'ccs_minimize_roundtrips', + errorTrace: 'error_trace', + filterPath: 'filter_path', +}; + +// msearch( +// params?: T.MsearchRequest, +// options?: TransportRequestOptions +// ): TransportRequestPromise, TContext>>; +// msearch( +// callback: callbackFn, TContext> +// ): TransportRequestCallback; +// msearch( +// params: T.MsearchRequest, +// callback: callbackFn, TContext> +// ): TransportRequestCallback; +// msearch( +// params: T.MsearchRequest, +// options: TransportRequestOptions, +// callback: callbackFn, TContext> +// ): TransportRequestCallback; + +// /** +// * Allows to execute several search operations in one request. +// *
See Also: {@link https://opensearch.org/docs/latest/api-reference/multi-search/ OpenSearch - Multi-Search} +// * +// * @memberOf API-Search +// * +// * @param {Object} params +// * @param {string} params.index - A comma-separated list of index names to use as default +// * @param {Object} params.body - The request definitions (metadata-search request definition pairs), separated by newlines +// * @param {string} [params.search_type] - Search operation type (options: query_then_fetch, dfs_query_then_fetch) +// * @param {number} [params.max_concurrent_searches] - Controls the maximum number of concurrent searches the multi search api will execute +// * @param {boolean} [params.typed_keys] - Specify whether aggregation and suggester names should be prefixed by their respective types in the response +// * @param {number} [params.pre_filter_shard_size] - A threshold that enforces a pre-filter roundtrip to prefilter search shards based on query rewriting if the number of shards the search request expands to exceeds the threshold. This filter roundtrip can limit the number of shards significantly if for instance a shard can not match any documents based on its rewrite method ie. if date filters are mandatory to match but the shard bounds and the query are disjoint. +// * @param {number} [params.max_concurrent_shard_requests] - The number of concurrent shard requests each sub search executes concurrently per node. This value should be used to limit the impact of the search on the cluster in order to limit the number of concurrent shard requests +// * @param {boolean} [params.rest_total_hits_as_int] - Indicates whether hits.total should be rendered as an integer or an object in the rest search response +// * @param {boolean} [params.ccs_minimize_roundtrips] - Indicates whether network round-trips should be minimized as part of cross-cluster search requests execution +// * +// * @param {Object} options - Options for {@link Transport#request} +// * @param {function} callback - Callback that handles errors and response +// * +// * @returns {{abort: function(), then: function(), catch: function()}|Promise|*} {@link https://opensearch.org/docs/latest/api-reference/multi-search/#response Multi-search Response} +// */ + + +// export function msearchApi(params: MsearchRequest, options?: TransportRequestOptions): Promise>; +export function msearchApi(params: MsearchRequest, options: TransportRequestOptions, callback: callbackFn, TContext>): TransportRequestCallback { + [params, options, callback] = normalizeArguments(params, options, callback); + + // check required parameters + if (params.body == null) { + const err = new this[kConfigurationError]('Missing required parameter: body'); + return handleError(err, callback); + } + + // check required url components + if (params.type != null && params.index == null) { + const err = new this[kConfigurationError]('Missing required parameter of the url: index'); + return handleError(err, callback); + } + + let { method, body, index, type, ...querystring } = params; + querystring = snakeCaseKeys(acceptedQuerystring, snakeCase, querystring); + + let path = ''; + if (index != null && type != null) { + if (method == null) method = body == null ? 'GET' : 'POST'; + path = `/${encodeURIComponent(index)}/${encodeURIComponent(type)}/_msearch`; + } else if (index != null) { + if (method == null) method = body == null ? 'GET' : 'POST'; + if (!Array.isArray(index)) { + path = `/${encodeURIComponent(index)}/_msearch`; + } + } else { + if (method == null) method = body == null ? 'GET' : 'POST'; + path = '/' + '_msearch'; + } + + // build request object + const request = { + method, + path, + bulkBody: body, + querystring, + }; + + return this.transport.request(request, options, callback); +} + +module.exports = msearchApi; diff --git a/src/client.ts b/src/client.ts new file mode 100644 index 000000000..6e821be32 --- /dev/null +++ b/src/client.ts @@ -0,0 +1,324 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import OpenSearchAPI from '@/api'; +import { ConfigurationError } from '@/errors'; +import { Connection, Helpers, Serializer, Transport } from '#transport'; +import { ClientOptions, NodeOptions } from '@/types'; +import Debug from 'debug'; +const debug = Debug('opensearch:client'); + +import { URL } from 'node:url'; +import { EventEmitter } from 'node:events'; +import { BaseConnectionPool } from './transport/connection'; +// import { BaseConnectionPool } from './transport/'; + +const kInitialOptions = Symbol('opensearchjs-initial-options'); +const kChild = Symbol('opensearchjs-child'); +const kExtensions = Symbol('opensearchjs-extensions'); +const kEventEmitter = Symbol('opensearchjs-event-emitter'); + +export class Client extends OpenSearchAPI { + static serializer: Serializer; + static helpers: Helpers; + static connectionPool: BaseConnectionPool; + + constructor(opts: ClientOptions = {}) { + super({ ConfigurationError }); + if (opts.cloud && opts[kChild] === undefined) { + const { id, username, password } = opts.cloud; + // the cloud id is `cluster-name:base64encodedurl` + // the url is a string divided by two '$', the first is the cloud url + // the second the opensearch instance, the third the opensearchDashboards instance + const cloudUrls = Buffer.from(id.split(':')[1], 'base64').toString().split('$'); + if (username && password) { + opts.auth = Object.assign({}, opts.auth, { username, password }); + } + opts.node = `https://${cloudUrls[1]}.${cloudUrls[0]}`; + + // Cloud has better performances with compression enabled + // see https://github.com/elastic/elasticsearch-py/pull/704. + // So unless the user specifies otherwise, we enable compression. + if (opts.compression == null) opts.compression = 'gzip'; + if (opts.suggestCompression == null) opts.suggestCompression = true; + if (opts.ssl == null || (opts.ssl && opts.ssl.secureProtocol == null)) { + opts.ssl = opts.ssl || {}; + opts.ssl.secureProtocol = 'TLSv1_2_method'; + } + } + + if (!opts.node && !opts.nodes) { + throw new ConfigurationError('Missing node(s) option'); + } + + if (opts[kChild] === undefined) { + // @ts-expect-error + const checkAuth = getAuth(opts.node || opts.nodes); + if (checkAuth?.username && checkAuth.password) { + opts.auth = Object.assign({}, opts.auth, { + username: checkAuth.username, + password: checkAuth.password, + }); + } + } + + const options = + opts[kChild] !== undefined + ? opts[kChild].initialOptions + : Object.assign( + {}, + { + Connection, + Transport, + Serializer, + ConnectionPool: opts.cloud ? CloudConnectionPool : ConnectionPool, + maxRetries: 3, + requestTimeout: 30000, + pingTimeout: 3000, + sniffInterval: false, + sniffOnStart: false, + sniffEndpoint: '_nodes/_all/http', + sniffOnConnectionFault: false, + resurrectStrategy: 'ping', + suggestCompression: false, + compression: false, + ssl: null, + agent: null, + headers: {}, + nodeFilter: null, + nodeSelector: 'round-robin', + generateRequestId: null, + name: 'opensearch-js', + auth: null, + opaqueIdPrefix: null, + context: null, + proxy: null, + enableMetaHeader: true, + disablePrototypePoisoningProtection: false, + }, + opts + ); + + if (process.env.OPENSEARCH_CLIENT_APIVERSIONING === 'true') { + options.headers = Object.assign( + { accept: 'application/vnd.opensearch+json; compatible-with=7' }, + options.headers + ); + } + + this[kInitialOptions] = options; + this[kExtensions] = []; + this.name = options.name; + + if (opts[kChild] !== undefined) { + this.serializer = options[kChild].serializer; + this.connectionPool = options[kChild].connectionPool; + this[kEventEmitter] = options[kChild].eventEmitter; + } else { + this[kEventEmitter] = new EventEmitter(); + this.serializer = new options.Serializer({ + disablePrototypePoisoningProtection: options.disablePrototypePoisoningProtection, + }); + this.connectionPool = new options.ConnectionPool({ + pingTimeout: options.pingTimeout, + resurrectStrategy: options.resurrectStrategy, + ssl: options.ssl, + agent: options.agent, + proxy: options.proxy, + Connection: options.Connection, + auth: options.auth, + emit: this[kEventEmitter].emit.bind(this[kEventEmitter]), + sniffEnabled: + options.sniffInterval !== false || + options.sniffOnStart !== false || + options.sniffOnConnectionFault !== false, + }); + // Add the connections before initialize the Transport + this.connectionPool.addConnection(options.node || options.nodes); + } + + this.transport = new options.Transport({ + emit: this[kEventEmitter].emit.bind(this[kEventEmitter]), + connectionPool: this.connectionPool, + serializer: this.serializer, + maxRetries: options.maxRetries, + requestTimeout: options.requestTimeout, + sniffInterval: options.sniffInterval, + sniffOnStart: options.sniffOnStart, + sniffOnConnectionFault: options.sniffOnConnectionFault, + sniffEndpoint: options.sniffEndpoint, + suggestCompression: options.suggestCompression, + compression: options.compression, + headers: options.headers, + nodeFilter: options.nodeFilter, + nodeSelector: options.nodeSelector, + generateRequestId: options.generateRequestId, + name: options.name, + opaqueIdPrefix: options.opaqueIdPrefix, + context: options.context, + memoryCircuitBreaker: options.memoryCircuitBreaker, + }); + + this.helpers = new Helpers({ + client: this, + maxRetries: options.maxRetries, + }); + } + + get emit() { + return this[kEventEmitter].emit.bind(this[kEventEmitter]); + } + + get on() { + return this[kEventEmitter].on.bind(this[kEventEmitter]); + } + + get once() { + return this[kEventEmitter].once.bind(this[kEventEmitter]); + } + + get off() { + return this[kEventEmitter].off.bind(this[kEventEmitter]); + } + + extend(name: string, fn: extendsCallback): void; + extend(name: string, opts: { force: boolean }, fn: extendsCallback): void { + if (typeof opts === 'function') { + fn = opts; + opts = {}; + } + + let [namespace, method] = name.split('.'); + if (method == null) { + method = namespace; + namespace = null; + } + + if (namespace != null) { + if (this[namespace] != null && this[namespace][method] != null && opts.force !== true) { + throw new Error(`The method "${method}" already exists on namespace "${namespace}"`); + } + + if (this[namespace] == null) this[namespace] = {}; + this[namespace][method] = fn({ + makeRequest: this.transport.request.bind(this.transport), + result: { body: null, statusCode: null, headers: null, warnings: null }, + ConfigurationError, + }); + } else { + if (this[method] != null && opts.force !== true) { + throw new Error(`The method "${method}" already exists`); + } + + this[method] = fn({ + makeRequest: this.transport.request.bind(this.transport), + result: { body: null, statusCode: null, headers: null, warnings: null }, + ConfigurationError, + }); + } + + this[kExtensions].push({ name, opts, fn }); + } + + child(opts) { + // Merge the new options with the initial ones + const options = Object.assign({}, this[kInitialOptions], opts); + // Pass to the child client the parent instances that cannot be overriden + options[kChild] = { + connectionPool: this.connectionPool, + serializer: this.serializer, + eventEmitter: this[kEventEmitter], + initialOptions: options, + }; + + /* istanbul ignore else */ + if (options.auth !== undefined) { + options.headers = prepareHeaders(options.headers, options.auth); + } + + const client = new Client(options); + // sync compatible check + const tSymbol = Object.getOwnPropertySymbols(this.transport).filter( + (symbol) => symbol.description === 'compatible check' + )[0]; + client.transport[tSymbol] = this.transport[tSymbol]; + // Add parent extensions + if (this[kExtensions].length > 0) { + this[kExtensions].forEach(({ name, opts, fn }) => { + client.extend(name, opts, fn); + }); + } + return client; + } + + close(callback: Function): void { + if (callback == null) { + return new Promise((resolve) => { + this.close(resolve); + }); + } + debug('Closing the client'); + this.connectionPool.empty(callback); + } +} + +function getAuth(node: string | string[] | NodeOptions | NodeOptions[]) { + if (Array.isArray(node)) { + for (const url of node) { + const auth = getUsernameAndPassword(url); + if (auth?.username !== '' && auth?.password !== '') { + return auth; + } + } + return null; + } + + const auth = getUsernameAndPassword(node); + if (auth?.username !== '' && auth?.password !== '') { + return auth; + } + + return null; + + function getUsernameAndPassword(node: string | NodeOptions) { + /* istanbul ignore else */ + if (typeof node === 'string') { + const { username, password } = new URL(node); + return { + username: decodeURIComponent(username), + password: decodeURIComponent(password), + }; + } else if (node.url instanceof URL) { + return { + username: decodeURIComponent(node.url.username), + password: decodeURIComponent(node.url.password), + }; + } + } +} diff --git a/src/errors.ts b/src/errors.ts new file mode 100644 index 000000000..87b13b924 --- /dev/null +++ b/src/errors.ts @@ -0,0 +1,292 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +import { ApiResponse, Context } from '@/types/transport'; + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// export declare class OpenSearchClientError extends Error { +// name: string; +// message: string; +// } + +// export declare class TimeoutError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class ConnectionError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class SerializationError extends OpenSearchClientError { +// name: string; +// message: string; +// data: any; +// constructor(message: string, data: any); +// } + +// export declare class DeserializationError extends OpenSearchClientError { +// name: string; +// message: string; +// data: string; +// constructor(message: string, data: string); +// } + +// export declare class ConfigurationError extends OpenSearchClientError { +// name: string; +// message: string; +// constructor(message: string); +// } + +// export declare class ResponseError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// body: TResponse; +// statusCode: number; +// headers: Record; +// constructor(meta: ApiResponse); +// } + +// export declare class RequestAbortedError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class NotCompatibleError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(meta: ApiResponse); +// } + +export class OpenSearchClientError extends Error { + name: string; + constructor(message: string) { + super(message); + this.name = 'OpenSearchClientError'; + } +} + +export class TimeoutError, TContext = Context> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, TimeoutError); + this.name = 'TimeoutError'; + this.message = message ?? 'Timeout Error'; + this.meta = meta; + } +} + +export class ConnectionError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, ConnectionError); + this.name = 'ConnectionError'; + this.message = message ?? 'Connection Error'; + this.meta = meta; + } +} + +export class NoLivingConnectionsError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, NoLivingConnectionsError); + this.name = 'NoLivingConnectionsError'; + this.message = + message ?? + 'Given the configuration, the ConnectionPool was not able to find a usable Connection for this request.'; + this.meta = meta; + } +} +export class SerializationError extends OpenSearchClientError { + name: string; + message: string; + data: any; + constructor(message: string, data: any) { + super(message); + Error.captureStackTrace(this, SerializationError); + this.name = 'SerializationError'; + this.message = message ?? 'Serialization Error'; + this.data = data; + } +} + +export class DeserializationError extends OpenSearchClientError { + name: string; + message: string; + data: any; + constructor(message: string, data: any) { + super(message); + Error.captureStackTrace(this, DeserializationError); + this.name = 'DeserializationError'; + this.message = message ?? 'Deserialization Error'; + this.data = data; + } +} + +export class ConfigurationError extends OpenSearchClientError { + constructor(message: string) { + super(message); + Error.captureStackTrace(this, ConfigurationError); + this.name = 'ConfigurationError'; + this.message = message ?? 'Configuration Error'; + } +} + +export class ResponseError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(meta: ApiResponse) { + super('Response Error'); + Error.captureStackTrace(this, ResponseError); + this.name = 'ResponseError'; + if (meta.body?.error?.type) { + if (Array.isArray(meta.body.error.root_cause)) { + this.message = + `${meta.body.error.type}: ${meta.body.error.root_cause + .map((entry) => `[${entry.type}] Reason: ${entry.reason}`) + .join('; ')}`; + meta.body.error.root_cause; + } else { + this.message = meta.body.error.type; + } + } else { + this.message = 'Response Error'; + } + this.meta = meta; + } + + get body() { + return this.meta.body; + } + + get statusCode() { + if (this.meta.body && typeof this.meta.body.status === 'number') { + return this.meta.body.status; + } + return this.meta.statusCode; + } + + get headers() { + return this.meta.headers; + } + + toString() { + return JSON.stringify(this.meta.body); + } +} + +// export declare class RequestAbortedError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(message: string, meta: ApiResponse); +// } + +// export declare class NotCompatibleError< +// TResponse = Record, +// TContext = Context +// > extends OpenSearchClientError { +// name: string; +// message: string; +// meta: ApiResponse; +// constructor(meta: ApiResponse); +// } + +export class RequestAbortedError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + name: string; + message: string; + meta: ApiResponse; + constructor(message: string, meta: ApiResponse) { + super(message); + Error.captureStackTrace(this, RequestAbortedError); + this.name = 'RequestAbortedError'; + this.message = message || 'Request aborted'; + this.meta = meta; + } +} + +export class NotCompatibleError, TContext = Context> extends OpenSearchClientError { + meta: ApiResponse; + constructor(meta: ApiResponse) { + super('Not Compatible Error'); + Error.captureStackTrace(this, NotCompatibleError); + this.name = 'NotCompatibleError'; + this.message = 'The client noticed that the server is not a supported distribution'; + this.meta = meta; + } +} diff --git a/src/transport/Connection.ts b/src/transport/Connection.ts new file mode 100644 index 000000000..db7cf29d6 --- /dev/null +++ b/src/transport/Connection.ts @@ -0,0 +1,353 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import assert from 'node:assert'; +import http from 'node:http'; +import https from 'node:https'; +import { pipeline } from 'node:stream'; +import { inspect } from 'node:util'; +import type { ConnectionOptions as TlsConnectionOptions } from 'node:tls'; + +import hpagent from 'hpagent'; +import Debug from 'debug'; +import { ConnectionError, RequestAbortedError, TimeoutError, ConfigurationError } from '@/errors'; +import { ConnectionOptions, ConnectionRoles, RequestOptions } from '@/types/connection'; +import { NOOP } from '../utils'; +import { BasicAuth } from '../types/pool'; + +const debug = Debug('opensearch'); +const INVALID_PATH_REGEX = /[^\u0021-\u00ff]/; + +export class Connection { + url: URL; + ssl: TlsConnectionOptions | null; + id: string; + headers: Record; + roles: ConnectionRoles; + deadCount: number; + resurrectTimeout: number; + makeRequest: typeof http.request | typeof https.request; + _openRequests: number; + _status: string; + _agent?: http.Agent | https.Agent | hpagent.HttpProxyAgent | hpagent.HttpsProxyAgent; + + static statuses: Record = { + ALIVE: 'alive', + DEAD: 'dead', + }; + + static roles: Record = { + CLUSTER_MANAGER: 'cluster_manager', + /** + * @deprecated use CLUSTER_MANAGER instead + */ + MASTER: 'master', + DATA: 'data', + INGEST: 'ingest', + }; + constructor(opts: ConnectionOptions) { + this.url = opts.url; + this.ssl = opts.ssl || null; + this.id = opts.id || stripAuth(opts.url.href); + this.headers = prepareHeaders(opts.headers, opts.auth); + this.deadCount = 0; + this.resurrectTimeout = 0; + + this._openRequests = 0; + this._status = opts.status || Connection.statuses.ALIVE; + this.roles = Object.assign({}, defaultRoles, opts.roles); + + if (!['http:', 'https:'].includes(this.url.protocol)) { + throw new ConfigurationError(`Invalid protocol: '${this.url.protocol}'`); + } + + if (typeof opts.agent === 'function') { + this._agent = opts.agent(opts); + } else if (typeof opts.agent === 'boolean') { + this._agent = undefined; + } else { + const agentOptions = Object.assign( + {}, + { + keepAlive: true, + keepAliveMsecs: 1000, + maxSockets: 256, + maxFreeSockets: 256, + scheduling: 'lifo', + }, + opts.agent + ); + if (opts.proxy) { + agentOptions.proxy = opts.proxy; + this._agent = + this.url.protocol === 'http:' + ? new hpagent.HttpProxyAgent(agentOptions) + : new hpagent.HttpsProxyAgent(Object.assign({}, agentOptions, this.ssl)); + } else { + this._agent = + this.url.protocol === 'http:' + ? new http.Agent(agentOptions) + : new https.Agent(Object.assign({}, agentOptions, this.ssl)); + } + } + + this.makeRequest = this.url.protocol === 'http:' ? http.request : https.request; + } + + request( + params: RequestOptions, + callback: (err: Error | null, response: http.IncomingMessage | null) => void + ): http.ClientRequest { + this._openRequests++; + let cleanedListeners = false; + + const requestParams = this.buildRequestObject(params); + // https://github.com/nodejs/node/commit/b961d9fd83 + if (INVALID_PATH_REGEX.test(requestParams.path) === true) { + callback(new TypeError(`ERR_UNESCAPED_CHARACTERS: ${requestParams.path}`), null); + /* istanbul ignore next */ + return { abort: () => {} }; + } + + debug('Starting a new request', params); + const request = this.makeRequest(requestParams); + + const onResponse = (response) => { + cleanListeners(); + this._openRequests--; + callback(null, response); + }; + + const onTimeout = () => { + cleanListeners(); + this._openRequests--; + request.once('error', () => {}); // we need to catch the request aborted error + request.abort(); + callback(new TimeoutError('Request timed out', params), null); + }; + + const onError = (err: Error) => { + cleanListeners(); + this._openRequests--; + callback(new ConnectionError(err.message), null); + }; + + const onAbort = () => { + cleanListeners(); + request.once('error', () => {}); // we need to catch the request aborted error + debug('Request aborted', params); + this._openRequests--; + callback(new RequestAbortedError('Request aborted'), null); + }; + + request.on('response', onResponse); + request.on('timeout', onTimeout); + request.on('error', onError); + request.on('abort', onAbort); + + // Disables the Nagle algorithm + request.setNoDelay(true); + + // starts the request + if (isStream(params.body) === true) { + pipeline(params.body, request, (err) => { + /* istanbul ignore if */ + if (err != null && cleanedListeners === false) { + cleanListeners(); + this._openRequests--; + callback(err, null); + } + }); + } else { + request.end(params.body); + } + + return request; + + function cleanListeners() { + request.removeListener('response', onResponse); + request.removeListener('timeout', onTimeout); + request.removeListener('error', onError); + request.removeListener('abort', onAbort); + cleanedListeners = true; + } + } + + // TODO: write a better closing logic + close(callback = NOOP) { + debug('Closing connection', this.id); + if (this._openRequests > 0) { + setTimeout(() => this.close(callback), 1000); + } else { + if (this._agent !== undefined) { + this._agent?.destroy(); + } + callback(); + } + } + + setRole(role: string, enabled: boolean): this { + if (validRoles.indexOf(role) === -1) { + throw new ConfigurationError(`Unsupported role: '${role}'`); + } + if (typeof enabled !== 'boolean') { + throw new ConfigurationError('enabled should be a boolean'); + } + + this.roles[role] = enabled; + return this; + } + + get status() { + return this._status; + } + + set status(status) { + assert(~validStatuses.indexOf(status), `Unsupported status: '${status}'`); + this._status = status; + } + + buildRequestObject(params) { + const url = this.url; + const request = { + protocol: url.protocol, + hostname: url.hostname[0] === '[' ? url.hostname.slice(1, -1) : url.hostname, + hash: url.hash, + search: url.search, + pathname: url.pathname, + path: '', + href: url.href, + origin: url.origin, + // https://github.com/elastic/elasticsearch-js/issues/843 + port: url.port !== '' ? url.port : undefined, + headers: Object.assign({}, this.headers), + agent: this._agent, + }; + + const paramsKeys = Object.keys(params); + for (let i = 0, len = paramsKeys.length; i < len; i++) { + const key = paramsKeys[i]; + if (key === 'path') { + request.pathname = resolve(request.pathname, params[key]); + } else if (key === 'querystring' && !!params[key] === true) { + if (request.search === '') { + request.search = `?${params[key]}`; + } else { + request.search += `&${params[key]}`; + } + } else if (key === 'headers') { + request.headers = Object.assign({}, request.headers, params.headers); + } else { + request[key] = params[key]; + } + } + + request.path = request.pathname + request.search; + + return request; + } + + // Handles console.log and utils.inspect invocations. + // We want to hide `auth`, `agent` and `ssl` since they made + // the logs very hard to read. The user can still + // access them with `instance.agent` and `instance.ssl`. + [inspect.custom]() { + // eslint-disable-next-line no-unused-vars + const { authorization, ...headers } = this.headers; + + return { + url: stripAuth(this.url.toString()), + id: this.id, + headers, + deadCount: this.deadCount, + resurrectTimeout: this.resurrectTimeout, + _openRequests: this._openRequests, + status: this.status, + roles: this.roles, + }; + } + + toJSON() { + const { authorization, ...headers } = this.headers; + + return { + url: stripAuth(this.url.toString()), + id: this.id, + headers, + deadCount: this.deadCount, + resurrectTimeout: this.resurrectTimeout, + _openRequests: this._openRequests, + status: this.status, + roles: this.roles, + }; + } +} + +const defaultRoles = { + [Connection.roles.DATA]: true, + [Connection.roles.INGEST]: true, +}; + +const validStatuses = Object.keys(Connection.statuses).map((k) => Connection.statuses[k]); +const validRoles = Object.keys(Connection.roles).map((k) => Connection.roles[k]); + +function stripAuth(url: string) { + if (url.indexOf('@') === -1) return url; + return url.slice(0, url.indexOf('//') + 2) + url.slice(url.indexOf('@') + 1); +} + +function isStream(obj): boolean { + return obj != null && typeof obj.pipe === 'function'; +} + +function resolve(host, path) { + const hostEndWithSlash = host[host.length - 1] === '/'; + const pathStartsWithSlash = path[0] === '/'; + + if (hostEndWithSlash === true && pathStartsWithSlash === true) { + return host + path.slice(1); + } else if (hostEndWithSlash !== pathStartsWithSlash) { + return host + path; + } else { + return `${host}/${path}`; + } +} + +export function prepareHeaders(headers = {}, auth: BasicAuth) { + if (auth != null && headers.authorization == null) { + /* istanbul ignore else */ + if (auth.username && auth.password) { + headers.authorization = + `Basic ${Buffer.from(`${auth.username}:${auth.password}`).toString('base64')}`; + } + } + return headers; +} + +export default Connection; diff --git a/src/transport/Helpers.ts b/src/transport/Helpers.ts new file mode 100644 index 000000000..e6bc0ffae --- /dev/null +++ b/src/transport/Helpers.ts @@ -0,0 +1,841 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Readable } from 'node:stream'; +import { promisify } from 'node:util'; + +import { ResponseError, ConfigurationError } from '@/errors'; +import { NOOP } from '@/utils'; +import { RequestBody, TransportRequestOptions } from '../types/transport'; +import { Search } from '../types/params'; +import { BulkHelperOptions, HelpersOptions, MsearchHelper, MsearchHelperOptions } from '../types/helpers'; + +const pImmediate = promisify(setImmediate); +const sleep = promisify(setTimeout); + +const kClient = Symbol('opensearch-client'); +const kMetaHeader = Symbol('meta header'); + +// export default class Helpers { +// search>( +// params: Search, +// options?: TransportRequestOptions +// ): Promise; +// scrollSearch< +// TDocument = unknown, +// TResponse = Record, +// TRequestBody extends RequestBody = Record, +// TContext = Context +// >( +// params: Search, +// options?: TransportRequestOptions +// ): AsyncIterable>; +// scrollDocuments>( +// params: Search, +// options?: TransportRequestOptions +// ): AsyncIterable; +// msearch(options?: MsearchHelperOptions, reqOptions?: TransportRequestOptions): MsearchHelper; +// bulk( +// options: BulkHelperOptions, +// reqOptions?: TransportRequestOptions +// ): BulkHelper; +// } + +import { Client } from '#/index' + +export class Helpers { + [kClient]: Client; + [kMetaHeader]: string | null; + maxRetries: number; + constructor(opts: HelpersOptions) { + this[kClient] = opts.client; + this[kMetaHeader] = opts.metaHeader; + this.maxRetries = opts.maxRetries; + } + + /** + * Runs a search operation. The only difference between client.search and this utility, + * is that we are only returning the hits to the user and not the full OpenSearch response. + * This helper automatically adds `filter_path=hits.hits._source` to the querystring, + * as it will only need the documents source. + * @param {object} params - The OpenSearch's search parameters. + * @param {object} options - The client optional configuration for this request. + * @return {array} The documents that matched the request. + */ + async search>( + params: Search, + options?: TransportRequestOptions + ): Promise { + appendFilterPath('hits.hits._source', params, true); + const { body } = await this[kClient].search(params, options); + if (body.hits?.hits) { + return body.hits.hits.map((d) => d._source); + } + return []; + } + + /** + * Runs a scroll search operation. This function returns an async iterator, allowing + * the user to use a for await loop to get all the results of a given search. + * ```js + * for await (const result of client.helpers.scrollSearch({ params })) { + * console.log(result) + * } + * ``` + * Each result represents the entire body of a single scroll search request, + * if you just need to scroll the results, use scrollDocuments. + * This function handles automatically retries on 429 status code. + * @param {object} params - The OpenSearch's search parameters. + * @param {object} options - The client optional configuration for this request. + * @return {iterator} the async iterator + */ + async *scrollSearch(params, options = {}) { + if (this[kMetaHeader] !== null) { + options.headers = options.headers || {}; + } + // TODO: study scroll search slices + const wait = options.wait || 5000; + const maxRetries = options.maxRetries || this.maxRetries; + if (Array.isArray(options.ignore)) { + options.ignore.push(429); + } else { + options.ignore = [429]; + } + params.scroll = params.scroll || '1m'; + appendFilterPath('_scroll_id', params, false); + + let response = null; + for (let i = 0; i <= maxRetries; i++) { + response = await this[kClient].search(params, options); + if (response.statusCode !== 429) break; + await sleep(wait); + } + if (response.statusCode === 429) { + throw new ResponseError(response); + } + + let scroll_id = response.body._scroll_id; + let stop = false; + const clear = async () => { + stop = true; + await this[kClient].clearScroll({ body: { scroll_id } }, { ignore: [400], ...options }); + }; + + while (response.body.hits && response.body.hits.hits.length > 0) { + // scroll id is always present in the response, but it might + // change over time based on the number of shards + scroll_id = response.body._scroll_id; + response.clear = clear; + addDocumentsGetter(response); + + yield response; + + if (stop === true) { + break; + } + + for (let i = 0; i <= maxRetries; i++) { + response = await this[kClient].scroll( + { + scroll: params.scroll, + rest_total_hits_as_int: params.rest_total_hits_as_int || params.restTotalHitsAsInt, + body: { scroll_id }, + }, + options + ); + if (response.statusCode !== 429) break; + await sleep(wait); + } + if (response.statusCode === 429) { + throw new ResponseError(response); + } + } + + if (stop === false) { + await clear(); + } + } + + /** + * Runs a scroll search operation. This function returns an async iterator, allowing + * the user to use a for await loop to get all the documents of a given search. + * ```js + * for await (const document of client.helpers.scrollSearch({ params })) { + * console.log(document) + * } + * ``` + * Each document is what you will find by running a scrollSearch and iterating on the hits array. + * This helper automatically adds `filter_path=hits.hits._source` to the querystring, + * as it will only need the documents source. + * @param {object} params - The OpenSearch's search parameters. + * @param {object} options - The client optional configuration for this request. + * @return {iterator} the async iterator + */ + async *scrollDocuments< + TDocument = unknown, + TRequestBody extends RequestBody = Record + >(params: Search, options?: TransportRequestOptions) { + appendFilterPath('hits.hits._source', params, true); + for await (const { documents } of this.scrollSearch(params, options)) { + for (const document of documents) { + yield document; + } + } + } + + /** + * Creates a msearch helper instance. Once you configure it, you can use the provided + * `search` method to add new searches in the queue. + * @param {object} options - The configuration of the msearch operations. + * @param {object} reqOptions - The client optional configuration for this request. + * @return {object} The possible operations to run. + */ + msearch(options: MsearchHelperOptions = {}, reqOptions: TransportRequestOptions = {}): MsearchHelper { + const client = this[kClient]; + const { + operations = 5, + concurrency = 5, + flushInterval = 500, + retries = this.maxRetries, + wait = 5000, + ...msearchOptions + } = options; + + let stopReading = false; + let stopError = null; + let timeoutRef = null; + const operationsStream = new Readable({ + objectMode: true, + read() {}, + }); + + const p = iterate(); + const helper = { + then(onFulfilled, onRejected) { + return p.then(onFulfilled, onRejected); + }, + catch(onRejected) { + return p.catch(onRejected); + }, + stop(error = null) { + if (stopReading === true) return; + stopReading = true; + stopError = error; + operationsStream.push(null); + }, + // TODO: support abort a single search? + // NOTE: the validation checks are synchronous and the callback/promise will + // be resolved in the same tick. We might want to fix this in the future. + search(header, body, callback) { + if (stopReading === true) { + const error = + stopError === null + ? new ConfigurationError('The msearch processor has been stopped') + : stopError; + return callback ? callback(error, {}) : Promise.reject(error); + } + + if (!(typeof header === 'object' && header !== null && !Array.isArray(header))) { + const error = new ConfigurationError('The header should be an object'); + return callback ? callback(error, {}) : Promise.reject(error); + } + + if (!(typeof body === 'object' && body !== null && !Array.isArray(body))) { + const error = new ConfigurationError('The body should be an object'); + return callback ? callback(error, {}) : Promise.reject(error); + } + + let promise = null; + if (callback === undefined) { + let onFulfilled = null; + let onRejected = null; + promise = new Promise((resolve, reject) => { + onFulfilled = resolve; + onRejected = reject; + }); + callback = function callback(err, result) { + err ? onRejected(err) : onFulfilled(result); + }; + } + + operationsStream.push([header, body, callback]); + + if (promise !== null) { + return promise; + } + }, + }; + + return helper; + + async function iterate() { + const { semaphore, finish } = buildSemaphore(); + const msearchBody = []; + const callbacks = []; + let loadedOperations = 0; + timeoutRef = setTimeout(onFlushTimeout, flushInterval); + + for await (const operation of operationsStream) { + timeoutRef.refresh(); + loadedOperations += 1; + msearchBody.push(operation[0], operation[1]); + callbacks.push(operation[2]); + if (loadedOperations >= operations) { + const send = await semaphore(); + send(msearchBody.slice(), callbacks.slice()); + msearchBody.length = 0; + callbacks.length = 0; + loadedOperations = 0; + } + } + + clearTimeout(timeoutRef); + // In some cases the previos http call does not have finished, + // or we didn't reach the flush bytes threshold, so we force one last operation. + if (loadedOperations > 0) { + const send = await semaphore(); + send(msearchBody, callbacks); + } + + await finish(); + + if (stopError !== null) { + throw stopError; + } + + async function onFlushTimeout() { + if (loadedOperations === 0) return; + const msearchBodyCopy = msearchBody.slice(); + const callbacksCopy = callbacks.slice(); + msearchBody.length = 0; + callbacks.length = 0; + loadedOperations = 0; + try { + const send = await semaphore(); + send(msearchBodyCopy, callbacksCopy); + } catch (err) { + /* istanbul ignore next */ + helper.stop(err); + } + } + } + + // This function builds a semaphore using the concurrency + // options of the msearch helper. It is used inside the iterator + // to guarantee that no more than the number of operations + // allowed to run at the same time are executed. + // It returns a semaphore function which resolves in the next tick + // if we didn't reach the maximim concurrency yet, otherwise it returns + // a promise that resolves as soon as one of the running request has finshed. + // The semaphore function resolves a send function, which will be used + // to send the actual msearch request. + // It also returns a finish function, which returns a promise that is resolved + // when there are no longer request running. + function buildSemaphore() { + let resolveSemaphore = null; + let resolveFinish = null; + let running = 0; + + return { semaphore, finish }; + + function finish() { + return new Promise((resolve) => { + if (running === 0) { + resolve(); + } else { + resolveFinish = resolve; + } + }); + } + + function semaphore() { + if (running < concurrency) { + running += 1; + return pImmediate(send); + } else { + return new Promise((resolve) => { + resolveSemaphore = resolve; + }); + } + } + + function send(msearchBody, callbacks) { + /* istanbul ignore if */ + if (running > concurrency) { + throw new Error('Max concurrency reached'); + } + msearchOperation(msearchBody, callbacks, () => { + running -= 1; + if (resolveSemaphore) { + running += 1; + resolveSemaphore(send); + resolveSemaphore = null; + } else if (resolveFinish && running === 0) { + resolveFinish(); + } + }); + } + } + + function msearchOperation(msearchBody, callbacks, done) { + let retryCount = retries; + + // Instead of going full on async-await, which would make the code easier to read, + // we have decided to use callback style instead. + // This because every time we use async await, V8 will create multiple promises + // behind the scenes, making the code slightly slower. + tryMsearch(msearchBody, callbacks, retrySearch); + function retrySearch(msearchBody, callbacks) { + if (msearchBody.length > 0 && retryCount > 0) { + retryCount -= 1; + setTimeout(tryMsearch, wait, msearchBody, callbacks, retrySearch); + return; + } + + done(); + } + + // This function never returns an error, if the msearch operation fails, + // the error is dispatched to all search executors. + function tryMsearch(msearchBody, callbacks, done) { + client.msearch( + Object.assign({}, msearchOptions, { body: msearchBody }), + reqOptions, + (err, results) => { + const retryBody = []; + const retryCallbacks = []; + if (err) { + addDocumentsGetter(results); + for (const callback of callbacks) { + callback(err, results); + } + return done(retryBody, retryCallbacks); + } + const { responses } = results.body; + for (let i = 0, len = responses.length; i < len; i++) { + const response = responses[i]; + if (response.status === 429 && retryCount > 0) { + retryBody.push(msearchBody[i * 2]); + retryBody.push(msearchBody[i * 2 + 1]); + retryCallbacks.push(callbacks[i]); + continue; + } + const result = { ...results, body: response }; + addDocumentsGetter(result); + if (response.status >= 400) { + callbacks[i](new ResponseError(result), result); + } else { + callbacks[i](null, result); + } + } + done(retryBody, retryCallbacks); + } + ); + } + } + } + // bulk( +// options: BulkHelperOptions, +// reqOptions?: TransportRequestOptions +// ): BulkHelper; + /** + * Creates a bulk helper instance. Once you configure it, you can pick which operation + * to execute with the given dataset, index, create, update, and delete. + * @param {object} options - The configuration of the bulk operation. + * @param {object} reqOptions - The client optional configuration for this request. + * @return {object} The possible operations to run with the datasource. + */ + bulk(options: BulkHelperOptions, reqOptions?: TransportRequestOptions) { + const client = this[kClient]; + const { serializer } = client; + if (this[kMetaHeader] !== null) { + reqOptions.headers = reqOptions.headers || {}; + } + const { + datasource, + onDocument, + flushBytes = 5000000, + flushInterval = 30000, + concurrency = 5, + retries = this.maxRetries, + wait = 5000, + onDrop = NOOP, + refreshOnCompletion = false, + ...bulkOptions + } = options; + + if (datasource === undefined) { + return Promise.reject(new ConfigurationError('bulk helper: the datasource is required')); + } + if ( + !( + Array.isArray(datasource) || + Buffer.isBuffer(datasource) || + typeof datasource.pipe === 'function' || + datasource[Symbol.asyncIterator] + ) + ) { + return Promise.reject( + new ConfigurationError( + 'bulk helper: the datasource must be an array or a buffer or a readable stream or an async generator' + ) + ); + } + if (onDocument === undefined) { + return Promise.reject( + new ConfigurationError('bulk helper: the onDocument callback is required') + ); + } + + let shouldAbort = false; + let timeoutRef = null; + const stats = { + total: 0, + failed: 0, + retry: 0, + successful: 0, + noop: 0, + time: 0, + bytes: 0, + aborted: false, + }; + + const p = iterate(); + const helper = { + get stats() { + return stats; + }, + then(onFulfilled, onRejected) { + return p.then(onFulfilled, onRejected); + }, + catch(onRejected) { + return p.catch(onRejected); + }, + abort() { + clearTimeout(timeoutRef); + shouldAbort = true; + stats.aborted = true; + return this; + }, + }; + + return helper; + + /** + * Function that iterates over the given datasource and start a bulk operation as soon + * as it reaches the configured bulk size. It's designed to use the Node.js asynchronous + * model at this maximum capacity, as it will collect the next body to send while there is + * a running http call. In this way, the CPU time will be used carefully. + * The objects will be serialized right away, to approximate the byte length of the body. + * It creates an array of strings instead of a ndjson string because the bulkOperation + * will navigate the body for matching failed operations with the original document. + */ + async function iterate() { + const { semaphore, finish } = buildSemaphore(); + const startTime = Date.now(); + const bulkBody = []; + let actionBody = ''; + let payloadBody = ''; + let chunkBytes = 0; + timeoutRef = setTimeout(onFlushTimeout, flushInterval); + + for await (const chunk of datasource) { + if (shouldAbort === true) break; + timeoutRef.refresh(); + const result = onDocument(chunk); + const [action, payload] = Array.isArray(result) ? result : [result, chunk]; + const operation = Object.keys(action)[0]; + if (operation === 'index' || operation === 'create') { + actionBody = serializer.serialize(action); + payloadBody = typeof payload === 'string' ? payload : serializer.serialize(payload); + chunkBytes += Buffer.byteLength(actionBody) + Buffer.byteLength(payloadBody); + bulkBody.push(actionBody, payloadBody); + } else if (operation === 'update') { + actionBody = serializer.serialize(action); + payloadBody = + typeof chunk === 'string' + ? `{"doc":${chunk}}` + : serializer.serialize({ doc: chunk, ...payload }); + chunkBytes += Buffer.byteLength(actionBody) + Buffer.byteLength(payloadBody); + bulkBody.push(actionBody, payloadBody); + } else if (operation === 'delete') { + actionBody = serializer.serialize(action); + chunkBytes += Buffer.byteLength(actionBody); + bulkBody.push(actionBody); + } else { + clearTimeout(timeoutRef); + throw new ConfigurationError(`Bulk helper invalid action: '${operation}'`); + } + + if (chunkBytes >= flushBytes) { + stats.bytes += chunkBytes; + const send = await semaphore(); + send(bulkBody.slice()); + bulkBody.length = 0; + chunkBytes = 0; + } + } + + clearTimeout(timeoutRef); + // In some cases the previos http call does not have finished, + // or we didn't reach the flush bytes threshold, so we force one last operation. + if (shouldAbort === false && chunkBytes > 0) { + const send = await semaphore(); + stats.bytes += chunkBytes; + send(bulkBody); + } + + await finish(); + + if (refreshOnCompletion) { + await client.indices.refresh( + { + index: typeof refreshOnCompletion === 'string' ? refreshOnCompletion : '_all', + }, + reqOptions + ); + } + + stats.time = Date.now() - startTime; + stats.total = stats.successful + stats.failed; + + return stats; + + async function onFlushTimeout() { + if (chunkBytes === 0) return; + stats.bytes += chunkBytes; + const bulkBodyCopy = bulkBody.slice(); + bulkBody.length = 0; + chunkBytes = 0; + try { + const send = await semaphore(); + send(bulkBodyCopy); + } catch (err) { + /* istanbul ignore next */ + helper.abort(); + } + } + } + + // This function builds a semaphore using the concurrency + // options of the bulk helper. It is used inside the iterator + // to guarantee that no more than the number of operations + // allowed to run at the same time are executed. + // It returns a semaphore function which resolves in the next tick + // if we didn't reach the maximim concurrency yet, otherwise it returns + // a promise that resolves as soon as one of the running request has finshed. + // The semaphore function resolves a send function, which will be used + // to send the actual bulk request. + // It also returns a finish function, which returns a promise that is resolved + // when there are no longer request running. It rejects an error if one + // of the request has failed for some reason. + function buildSemaphore() { + let resolveSemaphore = null; + let resolveFinish = null; + let rejectFinish = null; + let error = null; + let running = 0; + + return { semaphore, finish }; + + function finish() { + return new Promise((resolve, reject) => { + if (running === 0) { + if (error) { + reject(error); + } else { + resolve(); + } + } else { + resolveFinish = resolve; + rejectFinish = reject; + } + }); + } + + function semaphore() { + if (running < concurrency) { + running += 1; + return pImmediate(send); + } else { + return new Promise((resolve) => { + resolveSemaphore = resolve; + }); + } + } + + function send(bulkBody) { + /* istanbul ignore if */ + if (running > concurrency) { + throw new Error('Max concurrency reached'); + } + bulkOperation(bulkBody, (err) => { + running -= 1; + if (err) { + shouldAbort = true; + error = err; + } + if (resolveSemaphore) { + running += 1; + resolveSemaphore(send); + resolveSemaphore = null; + } else if (resolveFinish && running === 0) { + if (error) { + rejectFinish(error); + } else { + resolveFinish(); + } + } + }); + } + } + + function bulkOperation(bulkBody, callback) { + let retryCount = retries; + let isRetrying = false; + + // Instead of going full on async-await, which would make the code easier to read, + // we have decided to use callback style instead. + // This because every time we use async await, V8 will create multiple promises + // behind the scenes, making the code slightly slower. + tryBulk(bulkBody, retryDocuments); + function retryDocuments(err, bulkBody) { + if (err) return callback(err); + if (shouldAbort === true) return callback(); + + if (bulkBody.length > 0) { + if (retryCount > 0) { + isRetrying = true; + retryCount -= 1; + stats.retry += bulkBody.length; + setTimeout(tryBulk, wait, bulkBody, retryDocuments); + return; + } + for (let i = 0, len = bulkBody.length; i < len; i = i + 2) { + const operation = Object.keys(serializer.deserialize(bulkBody[i]))[0]; + onDrop({ + status: 429, + error: null, + operation: serializer.deserialize(bulkBody[i]), + document: + operation !== 'delete' + ? serializer.deserialize(bulkBody[i + 1]) + : /* istanbul ignore next */ + null, + retried: isRetrying, + }); + stats.failed += 1; + } + } + callback(); + } + + function tryBulk(bulkBody, callback) { + if (shouldAbort === true) return callback(null, []); + client.bulk( + Object.assign({}, bulkOptions, { body: bulkBody }), + reqOptions, + (err, { body }) => { + if (err) return callback(err, null); + if (body.errors === false) { + stats.successful += body.items.length; + for (const item of body.items) { + if (item.update && item.update.result === 'noop') { + stats.noop++; + } + } + return callback(null, []); + } + const retry = []; + const { items } = body; + for (let i = 0, len = items.length; i < len; i++) { + const action = items[i]; + const operation = Object.keys(action)[0]; + const { status } = action[operation]; + const indexSlice = operation !== 'delete' ? i * 2 : i; + + if (status >= 400) { + // 429 is the only staus code where we might want to retry + // a document, because it was not an error in the document itself, + // but the OpenSearch node were handling too many operations. + if (status === 429) { + retry.push(bulkBody[indexSlice]); + /* istanbul ignore next */ + if (operation !== 'delete') { + retry.push(bulkBody[indexSlice + 1]); + } + } else { + onDrop({ + status: status, + error: action[operation].error, + operation: serializer.deserialize(bulkBody[indexSlice]), + document: + operation !== 'delete' + ? serializer.deserialize(bulkBody[indexSlice + 1]) + : null, + retried: isRetrying, + }); + stats.failed += 1; + } + } else { + stats.successful += 1; + } + } + callback(null, retry); + } + ); + } + } + } +} + +// Using a getter will improve the overall performances of the code, +// as we will reed the documents only if needed. +function addDocumentsGetter(result) { + Object.defineProperty(result, 'documents', { + get() { + if (this.body.hits?.hits) { + return this.body.hits.hits.map((d) => d._source); + } + return []; + }, + }); +} + +function appendFilterPath(filter, params, force) { + if (params.filter_path !== undefined) { + params.filter_path += ',' + filter; + } else if (params.filterPath !== undefined) { + params.filterPath += ',' + filter; + } else if (force === true) { + params.filter_path = filter; + } +} + +export default Helpers; diff --git a/src/transport/Serializer.ts b/src/transport/Serializer.ts new file mode 100644 index 000000000..9bb0d6ede --- /dev/null +++ b/src/transport/Serializer.ts @@ -0,0 +1,116 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Debug from 'debug'; +import { stringify } from 'querystring'; +import sjson from 'secure-json-parse'; +import { DeserializationError, SerializationError } from '@/errors'; +const debug = Debug('opensearch'); + +export interface SerializerOptions { + disablePrototypePoisoningProtection?: boolean | 'proto' | 'constructor'; +} +const kJsonOptions = Symbol('Secure json parse options'); + +export class Serializer { + [kJsonOptions]: { + protoAction: 'ignore' | 'error'; + constructorAction: 'ignore' | 'error'; + }; + constructor(opts: SerializerOptions = {}) { + const disable = opts.disablePrototypePoisoningProtection ?? false; + this[kJsonOptions] = { + protoAction: disable === true || disable === 'proto' ? 'ignore' : 'error', + constructorAction: disable === true || disable === 'constructor' ? 'ignore' : 'error', + }; + } + + static serialize(object: Record): string { + debug('Serializing', object); + let json: string; + try { + json = JSON.stringify(object); + } catch (e: unknown) { + const error = e as Error; + throw new SerializationError(error.message, object); + } + return json; + } + + static deserialize(json: string): T { + debug('Deserializing', json); + let object; + try { + // @ts-expect-error + object = sjson.parse(json, this[kJsonOptions]); + } catch (e: unknown) { + const error = e as Error; + throw new DeserializationError(error.message as string, json); + } + return object; + } + + static ndserialize(array: (string | Record)[]): string { + debug('ndserialize', array); + if (!Array.isArray(array)) { + throw new SerializationError('The argument provided is not an array', array); + } + let ndjson: string = ''; + for (let i = 0, len = array.length; i < len; i++) { + if (typeof array[i] === 'string') { + ndjson += array[i] + '\n'; + } else { + // @ts-expect-error + ndjson += this.serialize(array[i]) + '\n'; + } + } + return ndjson; + } + + static qserialize(object?: Record): string { + debug('qserialize', object); + if (object == null) return ''; + if (typeof object === 'string') return object; + // arrays should be serialized as comma separated list + const keys = Object.keys(object); + for (let i = 0, len = keys.length; i < len; i++) { + const key = keys[i]; + // OpenSearch will complain about keys without a value + if (object[key] === undefined) { + object[key] = undefined; + } else if (Array.isArray(object[key])) { + object[key] = (object[key] as string[]).join(','); + } + } + return stringify(object as Record); + } +} + +export default Serializer; + diff --git a/src/transport/Transport.ts b/src/transport/Transport.ts new file mode 100644 index 000000000..9336f980e --- /dev/null +++ b/src/transport/Transport.ts @@ -0,0 +1,803 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import Debug from 'debug'; +import ms from 'ms'; + +import buffer from 'node:buffer'; +import os from 'node:os'; +import v8 from 'node:v8'; +import { EventEmitter } from 'node:events'; +import { gzip, unzip, createGzip } from 'zlib'; + +import { Serializer } from '#transport' +import { version as clientVersion } from '#/package.json'; + +import { NOOP } from '@/utils'; +import { + ApiError, + ApiResponse, + MemoryCircuitBreakerOptions, + TransportGetConnectionOptions, + TransportOptions, + TransportRequestOptions, + TransportRequestParams, + TransportSniffOptions, +} from '@/types/transport'; +import { + ConnectionError, + RequestAbortedError, + NoLivingConnectionsError, + ResponseError, + ConfigurationError, +} from '@/errors'; + +const debug = Debug('opensearch'); +const compatibleCheckEmitter = new EventEmitter(); +const userAgent = `opensearch-js/${clientVersion} (${os.platform()} ${os.release()}-${os.arch()}; Node.js ${ + process.version +})`; +const MAX_BUFFER_LENGTH = buffer.constants.MAX_LENGTH; +const MAX_STRING_LENGTH = buffer.constants.MAX_STRING_LENGTH; +const HEAP_SIZE_LIMIT = v8.getHeapStatistics().heap_size_limit; +const kCompatibleCheck = Symbol('compatible check'); +const kApiVersioning = Symbol('api versioning'); + +// export default class Transport { +// static sniffReasons: { +// SNIFF_ON_START: string; +// SNIFF_INTERVAL: string; +// SNIFF_ON_CONNECTION_FAULT: string; +// DEFAULT: string; +// }; +// emit: (event: string | symbol, ...args: any[]) => boolean; +// connectionPool: ConnectionPool | CloudConnectionPool; +// serializer: Serializer; +// maxRetries: number; +// requestTimeout: number; +// suggestCompression: boolean; +// compression: 'gzip' | false; +// sniffInterval: number; +// sniffOnConnectionFault: boolean; +// opaqueIdPrefix: string | null; +// memoryCircuitBreaker: MemoryCircuitBreakerOptions | undefined; +// sniffEndpoint: string; +// _sniffEnabled: boolean; +// _nextSniff: number; +// _isSniffing: boolean; +// constructor(opts: TransportOptions); +// request( +// params: TransportRequestParams, +// options?: TransportRequestOptions +// ): TransportRequestPromise; +// request( +// params: TransportRequestParams, +// options?: TransportRequestOptions, +// callback?: (err: ApiError, result: ApiResponse) => void +// ): TransportRequestCallback; +// getConnection(opts: TransportGetConnectionOptions): Connection | null; +// sniff(opts?: TransportSniffOptions, callback?: (...args: any[]) => void): void; +// } + +/** Default Transport Layer */ +export class Transport { + emit: (event: string | symbol, ...args: any[]) => boolean; + // connectionPool: ConnectionPool | CloudConnectionPool; + serializer: Serializer; + maxRetries: number; + requestTimeout: number; + suggestCompression: boolean; + compression: 'gzip' | false; + sniffInterval: number; + sniffOnConnectionFault: boolean; + opaqueIdPrefix: string | null; + memoryCircuitBreaker: MemoryCircuitBreakerOptions | undefined; + sniffEndpoint: string; + _sniffEnabled: boolean; + _nextSniff: number; + _isSniffing: boolean; + + constructor(opts: TransportOptions) { + if (typeof opts.compression === 'string' && opts.compression !== 'gzip') { + throw new ConfigurationError(`Invalid compression: '${opts.compression}'`); + } + this.emit = opts.emit; + this.connectionPool = opts.connectionPool; + this.serializer = opts.serializer; + this.maxRetries = opts.maxRetries; + this.requestTimeout = toMs(opts.requestTimeout); + this.suggestCompression = opts.suggestCompression === true; + this.compression = opts.compression || false; + this.context = opts.context || null; + this.headers = Object.assign( + {}, + { 'user-agent': userAgent }, + opts.suggestCompression === true ? { 'accept-encoding': 'gzip,deflate' } : null, + lowerCaseHeaders(opts.headers) + ); + this.sniffInterval = opts.sniffInterval + this.sniffOnConnectionFault = opts.sniffOnConnectionFault; + this.sniffEndpoint = opts.sniffEndpoint; + this.generateRequestId = opts.generateRequestId || generateRequestId(); + this.name = opts.name; + this.opaqueIdPrefix = opts.opaqueIdPrefix; + this[kCompatibleCheck] = 0; // 0 = to be checked, 1 = checking, 2 = checked-ok, 3 checked-notok + this[kApiVersioning] = process.env.OPENSEARCH_CLIENT_APIVERSIONING === 'true'; + this.memoryCircuitBreaker = opts.memoryCircuitBreaker; + + this.nodeFilter = opts.nodeFilter || defaultNodeFilter; + if (typeof opts.nodeSelector === 'function') { + this.nodeSelector = opts.nodeSelector; + } else if (opts.nodeSelector === 'round-robin') { + this.nodeSelector = roundRobinSelector(); + } else if (opts.nodeSelector === 'random') { + this.nodeSelector = randomSelector; + } else { + this.nodeSelector = roundRobinSelector(); + } + + this._sniffEnabled = typeof this.sniffInterval === 'number'; + this._nextSniff = this._sniffEnabled ? Date.now() + this.sniffInterval : 0; + this._isSniffing = false; + + if (opts.sniffOnStart === true) { + // timer needed otherwise it will clash + // with the compatible check testing + setTimeout(() => { + this.sniff({ reason: Transport.sniffReasons.SNIFF_ON_START }); + }, 10); + } + } + + static sniffReasons = { + SNIFF_ON_START: 'sniff-on-start', + SNIFF_INTERVAL: 'sniff-interval', + SNIFF_ON_CONNECTION_FAULT: 'sniff-on-connection-fault', + // TODO: find a better name + DEFAULT: 'default', + }; + + // params: TransportRequestParams, + // options?: TransportRequestOptions, + // callback?: (err: ApiError, result: ApiResponse) => void + + /** + * @param {Object} params + * @param {string} params.method - HTTP Method (e.g. HEAD, GET, POST...) + * @param {string} params.path - Relative URL path + * @param {Object | string} [params.body] - Body of a standard request. + * @param {Object[] | string} [params.bulkBody] - Body of a bulk request. + * @param {Object[] | string} [params.querystring] - Querystring params. + * + * @param {Object} options + * @param {number} [options.id] - Request ID + * @param {Object} [options.context] - Object used for observability + * @param {number} [options.maxRetries] - Max number of retries + * @param {false | 'gzip'} [options.compression] - Request body compression, if any + * @param {boolean} [options.asStream] - Whether to emit the response as stream + * @param {number[]} [options.ignore] - Response's Error Status Codes to ignore + * @param {Object} [options.headers] - Request headers + * @param {Object | string} [options.querystring] - Request's query string + * @param {number} [options.requestTimeout] - Max request timeout in milliseconds + * + * @param {function} callback - Callback that handles errors and response + */ + request( + params: TransportRequestParams, + options: TransportRequestOptions, + callback: (err: ApiError, result: ApiResponse) => void + ) { + options = options || {}; + if (typeof options === 'function') { + callback = options; + options = {}; + } + let p = null; + + // promises support + if (callback === undefined) { + let onFulfilled = null; + let onRejected = null; + p = new Promise((resolve, reject) => { + onFulfilled = resolve; + onRejected = reject; + }); + callback = function callback(err, result) { + err ? onRejected(err) : onFulfilled(result); + }; + } + + const meta = { + context: null, + request: { + params: null, + options: null, + id: options.id || this.generateRequestId(params, options), + }, + name: this.name, + connection: null, + attempts: 0, + aborted: false, + }; + + if (this.context != null && options.context != null) { + meta.context = Object.assign({}, this.context, options.context); + } else if (this.context != null) { + meta.context = this.context; + } else if (options.context != null) { + meta.context = options.context; + } + + const result = { + body: null, + statusCode: null, + headers: null, + meta, + }; + + Object.defineProperty(result, 'warnings', { + get() { + return this.headers?.warning + ? this.headers.warning.split(/(?!\B"[^"]*),(?![^"]*"\B)/) + : null; + }, + }); + + // We should not retry if we are sending a stream body, because we should store in memory + // a copy of the stream to be able to send it again, but since we don't know in advance + // the size of the stream, we risk to take too much memory. + // Furthermore, copying everytime the stream is very a expensive operation. + const maxRetries = + isStream(params.body) || isStream(params.bulkBody) + ? 0 + : typeof options.maxRetries === 'number' + ? options.maxRetries + : this.maxRetries; + const compression = options.compression !== undefined ? options.compression : this.compression; + let request = { abort: NOOP }; + const transportReturn = { + then(onFulfilled, onRejected) { + if (p != null) { + return p.then(onFulfilled, onRejected); + } + }, + catch(onRejected) { + if (p != null) { + return p.catch(onRejected); + } + }, + abort() { + meta.aborted = true; + request.abort(); + debug('Aborting request', params); + return this; + }, + finally(onFinally) { + if (p != null) { + return p.finally(onFinally); + } + }, + }; + + const makeRequest = () => { + if (meta.aborted === true) { + return process.nextTick(callback, new RequestAbortedError(), result); + } + meta.connection = this.getConnection({ requestId: meta.request.id }); + if (meta.connection == null) { + return process.nextTick(callback, new NoLivingConnectionsError(), result); + } + this.emit('request', null, result); + // perform the actual http request + request = meta.connection.request(params, onResponse); + }; + + const onConnectionError = (err) => { + if (err.name !== 'RequestAbortedError') { + // if there is an error in the connection + // let's mark the connection as dead + this.connectionPool.markDead(meta.connection); + + if (this.sniffOnConnectionFault === true) { + this.sniff({ + reason: Transport.sniffReasons.SNIFF_ON_CONNECTION_FAULT, + requestId: meta.request.id, + }); + } + + // retry logic + if (meta.attempts < maxRetries) { + meta.attempts++; + debug(`Retrying request, there are still ${maxRetries - meta.attempts} attempts`, params); + makeRequest(); + return; + } + } + + err.meta = result; + this.emit('response', err, result); + return callback(err, result); + }; + + const onResponse = (err, response) => { + if (err !== null) { + return onConnectionError(err); + } + + result.statusCode = response.statusCode; + result.headers = response.headers; + + if (options.asStream === true) { + result.body = response; + this.emit('response', null, result); + callback(null, result); + return; + } + + const contentEncoding = (result.headers['content-encoding'] || '').toLowerCase(); + const isCompressed = + contentEncoding.indexOf('gzip') > -1 || contentEncoding.indexOf('deflate') > -1; + /* istanbul ignore else */ + if (result.headers['content-length'] !== undefined) { + const contentLength = Number(result.headers['content-length']); + // nodeJS data type limit check + if (isCompressed && contentLength > MAX_BUFFER_LENGTH) { + response.destroy(); + return onConnectionError( + new RequestAbortedError( + `The content length (${contentLength}) is bigger than the maximum allowed buffer (${MAX_BUFFER_LENGTH})`, + result + ) + ); + } else if (contentLength > MAX_STRING_LENGTH) { + response.destroy(); + return onConnectionError( + new RequestAbortedError( + `The content length (${contentLength}) is bigger than the maximum allowed string (${MAX_STRING_LENGTH})`, + result + ) + ); + } else if (shouldApplyCircuitBreaker(contentLength)) { + // Abort this response to avoid OOM crash of dashboards. + response.destroy(); + return onConnectionError( + new RequestAbortedError( + `The content length (${contentLength}) is bigger than the maximum allowed heap memory limit.`, + result + ) + ); + } + } + // if the response is compressed, we must handle it + // as buffer for allowing decompression later + let payload = isCompressed ? [] : ''; + const onData = isCompressed + ? (chunk) => { + payload.push(chunk); + } + : (chunk) => { + payload += chunk; + }; + const onEnd = (err) => { + response.removeListener('data', onData); + response.removeListener('end', onEnd); + response.removeListener('error', onEnd); + response.removeListener('aborted', onAbort); + + if (err) { + return onConnectionError(new ConnectionError(err.message)); + } + + if (isCompressed) { + unzip(Buffer.concat(payload), onBody); + } else { + onBody(null, payload); + } + }; + + const onAbort = () => { + response.destroy(); + onEnd(new Error('Response aborted while reading the body')); + }; + + if (!isCompressed) { + response.setEncoding('utf8'); + } + + this.emit('deserialization', null, result); + response.on('data', onData); + response.on('error', onEnd); + response.on('end', onEnd); + response.on('aborted', onAbort); + }; + // Helper function to check if memory circuit breaker enabled and the response payload is too large to fit into available heap memory. + const shouldApplyCircuitBreaker = (contentLength) => { + if (!this.memoryCircuitBreaker || !this.memoryCircuitBreaker.enabled) return false; + const maxPercentage = validateMemoryPercentage(this.memoryCircuitBreaker.maxPercentage); + const heapUsed = process.memoryUsage().heapUsed; + return contentLength + heapUsed > HEAP_SIZE_LIMIT * maxPercentage; + }; + + const onBody = (err, payload) => { + if (err) { + this.emit('response', err, result); + return callback(err, result); + } + if (Buffer.isBuffer(payload)) { + payload = payload.toString(); + } + const isHead = params.method === 'HEAD'; + // we should attempt the payload deserialization only if: + // - a `content-type` is defined and is equal to `application/json` + // - the request is not a HEAD request + // - the payload is not an empty string + if ( + result.headers['content-type'] !== undefined && + (result.headers['content-type'].indexOf('application/json') > -1 || + result.headers['content-type'].indexOf('application/vnd.opensearch+json') > -1) && + isHead === false && + payload !== '' + ) { + try { + result.body = this.serializer.deserialize(payload); + } catch (err) { + this.emit('response', err, result); + return callback(err, result); + } + } else { + // cast to boolean if the request method was HEAD and there was no error + result.body = isHead === true && result.statusCode < 400 ? true : payload; + } + + // we should ignore the statusCode if the user has configured the `ignore` field with + // the statusCode we just got or if the request method is HEAD and the statusCode is 404 + const ignoreStatusCode = + (Array.isArray(options.ignore) && options.ignore.indexOf(result.statusCode) > -1) || + (isHead === true && result.statusCode === 404); + + if ( + ignoreStatusCode === false && + (result.statusCode === 502 || result.statusCode === 503 || result.statusCode === 504) + ) { + // if the statusCode is 502/3/4 we should run our retry strategy + // and mark the connection as dead + this.connectionPool.markDead(meta.connection); + // retry logic (we should not retry on "429 - Too Many Requests") + if (meta.attempts < maxRetries && result.statusCode !== 429) { + meta.attempts++; + debug(`Retrying request, there are still ${maxRetries - meta.attempts} attempts`, params); + makeRequest(); + return; + } + } else { + // everything has worked as expected, let's mark + // the connection as alive (or confirm it) + this.connectionPool.markAlive(meta.connection); + } + + if (ignoreStatusCode === false && result.statusCode >= 400) { + const error = new ResponseError(result); + this.emit('response', error, result); + callback(error, result); + } else { + // cast to boolean if the request method was HEAD + if (isHead === true && result.statusCode === 404) { + result.body = false; + } + this.emit('response', null, result); + callback(null, result); + } + }; + + const prepareRequest = () => { + this.emit('serialization', null, result); + const headers = Object.assign({}, this.headers, lowerCaseHeaders(options.headers)); + + if (options.opaqueId !== undefined) { + headers['x-opaque-id'] = + this.opaqueIdPrefix !== null ? this.opaqueIdPrefix + options.opaqueId : options.opaqueId; + } + + // handle json body + if (params.body != null) { + if (shouldSerialize(params.body) === true) { + try { + params.body = this.serializer.serialize(params.body); + } catch (err) { + this.emit('request', err, result); + process.nextTick(callback, err, result); + return transportReturn; + } + } + + if (params.body !== '') { + headers['content-type'] = + headers['content-type'] || + (this[kApiVersioning] + ? 'application/vnd.opensearch+json; compatible-with=7' + : 'application/json'); + } + + // handle ndjson body + } else if (params.bulkBody != null) { + if (shouldSerialize(params.bulkBody) === true) { + try { + params.body = this.serializer.ndserialize(params.bulkBody); + } catch (err) { + this.emit('request', err, result); + process.nextTick(callback, err, result); + return transportReturn; + } + } else { + params.body = params.bulkBody; + } + if (params.body !== '') { + headers['content-type'] = + headers['content-type'] || + (this[kApiVersioning] + ? 'application/vnd.opensearch+x-ndjson; compatible-with=7' + : 'application/x-ndjson'); + } + } + + params.headers = headers; + // serializes the querystring + if (options.querystring == null) { + params.querystring = this.serializer.qserialize(params.querystring); + } else { + params.querystring = this.serializer.qserialize( + Object.assign({}, params.querystring, options.querystring) + ); + } + + // handles request timeout + params.timeout = toMs(options.requestTimeout || this.requestTimeout); + if (options.asStream === true) params.asStream = true; + meta.request.params = params; + meta.request.options = options; + + // handle compression + if (params.body !== '' && params.body != null) { + if (isStream(params.body) === true) { + if (compression === 'gzip') { + params.headers['content-encoding'] = compression; + params.body = params.body.pipe(createGzip()); + } + makeRequest(); + } else if (compression === 'gzip') { + gzip(params.body, (err, buffer) => { + /* istanbul ignore next */ + if (err) { + this.emit('request', err, result); + return callback(err, result); + } + params.headers['content-encoding'] = compression; + params.headers['content-length'] = '' + Buffer.byteLength(buffer); + params.body = buffer; + makeRequest(); + }); + } else { + params.headers['content-length'] = '' + Buffer.byteLength(params.body); + makeRequest(); + } + } else { + makeRequest(); + } + }; + + prepareRequest(); + + return transportReturn; + } + + getConnection(opts: TransportGetConnectionOptions) { + const now = Date.now(); + if (this._sniffEnabled === true && now > this._nextSniff) { + this.sniff({ reason: Transport.sniffReasons.SNIFF_INTERVAL, requestId: opts.requestId }); + } + return this.connectionPool.getConnection({ + filter: this.nodeFilter, + selector: this.nodeSelector, + requestId: opts.requestId, + name: this.name, + now, + }); + } + + sniff(opts: TransportSniffOptions, callback: (...args: any[]) => void = NOOP): void { + if (this._isSniffing === true) return; + this._isSniffing = true; + debug('Started sniffing request'); + + if (typeof opts === 'function') { + callback = opts; + opts = { reason: Transport.sniffReasons.DEFAULT }; + } + + const { reason } = opts; + + const request = { + method: 'GET', + path: this.sniffEndpoint, + }; + + this.request(request, { id: opts.requestId }, (err, result) => { + this._isSniffing = false; + if (this._sniffEnabled === true) { + this._nextSniff = Date.now() + this.sniffInterval; + } + + if (err != null) { + debug('Sniffing errored', err); + result.meta.sniff = { hosts: [], reason }; + this.emit('sniff', err, result); + return callback(err); + } + + debug('Sniffing ended successfully', result.body); + const protocol = result.meta.connection.url.protocol || /* istanbul ignore next */ 'http:'; + const hosts = this.connectionPool.nodesToHost(result.body.nodes, protocol); + this.connectionPool.update(hosts); + + result.meta.sniff = { hosts, reason }; + this.emit('sniff', null, result); + callback(null, hosts); + }); + } + + // checkCompatibleInfo validates whether the informations are compatible + checkCompatibleInfo() { + debug('Start compatible check'); + this[kCompatibleCheck] = 1; + this.request( + { + method: 'GET', + path: '/', + }, + (err, result) => { + this[kCompatibleCheck] = 3; + if (err) { + debug('compatible check failed', err); + if (err.statusCode === 401 || err.statusCode === 403) { + this[kCompatibleCheck] = 2; + process.emitWarning( + 'The client is unable to verify the distribution due to security privileges on the server side. Some functionality may not be compatible if the server is running an unsupported product.' + ); + compatibleCheckEmitter.emit('compatible-check', true); + } else { + this[kCompatibleCheck] = 0; + compatibleCheckEmitter.emit('compatible-check', false); + } + } else { + debug('Checking OpenSearch version', result.body, result.headers); + if (result.body.version == null || typeof result.body.version.number !== 'string') { + debug("Can't access OpenSearch version"); + return compatibleCheckEmitter.emit('compatible-check', false); + } + + const distribution = result.body.version.distribution; + const version = result.body.version.number.split('.'); + const major = Number(version[0]); + + // support OpenSearch validation + if (distribution === 'opensearch') { + debug('Valid OpenSearch distribution'); + this[kCompatibleCheck] = 2; + return compatibleCheckEmitter.emit('compatible-check', true); + } + + // support odfe > v7 validation + if (major !== 7) { + debug('Invalid distribution'); + return compatibleCheckEmitter.emit('compatible-check', false); + } + + debug('Valid OpenSearch distribution'); + this[kCompatibleCheck] = 2; + compatibleCheckEmitter.emit('compatible-check', true); + } + } + ); + } +} + +export function toMs(time: string | number): number { + if (typeof time === 'string') { + return ms(time); + } + return time; +} + +function shouldSerialize(obj): boolean { + return ( + typeof obj !== 'string' && typeof obj.pipe !== 'function' && Buffer.isBuffer(obj) === false + ); +} + +function isStream(obj): boolean { + return obj != null && typeof obj.pipe === 'function'; +} + +function defaultNodeFilter(node) { + // avoid cluster_manager or master only nodes + // TODO: remove role check on master when master is not supported + if ( + (node.roles.cluster_manager === true || node.roles.master === true) && + node.roles.data === false && + node.roles.ingest === false + ) { + return false; + } + return true; +} + +export function roundRobinSelector() { + let current = -1; + return function _roundRobinSelector(connections) { + if (++current >= connections.length) { + current = 0; + } + return connections[current]; + }; +} + +export function randomSelector(connections) { + const index = Math.floor(Math.random() * connections.length); + return connections[index]; +} + +export function generateRequestId() { + const MAX_INT = 2147483647; + let nextRequestId = 0; + return () => (nextRequestId = (nextRequestId + 1) & MAX_INT); +} + +export function lowerCaseHeaders(oldHeaders: Record) { + if (oldHeaders == null) return oldHeaders; + const newHeaders: Record = {}; + for (const header in oldHeaders) { + newHeaders[header.toLowerCase()] = oldHeaders[header]; + } + return newHeaders; +} + +export function validateMemoryPercentage(percentage: number): number { + if (percentage < 0 || percentage > 1) return 1.0; + return percentage; +} + +export default Transport; + +module.exports.internals = { + defaultNodeFilter, + roundRobinSelector, + randomSelector, + generateRequestId, + lowerCaseHeaders, +}; diff --git a/src/transport/aws/AwsSigv4Signer.ts b/src/transport/aws/AwsSigv4Signer.ts new file mode 100644 index 000000000..933fd7347 --- /dev/null +++ b/src/transport/aws/AwsSigv4Signer.ts @@ -0,0 +1,95 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +import crypto from 'node:crypto'; +import aws4 from 'aws4'; + +// import { } from '#transport' +import { OpenSearchClientError } from '@/errors'; +import { ApiResponse, Context } from '@/types/transport'; + +async function getAwsSDKCredentialsProvider() { + try { + const awsV3 = await import('@aws-sdk/credential-provider-node'); + if (typeof awsV3.defaultProvider === 'function') { + return awsV3.defaultProvider(); + } + } catch (error) { + // ignore + } + try { + const awsV2 = await import('aws-sdk'); + if (awsV2.default && typeof awsV2.default.config.getCredentials === 'function') { + return () => + new Promise((resolve, reject) => { + awsV2.default.config.getCredentials((err, credentials) => { + if (err) { + reject(err); + } else { + resolve(credentials); + } + }); + }); + } + } catch (error) { + // ignore + } + throw new AwsSigv4SignerError( + 'Unable to find a valid AWS SDK, please provide a valid getCredentials function to AwsSigv4Signer options.' + ); +} + +export class AwsSigv4SignerError< + TResponse = Record, + TContext = Context +> extends OpenSearchClientError { + message: string; + data: ApiResponse; + constructor(message: string, data: ApiResponse) { + super(message); + Error.captureStackTrace(this, AwsSigv4SignerError); + this.name = 'AwsSigv4SignerError'; + this.message = message ?? 'AwsSigv4Signer Error'; + this.data = data + } +} + +// const getAwsSDKCredentialsProvider = async () => { +// // First try V3 +// try { +// const awsV3 = await import('@aws-sdk/credential-provider-node'); +// if (typeof awsV3.defaultProvider === 'function') { +// return awsV3.defaultProvider(); +// } +// } catch (err) { +// // Ignore +// } +// try { +// const awsV2 = await import('aws-sdk'); +// if (awsV2.default && typeof awsV2.default.config.getCredentials === 'function') { +// return () => +// new Promise((resolve, reject) => { +// awsV2.default.config.getCredentials((err, credentials) => { +// if (err) { +// reject(err); +// } else { +// resolve(credentials); +// } +// }); +// }); +// } +// } catch (err) { +// // Ignore +// } + +// throw new AwsSigv4SignerError( +// 'Unable to find a valid AWS SDK, please provide a valid getCredentials function to AwsSigv4Signer options.' +// ); +// }; diff --git a/src/transport/aws/index.ts b/src/transport/aws/index.ts new file mode 100644 index 000000000..f2aca41fc --- /dev/null +++ b/src/transport/aws/index.ts @@ -0,0 +1 @@ +export * from './AwsSigv4Signer' \ No newline at end of file diff --git a/src/transport/connection/BaseConnectionPool.ts b/src/transport/connection/BaseConnectionPool.ts new file mode 100644 index 000000000..8afc49044 --- /dev/null +++ b/src/transport/connection/BaseConnectionPool.ts @@ -0,0 +1,306 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { URL } from 'node:url'; +import type { SecureContextOptions } from 'node:tls'; + +import { NOOP } from '@/utils'; +import { BaseConnectionPoolOptions, BasicAuth } from '@/types/pool'; +import { AgentOptions } from '@/types/connection'; +import Debug from 'debug' +import { Connection } from '#transport'; +const debug = Debug('opensearch:connection-pool') + +// export class BaseConnectionPool { +// connections: Connection[]; +// size: number; +// emit: (event: string | symbol, ...args: any[]) => boolean; +// _ssl: SecureContextOptions | null; +// _agent: AgentOptions | null; +// _proxy: string | URL; +// auth: BasicAuth; +// // Connection: typeof Connection; +// constructor(opts: BaseConnectionPoolOptions = {}) { +// this.connections = []; +// // how many nodes we have in our scheduler +// this.size = this.connections.length; +// this.Connection = opts.Connection; +// this.emit = opts.emit || NOOP; +// this.auth = opts.auth || null; +// this._ssl = opts.ssl; +// this._agent = opts.agent; +// this._proxy = opts.proxy; +// } +// } + +export class BaseConnectionPool { + connections: Connection[]; + size: number; + emit: (event: string | symbol, ...args: any[]) => boolean; + _ssl: SecureContextOptions | null; + _agent: AgentOptions | null; + _proxy: string | URL | null; + auth: BasicAuth | null; + Connection: typeof Connection; + constructor(opts: BaseConnectionPoolOptions) { + // list of nodes and weights + this.connections = []; + // how many nodes we have in our scheduler + this.size = this.connections.length; + this.Connection = opts.Connection; + this.emit = opts.emit || NOOP; + this.auth = opts.auth || null; + this._ssl = opts.ssl || null; + this._agent = opts.agent; + this._proxy = opts.proxy || null; + } + + getConnection() { + throw new Error('getConnection must be implemented'); + } + + markAlive(connection: Connection): this { + connection.status = Connection.statuses.ALIVE; + return this; + } + + markDead(connection: Connection): this { + connection.status = Connection.statuses.DEAD; + return this; + } + + /** + * Creates a new connection instance. + */ + createConnection(opts) { + if (typeof opts === 'string') { + opts = this.urlToHost(opts); + } + + if (this.auth !== null) { + opts.auth = this.auth; + } else if (opts.url.username !== '' && opts.url.password !== '') { + opts.auth = { + username: decodeURIComponent(opts.url.username), + password: decodeURIComponent(opts.url.password), + }; + } + + if (opts.ssl == null) opts.ssl = this._ssl; + /* istanbul ignore else */ + if (opts.agent == null) opts.agent = this._agent; + /* istanbul ignore else */ + if (opts.proxy == null) opts.proxy = this._proxy; + + const connection = new this.Connection(opts); + + for (const conn of this.connections) { + if (conn.id === connection.id) { + throw new Error(`Connection with id '${connection.id}' is already present`); + } + } + + return connection; + } + + /** + * Adds a new connection to the pool. + * + * @param {object|string} host + * @returns {ConnectionPool} + */ + addConnection(opts: string | unknown): Connection { + if (Array.isArray(opts)) { + return opts.forEach((o) => this.addConnection(o)); + } + + if (typeof opts === 'string') { + opts = this.urlToHost(opts); + } + + const connectionById = this.connections.find((c) => c.id === opts.id); + const connectionByUrl = this.connections.find((c) => c.id === opts.url.href); + + if (connectionById || connectionByUrl) { + throw new Error(`Connection with id '${opts.id || opts.url.href}' is already present`); + } + + this.update([...this.connections, opts]); + return this.connections[this.size - 1]; + } + + /** + * Removes a new connection to the pool. + * + * @param {object} connection + * @returns {ConnectionPool} + */ + removeConnection(connection: Connection) { + debug('Removing connection'); + return this.update(this.connections.filter((c) => c.id !== connection.id)); + } + + /** + * Empties the connection pool. + * + * @returns {ConnectionPool} + */ + empty(callback = NOOP) { + debug('Emptying the connection pool'); + let openConnections = this.size; + this.connections.forEach((connection) => { + connection.close(() => { + if (--openConnections === 0) { + this.connections = []; + this.size = this.connections.length; + callback(); + } + }); + }); + } + + /** + * Update the ConnectionPool with new connections. + * + * @param {array} array of connections + * @returns {ConnectionPool} + */ + update(nodes: Connection[]) { + debug('Updating the connection pool'); + const newConnections = []; + const oldConnections = []; + + for (const node of nodes) { + // if we already have a given connection in the pool + // we mark it as alive and we do not close the connection + // to avoid socket issues + const connectionById = this.connections.find((c) => c.id === node.id); + const connectionByUrl = this.connections.find((c) => c.id === node.url.href); + if (connectionById) { + debug(`The connection with id '${node.id}' is already present`); + this.markAlive(connectionById); + newConnections.push(connectionById); + // in case the user has passed a single url (or an array of urls), + // the connection id will be the full href; to avoid closing valid connections + // because are not present in the pool, we check also the node url, + // and if is already present we update its id with the opensearch provided one. + } else if (connectionByUrl) { + connectionByUrl.id = node.id; + this.markAlive(connectionByUrl); + newConnections.push(connectionByUrl); + } else { + newConnections.push(this.createConnection(node)); + } + } + + const ids = nodes.map((c) => c.id); + // remove all the dead connections and old connections + for (const connection of this.connections) { + if (ids.indexOf(connection.id) === -1) { + oldConnections.push(connection); + } + } + + // close old connections + oldConnections.forEach((connection) => connection.close()); + + this.connections = newConnections; + this.size = this.connections.length; + + return this; + } + + /** + * Transforms the nodes objects to a host object. + * + * @param {object} nodes + * @returns {array} hosts + */ + nodesToHost(nodes: Connection[], protocol) { + const ids = Object.keys(nodes); + const hosts = []; + + for (let i = 0, len = ids.length; i < len; i++) { + const node = nodes[ids[i]]; + // If there is no protocol in + // the `publish_address` new URL will throw + // the publish_address can have two forms: + // - ip:port + // - hostname/ip:port + // if we encounter the second case, we should + // use the hostname instead of the ip + let address = node.http.publish_address; + const parts = address.split('/'); + // the url is in the form of hostname/ip:port + if (parts.length > 1) { + const hostname = parts[0]; + const port = parts[1].match(/((?::))(?:[0-9]+)$/g)[0].slice(1); + address = `${hostname}:${port}`; + } + + address = + address.slice(0, 4) === 'http' + ? /* istanbul ignore next */ + address + : `${protocol}//${address}`; + const roles = node.roles.reduce((acc, role) => { + acc[role] = true; + return acc; + }, {}); + + hosts.push({ + url: new URL(address), + id: ids[i], + roles: Object.assign( + { + [Connection.roles.DATA]: false, + [Connection.roles.INGEST]: false, + }, + roles + ), + }); + } + + return hosts; + } + + /** + * Transforms an url string to a host object + * + * @param {string} url + * @returns {object} host + */ + urlToHost(url: string): { url: URL } { + return { + url: new URL(url), + }; + } +} + +export default BaseConnectionPool; diff --git a/src/transport/connection/CloudConnectionPool.ts b/src/transport/connection/CloudConnectionPool.ts new file mode 100644 index 000000000..61eed076f --- /dev/null +++ b/src/transport/connection/CloudConnectionPool.ts @@ -0,0 +1,75 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { NOOP } from '@/utils'; +import { BaseConnectionPoolOptions } from '@/types/pool'; +import { Connection } from '#transport'; +import BaseConnectionPool from './BaseConnectionPool'; +export class CloudConnectionPool extends BaseConnectionPool { + cloudConnection: Connection | null; + constructor(opts: BaseConnectionPoolOptions) { + super(opts); + this.cloudConnection = null; + } + + /** + * Returns the only cloud connection. + * + * @returns {object} connection + */ + getConnection(): Connection | null { + return this.cloudConnection; + } + + /** + * Empties the connection pool. + * + * @returns {ConnectionPool} + */ + empty(callback = NOOP) { + super.empty(() => { + this.cloudConnection = null; + callback(); + }); + } + + /** + * Update the ConnectionPool with new connections. + * + * @param {array} array of connections + * @returns {ConnectionPool} + */ + update(connections: Connection[]) { + super.update(connections); + this.cloudConnection = this.connections[0]; + return this; + } +} + +export default CloudConnectionPool; diff --git a/src/transport/connection/ConnectionPool.ts b/src/transport/connection/ConnectionPool.ts new file mode 100644 index 000000000..5522177fe --- /dev/null +++ b/src/transport/connection/ConnectionPool.ts @@ -0,0 +1,267 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { BaseConnectionPool } from './BaseConnectionPool'; +import assert from 'node:assert'; +import { NOOP } from '@/utils'; +import Debug from 'debug'; +import { ConnectionPoolOptions, GetConnectionOptions, ResurrectOptions } from '@/types/pool'; +import { Connection } from '#transport'; +const debug = Debug('opensearch'); + +export class ConnectionPool extends BaseConnectionPool { + dead: string[]; + _sniffEnabled: boolean; + resurrectTimeout: number; + resurrectTimeoutCutoff: number; + pingTimeout: number; + resurrectStrategy: number; + + constructor(opts: ConnectionPoolOptions) { + super(opts); + + this.dead = []; + // the resurrect timeout is 60s + this.resurrectTimeout = 1000 * 60; + // number of consecutive failures after which + // the timeout doesn't increase + this.resurrectTimeoutCutoff = 5; + this.pingTimeout = opts.pingTimeout ?? 3000; + this._sniffEnabled = opts?.sniffEnabled || false; + + const resurrectStrategy = opts.resurrectStrategy || 'ping'; + this.resurrectStrategy = ConnectionPool.resurrectStrategies[resurrectStrategy]; + assert(this.resurrectStrategy != null, `Invalid resurrection strategy: '${resurrectStrategy}'`); + } + + static resurrectStrategies = { + none: 0, + ping: 1, + optimistic: 2, + }; + + /** + * Marks a connection as 'alive'. + * If needed removes the connection from the dead list + * and then resets the `deadCount`. + * + * @param {object} connection + */ + markAlive(connection: Connection) { + const { id } = connection; + debug(`Marking as 'alive' connection '${id}'`); + const index = this.dead.indexOf(id); + if (index > -1) this.dead.splice(index, 1); + connection.status = Connection.statuses.ALIVE; + connection.deadCount = 0; + connection.resurrectTimeout = 0; + return this; + } + + /** + * Marks a connection as 'dead'. + * If needed, adds the connection to the dead list + * and then increments the `deadCount`. + * + * @param {object} connection + */ + markDead(connection: Connection) { + const { id } = connection; + debug(`Marking as 'dead' connection '${id}'`); + if (this.dead.indexOf(id) === -1) { + // It might happen that `markDead` is called just after + // a pool update, and in such case we will add to the dead + // list a node that no longer exists. The following check verifies + // that the connection is still part of the pool before + // marking it as dead. + for (let i = 0; i < this.size; i++) { + if (this.connections[i].id === id) { + this.dead.push(id); + break; + } + } + } + connection.status = Connection.statuses.DEAD; + connection.deadCount++; + // resurrectTimeout formula: + // `resurrectTimeout * 2 ** min(deadCount - 1, resurrectTimeoutCutoff)` + connection.resurrectTimeout = + Date.now() + + this.resurrectTimeout * + Math.pow(2, Math.min(connection.deadCount - 1, this.resurrectTimeoutCutoff)); + + // sort the dead list in ascending order + // based on the resurrectTimeout + this.dead.sort((a, b) => { + const conn1 = this.connections.find((c) => c.id === a) as Connection; + const conn2 = this.connections.find((c) => c.id === b) as Connection; + return conn1.resurrectTimeout - conn2.resurrectTimeout; + }); + + return this; + } + + /** + * If enabled, tries to resurrect a connection with the given + * resurrect strategy ('ping', 'optimistic', 'none'). + * + * @param {object} { now, requestId } + * @param {function} callback (isAlive, connection) + */ + + resurrect( + opts: ResurrectOptions, + callback: (isAlive: boolean | null, connection: Connection | null) => void = NOOP + ) { + if (this.resurrectStrategy === 0 || this.dead.length === 0) { + debug('Nothing to resurrect'); + callback(null, null); + return; + } + + // the dead list is sorted in ascending order based on the timeout + // so the first element will always be the one with the smaller timeout + const connection = this.connections.find((c) => c.id === this.dead[0]) as Connection; + if ((opts.now || Date.now()) < connection.resurrectTimeout) { + debug('Nothing to resurrect'); + callback(null, null); + return; + } + + const { id } = connection; + + // ping strategy + if (this.resurrectStrategy === 1) { + connection.request( + { + method: 'HEAD', + path: '/', + timeout: this.pingTimeout, + }, + (err, response) => { + let isAlive = true; + const statusCode = response !== null ? response.statusCode : 0; + if (err != null || statusCode === 502 || statusCode === 503 || statusCode === 504) { + debug(`Resurrect: connection '${id}' is still dead`); + this.markDead(connection); + isAlive = false; + } else { + debug(`Resurrect: connection '${id}' is now alive`); + this.markAlive(connection); + } + this.emit('resurrect', null, { + strategy: 'ping', + name: opts.name, + request: { id: opts.requestId }, + isAlive, + connection, + }); + callback(isAlive, connection); + } + ); + // optimistic strategy + } else { + debug(`Resurrect: optimistic resurrection for connection '${id}'`); + this.dead.splice(this.dead.indexOf(id), 1); + connection.status = Connection.statuses.ALIVE; + this.emit('resurrect', null, { + strategy: 'optimistic', + name: opts.name, + request: { id: opts.requestId }, + isAlive: true, + connection, + }); + callback(true, connection); // eslint-disable-line + } + } + + /** + * Returns an alive connection if present, + * otherwise returns a dead connection. + * By default it filters the `cluster_manager` or `master` only nodes. + * It uses the selector to choose which + * connection return. + * + * @param {object} options (filter and selector) + * @returns {object|null} connection + */ + getConnection(opts: GetConnectionOptions): Connection | null { + const filter = opts.filter != null ? opts.filter : () => true; + const selector = opts.selector != null ? opts.selector : (conn: Connection[]) => conn[0]; + + this.resurrect({ + now: opts.now, + requestId: opts.requestId, + name: opts.name, + }); + + const noAliveConnections = this.size === this.dead.length; + + // TODO: can we cache this? + const connections = []; + for (let i = 0; i < this.size; i++) { + const connection = this.connections[i]; + if (noAliveConnections || connection.status === Connection.statuses.ALIVE) { + if (filter(connection) === true) { + connections.push(connection); + } + } + } + + if (connections.length === 0) return null; + + return selector(connections); + } + + /** + * Empties the connection pool. + * + * @returns {ConnectionPool} + */ + async empty(callback = NOOP): Promise { + super.empty(() => { + this.dead = []; + callback(); + }); + } + + /** + * Update the ConnectionPool with new connections. + * + * @param {array} array of connections + * @returns {ConnectionPool} + */ + update(connections: Connection[]) { + super.update(connections); + this.dead = []; + return this; + } +} + +export default ConnectionPool; diff --git a/src/transport/connection/index.ts b/src/transport/connection/index.ts new file mode 100644 index 000000000..fdccd3ac4 --- /dev/null +++ b/src/transport/connection/index.ts @@ -0,0 +1,3 @@ +export * from './BaseConnectionPool' +export * from './CloudConnectionPool' +export * from './ConnectionPool' \ No newline at end of file diff --git a/src/transport/index.ts b/src/transport/index.ts new file mode 100644 index 000000000..413fd253a --- /dev/null +++ b/src/transport/index.ts @@ -0,0 +1,4 @@ +export * from './Serializer' +export * from './Transport' +export * from './Helpers' +export * from './Connection' \ No newline at end of file diff --git a/src/types/aws.ts b/src/types/aws.ts new file mode 100644 index 000000000..2b29ee9a6 --- /dev/null +++ b/src/types/aws.ts @@ -0,0 +1,25 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +import type * as http from 'node:http' +import type { Credentials } from '@aws-sdk/types'; +import { Connection, Transport } from '#transport' + +export interface AwsSigv4SignerOptions { + getCredentials?: () => Promise; + region: string; + service?: 'es' | 'aoss'; +} + +export interface AwsSigv4SignerResponse { + Connection: typeof Connection; + Transport: typeof Transport; + buildSignedRequestObject(request: any): http.ClientRequestArgs; +} diff --git a/src/types/client.ts b/src/types/client.ts new file mode 100644 index 000000000..a690111bd --- /dev/null +++ b/src/types/client.ts @@ -0,0 +1,65 @@ +import { agentFn, AgentOptions } from "./connection"; +import { BasicAuth } from "./pool"; +import { Serializer, Transport } from '#transport' +import { Context, generateRequestIdFn, MemoryCircuitBreakerOptions, nodeFilterFn, nodeSelectorFn } from "./transport"; +import Connection from "../transport/Connection"; +import { ConnectionOptions as TlsConnectionOptions } from 'node:tls'; + + +export type extendsCallback = (options: ClientExtendsCallbackOptions) => any; + +export interface NodeOptions { + url: URL; + id?: string; + agent?: AgentOptions; + ssl?: TlsConnectionOptions; + headers?: Record; + roles?: { + cluster_manager?: boolean; + /** + * @deprecated use cluster_manager instead + */ + master?: boolean; + data: boolean; + ingest: boolean; + }; +} + +export interface ClientOptions { + node?: string | string[] | NodeOptions | NodeOptions[]; + nodes?: string | string[] | NodeOptions | NodeOptions[]; + Connection?: typeof Connection; + ConnectionPool?: typeof ConnectionPool; + Transport?: typeof Transport; + Serializer?: typeof Serializer; + maxRetries?: number; + requestTimeout?: number; + pingTimeout?: number; + sniffInterval?: number | boolean; + sniffOnStart?: boolean; + sniffEndpoint?: string; + sniffOnConnectionFault?: boolean; + resurrectStrategy?: 'ping' | 'optimistic' | 'none'; + suggestCompression?: boolean; + compression?: 'gzip'; + ssl?: TlsConnectionOptions; + agent?: AgentOptions | agentFn | false; + nodeFilter?: nodeFilterFn; + nodeSelector?: nodeSelectorFn | string; + headers?: Record; + opaqueIdPrefix?: string; + generateRequestId?: generateRequestIdFn; + name?: string | symbol; + auth?: BasicAuth; + context?: Context; + proxy?: string | URL; + enableMetaHeader?: boolean; + cloud?: { + id: string; + // TODO: remove username and password here in 8 + username?: string; + password?: string; + }; + disablePrototypePoisoningProtection?: boolean | 'proto' | 'constructor'; + memoryCircuitBreaker?: MemoryCircuitBreakerOptions; +} \ No newline at end of file diff --git a/src/types/connection.ts b/src/types/connection.ts new file mode 100644 index 000000000..b19671a27 --- /dev/null +++ b/src/types/connection.ts @@ -0,0 +1,44 @@ + +import type * as http from 'node:http'; +import { ConnectionOptions as TlsConnectionOptions } from 'node:tls'; + +import { BasicAuth } from './pool'; + + +export interface ConnectionOptions { + url: URL; + ssl?: TlsConnectionOptions; + id?: string; + headers?: Record; + agent?: AgentOptions | agentFn; + status?: string; + roles?: ConnectionRoles; + auth?: BasicAuth; + proxy?: string | URL; +} + +export type agentFn = (opts: ConnectionOptions) => any; + +export interface ConnectionRoles { + cluster_manager?: boolean + /** + * @deprecated use cluster_manager instead + */ + master?: boolean + data?: boolean + ingest?: boolean + [key: string]: boolean | undefined +} + +export interface RequestOptions extends http.ClientRequestArgs { + asStream?: boolean; + body?: string | Buffer | ReadableStream | null; + querystring?: string; +} + +export interface AgentOptions { + keepAlive?: boolean; + keepAliveMsecs?: number; + maxSockets?: number; + maxFreeSockets?: number; +} \ No newline at end of file diff --git a/src/types/dashboards.ts b/src/types/dashboards.ts new file mode 100644 index 000000000..efc62ab52 --- /dev/null +++ b/src/types/dashboards.ts @@ -0,0 +1,756 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import type * as errors from '@/errors'; +import type * as T from '@/types/internal'; +import type { ClientOptions } from './client'; +import type { + ApiError, + ApiResponse, + TransportRequestPromise, + TransportRequestParams, + TransportRequestOptions, + RequestEvent, +} from './transport'; + +import { Helpers, Serializer, Transport } from '#transport'; +import { ResurrectEvent } from './pool'; + +/** + * We are still working on this type, it will arrive soon. + * If it's critical for you, please open an issue. + * https://github.com/opensearch-project/opensearch-js/issues + */ +type TODO = Record; + +// Extend API +export interface ClientExtendsCallbackOptions { + ConfigurationError: errors.ConfigurationError; + makeRequest( + params: TransportRequestParams, + options?: TransportRequestOptions + ): Promise | void; + result: { + body: null; + statusCode: null; + headers: null; + warnings: null; + }; +} +export type extendsCallback = (options: ClientExtendsCallbackOptions) => any; +// /Extend API + +export interface OpenSearchDashboardsClient { + connectionPool: ConnectionPool; + transport: Transport; + serializer: Serializer; + extend(method: string, fn: extendsCallback): void; + extend(method: string, opts: { force: boolean }, fn: extendsCallback): void; + helpers: Helpers; + child(opts?: ClientOptions): OpenSearchDashboardsClient; + close(): Promise; + emit(event: string | symbol, ...args: any[]): boolean; + on(event: 'request', listener: (err: ApiError, meta: RequestEvent) => void): this; + on(event: 'response', listener: (err: ApiError, meta: RequestEvent) => void): this; + on(event: 'sniff', listener: (err: ApiError, meta: RequestEvent) => void): this; + on(event: 'resurrect', listener: (err: null, meta: ResurrectEvent) => void): this; + once(event: 'request', listener: (err: ApiError, meta: RequestEvent) => void): this; + once(event: 'response', listener: (err: ApiError, meta: RequestEvent) => void): this; + once(event: 'sniff', listener: (err: ApiError, meta: RequestEvent) => void): this; + once(event: 'resurrect', listener: (err: null, meta: ResurrectEvent) => void): this; + off(event: string | symbol, listener: (...args: any[]) => void): this; + bulk( + params: T.BulkRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + cat: { + aliases( + params?: T.CatAliasesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + allocation( + params?: T.CatAllocationRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + cluster_manager( + params?: T.CatClusterManagerRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + count( + params?: T.CatCountRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + fielddata( + params?: T.CatFielddataRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + health( + params?: T.CatHealthRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + help( + params?: T.CatHelpRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + indices( + params?: T.CatIndicesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + /** + * // TODO: delete cat.master when it is removed from OpenSearch + * @deprecated use cat.cluster_manager instead + */ + master( + params?: T.CatMasterRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + nodeattrs( + params?: T.CatNodeAttributesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + nodes( + params?: T.CatNodesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + pendingTasks( + params?: T.CatPendingTasksRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + plugins( + params?: T.CatPluginsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + recovery( + params?: T.CatRecoveryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + repositories( + params?: T.CatRepositoriesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + segments( + params?: T.CatSegmentsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + shards( + params?: T.CatShardsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + snapshots( + params?: T.CatSnapshotsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + tasks( + params?: T.CatTasksRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + templates( + params?: T.CatTemplatesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + threadPool( + params?: T.CatThreadPoolRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + clearScroll( + params?: T.ClearScrollRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + cluster: { + allocationExplain( + params?: T.ClusterAllocationExplainRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteComponentTemplate( + params: T.ClusterDeleteComponentTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteVotingConfigExclusions( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + existsComponentTemplate( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getComponentTemplate( + params?: T.ClusterGetComponentTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getSettings( + params?: T.ClusterGetSettingsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + health( + params?: T.ClusterHealthRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + pendingTasks( + params?: T.ClusterPendingTasksRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + postVotingConfigExclusions( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putComponentTemplate( + params: T.ClusterPutComponentTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putSettings( + params?: T.ClusterPutSettingsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + remoteInfo( + params?: T.ClusterRemoteInfoRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + reroute( + params?: T.ClusterRerouteRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + state( + params?: T.ClusterStateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + stats( + params?: T.ClusterStatsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + count( + params?: T.CountRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + create( + params: T.CreateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + createPit( + params?: T.PointInTimeCreateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + danglingIndices: { + deleteDanglingIndex( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + importDanglingIndex( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + listDanglingIndices( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + delete( + params: T.DeleteRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteAllPits( + params: T.PointInTimeDeleteAllRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteByQuery( + params: T.DeleteByQueryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteByQueryRethrottle( + params: T.DeleteByQueryRethrottleRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deletePit( + params: T.PointInTimeDeleteRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteScript( + params: T.DeleteScriptRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + exists( + params: T.ExistsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + existsSource( + params: T.ExistsSourceRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + explain( + params: T.ExplainRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + features: { + getFeatures( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + resetFeatures( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + fieldCaps( + params?: T.FieldCapsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + get( + params: T.GetRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + getAllPits( + params: T.PointInTimeGetAllRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getScript( + params: T.GetScriptRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getScriptContext( + params?: T.GetScriptContextRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getScriptLanguages( + params?: T.GetScriptLanguagesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getSource( + params?: T.GetSourceRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + index( + params: T.IndexRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + indices: { + addBlock( + params: T.IndicesAddBlockRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + analyze( + params?: T.IndicesAnalyzeRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + clearCache( + params?: T.IndicesClearCacheRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + clone( + params: T.IndicesCloneRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + close( + params: T.IndicesCloseRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + create( + params: T.IndicesCreateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + delete( + params: T.IndicesDeleteRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteAlias( + params: T.IndicesDeleteAliasRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteIndexTemplate( + params: T.IndicesDeleteIndexTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteTemplate( + params: T.IndicesDeleteTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + diskUsage( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + exists( + params: T.IndicesExistsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + existsAlias( + params: T.IndicesExistsAliasRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + existsIndexTemplate( + params: T.IndicesExistsIndexTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + existsTemplate( + params: T.IndicesExistsTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + fieldUsageStats( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + flush( + params?: T.IndicesFlushRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + forcemerge( + params?: T.IndicesForcemergeRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + get( + params: T.IndicesGetRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getAlias( + params?: T.IndicesGetAliasRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getFieldMapping( + params: T.IndicesGetFieldMappingRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getIndexTemplate( + params?: T.IndicesGetIndexTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getMapping( + params?: T.IndicesGetMappingRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getSettings( + params?: T.IndicesGetSettingsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getTemplate( + params?: T.IndicesGetTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getUpgrade( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + open( + params: T.IndicesOpenRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putAlias( + params: T.IndicesPutAliasRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putIndexTemplate( + params: T.IndicesPutIndexTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putMapping( + params?: T.IndicesPutMappingRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putSettings( + params?: T.IndicesPutSettingsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putTemplate( + params: T.IndicesPutTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + recovery( + params?: T.IndicesRecoveryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + refresh( + params?: T.IndicesRefreshRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + resolveIndex( + params: T.IndicesResolveIndexRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + rollover( + params: T.IndicesRolloverRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + segments( + params?: T.IndicesSegmentsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + shardStores( + params?: T.IndicesShardStoresRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + shrink( + params: T.IndicesShrinkRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + simulateIndexTemplate( + params?: T.IndicesSimulateIndexTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + simulateTemplate( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + split( + params: T.IndicesSplitRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + stats( + params?: T.IndicesStatsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + updateAliases( + params?: T.IndicesUpdateAliasesRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + upgrade( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + validateQuery( + params?: T.IndicesValidateQueryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + info( + params?: T.InfoRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + ingest: { + deletePipeline( + params: T.IngestDeletePipelineRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + geoIpStats( + params?: T.IngestGeoIpStatsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getPipeline( + params?: T.IngestGetPipelineRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + processorGrok( + params?: T.IngestProcessorGrokRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putPipeline( + params: T.IngestPutPipelineRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + simulate( + params?: T.IngestSimulatePipelineRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + mget( + params?: T.MgetRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + msearch( + params?: T.MsearchRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + msearchTemplate( + params?: T.MsearchTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + mtermvectors( + params?: T.MtermvectorsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + nodes: { + clearMeteringArchive( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getMeteringInfo( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + hotThreads( + params?: T.NodesHotThreadsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + info( + params?: T.NodesInfoRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + reloadSecureSettings( + params?: T.NodesReloadSecureSettingsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + stats( + params?: T.NodesStatsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + usage( + params?: T.NodesUsageRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + ping( + params?: T.PingRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putScript( + params: T.PutScriptRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + rankEval( + params: T.RankEvalRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + reindex( + params?: T.ReindexRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + reindexRethrottle( + params: T.ReindexRethrottleRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + renderSearchTemplate( + params?: T.RenderSearchTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + scriptsPainlessExecute( + params?: T.ScriptsPainlessExecuteRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + scroll( + params?: T.ScrollRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + search( + params?: T.SearchRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + searchShards( + params?: T.SearchShardsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + searchTemplate( + params?: T.SearchTemplateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + shutdown: { + deleteNode( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getNode( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + putNode( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + snapshot: { + cleanupRepository( + params: T.SnapshotCleanupRepositoryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + clone( + params: T.SnapshotCloneRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + create( + params: T.SnapshotCreateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + createRepository( + params: T.SnapshotCreateRepositoryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + delete( + params: T.SnapshotDeleteRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + deleteRepository( + params: T.SnapshotDeleteRepositoryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + get( + params: T.SnapshotGetRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + getRepository( + params?: T.SnapshotGetRepositoryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + repositoryAnalyze( + params?: TODO, + options?: TransportRequestOptions + ): TransportRequestPromise>; + restore( + params: T.SnapshotRestoreRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + status( + params?: T.SnapshotStatusRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + verifyRepository( + params: T.SnapshotVerifyRepositoryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + tasks: { + cancel( + params?: T.TaskCancelRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + get( + params: T.TaskGetRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + list( + params?: T.TaskListRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + }; + termsEnum( + params: T.TermsEnumRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + termvectors( + params: T.TermvectorsRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + update( + params: T.UpdateRequest, + options?: TransportRequestOptions + ): TransportRequestPromise, TContext>>; + updateByQuery( + params: T.UpdateByQueryRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; + updateByQueryRethrottle( + params: T.UpdateByQueryRethrottleRequest, + options?: TransportRequestOptions + ): TransportRequestPromise>; +} diff --git a/src/types/helpers.ts b/src/types/helpers.ts new file mode 100644 index 000000000..7a9e5243c --- /dev/null +++ b/src/types/helpers.ts @@ -0,0 +1,184 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Readable as ReadableStream } from 'node:stream'; +import { TransportRequestOptions, ApiError, ApiResponse, RequestBody, Context } from '@/types/transport'; +import { Search, Msearch, Bulk } from '@/types/params'; +import { Client } from '#/index'; + +export interface HelpersOptions { + client: Client; + metaHeader: string | null + maxRetries: number; +} + +// export default class Helpers { +// search>( +// params: Search, +// options?: TransportRequestOptions +// ): Promise; +// scrollSearch< +// TDocument = unknown, +// TResponse = Record, +// TRequestBody extends RequestBody = Record, +// TContext = Context +// >( +// params: Search, +// options?: TransportRequestOptions +// ): AsyncIterable>; +// scrollDocuments>( +// params: Search, +// options?: TransportRequestOptions +// ): AsyncIterable; +// msearch(options?: MsearchHelperOptions, reqOptions?: TransportRequestOptions): MsearchHelper; +// bulk( +// options: BulkHelperOptions, +// reqOptions?: TransportRequestOptions +// ): BulkHelper; +// } + +export interface ScrollSearchResponse< + TDocument = unknown, + TResponse = Record, + TContext = Context +> extends ApiResponse { + clear: () => Promise; + documents: TDocument[]; +} + +export interface BulkHelper extends Promise { + abort: () => BulkHelper; + readonly stats: BulkStats; +} + +export interface BulkStats { + total: number; + failed: number; + retry: number; + successful: number; + noop: number; + time: number; + bytes: number; + aborted: boolean; +} + +export interface IndexActionOperation { + index: { + _index: string; + [key: string]: any; + }; +} + +export interface CreateActionOperation { + create: { + _index: string; + [key: string]: any; + }; +} + +export interface UpdateActionOperation { + update: { + _index: string; + [key: string]: any; + }; +} + +export interface DeleteAction { + delete: { + _index: string; + [key: string]: any; + }; +} + +export type CreateAction = CreateActionOperation | [CreateActionOperation, unknown]; +export type IndexAction = IndexActionOperation | [IndexActionOperation, unknown]; +export type UpdateAction = [UpdateActionOperation, Record]; +export type Action = IndexAction | CreateAction | UpdateAction | DeleteAction; + + +export interface BulkHelperOptions extends Omit { + datasource: TDocument[] | Buffer | ReadableStream | AsyncIterator; + onDocument: (doc: TDocument) => Action; + flushBytes?: number; + flushInterval?: number; + concurrency?: number; + retries?: number; + wait?: number; + onDrop?: (doc: OnDropDocument) => void; + refreshOnCompletion?: boolean | string; +} + +export interface OnDropDocument { + status: number; + error: { + type: string; + reason: string; + caused_by: { + type: string; + reason: string; + }; + }; + operation: Action; + document: TDocument; + retried: boolean; +} + +export interface MsearchHelperOptions extends Omit { + operations?: number; + flushInterval?: number; + concurrency?: number; + retries?: number; + wait?: number; +} + +export type callbackFn = ( + err: ApiError, + result: ApiResponse +) => void; + +export interface MsearchHelper extends Promise { + stop(error?: Error): void; + search< + TResponse = Record, + TRequestBody extends RequestBody = Record, + TContext = Context + >( + header: Omit, + body: TRequestBody + ): Promise>; + search< + TResponse = Record, + TRequestBody extends RequestBody = Record, + TContext = Context + >( + header: Omit, + body: TRequestBody, + callback: callbackFn + ): void; +} \ No newline at end of file diff --git a/src/types/index.ts b/src/types/index.ts new file mode 100644 index 000000000..4f1cce44f --- /dev/null +++ b/src/types/index.ts @@ -0,0 +1 @@ +export * from './client'; diff --git a/src/types/internal.ts b/src/types/internal.ts new file mode 100644 index 000000000..cc88ceb41 --- /dev/null +++ b/src/types/internal.ts @@ -0,0 +1,10013 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +export interface BulkCreateOperation extends BulkOperation { } + +export interface BulkCreateResponseItem extends BulkResponseItemBase { } + +export interface BulkDeleteOperation extends BulkOperation { } + +export interface BulkDeleteResponseItem extends BulkResponseItemBase { } + +export interface BulkIndexOperation extends BulkOperation { } + +export interface BulkIndexResponseItem extends BulkResponseItemBase { } + +export interface BulkOperation { + _id?: Id; + _index?: IndexName; + retry_on_conflict?: integer; + routing?: Routing; + version?: VersionNumber; + version_type?: VersionType; +} + +export interface BulkOperationContainer { + index?: BulkIndexOperation; + create?: BulkCreateOperation; + update?: BulkUpdateOperation; + delete?: BulkDeleteOperation; +} + +export interface BulkRequest extends RequestBase { + index?: IndexName; + pipeline?: string; + refresh?: Refresh; + routing?: Routing; + _source?: boolean | Fields; + _source_excludes?: Fields; + _source_includes?: Fields; + timeout?: Time; + wait_for_active_shards?: WaitForActiveShards; + require_alias?: boolean; + body?: (BulkOperationContainer | TSource)[]; +} + +export interface BulkResponse { + errors: boolean; + items: BulkResponseItemContainer[]; + took: long; + ingest_took?: long; +} + +export interface BulkResponseItemBase { + _id?: string | null; + _index: string; + status: integer; + error?: ErrorCause; + _primary_term?: long; + result?: string; + _seq_no?: SequenceNumber; + _shards?: ShardStatistics; + _version?: VersionNumber; + forced_refresh?: boolean; + get?: InlineGet>; +} + +export interface BulkResponseItemContainer { + index?: BulkIndexResponseItem; + create?: BulkCreateResponseItem; + update?: BulkUpdateResponseItem; + delete?: BulkDeleteResponseItem; +} + +export interface BulkUpdateOperation extends BulkOperation { } + +export interface BulkUpdateResponseItem extends BulkResponseItemBase { } + +export interface ClearScrollRequest extends RequestBase { + scroll_id?: Ids; + body?: { + scroll_id?: Ids; + }; +} + +export interface ClearScrollResponse { + succeeded: boolean; + num_freed: integer; +} + +export interface CountRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + analyzer?: string; + analyze_wildcard?: boolean; + default_operator?: DefaultOperator; + df?: string; + expand_wildcards?: ExpandWildcards; + ignore_throttled?: boolean; + ignore_unavailable?: boolean; + lenient?: boolean; + min_score?: double; + preference?: string; + query_on_query_string?: string; + routing?: Routing; + terminate_after?: long; + q?: string; + body?: { + query?: QueryDslQueryContainer; + }; +} + +export interface CountResponse { + count: long; + _shards: ShardStatistics; +} + +export interface CreateRequest extends RequestBase { + id: Id; + index: IndexName; + pipeline?: string; + refresh?: Refresh; + routing?: Routing; + timeout?: Time; + version?: VersionNumber; + version_type?: VersionType; + wait_for_active_shards?: WaitForActiveShards; + body?: TDocument; +} + +export interface CreateResponse extends WriteResponseBase { } + +export interface DeleteRequest extends RequestBase { + id: Id; + index: IndexName; + if_primary_term?: long; + if_seq_no?: SequenceNumber; + refresh?: Refresh; + routing?: Routing; + timeout?: Time; + version?: VersionNumber; + version_type?: VersionType; + wait_for_active_shards?: WaitForActiveShards; +} + +export interface DeleteResponse extends WriteResponseBase { } + +export interface DeleteByQueryRequest extends RequestBase { + index: Indices; + allow_no_indices?: boolean; + analyzer?: string; + analyze_wildcard?: boolean; + conflicts?: Conflicts; + default_operator?: DefaultOperator; + df?: string; + expand_wildcards?: ExpandWildcards; + from?: long; + ignore_unavailable?: boolean; + lenient?: boolean; + max_docs?: long; + preference?: string; + refresh?: boolean; + request_cache?: boolean; + requests_per_second?: long; + routing?: Routing; + q?: string; + scroll?: Time; + scroll_size?: long; + search_timeout?: Time; + search_type?: SearchType; + size?: long; + slices?: long; + sort?: string[]; + _source?: boolean | Fields; + _source_excludes?: Fields; + _source_includes?: Fields; + stats?: string[]; + terminate_after?: long; + timeout?: Time; + version?: boolean; + wait_for_active_shards?: WaitForActiveShards; + wait_for_completion?: boolean; + body?: { + max_docs?: long; + query?: QueryDslQueryContainer; + slice?: SlicedScroll; + }; +} + +export interface DeleteByQueryResponse { + batches?: long; + deleted?: long; + failures?: BulkIndexByScrollFailure[]; + noops?: long; + requests_per_second?: float; + retries?: Retries; + slice_id?: integer; + task?: TaskId; + throttled_millis?: long; + throttled_until_millis?: long; + timed_out?: boolean; + took?: long; + total?: long; + version_conflicts?: long; +} + +export interface DeleteByQueryRethrottleRequest extends RequestBase { + task_id: Id; + requests_per_second?: long; +} + +export interface DeleteByQueryRethrottleResponse extends TaskListResponse { } + +export interface DeleteScriptRequest extends RequestBase { + id: Id + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface DeleteScriptResponse extends AcknowledgedResponseBase { } + +export interface ExistsRequest extends RequestBase { + id: Id; + index: IndexName; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: Routing; + source_enabled?: boolean; + source_excludes?: Fields; + source_includes?: Fields; + stored_fields?: Fields; + version?: VersionNumber; + version_type?: VersionType; +} + +export type ExistsResponse = boolean; + +export interface ExistsSourceRequest extends RequestBase { + id: Id; + index: IndexName; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: Routing; + source_enabled?: boolean; + source_excludes?: Fields; + source_includes?: Fields; + version?: VersionNumber; + version_type?: VersionType; +} + +export type ExistsSourceResponse = boolean; + +export interface ExplainExplanation { + description: string; + details: ExplainExplanationDetail[]; + value: float; +} + +export interface ExplainExplanationDetail { + description: string; + details?: ExplainExplanationDetail[]; + value: float; +} + +export interface ExplainRequest extends RequestBase { + id: Id; + index: IndexName; + analyzer?: string; + analyze_wildcard?: boolean; + default_operator?: DefaultOperator; + df?: string; + lenient?: boolean; + preference?: string; + query_on_query_string?: string; + routing?: Routing; + _source?: boolean | Fields; + _source_excludes?: Fields; + _source_includes?: Fields; + stored_fields?: Fields; + q?: string; + body?: { + query?: QueryDslQueryContainer; + }; +} + +export interface ExplainResponse { + _index: IndexName; + _id: Id; + matched: boolean; + explanation?: ExplainExplanationDetail; + get?: InlineGet; +} + +export interface FieldCapsFieldCapabilitiesBodyIndexFilter { + range?: FieldCapsFieldCapabilitiesBodyIndexFilterRange; + match_none?: EmptyObject; + term?: FieldCapsFieldCapabilitiesBodyIndexFilterTerm; +} + +export interface FieldCapsFieldCapabilitiesBodyIndexFilterRange { + timestamp: FieldCapsFieldCapabilitiesBodyIndexFilterRangeTimestamp; +} + +export interface FieldCapsFieldCapabilitiesBodyIndexFilterRangeTimestamp { + gte?: integer; + gt?: integer; + lte?: integer; + lt?: integer; +} + +export interface FieldCapsFieldCapabilitiesBodyIndexFilterTerm { + versionControl: FieldCapsFieldCapabilitiesBodyIndexFilterTermVersionControl; +} + +export interface FieldCapsFieldCapabilitiesBodyIndexFilterTermVersionControl { + value: string; +} + +export interface FieldCapsFieldCapability { + aggregatable: boolean; + indices?: Indices; + meta?: Record; + non_aggregatable_indices?: Indices; + non_searchable_indices?: Indices; + searchable: boolean; + type: string; +} + +export interface FieldCapsRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + fields?: Fields; + ignore_unavailable?: boolean; + include_unmapped?: boolean; + body?: { + index_filter?: FieldCapsFieldCapabilitiesBodyIndexFilter; + }; +} + +export interface FieldCapsResponse { + indices: Indices; + fields: Record>; +} + +export interface GetRequest extends RequestBase { + id: Id; + index: IndexName; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: Routing; + source_enabled?: boolean; + _source_excludes?: Fields; + _source_includes?: Fields; + stored_fields?: Fields; + version?: VersionNumber; + version_type?: VersionType; + _source?: boolean | Fields; +} + +export interface GetResponse { + _index: IndexName; + fields?: Record; + found: boolean; + _id: Id; + _primary_term?: long; + _routing?: string; + _seq_no?: SequenceNumber; + _source?: TDocument; + _version?: VersionNumber; +} + +export interface GetScriptRequest extends RequestBase { + id: Id + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface GetScriptResponse { + _id: Id; + found: boolean; + script?: StoredScript; +} + +export interface GetScriptContextContext { + methods: GetScriptContextContextMethod[]; + name: Name; +} + +export interface GetScriptContextContextMethod { + name: Name; + return_type: string; + params: GetScriptContextContextMethodParam[]; +} + +export interface GetScriptContextContextMethodParam { + name: Name; + type: string; +} + +export interface GetScriptContextRequest extends RequestBase { } + +export interface GetScriptContextResponse { + contexts: GetScriptContextContext[]; +} + +export interface GetScriptLanguagesLanguageContext { + contexts: string[]; + language: ScriptLanguage; +} + +export interface GetScriptLanguagesRequest extends RequestBase { } + +export interface GetScriptLanguagesResponse { + language_contexts: GetScriptLanguagesLanguageContext[]; + types_allowed: string[]; +} + +export interface GetSourceRequest extends GetRequest { } + +export type GetSourceResponse = TDocument; + +export interface IndexRequest extends RequestBase { + id?: Id; + index: IndexName; + if_primary_term?: long; + if_seq_no?: SequenceNumber; + op_type?: OpType; + pipeline?: string; + refresh?: Refresh; + routing?: Routing; + timeout?: Time; + version?: VersionNumber; + version_type?: VersionType; + wait_for_active_shards?: WaitForActiveShards; + require_alias?: boolean; + body?: TDocument; +} + +export interface IndexResponse extends WriteResponseBase { } + +export interface InfoRequest extends RequestBase { } + +export interface InfoResponse { + cluster_name: Name; + cluster_uuid: Uuid; + name: Name; + version: OpenSearchVersionInfo; +} + +export interface MgetHit { + error?: MainError; + fields?: Record; + found?: boolean; + _id: Id; + _index: IndexName; + _primary_term?: long; + _routing?: Routing; + _seq_no?: SequenceNumber; + _source?: TDocument; + _version?: VersionNumber; +} + +export type MgetMultiGetId = string | integer; + +export interface MgetOperation { + _id: MgetMultiGetId; + _index?: IndexName; + routing?: Routing; + _source?: boolean | Fields | SearchSourceFilter; + stored_fields?: Fields; + version?: VersionNumber; + version_type?: VersionType; +} + +export interface MgetRequest extends RequestBase { + index?: IndexName; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: Routing; + _source?: boolean | Fields; + _source_excludes?: Fields; + _source_includes?: Fields; + stored_fields?: Fields; + body?: { + docs?: MgetOperation[]; + ids?: MgetMultiGetId[]; + }; +} + +export interface MgetResponse { + docs: MgetHit[]; +} + +export interface MsearchBody { + aggregations?: Record; + aggs?: Record; + query?: QueryDslQueryContainer; + from?: integer; + size?: integer; + pit?: SearchPointInTimeReference; + track_total_hits?: boolean | integer; + suggest?: SearchSuggestContainer | Record; +} + +export interface MsearchHeader { + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + index?: Indices; + preference?: string; + request_cache?: boolean; + routing?: string; + search_type?: SearchType; +} + +export interface MsearchRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + ccs_minimize_roundtrips?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_throttled?: boolean; + ignore_unavailable?: boolean; + max_concurrent_searches?: long; + max_concurrent_shard_requests?: long; + pre_filter_shard_size?: long; + search_type?: SearchType; + rest_total_hits_as_int?: boolean; + typed_keys?: boolean; + method: 'GET' | 'POST'; + body?: (MsearchHeader | MsearchBody)[]; +} + +export interface MsearchResponse { + took: long; + responses: (MsearchSearchResult | ErrorResponseBase)[]; +} + +export interface MsearchSearchResult extends SearchResponse { + status: integer; +} + +export interface MsearchTemplateRequest extends RequestBase { + index?: Indices; + ccs_minimize_roundtrips?: boolean; + max_concurrent_searches?: long; + search_type?: SearchType; + rest_total_hits_as_int?: boolean; + typed_keys?: boolean; + body?: MsearchTemplateTemplateItem[]; +} + +export interface MsearchTemplateResponse { + responses: SearchResponse[]; + took: long; +} + +export interface MsearchTemplateTemplateItem { + id?: Id; + index?: Indices; + params?: Record; + source?: string; +} + +export interface MtermvectorsOperation { + doc: object; + fields: Fields; + field_statistics: boolean; + filter: TermvectorsFilter; + _id: Id; + _index: IndexName; + offsets: boolean; + payloads: boolean; + positions: boolean; + routing: Routing; + term_statistics: boolean; + version: VersionNumber; + version_type: VersionType; +} + +export interface MtermvectorsRequest extends RequestBase { + index?: IndexName; + fields?: Fields; + field_statistics?: boolean; + offsets?: boolean; + payloads?: boolean; + positions?: boolean; + preference?: string; + realtime?: boolean; + routing?: Routing; + term_statistics?: boolean; + version?: VersionNumber; + version_type?: VersionType; + body?: { + docs?: MtermvectorsOperation[]; + ids?: Id[]; + }; +} + +export interface MtermvectorsResponse { + docs: MtermvectorsTermVectorsResult[]; +} + +export interface MtermvectorsTermVectorsResult { + found: boolean; + id: Id; + index: IndexName; + term_vectors: Record; + took: long; + version: VersionNumber; +} + +export interface PingRequest extends RequestBase { } + +export type PingResponse = boolean; + +export interface PutScriptRequest extends RequestBase { + id: Id + context?: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + script?: StoredScript; + }; +} + +export interface PutScriptResponse extends AcknowledgedResponseBase { } + +export interface RankEvalDocumentRating { + _id: Id; + _index: IndexName; + rating: integer; +} + +export interface RankEvalRankEvalHit { + _id: Id; + _index: IndexName; + _score: double; +} + +export interface RankEvalRankEvalHitItem { + hit: RankEvalRankEvalHit; + rating?: double; +} + +export interface RankEvalRankEvalMetric { + precision?: RankEvalRankEvalMetricPrecision; + recall?: RankEvalRankEvalMetricRecall; + mean_reciprocal_rank?: RankEvalRankEvalMetricMeanReciprocalRank; + dcg?: RankEvalRankEvalMetricDiscountedCumulativeGain; + expected_reciprocal_rank?: RankEvalRankEvalMetricExpectedReciprocalRank; +} + +export interface RankEvalRankEvalMetricBase { + k?: integer; +} + +export interface RankEvalRankEvalMetricDetail { + metric_score: double; + unrated_docs: RankEvalUnratedDocument[]; + hits: RankEvalRankEvalHitItem[]; + metric_details: Record>; +} + +export interface RankEvalRankEvalMetricDiscountedCumulativeGain extends RankEvalRankEvalMetricBase { + normalize?: boolean; +} + +export interface RankEvalRankEvalMetricExpectedReciprocalRank extends RankEvalRankEvalMetricBase { + maximum_relevance: integer; +} + +export interface RankEvalRankEvalMetricMeanReciprocalRank + extends RankEvalRankEvalMetricRatingTreshold { } + +export interface RankEvalRankEvalMetricPrecision extends RankEvalRankEvalMetricRatingTreshold { + ignore_unlabeled?: boolean; +} + +export interface RankEvalRankEvalMetricRatingTreshold extends RankEvalRankEvalMetricBase { + relevant_rating_threshold?: integer; +} + +export interface RankEvalRankEvalMetricRecall extends RankEvalRankEvalMetricRatingTreshold { } + +export interface RankEvalRankEvalQuery { + query: QueryDslQueryContainer; + size?: integer; +} + +export interface RankEvalRankEvalRequestItem { + id: Id; + request?: RankEvalRankEvalQuery; + ratings: RankEvalDocumentRating[]; + template_id?: Id; + params?: Record; +} + +export interface RankEvalRequest extends RequestBase { + index: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + search_type?: string; + body?: { + requests: RankEvalRankEvalRequestItem[]; + metric?: RankEvalRankEvalMetric; + }; +} + +export interface RankEvalResponse { + metric_score: double; + details: Record; + failures: Record; +} + +export interface RankEvalUnratedDocument { + _id: Id; + _index: IndexName; +} + +export interface ReindexDestination { + index: IndexName; + op_type?: OpType; + pipeline?: string; + routing?: Routing; + version_type?: VersionType; +} + +export interface ReindexRemoteSource { + connect_timeout: Time; + host: Host; + username: Username; + password: Password; + socket_timeout: Time; +} + +export interface ReindexRequest extends RequestBase { + refresh?: boolean; + requests_per_second?: long; + scroll?: Time; + slices?: long; + timeout?: Time; + wait_for_active_shards?: WaitForActiveShards; + wait_for_completion?: boolean; + require_alias?: boolean; + body?: { + conflicts?: Conflicts; + dest?: ReindexDestination; + max_docs?: long; + script?: Script; + size?: long; + source?: ReindexSource; + }; +} + +export interface ReindexResponse { + batches?: long; + created?: long; + deleted?: long; + failures?: BulkIndexByScrollFailure[]; + noops?: long; + retries?: Retries; + requests_per_second?: long; + slice_id?: integer; + task?: TaskId; + throttled_millis?: EpochMillis; + throttled_until_millis?: EpochMillis; + timed_out?: boolean; + took?: Time; + total?: long; + updated?: long; + version_conflicts?: long; +} + +export interface ReindexSource { + index: Indices; + query?: QueryDslQueryContainer; + remote?: ReindexRemoteSource; + size?: integer; + slice?: SlicedScroll; + sort?: SearchSort; + _source?: Fields; +} + +export interface ReindexRethrottleReindexNode extends SpecUtilsBaseNode { + tasks: Record; +} + +export interface ReindexRethrottleReindexStatus { + batches: long; + created: long; + deleted: long; + noops: long; + requests_per_second: float; + retries: Retries; + throttled_millis: long; + throttled_until_millis: long; + total: long; + updated: long; + version_conflicts: long; +} + +export interface ReindexRethrottleReindexTask { + action: string; + cancellable: boolean; + description: string; + id: long; + node: Name; + running_time_in_nanos: long; + start_time_in_millis: long; + status: ReindexRethrottleReindexStatus; + type: string; + headers: HttpHeaders; +} + +export interface ReindexRethrottleRequest extends RequestBase { + task_id: Id; + requests_per_second?: long; +} + +export interface ReindexRethrottleResponse { + nodes: Record; +} + +export interface RenderSearchTemplateRequest extends RequestBase { + body?: { + file?: string; + params?: Record; + source?: string; + }; +} + +export interface RenderSearchTemplateResponse { + template_output: Record; +} + +export interface ScriptsPainlessExecutePainlessContextSetup { + document: any; + index: IndexName; + query: QueryDslQueryContainer; +} + +export interface ScriptsPainlessExecutePainlessExecutionPosition { + offset: integer; + start: integer; + end: integer; +} + +export interface ScriptsPainlessExecuteRequest extends RequestBase { + body?: { + context?: string; + context_setup?: ScriptsPainlessExecutePainlessContextSetup; + script?: InlineScript; + }; +} + +export interface ScriptsPainlessExecuteResponse { + result: TResult; +} + +export interface ScrollRequest extends RequestBase { + scroll_id?: Id; + scroll?: Time; + rest_total_hits_as_int?: boolean; + total_hits_as_integer?: boolean; + body?: { + scroll?: Time; + scroll_id: ScrollId; + rest_total_hits_as_int?: boolean; + }; +} + +export interface ScrollResponse extends SearchResponse { } + +export interface SearchRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + allow_partial_search_results?: boolean; + analyzer?: string; + analyze_wildcard?: boolean; + batched_reduce_size?: long; + ccs_minimize_roundtrips?: boolean; + default_operator?: DefaultOperator; + df?: string; + docvalue_fields?: Fields; + expand_wildcards?: ExpandWildcards; + explain?: boolean; + ignore_throttled?: boolean; + ignore_unavailable?: boolean; + lenient?: boolean; + max_concurrent_shard_requests?: long; + min_compatible_shard_node?: VersionString; + preference?: string; + pre_filter_shard_size?: long; + request_cache?: boolean; + routing?: Routing; + scroll?: Time; + search_type?: SearchType; + stats?: string[]; + stored_fields?: Fields; + suggest_field?: Field; + suggest_mode?: SuggestMode; + suggest_size?: long; + suggest_text?: string; + terminate_after?: long; + timeout?: Time; + track_total_hits?: boolean | integer; + track_scores?: boolean; + typed_keys?: boolean; + rest_total_hits_as_int?: boolean; + version?: boolean; + _source?: boolean | Fields; + _source_excludes?: Fields; + _source_includes?: Fields; + seq_no_primary_term?: boolean; + q?: string; + size?: integer; + from?: integer; + sort?: string | string[]; + body?: { + aggs?: Record; + aggregations?: Record; + collapse?: SearchFieldCollapse; + explain?: boolean; + from?: integer; + highlight?: SearchHighlight; + track_total_hits?: boolean | integer; + indices_boost?: Record[]; + docvalue_fields?: SearchDocValueField | (Field | SearchDocValueField)[]; + min_score?: double; + post_filter?: QueryDslQueryContainer; + profile?: boolean; + query?: QueryDslQueryContainer; + rescore?: SearchRescore | SearchRescore[]; + script_fields?: Record; + search_after?: (integer | string)[]; + size?: integer; + slice?: SlicedScroll; + sort?: SearchSort; + _source?: boolean | Fields | SearchSourceFilter; + fields?: (Field | DateField)[]; + suggest?: SearchSuggestContainer | Record; + terminate_after?: long; + timeout?: string; + track_scores?: boolean; + version?: boolean; + seq_no_primary_term?: boolean; + stored_fields?: Fields; + pit?: SearchPointInTimeReference; + runtime_mappings?: MappingRuntimeFields; + stats?: string[]; + }; +} + +export interface SearchResponse { + took: long; + timed_out: boolean; + _shards: ShardStatistics; + hits: SearchHitsMetadata; + aggregations?: Record; + _clusters?: ClusterStatistics; + documents?: TDocument[]; + fields?: Record; + max_score?: double; + num_reduce_phases?: long; + profile?: SearchProfile; + pit_id?: Id; + _scroll_id?: ScrollId; + suggest?: Record[]>; + terminated_early?: boolean; +} + +export interface SearchAggregationBreakdown { + build_aggregation: long; + build_aggregation_count: long; + build_leaf_collector: long; + build_leaf_collector_count: long; + collect: long; + collect_count: long; + initialize: long; + initialize_count: long; + post_collection?: long; + post_collection_count?: long; + reduce: long; + reduce_count: long; +} + +export interface SearchAggregationProfile { + breakdown: SearchAggregationBreakdown; + description: string; + time_in_nanos: long; + type: string; + debug?: SearchAggregationProfileDebug; + children?: SearchAggregationProfileDebug[]; +} + +export interface SearchAggregationProfileDebug { } + +export type SearchBoundaryScanner = 'chars' | 'sentence' | 'word'; + +export interface SearchCollector { + name: string; + reason: string; + time_in_nanos: long; + children?: SearchCollector[]; +} + +export interface SearchCompletionSuggestOption { + collate_match?: boolean; + contexts?: Record; + fields?: Record; + _id: string; + _index: IndexName; + _type?: Type; + _routing?: Routing; + _score: double; + _source: TDocument; + text: string; +} + +export interface SearchCompletionSuggester extends SearchSuggesterBase { + contexts?: Record; + fuzzy?: SearchSuggestFuzziness; + prefix?: string; + regex?: string; + skip_duplicates?: boolean; +} + +export type SearchContext = string | QueryDslGeoLocation; + +export interface SearchDirectGenerator { + field: Field; + max_edits?: integer; + max_inspections?: float; + max_term_freq?: float; + min_doc_freq?: float; + min_word_length?: integer; + post_filter?: string; + pre_filter?: string; + prefix_length?: integer; + size?: integer; + suggest_mode?: SuggestMode; +} + +export interface SearchDocValueField { + field: Field; + format?: string; +} + +export interface SearchFieldCollapse { + field: Field; + inner_hits?: SearchInnerHits | SearchInnerHits[]; + max_concurrent_group_searches?: integer; +} + +export interface SearchFieldSort { + missing?: AggregationsMissing; + mode?: SearchSortMode; + nested?: SearchNestedSortValue; + order?: SearchSortOrder; + unmapped_type?: MappingFieldType; +} + +export interface SearchGeoDistanceSortKeys { + mode?: SearchSortMode; + distance_type?: GeoDistanceType; + order?: SearchSortOrder; + unit?: DistanceUnit; +} +export type SearchGeoDistanceSort = + | SearchGeoDistanceSortKeys + | { [property: string]: QueryDslGeoLocation | QueryDslGeoLocation[] }; + +export interface SearchHighlight { + fields: Record; + type?: SearchHighlighterType; + boundary_chars?: string; + boundary_max_scan?: integer; + boundary_scanner?: SearchBoundaryScanner; + boundary_scanner_locale?: string; + encoder?: SearchHighlighterEncoder; + fragmenter?: SearchHighlighterFragmenter; + fragment_offset?: integer; + fragment_size?: integer; + max_fragment_length?: integer; + no_match_size?: integer; + number_of_fragments?: integer; + order?: SearchHighlighterOrder; + post_tags?: string[]; + pre_tags?: string[]; + require_field_match?: boolean; + tags_schema?: SearchHighlighterTagsSchema; + highlight_query?: QueryDslQueryContainer; + max_analyzed_offset?: string | integer; +} + +export interface SearchHighlightField { + boundary_chars?: string; + boundary_max_scan?: integer; + boundary_scanner?: SearchBoundaryScanner; + boundary_scanner_locale?: string; + field?: Field; + force_source?: boolean; + fragmenter?: SearchHighlighterFragmenter; + fragment_offset?: integer; + fragment_size?: integer; + highlight_query?: QueryDslQueryContainer; + matched_fields?: Fields; + max_fragment_length?: integer; + no_match_size?: integer; + number_of_fragments?: integer; + order?: SearchHighlighterOrder; + phrase_limit?: integer; + post_tags?: string[]; + pre_tags?: string[]; + require_field_match?: boolean; + tags_schema?: SearchHighlighterTagsSchema; + type?: SearchHighlighterType | string; +} + +export type SearchHighlighterEncoder = 'default' | 'html'; + +export type SearchHighlighterFragmenter = 'simple' | 'span'; + +export type SearchHighlighterOrder = 'score'; + +export type SearchHighlighterTagsSchema = 'styled'; + +export type SearchHighlighterType = 'plain' | 'fvh' | 'unified'; + +export interface SearchHit { + _index: IndexName; + _id: Id; + _score?: double; + _explanation?: ExplainExplanation; + fields?: Record; + highlight?: Record; + inner_hits?: Record; + matched_queries?: string[]; + _nested?: SearchNestedIdentity; + _ignored?: string[]; + _shard?: string; + _node?: string; + _routing?: string; + _source?: TDocument; + _seq_no?: SequenceNumber; + _primary_term?: long; + _version?: VersionNumber; + sort?: SearchSortResults; +} + +export interface SearchHitsMetadata { + total: SearchTotalHits | long; + hits: SearchHit[]; + max_score?: double; +} + +export interface SearchInnerHits { + name?: Name; + size?: integer; + from?: integer; + collapse?: SearchFieldCollapse; + docvalue_fields?: Fields; + explain?: boolean; + highlight?: SearchHighlight; + ignore_unmapped?: boolean; + script_fields?: Record; + seq_no_primary_term?: boolean; + fields?: Fields; + sort?: SearchSort; + _source?: boolean | SearchSourceFilter; + version?: boolean; +} + +export interface SearchInnerHitsMetadata { + total: SearchTotalHits | long; + hits: SearchHit>[]; + max_score?: double; +} + +export interface SearchInnerHitsResult { + hits: SearchInnerHitsMetadata; +} + +export interface SearchLaplaceSmoothingModel { + alpha: double; +} + +export interface SearchLinearInterpolationSmoothingModel { + bigram_lambda: double; + trigram_lambda: double; + unigram_lambda: double; +} + +export interface SearchNestedIdentity { + field: Field; + offset: integer; + _nested?: SearchNestedIdentity; +} + +export interface SearchNestedSortValue { + filter?: QueryDslQueryContainer; + max_children?: integer; + path: Field; +} + +export interface SearchPhraseSuggestCollate { + params?: Record; + prune?: boolean; + query: SearchPhraseSuggestCollateQuery; +} + +export interface SearchPhraseSuggestCollateQuery { + id?: Id; + source?: string; +} + +export interface SearchPhraseSuggestHighlight { + post_tag: string; + pre_tag: string; +} + +export interface SearchPhraseSuggestOption { + text: string; + highlighted: string; + score: double; +} + +export interface SearchPhraseSuggester extends SearchSuggesterBase { + collate?: SearchPhraseSuggestCollate; + confidence?: double; + direct_generator?: SearchDirectGenerator[]; + force_unigrams?: boolean; + gram_size?: integer; + highlight?: SearchPhraseSuggestHighlight; + max_errors?: double; + real_word_error_likelihood?: double; + separator?: string; + shard_size?: integer; + smoothing?: SearchSmoothingModelContainer; + text?: string; + token_limit?: integer; +} + +export interface SearchPointInTimeReference { + id: Id; + keep_alive?: Time; +} + +export interface SearchProfile { + shards: SearchShardProfile[]; +} + +export interface SearchQueryBreakdown { + advance: long; + advance_count: long; + build_scorer: long; + build_scorer_count: long; + create_weight: long; + create_weight_count: long; + match: long; + match_count: long; + shallow_advance: long; + shallow_advance_count: long; + next_doc: long; + next_doc_count: long; + score: long; + score_count: long; + compute_max_score: long; + compute_max_score_count: long; + set_min_competitive_score: long; + set_min_competitive_score_count: long; +} + +export interface SearchQueryProfile { + breakdown: SearchQueryBreakdown; + description: string; + time_in_nanos: long; + type: string; + children?: SearchQueryProfile[]; +} + +export interface SearchRescore { + query: SearchRescoreQuery; + window_size?: integer; +} + +export interface SearchRescoreQuery { + rescore_query: QueryDslQueryContainer; + query_weight?: double; + rescore_query_weight?: double; + score_mode?: SearchScoreMode; +} + +export type SearchScoreMode = 'avg' | 'max' | 'min' | 'multiply' | 'total'; + +export interface SearchScoreSort { + mode?: SearchSortMode; + order?: SearchSortOrder; +} + +export interface SearchScriptSort { + order?: SearchSortOrder; + script: Script; + type?: string; +} + +export interface SearchSearchProfile { + collector: SearchCollector[]; + query: SearchQueryProfile[]; + rewrite_time: long; +} + +export interface SearchShardProfile { + aggregations: SearchAggregationProfile[]; + id: string; + searches: SearchSearchProfile[]; +} + +export interface SearchSmoothingModelContainer { + laplace?: SearchLaplaceSmoothingModel; + linear_interpolation?: SearchLinearInterpolationSmoothingModel; + stupid_backoff?: SearchStupidBackoffSmoothingModel; +} + +export type SearchSort = SearchSortCombinations | SearchSortCombinations[]; + +export type SearchSortCombinations = Field | SearchSortContainer | SearchSortOrder; + +export interface SearchSortContainerKeys { + _score?: SearchScoreSort; + _doc?: SearchScoreSort; + _geo_distance?: SearchGeoDistanceSort; + _script?: SearchScriptSort; +} +export type SearchSortContainer = + | SearchSortContainerKeys + | { [property: string]: SearchFieldSort | SearchSortOrder }; + +export type SearchSortMode = 'min' | 'max' | 'sum' | 'avg' | 'median'; + +export type SearchSortOrder = 'asc' | 'desc' | '_doc'; + +export type SearchSortResults = (long | double | string | null)[]; + +export interface SearchSourceFilter { + excludes?: Fields; + includes?: Fields; + exclude?: Fields; + include?: Fields; +} + +export type SearchStringDistance = + | 'internal' + | 'damerau_levenshtein' + | 'levenshtein' + | 'jaro_winkler' + | 'ngram'; + +export interface SearchStupidBackoffSmoothingModel { + discount: double; +} + +export interface SearchSuggest { + length: integer; + offset: integer; + options: SearchSuggestOption[]; + text: string; +} + +export interface SearchSuggestContainer { + completion?: SearchCompletionSuggester; + phrase?: SearchPhraseSuggester; + prefix?: string; + regex?: string; + term?: SearchTermSuggester; + text?: string; +} + +export interface SearchSuggestContextQuery { + boost?: double; + context: SearchContext; + neighbours?: Distance[] | integer[]; + precision?: Distance | integer; + prefix?: boolean; +} + +export interface SearchSuggestFuzziness { + fuzziness: Fuzziness; + min_length: integer; + prefix_length: integer; + transpositions: boolean; + unicode_aware: boolean; +} + +export type SearchSuggestOption = + | SearchCompletionSuggestOption + | SearchPhraseSuggestOption + | SearchTermSuggestOption; + +export type SearchSuggestSort = 'score' | 'frequency'; + +export interface SearchSuggesterBase { + field: Field; + analyzer?: string; + size?: integer; +} + +export interface SearchTermSuggestOption { + text: string; + freq?: long; + score: double; +} + +export interface SearchTermSuggester extends SearchSuggesterBase { + lowercase_terms?: boolean; + max_edits?: integer; + max_inspections?: integer; + max_term_freq?: float; + min_doc_freq?: float; + min_word_length?: integer; + prefix_length?: integer; + shard_size?: integer; + sort?: SearchSuggestSort; + string_distance?: SearchStringDistance; + suggest_mode?: SuggestMode; + text?: string; +} + +export interface SearchTotalHits { + relation: SearchTotalHitsRelation; + value: long; +} + +export type SearchTotalHitsRelation = 'eq' | 'gte'; + +export interface SearchShardsRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + local?: boolean; + preference?: string; + routing?: Routing; +} + +export interface SearchShardsResponse { + nodes: Record; + shards: NodeShard[][]; + indices: Record; +} + +export interface SearchShardsShardStoreIndex { + aliases?: Name[]; + filter?: QueryDslQueryContainer; +} + +export interface SearchTemplateRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + ccs_minimize_roundtrips?: boolean; + expand_wildcards?: ExpandWildcards; + explain?: boolean; + ignore_throttled?: boolean; + ignore_unavailable?: boolean; + preference?: string; + profile?: boolean; + routing?: Routing; + scroll?: Time; + search_type?: SearchType; + total_hits_as_integer?: boolean; + typed_keys?: boolean; + body?: { + id?: Id; + params?: Record; + source?: string; + }; +} + +export interface SearchTemplateResponse { + _shards: ShardStatistics; + timed_out: boolean; + took: integer; + hits: SearchHitsMetadata; +} + +export interface TermsEnumRequest extends RequestBase { + index: IndexName; + body?: { + field: Field; + size?: integer; + timeout?: Time; + case_insensitive?: boolean; + index_filter?: QueryDslQueryContainer; + string?: string; + search_after?: string; + }; +} + +export interface TermsEnumResponse { + _shards: ShardStatistics; + terms: string[]; + complete: boolean; +} + +export interface TermvectorsFieldStatistics { + doc_count: integer; + sum_doc_freq: long; + sum_ttf: long; +} + +export interface TermvectorsFilter { + max_doc_freq?: integer; + max_num_terms?: integer; + max_term_freq?: integer; + max_word_length?: integer; + min_doc_freq?: integer; + min_term_freq?: integer; + min_word_length?: integer; +} + +export interface TermvectorsRequest extends RequestBase { + index: IndexName; + id?: Id; + fields?: Fields; + field_statistics?: boolean; + offsets?: boolean; + payloads?: boolean; + positions?: boolean; + preference?: string; + realtime?: boolean; + routing?: Routing; + term_statistics?: boolean; + version?: VersionNumber; + version_type?: VersionType; + body?: { + doc?: TDocument; + filter?: TermvectorsFilter; + per_field_analyzer?: Record; + }; +} + +export interface TermvectorsResponse { + found: boolean; + _id: Id; + _index: IndexName; + term_vectors?: Record; + took: long; + _version: VersionNumber; +} + +export interface TermvectorsTerm { + doc_freq?: integer; + score?: double; + term_freq: integer; + tokens: TermvectorsToken[]; + ttf?: integer; +} + +export interface TermvectorsTermVector { + field_statistics: TermvectorsFieldStatistics; + terms: Record; +} + +export interface TermvectorsToken { + end_offset?: integer; + payload?: string; + position: integer; + start_offset?: integer; +} + +export interface UpdateRequest + extends RequestBase { + id: Id; + index: IndexName; + if_primary_term?: long; + if_seq_no?: SequenceNumber; + lang?: string; + refresh?: Refresh; + require_alias?: boolean; + retry_on_conflict?: long; + routing?: Routing; + source_enabled?: boolean; + timeout?: Time; + wait_for_active_shards?: WaitForActiveShards; + _source?: boolean | Fields; + _source_excludes?: Fields; + _source_includes?: Fields; + body?: { + detect_noop?: boolean; + doc?: TPartialDocument; + doc_as_upsert?: boolean; + script?: Script; + scripted_upsert?: boolean; + _source?: boolean | SearchSourceFilter; + upsert?: TDocument; + }; +} + +export interface UpdateResponse extends WriteResponseBase { + get?: InlineGet; +} + +export interface UpdateByQueryRequest extends RequestBase { + index: Indices; + allow_no_indices?: boolean; + analyzer?: string; + analyze_wildcard?: boolean; + conflicts?: Conflicts; + default_operator?: DefaultOperator; + df?: string; + expand_wildcards?: ExpandWildcards; + from?: long; + ignore_unavailable?: boolean; + lenient?: boolean; + pipeline?: string; + preference?: string; + query_on_query_string?: string; + refresh?: boolean; + request_cache?: boolean; + requests_per_second?: long; + routing?: Routing; + scroll?: Time; + scroll_size?: long; + search_timeout?: Time; + search_type?: SearchType; + size?: long; + slices?: long; + sort?: string[]; + source_enabled?: boolean; + source_excludes?: Fields; + source_includes?: Fields; + stats?: string[]; + terminate_after?: long; + timeout?: Time; + version?: boolean; + version_type?: boolean; + wait_for_active_shards?: WaitForActiveShards; + wait_for_completion?: boolean; + body?: { + max_docs?: long; + query?: QueryDslQueryContainer; + script?: Script; + slice?: SlicedScroll; + conflicts?: Conflicts; + }; +} + +export interface UpdateByQueryResponse { + batches?: long; + failures?: BulkIndexByScrollFailure[]; + noops?: long; + deleted?: long; + requests_per_second?: float; + retries?: Retries; + task?: TaskId; + timed_out?: boolean; + took?: long; + total?: long; + updated?: long; + version_conflicts?: long; + throttled_millis?: ulong; + throttled_until_millis?: ulong; +} + +export interface UpdateByQueryRethrottleRequest extends RequestBase { + task_id: Id; + requests_per_second?: long; +} + +export interface UpdateByQueryRethrottleResponse { + nodes: Record; +} + +export interface UpdateByQueryRethrottleUpdateByQueryRethrottleNode extends SpecUtilsBaseNode { + tasks: Record; +} + +export interface SpecUtilsBaseNode { + attributes: Record; + host: Host; + ip: Ip; + name: Name; + roles?: NodeRoles; + transport_address: TransportAddress; +} + +export interface AcknowledgedResponseBase { + acknowledged: boolean; +} + +export type AggregateName = string; + +export interface BulkIndexByScrollFailure { + cause: MainError; + id: Id; + index: IndexName; + status: integer; + type: string; +} + +export interface BulkStats { + total_operations: long; + total_time?: string; + total_time_in_millis: long; + total_size?: ByteSize; + total_size_in_bytes: long; + avg_time?: string; + avg_time_in_millis: long; + avg_size?: ByteSize; + avg_size_in_bytes: long; +} + +export type ByteSize = long | string; + +export type Bytes = 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + +export type CategoryId = string; + +export interface ClusterStatistics { + skipped: integer; + successful: integer; + total: integer; +} + +export interface CompletionStats { + size_in_bytes: long; + size?: ByteSize; + fields?: Record; +} + +export type Conflicts = 'abort' | 'proceed'; + +export type DataStreamName = string; + +export interface DateField { + field: Field; + format?: string; + include_unmapped?: boolean; +} + +export type DateMath = string; + +export type DateMathTime = string; + +export type DateString = string; + +export type DefaultOperator = 'AND' | 'OR'; + +export interface DictionaryResponseBase { + [key: string]: TValue; +} + +export type Distance = string; + +export type DistanceUnit = 'in' | 'ft' | 'yd' | 'mi' | 'nmi' | 'km' | 'm' | 'cm' | 'mm'; + +export interface DocStats { + count: long; + deleted: long; +} + +export interface OpenSearchVersionInfo { + build_date: DateString; + build_hash: string; + build_snapshot: boolean; + build_type: string; + distribution: string; + lucene_version: VersionString; + minimum_index_compatibility_version: VersionString; + minimum_wire_compatibility_version: VersionString; + number: string; +} + +export interface EmptyObject { } + +export type EpochMillis = string | long; + +export interface ErrorCause { + type: string; + reason: string; + caused_by?: ErrorCause; + shard?: integer | string; + stack_trace?: string; + root_cause?: ErrorCause[]; + bytes_limit?: long; + bytes_wanted?: long; + column?: integer; + col?: integer; + failed_shards?: ShardFailure[]; + grouped?: boolean; + index?: IndexName; + index_uuid?: Uuid; + language?: string; + licensed_expired_feature?: string; + line?: integer; + max_buckets?: integer; + phase?: string; + property_name?: string; + processor_type?: string; + resource_id?: Ids; + 'resource.id'?: Ids; + resource_type?: string; + 'resource.type'?: string; + script?: string; + script_stack?: string[]; + header?: HttpHeaders; + lang?: string; + position?: ScriptsPainlessExecutePainlessExecutionPosition; +} + +export interface ErrorResponseBase { + error: MainError | string; + status: integer; +} + +export type ExpandWildcardOptions = 'all' | 'open' | 'closed' | 'hidden' | 'none'; + +export type ExpandWildcards = ExpandWildcardOptions | ExpandWildcardOptions[] | string; + +export type Field = string; + +export interface FieldMemoryUsage { + memory_size?: ByteSize; + memory_size_in_bytes: long; +} + +export interface FieldSizeUsage { + size?: ByteSize; + size_in_bytes: long; +} + +export interface FielddataStats { + evictions?: long; + memory_size?: ByteSize; + memory_size_in_bytes: long; + fields?: Record; +} + +export type Fields = Field | Field[]; + +export interface FlushStats { + periodic: long; + total: long; + total_time?: string; + total_time_in_millis: long; +} + +export type Fuzziness = string | integer; + +export type GeoDistanceType = 'arc' | 'plane'; + +export type GeoHashPrecision = number; + +export type GeoShapeRelation = 'intersects' | 'disjoint' | 'within' | 'contains'; + +export type GeoTilePrecision = number; + +export interface GetStats { + current: long; + exists_time?: string; + exists_time_in_millis: long; + exists_total: long; + missing_time?: string; + missing_time_in_millis: long; + missing_total: long; + time?: string; + time_in_millis: long; + total: long; +} + +export type GroupBy = 'nodes' | 'parents' | 'none'; + +export type Health = 'green' | 'yellow' | 'red'; + +export type Host = string; + +export type HttpHeaders = Record; + +export type Id = string; + +export type Ids = Id | Id[]; + +export type IndexAlias = string; + +export type IndexName = string; + +export type IndexPattern = string; + +export type IndexPatterns = IndexPattern[]; + +export interface IndexedScript extends ScriptBase { + id: Id; +} + +export interface IndexingStats { + index_current: long; + delete_current: long; + delete_time?: string; + delete_time_in_millis: long; + delete_total: long; + is_throttled: boolean; + noop_update_total: long; + throttle_time?: string; + throttle_time_in_millis: long; + index_time?: string; + index_time_in_millis: long; + index_total: long; + index_failed: long; + types?: Record; +} + +export type Indices = string | string[]; + +export interface IndicesResponseBase extends AcknowledgedResponseBase { + _shards?: ShardStatistics; +} + +export interface InlineGet { + fields?: Record; + found: boolean; + _seq_no: SequenceNumber; + _primary_term: long; + _routing?: Routing; + _source: TDocument; +} + +export interface InlineScript extends ScriptBase { + source: string; +} + +export type Ip = string; + +export interface LatLon { + lat: double; + lon: double; +} + +export type Level = 'cluster' | 'indices' | 'shards'; + +export type LifecycleOperationMode = 'RUNNING' | 'STOPPING' | 'STOPPED'; + +export interface MainError extends ErrorCause { + headers?: Record; + root_cause: ErrorCause[]; +} + +export interface MergesStats { + current: long; + current_docs: long; + current_size?: string; + current_size_in_bytes: long; + total: long; + total_auto_throttle?: string; + total_auto_throttle_in_bytes: long; + total_docs: long; + total_size?: string; + total_size_in_bytes: long; + total_stopped_time?: string; + total_stopped_time_in_millis: long; + total_throttled_time?: string; + total_throttled_time_in_millis: long; + total_time?: string; + total_time_in_millis: long; +} + +export type Metadata = Record; + +export type Metrics = string | string[]; + +export type MinimumShouldMatch = integer | string; + +export type MultiTermQueryRewrite = string; + +export type Name = string; + +export type Names = string | string[]; + +export type Namespace = string; + +export interface NodeAttributes { + attributes: Record; + ephemeral_id: Id; + id?: Id; + name: NodeName; + transport_address: TransportAddress; + roles?: NodeRoles; +} + +export type NodeId = string; + +export type NodeIds = string; + +export type NodeName = string; + +// TODO: remove master role if it is not supported. +export type NodeRole = 'cluster_manager' | 'master' | 'data' | 'client' | 'ingest' | 'voting_only' | 'remote_cluster_client' | 'coordinating_only' + +export type NodeRoles = NodeRole[]; + +export interface NodeShard { + state: IndicesStatsShardRoutingState; + primary: boolean; + node?: NodeName; + shard: integer; + index: IndexName; + allocation_id?: Record; + recovery_source?: Record; + unassigned_info?: ClusterAllocationExplainUnassignedInformation; +} + +export interface NodeStatistics { + failures?: ErrorCause[]; + total: integer; + successful: integer; + failed: integer; +} + +export type OpType = 'index' | 'create'; + +export type Password = string; + +export type Percentage = string | float; + +export type PipelineName = string; + +export interface PluginStats { + classname: string; + description: string; + opensearch_version: VersionString; + extended_plugins: string[]; + has_native_controller: boolean; + java_version: VersionString; + name: Name; + version: VersionString; + licensed: boolean; + type: string; +} + +export type PropertyName = string; + +export interface QueryCacheStats { + cache_count: integer; + cache_size: integer; + evictions: integer; + hit_count: integer; + memory_size?: ByteSize; + memory_size_in_bytes: integer; + miss_count: integer; + total_count: integer; +} + +export interface RecoveryStats { + current_as_source: long; + current_as_target: long; + throttle_time?: string; + throttle_time_in_millis: long; +} + +export type Refresh = boolean | RefreshOptions; + +export type RefreshOptions = 'wait_for'; + +export interface RefreshStats { + external_total: long; + external_total_time_in_millis: long; + listeners: long; + total: long; + total_time?: string; + total_time_in_millis: long; +} + +export type RelationName = string; + +export interface RequestBase extends SpecUtilsCommonQueryParameters { } + +export interface RequestCacheStats { + evictions: long; + hit_count: long; + memory_size?: string; + memory_size_in_bytes: long; + miss_count: long; +} + +export type Result = 'Error' | 'created' | 'updated' | 'deleted' | 'not_found' | 'noop'; + +export interface Retries { + bulk: long; + search: long; +} + +export type Routing = string | number; + +export type Script = InlineScript | IndexedScript | string; + +export interface ScriptBase { + lang?: ScriptLanguage; + params?: Record; +} + +export interface ScriptField { + script: Script; +} + +export type ScriptLanguage = 'painless' | 'expression' | 'mustache' | 'java'; + +export interface ScriptTransform { + lang: string; + params: Record; +} + +export type ScrollId = string; + +export interface SearchStats { + fetch_current: long; + fetch_time_in_millis: long; + fetch_total: long; + open_contexts?: long; + query_current: long; + query_time_in_millis: long; + query_total: long; + scroll_current: long; + scroll_time_in_millis: long; + scroll_total: long; + suggest_current: long; + suggest_time_in_millis: long; + suggest_total: long; + groups?: Record; +} + +export interface SearchTransform { + timeout: Time; +} + +export type SearchType = 'query_then_fetch' | 'dfs_query_then_fetch'; + +export interface SegmentsStats { + count: integer; + doc_values_memory?: ByteSize; + doc_values_memory_in_bytes: integer; + file_sizes: Record; + fixed_bit_set?: ByteSize; + fixed_bit_set_memory_in_bytes: integer; + index_writer_memory?: ByteSize; + index_writer_max_memory_in_bytes?: integer; + index_writer_memory_in_bytes: integer; + max_unsafe_auto_id_timestamp: integer; + memory?: ByteSize; + memory_in_bytes: integer; + norms_memory?: ByteSize; + norms_memory_in_bytes: integer; + points_memory?: ByteSize; + points_memory_in_bytes: integer; + stored_memory?: ByteSize; + stored_fields_memory_in_bytes: integer; + terms_memory_in_bytes: integer; + terms_memory?: ByteSize; + term_vectory_memory?: ByteSize; + term_vectors_memory_in_bytes: integer; + version_map_memory?: ByteSize; + version_map_memory_in_bytes: integer; +} + +export type SequenceNumber = integer; + +export type Service = string; + +export type ShapeRelation = 'intersects' | 'disjoint' | 'within'; + +export interface ShardFailure { + index?: IndexName; + node?: string; + reason: ErrorCause; + shard: integer; + status?: string; +} + +export interface ShardStatistics { + failed: uint; + successful: uint; + total: uint; + failures?: ShardFailure[]; + skipped?: uint; +} + +export interface ShardsOperationResponseBase { + _shards: ShardStatistics; +} + +export type Size = 'Raw' | 'k' | 'm' | 'g' | 't' | 'p'; + +export interface SlicedScroll { + field?: Field; + id: integer; + max: integer; +} + +export interface StoreStats { + size?: ByteSize; + size_in_bytes: integer; + reserved?: ByteSize; + reserved_in_bytes: integer; + total_data_set_size?: ByteSize; + total_data_set_size_in_bytes?: integer; +} + +export interface StoredScript { + lang?: ScriptLanguage; + source: string; +} + +export type SuggestMode = 'missing' | 'popular' | 'always'; + +export type SuggestionName = string; + +export type TaskId = string | integer; + +export type ThreadType = 'cpu' | 'wait' | 'block'; + +export type Time = string | integer; + +export type TimeSpan = string; + +export type Timestamp = string; + +export interface TranslogStats { + earliest_last_modified_age: long; + operations: long; + size?: string; + size_in_bytes: long; + uncommitted_operations: integer; + uncommitted_size?: string; + uncommitted_size_in_bytes: long; +} + +export type TransportAddress = string; + +export type Type = string; + +export type Types = Type | Type[]; + +export type Username = string; + +export type Uuid = string; + +export type VersionNumber = long; + +export type VersionString = string; + +export type VersionType = 'internal' | 'external' | 'external_gte' | 'force'; + +export type WaitForActiveShardOptions = 'all'; + +export type WaitForActiveShards = integer | WaitForActiveShardOptions; + +export type WaitForEvents = 'immediate' | 'urgent' | 'high' | 'normal' | 'low' | 'languid'; + +export type WaitForStatus = 'green' | 'yellow' | 'red'; + +export interface WarmerStats { + current: long; + total: long; + total_time?: string; + total_time_in_millis: long; +} + +export interface WriteResponseBase { + _id: Id; + _index: IndexName; + _primary_term: long; + result: Result; + _seq_no: SequenceNumber; + _shards: ShardStatistics; + _version: VersionNumber; + forced_refresh?: boolean; + error?: ErrorCause; +} + +export type double = number; + +export type float = number; + +export type integer = number; + +export type long = number; + +export type uint = number; + +export type ulong = number; + +export interface AggregationsAdjacencyMatrixAggregation extends AggregationsBucketAggregationBase { + filters?: Record; +} + +export type AggregationsAggregate = + | AggregationsSingleBucketAggregate + | AggregationsAutoDateHistogramAggregate + | AggregationsFiltersAggregate + | AggregationsSignificantTermsAggregate + | AggregationsTermsAggregate + | AggregationsBucketAggregate + | AggregationsCompositeBucketAggregate + | AggregationsMultiBucketAggregate + | AggregationsMatrixStatsAggregate + | AggregationsKeyedValueAggregate + | AggregationsMetricAggregate; + +export interface AggregationsAggregateBase { + meta?: Record; +} + +export interface AggregationsAggregation { + meta?: Record; + name?: string; +} + +export interface AggregationsAggregationContainer { + aggs?: Record; + meta?: Record; + adjacency_matrix?: AggregationsAdjacencyMatrixAggregation; + aggregations?: Record; + auto_date_histogram?: AggregationsAutoDateHistogramAggregation; + avg?: AggregationsAverageAggregation; + avg_bucket?: AggregationsAverageBucketAggregation; + boxplot?: AggregationsBoxplotAggregation; + bucket_script?: AggregationsBucketScriptAggregation; + bucket_selector?: AggregationsBucketSelectorAggregation; + bucket_sort?: AggregationsBucketSortAggregation; + cardinality?: AggregationsCardinalityAggregation; + children?: AggregationsChildrenAggregation; + composite?: AggregationsCompositeAggregation; + cumulative_cardinality?: AggregationsCumulativeCardinalityAggregation; + cumulative_sum?: AggregationsCumulativeSumAggregation; + date_histogram?: AggregationsDateHistogramAggregation; + date_range?: AggregationsDateRangeAggregation; + derivative?: AggregationsDerivativeAggregation; + diversified_sampler?: AggregationsDiversifiedSamplerAggregation; + extended_stats?: AggregationsExtendedStatsAggregation; + extended_stats_bucket?: AggregationsExtendedStatsBucketAggregation; + filter?: QueryDslQueryContainer; + filters?: AggregationsFiltersAggregation; + geo_bounds?: AggregationsGeoBoundsAggregation; + geo_centroid?: AggregationsGeoCentroidAggregation; + geo_distance?: AggregationsGeoDistanceAggregation; + geohash_grid?: AggregationsGeoHashGridAggregation; + geo_line?: AggregationsGeoLineAggregation; + geotile_grid?: AggregationsGeoTileGridAggregation; + global?: AggregationsGlobalAggregation; + histogram?: AggregationsHistogramAggregation; + ip_range?: AggregationsIpRangeAggregation; + inference?: AggregationsInferenceAggregation; + line?: AggregationsGeoLineAggregation; + matrix_stats?: AggregationsMatrixStatsAggregation; + max?: AggregationsMaxAggregation; + max_bucket?: AggregationsMaxBucketAggregation; + median_absolute_deviation?: AggregationsMedianAbsoluteDeviationAggregation; + min?: AggregationsMinAggregation; + min_bucket?: AggregationsMinBucketAggregation; + missing?: AggregationsMissingAggregation; + moving_avg?: AggregationsMovingAverageAggregation; + moving_percentiles?: AggregationsMovingPercentilesAggregation; + moving_fn?: AggregationsMovingFunctionAggregation; + multi_terms?: AggregationsMultiTermsAggregation; + nested?: AggregationsNestedAggregation; + normalize?: AggregationsNormalizeAggregation; + parent?: AggregationsParentAggregation; + percentile_ranks?: AggregationsPercentileRanksAggregation; + percentiles?: AggregationsPercentilesAggregation; + percentiles_bucket?: AggregationsPercentilesBucketAggregation; + range?: AggregationsRangeAggregation; + rare_terms?: AggregationsRareTermsAggregation; + rate?: AggregationsRateAggregation; + reverse_nested?: AggregationsReverseNestedAggregation; + sampler?: AggregationsSamplerAggregation; + scripted_metric?: AggregationsScriptedMetricAggregation; + serial_diff?: AggregationsSerialDifferencingAggregation; + significant_terms?: AggregationsSignificantTermsAggregation; + significant_text?: AggregationsSignificantTextAggregation; + stats?: AggregationsStatsAggregation; + stats_bucket?: AggregationsStatsBucketAggregation; + string_stats?: AggregationsStringStatsAggregation; + sum?: AggregationsSumAggregation; + sum_bucket?: AggregationsSumBucketAggregation; + terms?: AggregationsTermsAggregation; + top_hits?: AggregationsTopHitsAggregation; + t_test?: AggregationsTTestAggregation; + top_metrics?: AggregationsTopMetricsAggregation; + value_count?: AggregationsValueCountAggregation; + weighted_avg?: AggregationsWeightedAverageAggregation; + variable_width_histogram?: AggregationsVariableWidthHistogramAggregation; +} + +export interface AggregationsAggregationRange { + from?: double | string; + key?: string; + to?: double | string; +} + +export interface AggregationsAutoDateHistogramAggregate + extends AggregationsMultiBucketAggregate> { + interval: DateMathTime; +} + +export interface AggregationsAutoDateHistogramAggregation + extends AggregationsBucketAggregationBase { + buckets?: integer; + field?: Field; + format?: string; + minimum_interval?: AggregationsMinimumInterval; + missing?: DateString; + offset?: string; + params?: Record; + script?: Script; + time_zone?: string; +} + +export interface AggregationsAverageAggregation extends AggregationsFormatMetricAggregationBase { } + +export interface AggregationsAverageBucketAggregation extends AggregationsPipelineAggregationBase { } + +export interface AggregationsBoxPlotAggregate extends AggregationsAggregateBase { + min: double; + max: double; + q1: double; + q2: double; + q3: double; +} + +export interface AggregationsBoxplotAggregation extends AggregationsMetricAggregationBase { + compression?: double; +} + +export type AggregationsBucket = + | AggregationsCompositeBucket + | AggregationsDateHistogramBucket + | AggregationsFiltersBucketItem + | AggregationsIpRangeBucket + | AggregationsRangeBucket + | AggregationsRareTermsBucket + | AggregationsSignificantTermsBucket + | AggregationsKeyedBucket; + +export interface AggregationsBucketAggregate extends AggregationsAggregateBase { + after_key: Record; + bg_count: long; + doc_count: long; + doc_count_error_upper_bound: long; + sum_other_doc_count: long; + interval: DateMathTime; + items: AggregationsBucket; +} + +export interface AggregationsBucketAggregationBase extends AggregationsAggregation { + aggregations?: Record; +} + +export interface AggregationsBucketScriptAggregation extends AggregationsPipelineAggregationBase { + script?: Script; +} + +export interface AggregationsBucketSelectorAggregation extends AggregationsPipelineAggregationBase { + script?: Script; +} + +export interface AggregationsBucketSortAggregation extends AggregationsAggregation { + from?: integer; + gap_policy?: AggregationsGapPolicy; + size?: integer; + sort?: SearchSort; +} + +export interface AggregationsBucketsPath { } + +export interface AggregationsCardinalityAggregation extends AggregationsMetricAggregationBase { + precision_threshold?: integer; + rehash?: boolean; +} + +export interface AggregationsChiSquareHeuristic { + background_is_superset: boolean; + include_negatives: boolean; +} + +export interface AggregationsChildrenAggregation extends AggregationsBucketAggregationBase { + type?: RelationName; +} + +export interface AggregationsClassificationInferenceOptions { + num_top_classes?: integer; + num_top_feature_importance_values?: integer; + prediction_field_type?: string; + results_field?: string; + top_classes_results_field?: string; +} + +export interface AggregationsCompositeAggregation extends AggregationsBucketAggregationBase { + after?: Record; + size?: integer; + sources?: Record[]; +} + +export interface AggregationsCompositeAggregationSource { + terms?: AggregationsTermsAggregation; + histogram?: AggregationsHistogramAggregation; + date_histogram?: AggregationsDateHistogramAggregation; + geotile_grid?: AggregationsGeoTileGridAggregation; +} + +export interface AggregationsCompositeBucketKeys { } +export type AggregationsCompositeBucket = + | AggregationsCompositeBucketKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsCompositeBucketAggregate + extends AggregationsMultiBucketAggregate> { + after_key: Record; +} + +export interface AggregationsCumulativeCardinalityAggregation + extends AggregationsPipelineAggregationBase { } + +export interface AggregationsCumulativeSumAggregation extends AggregationsPipelineAggregationBase { } + +export interface AggregationsDateHistogramAggregation extends AggregationsBucketAggregationBase { + calendar_interval?: AggregationsDateInterval | Time; + extended_bounds?: AggregationsExtendedBounds; + hard_bounds?: AggregationsExtendedBounds; + field?: Field; + fixed_interval?: AggregationsDateInterval | Time; + format?: string; + interval?: AggregationsDateInterval | Time; + min_doc_count?: integer; + missing?: DateString; + offset?: Time; + order?: AggregationsHistogramOrder; + params?: Record; + script?: Script; + time_zone?: string; +} + +export interface AggregationsDateHistogramBucketKeys { } + +export type AggregationsDateHistogramBucket = + | AggregationsDateHistogramBucketKeys + | { [property: string]: AggregationsAggregate }; + +export type AggregationsDateInterval = + | 'second' + | 'minute' + | 'hour' + | 'day' + | 'week' + | 'month' + | 'quarter' + | 'year'; + +export interface AggregationsDateRangeAggregation extends AggregationsBucketAggregationBase { + field?: Field; + format?: string; + missing?: AggregationsMissing; + ranges?: AggregationsDateRangeExpression[]; + time_zone?: string; +} + +export interface AggregationsDateRangeExpression { + from?: DateMath | float; + from_as_string?: string; + to_as_string?: string; + key?: string; + to?: DateMath | float; + doc_count?: long; +} + +export interface AggregationsDerivativeAggregation extends AggregationsPipelineAggregationBase { } + +export interface AggregationsDiversifiedSamplerAggregation + extends AggregationsBucketAggregationBase { + execution_hint?: AggregationsSamplerAggregationExecutionHint; + max_docs_per_value?: integer; + script?: Script; + shard_size?: integer; + field?: Field; +} + +export interface AggregationsEwmaModelSettings { + alpha?: float; +} + +export interface AggregationsExtendedBounds { + max: T; + min: T; +} + +export interface AggregationsExtendedStatsAggregate extends AggregationsStatsAggregate { + std_deviation_bounds: AggregationsStandardDeviationBounds; + sum_of_squares?: double; + variance?: double; + variance_population?: double; + variance_sampling?: double; + std_deviation?: double; + std_deviation_population?: double; + std_deviation_sampling?: double; +} + +export interface AggregationsExtendedStatsAggregation + extends AggregationsFormatMetricAggregationBase { + sigma?: double; +} + +export interface AggregationsExtendedStatsBucketAggregation + extends AggregationsPipelineAggregationBase { + sigma?: double; +} + +export interface AggregationsFiltersAggregate extends AggregationsAggregateBase { + buckets: AggregationsFiltersBucketItem[] | Record; +} + +export interface AggregationsFiltersAggregation extends AggregationsBucketAggregationBase { + filters?: Record | QueryDslQueryContainer[]; + other_bucket?: boolean; + other_bucket_key?: string; +} + +export interface AggregationsFiltersBucketItemKeys { + doc_count: long; +} +export type AggregationsFiltersBucketItem = + | AggregationsFiltersBucketItemKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsFormatMetricAggregationBase extends AggregationsMetricAggregationBase { + format?: string; +} + +export interface AggregationsFormattableMetricAggregation + extends AggregationsMetricAggregationBase { + format?: string; +} + +export type AggregationsGapPolicy = 'skip' | 'insert_zeros'; + +export interface AggregationsGeoBounds { + bottom_right: LatLon; + top_left: LatLon; +} + +export interface AggregationsGeoBoundsAggregate extends AggregationsAggregateBase { + bounds: AggregationsGeoBounds; +} + +export interface AggregationsGeoBoundsAggregation extends AggregationsMetricAggregationBase { + wrap_longitude?: boolean; +} + +export interface AggregationsGeoCentroidAggregate extends AggregationsAggregateBase { + count: long; + location: QueryDslGeoLocation; +} + +export interface AggregationsGeoCentroidAggregation extends AggregationsMetricAggregationBase { + count?: long; + location?: QueryDslGeoLocation; +} + +export interface AggregationsGeoDistanceAggregation extends AggregationsBucketAggregationBase { + distance_type?: GeoDistanceType; + field?: Field; + origin?: QueryDslGeoLocation | string; + ranges?: AggregationsAggregationRange[]; + unit?: DistanceUnit; +} + +export interface AggregationsGeoHashGridAggregation extends AggregationsBucketAggregationBase { + bounds?: QueryDslBoundingBox; + field?: Field; + precision?: GeoHashPrecision; + shard_size?: integer; + size?: integer; +} + +export interface AggregationsGeoLineAggregate extends AggregationsAggregateBase { + type: string; + geometry: AggregationsLineStringGeoShape; + properties: AggregationsGeoLineProperties; +} + +export interface AggregationsGeoLineAggregation { + point: AggregationsGeoLinePoint; + sort: AggregationsGeoLineSort; + include_sort?: boolean; + sort_order?: SearchSortOrder; + size?: integer; +} + +export interface AggregationsGeoLinePoint { + field: Field; +} + +export interface AggregationsGeoLineProperties { + complete: boolean; + sort_values: double[]; +} + +export interface AggregationsGeoLineSort { + field: Field; +} + +export interface AggregationsGeoTileGridAggregation extends AggregationsBucketAggregationBase { + field?: Field; + precision?: GeoTilePrecision; + shard_size?: integer; + size?: integer; + bounds?: AggregationsGeoBounds; +} + +export interface AggregationsGlobalAggregation extends AggregationsBucketAggregationBase { } + +export interface AggregationsGoogleNormalizedDistanceHeuristic { + background_is_superset: boolean; +} + +export interface AggregationsHdrMethod { + number_of_significant_value_digits?: integer; +} + +export interface AggregationsHdrPercentileItem { + key: double; + value: double; +} + +export interface AggregationsHdrPercentilesAggregate extends AggregationsAggregateBase { + values: AggregationsHdrPercentileItem[]; +} + +export interface AggregationsHistogramAggregation extends AggregationsBucketAggregationBase { + extended_bounds?: AggregationsExtendedBounds; + hard_bounds?: AggregationsExtendedBounds; + field?: Field; + interval?: double; + min_doc_count?: integer; + missing?: double; + offset?: double; + order?: AggregationsHistogramOrder; + script?: Script; + format?: string; +} + +export interface AggregationsHistogramOrder { + _count?: SearchSortOrder; + _key?: SearchSortOrder; +} + +export interface AggregationsHoltLinearModelSettings { + alpha?: float; + beta?: float; +} + +export interface AggregationsHoltWintersModelSettings { + alpha?: float; + beta?: float; + gamma?: float; + pad?: boolean; + period?: integer; + type?: AggregationsHoltWintersType; +} + +export type AggregationsHoltWintersType = 'add' | 'mult'; + +export interface AggregationsInferenceAggregation extends AggregationsPipelineAggregationBase { + model_id: Name; + inference_config?: AggregationsInferenceConfigContainer; +} + +export interface AggregationsInferenceConfigContainer { + regression?: AggregationsRegressionInferenceOptions; + classification?: AggregationsClassificationInferenceOptions; +} + +export interface AggregationsIpRangeAggregation extends AggregationsBucketAggregationBase { + field?: Field; + ranges?: AggregationsIpRangeAggregationRange[]; +} + +export interface AggregationsIpRangeAggregationRange { + from?: string; + mask?: string; + to?: string; +} + +export interface AggregationsIpRangeBucketKeys { } +export type AggregationsIpRangeBucket = + | AggregationsIpRangeBucketKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsKeyedBucketKeys { + doc_count: long; + key: TKey; + key_as_string: string; +} +export type AggregationsKeyedBucket = + | AggregationsKeyedBucketKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsKeyedValueAggregate extends AggregationsValueAggregate { + keys: string[]; +} + +export interface AggregationsLineStringGeoShape { + coordinates: QueryDslGeoCoordinate[]; +} + +export interface AggregationsMatrixAggregation extends AggregationsAggregation { + fields?: Fields; + missing?: Record; +} + +export interface AggregationsMatrixStatsAggregate extends AggregationsAggregateBase { + correlation: Record; + covariance: Record; + count: integer; + kurtosis: double; + mean: double; + skewness: double; + variance: double; + name: string; +} + +export interface AggregationsMatrixStatsAggregation extends AggregationsMatrixAggregation { + mode?: AggregationsMatrixStatsMode; +} + +export type AggregationsMatrixStatsMode = 'avg' | 'min' | 'max' | 'sum' | 'median'; + +export interface AggregationsMaxAggregation extends AggregationsFormatMetricAggregationBase { } + +export interface AggregationsMaxBucketAggregation extends AggregationsPipelineAggregationBase { } + +export interface AggregationsMedianAbsoluteDeviationAggregation + extends AggregationsFormatMetricAggregationBase { + compression?: double; +} + +export type AggregationsMetricAggregate = + | AggregationsValueAggregate + | AggregationsBoxPlotAggregate + | AggregationsGeoBoundsAggregate + | AggregationsGeoCentroidAggregate + | AggregationsGeoLineAggregate + | AggregationsPercentilesAggregate + | AggregationsScriptedMetricAggregate + | AggregationsStatsAggregate + | AggregationsStringStatsAggregate + | AggregationsTopHitsAggregate + | AggregationsTopMetricsAggregate + | AggregationsExtendedStatsAggregate + | AggregationsTDigestPercentilesAggregate + | AggregationsHdrPercentilesAggregate; + +export interface AggregationsMetricAggregationBase { + field?: Field; + missing?: AggregationsMissing; + script?: Script; +} + +export interface AggregationsMinAggregation extends AggregationsFormatMetricAggregationBase { } + +export interface AggregationsMinBucketAggregation extends AggregationsPipelineAggregationBase { } + +export type AggregationsMinimumInterval = 'second' | 'minute' | 'hour' | 'day' | 'month' | 'year'; + +export type AggregationsMissing = string | integer | double | boolean; + +export interface AggregationsMissingAggregation extends AggregationsBucketAggregationBase { + field?: Field; + missing?: AggregationsMissing; +} + +export interface AggregationsMovingAverageAggregation extends AggregationsPipelineAggregationBase { + minimize?: boolean; + model?: AggregationsMovingAverageModel; + settings: AggregationsMovingAverageSettings; + predict?: integer; + window?: integer; +} + +export type AggregationsMovingAverageModel = 'linear' | 'simple' | 'ewma' | 'holt' | 'holt_winters'; + +export type AggregationsMovingAverageSettings = + | AggregationsEwmaModelSettings + | AggregationsHoltLinearModelSettings + | AggregationsHoltWintersModelSettings; + +export interface AggregationsMovingFunctionAggregation extends AggregationsPipelineAggregationBase { + script?: string; + shift?: integer; + window?: integer; +} + +export interface AggregationsMovingPercentilesAggregation + extends AggregationsPipelineAggregationBase { + window?: integer; + shift?: integer; +} + +export interface AggregationsMultiBucketAggregate + extends AggregationsAggregateBase { + buckets: TBucket[]; +} + +export interface AggregationsMultiTermLookup { + field: Field; +} + +export interface AggregationsMultiTermsAggregation extends AggregationsBucketAggregationBase { + terms: AggregationsMultiTermLookup[]; +} + +export interface AggregationsMutualInformationHeuristic { + background_is_superset: boolean; + include_negatives: boolean; +} + +export interface AggregationsNestedAggregation extends AggregationsBucketAggregationBase { + path?: Field; +} + +export interface AggregationsNormalizeAggregation extends AggregationsPipelineAggregationBase { + method?: AggregationsNormalizeMethod; +} + +export type AggregationsNormalizeMethod = + | 'rescale_0_1' + | 'rescale_0_100' + | 'percent_of_sum' + | 'mean' + | 'zscore' + | 'softmax'; + +export interface AggregationsParentAggregation extends AggregationsBucketAggregationBase { + type?: RelationName; +} + +export interface AggregationsPercentageScoreHeuristic { } + +export interface AggregationsPercentileItem { + percentile: double; + value: double; +} + +export interface AggregationsPercentileRanksAggregation + extends AggregationsFormatMetricAggregationBase { + keyed?: boolean; + values?: double[]; + hdr?: AggregationsHdrMethod; + tdigest?: AggregationsTDigest; +} + +export interface AggregationsPercentilesAggregate extends AggregationsAggregateBase { + items: AggregationsPercentileItem[]; +} + +export interface AggregationsPercentilesAggregation + extends AggregationsFormatMetricAggregationBase { + keyed?: boolean; + percents?: double[]; + hdr?: AggregationsHdrMethod; + tdigest?: AggregationsTDigest; +} + +export interface AggregationsPercentilesBucketAggregation + extends AggregationsPipelineAggregationBase { + percents?: double[]; +} + +export interface AggregationsPipelineAggregationBase extends AggregationsAggregation { + buckets_path?: AggregationsBucketsPath; + format?: string; + gap_policy?: AggregationsGapPolicy; +} + +export interface AggregationsRangeAggregation extends AggregationsBucketAggregationBase { + field?: Field; + ranges?: AggregationsAggregationRange[]; + script?: Script; +} + +export interface AggregationsRangeBucketKeys { } +export type AggregationsRangeBucket = + | AggregationsRangeBucketKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsRareTermsAggregation extends AggregationsBucketAggregationBase { + exclude?: string | string[]; + field?: Field; + include?: string | string[] | AggregationsTermsInclude; + max_doc_count?: long; + missing?: AggregationsMissing; + precision?: double; + value_type?: string; +} + +export interface AggregationsRareTermsBucketKeys { } +export type AggregationsRareTermsBucket = + | AggregationsRareTermsBucketKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsRateAggregation extends AggregationsFormatMetricAggregationBase { + unit?: AggregationsDateInterval; + mode?: AggregationsRateMode; +} + +export type AggregationsRateMode = 'sum' | 'value_count'; + +export interface AggregationsRegressionInferenceOptions { + results_field: Field; + num_top_feature_importance_values?: integer; +} + +export interface AggregationsReverseNestedAggregation extends AggregationsBucketAggregationBase { + path?: Field; +} + +export interface AggregationsSamplerAggregation extends AggregationsBucketAggregationBase { + shard_size?: integer; +} + +export type AggregationsSamplerAggregationExecutionHint = 'map' | 'global_ordinals' | 'bytes_hash'; + +export interface AggregationsScriptedHeuristic { + script: Script; +} + +export interface AggregationsScriptedMetricAggregate extends AggregationsAggregateBase { + value: any; +} + +export interface AggregationsScriptedMetricAggregation extends AggregationsMetricAggregationBase { + combine_script?: Script; + init_script?: Script; + map_script?: Script; + params?: Record; + reduce_script?: Script; +} + +export interface AggregationsSerialDifferencingAggregation + extends AggregationsPipelineAggregationBase { + lag?: integer; +} + +export interface AggregationsSignificantTermsAggregate + extends AggregationsMultiBucketAggregate { + bg_count: long; + doc_count: long; +} + +export interface AggregationsSignificantTermsAggregation extends AggregationsBucketAggregationBase { + background_filter?: QueryDslQueryContainer; + chi_square?: AggregationsChiSquareHeuristic; + exclude?: string | string[]; + execution_hint?: AggregationsTermsAggregationExecutionHint; + field?: Field; + gnd?: AggregationsGoogleNormalizedDistanceHeuristic; + include?: string | string[]; + min_doc_count?: long; + mutual_information?: AggregationsMutualInformationHeuristic; + percentage?: AggregationsPercentageScoreHeuristic; + script_heuristic?: AggregationsScriptedHeuristic; + shard_min_doc_count?: long; + shard_size?: integer; + size?: integer; +} + +export interface AggregationsSignificantTermsBucketKeys { } +export type AggregationsSignificantTermsBucket = + | AggregationsSignificantTermsBucketKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsSignificantTextAggregation extends AggregationsBucketAggregationBase { + background_filter?: QueryDslQueryContainer; + chi_square?: AggregationsChiSquareHeuristic; + exclude?: string | string[]; + execution_hint?: AggregationsTermsAggregationExecutionHint; + field?: Field; + filter_duplicate_text?: boolean; + gnd?: AggregationsGoogleNormalizedDistanceHeuristic; + include?: string | string[]; + min_doc_count?: long; + mutual_information?: AggregationsMutualInformationHeuristic; + percentage?: AggregationsPercentageScoreHeuristic; + script_heuristic?: AggregationsScriptedHeuristic; + shard_min_doc_count?: long; + shard_size?: integer; + size?: integer; + source_fields?: Fields; +} + +export interface AggregationsSingleBucketAggregateKeys extends AggregationsAggregateBase { + doc_count: double; +} +export type AggregationsSingleBucketAggregate = + | AggregationsSingleBucketAggregateKeys + | { [property: string]: AggregationsAggregate }; + +export interface AggregationsStandardDeviationBounds { + lower?: double; + upper?: double; + lower_population?: double; + upper_population?: double; + lower_sampling?: double; + upper_sampling?: double; +} + +export interface AggregationsStatsAggregate extends AggregationsAggregateBase { + count: double; + sum: double; + avg?: double; + max?: double; + min?: double; +} + +export interface AggregationsStatsAggregation extends AggregationsFormatMetricAggregationBase { } + +export interface AggregationsStatsBucketAggregation extends AggregationsPipelineAggregationBase { } + +export interface AggregationsStringStatsAggregate extends AggregationsAggregateBase { + count: long; + min_length: integer; + max_length: integer; + avg_length: double; + entropy: double; + distribution?: Record; +} + +export interface AggregationsStringStatsAggregation extends AggregationsMetricAggregationBase { + show_distribution?: boolean; +} + +export interface AggregationsSumAggregation extends AggregationsFormatMetricAggregationBase { } + +export interface AggregationsSumBucketAggregation extends AggregationsPipelineAggregationBase { } + +export interface AggregationsTDigest { + compression?: integer; +} + +export interface AggregationsTDigestPercentilesAggregate extends AggregationsAggregateBase { + values: Record; +} + +export interface AggregationsTTestAggregation extends AggregationsAggregation { + a?: AggregationsTestPopulation; + b?: AggregationsTestPopulation; + type?: AggregationsTTestType; +} + +export type AggregationsTTestType = 'paired' | 'homoscedastic' | 'heteroscedastic'; + +export interface AggregationsTermsAggregate + extends AggregationsMultiBucketAggregate { + doc_count_error_upper_bound: long; + sum_other_doc_count: long; +} + +export interface AggregationsTermsAggregation extends AggregationsBucketAggregationBase { + collect_mode?: AggregationsTermsAggregationCollectMode; + exclude?: string | string[]; + execution_hint?: AggregationsTermsAggregationExecutionHint; + field?: Field; + include?: string | string[] | AggregationsTermsInclude; + min_doc_count?: integer; + missing?: AggregationsMissing; + missing_bucket?: boolean; + value_type?: string; + order?: AggregationsTermsAggregationOrder; + script?: Script; + shard_size?: integer; + show_term_doc_count_error?: boolean; + size?: integer; +} + +export type AggregationsTermsAggregationCollectMode = 'depth_first' | 'breadth_first'; + +export type AggregationsTermsAggregationExecutionHint = + | 'map' + | 'global_ordinals' + | 'global_ordinals_hash' + | 'global_ordinals_low_cardinality'; + +export type AggregationsTermsAggregationOrder = + | SearchSortOrder + | Record + | Record[]; + +export interface AggregationsTermsInclude { + num_partitions: long; + partition: long; +} + +export interface AggregationsTestPopulation { + field: Field; + script?: Script; + filter?: QueryDslQueryContainer; +} + +export interface AggregationsTopHitsAggregate extends AggregationsAggregateBase { + hits: SearchHitsMetadata>; +} + +export interface AggregationsTopHitsAggregation extends AggregationsMetricAggregationBase { + docvalue_fields?: Fields; + explain?: boolean; + from?: integer; + highlight?: SearchHighlight; + script_fields?: Record; + size?: integer; + sort?: SearchSort; + _source?: boolean | SearchSourceFilter | Fields; + stored_fields?: Fields; + track_scores?: boolean; + version?: boolean; + seq_no_primary_term?: boolean; +} + +export interface AggregationsTopMetrics { + sort: (long | double | string)[]; + metrics: Record; +} + +export interface AggregationsTopMetricsAggregate extends AggregationsAggregateBase { + top: AggregationsTopMetrics[]; +} + +export interface AggregationsTopMetricsAggregation extends AggregationsMetricAggregationBase { + metrics?: AggregationsTopMetricsValue | AggregationsTopMetricsValue[]; + size?: integer; + sort?: SearchSort; +} + +export interface AggregationsTopMetricsValue { + field: Field; +} + +export interface AggregationsValueAggregate extends AggregationsAggregateBase { + value: double; + value_as_string?: string; +} + +export interface AggregationsValueCountAggregation + extends AggregationsFormattableMetricAggregation { } + +export type AggregationsValueType = + | 'string' + | 'long' + | 'double' + | 'number' + | 'date' + | 'date_nanos' + | 'ip' + | 'numeric' + | 'geo_point' + | 'boolean'; + +export interface AggregationsVariableWidthHistogramAggregation { + field?: Field; + buckets?: integer; + shard_size?: integer; + initial_buffer?: integer; +} + +export interface AggregationsWeightedAverageAggregation extends AggregationsAggregation { + format?: string; + value?: AggregationsWeightedAverageValue; + value_type?: AggregationsValueType; + weight?: AggregationsWeightedAverageValue; +} + +export interface AggregationsWeightedAverageValue { + field?: Field; + missing?: double; + script?: Script; +} + +export interface AnalysisAsciiFoldingTokenFilter extends AnalysisTokenFilterBase { + preserve_original: boolean; +} + +export type AnalysisCharFilter = + | AnalysisHtmlStripCharFilter + | AnalysisMappingCharFilter + | AnalysisPatternReplaceTokenFilter; + +export interface AnalysisCharFilterBase { + type: string; + version?: VersionString; +} + +export interface AnalysisCharGroupTokenizer extends AnalysisTokenizerBase { + tokenize_on_chars: string[]; +} + +export interface AnalysisCommonGramsTokenFilter extends AnalysisTokenFilterBase { + common_words: string[]; + common_words_path: string; + ignore_case: boolean; + query_mode: boolean; +} + +export interface AnalysisCompoundWordTokenFilterBase extends AnalysisTokenFilterBase { + hyphenation_patterns_path: string; + max_subword_size: integer; + min_subword_size: integer; + min_word_size: integer; + only_longest_match: boolean; + word_list: string[]; + word_list_path: string; +} + +export interface AnalysisConditionTokenFilter extends AnalysisTokenFilterBase { + filter: string[]; + script: Script; +} + +export type AnalysisDelimitedPayloadEncoding = 'int' | 'float' | 'identity'; + +export interface AnalysisDelimitedPayloadTokenFilter extends AnalysisTokenFilterBase { + delimiter: string; + encoding: AnalysisDelimitedPayloadEncoding; +} + +export type AnalysisEdgeNGramSide = 'front' | 'back'; + +export interface AnalysisEdgeNGramTokenFilter extends AnalysisTokenFilterBase { + max_gram: integer; + min_gram: integer; + side: AnalysisEdgeNGramSide; +} + +export interface AnalysisEdgeNGramTokenizer extends AnalysisTokenizerBase { + custom_token_chars: string; + max_gram: integer; + min_gram: integer; + token_chars: AnalysisTokenChar[]; +} + +export interface AnalysisElisionTokenFilter extends AnalysisTokenFilterBase { + articles: string[]; + articles_case: boolean; +} + +export interface AnalysisFingerprintTokenFilter extends AnalysisTokenFilterBase { + max_output_size: integer; + separator: string; +} + +export interface AnalysisHtmlStripCharFilter extends AnalysisCharFilterBase { } + +export interface AnalysisHunspellTokenFilter extends AnalysisTokenFilterBase { + dedup: boolean; + dictionary: string; + locale: string; + longest_only: boolean; +} + +export interface AnalysisHyphenationDecompounderTokenFilter + extends AnalysisCompoundWordTokenFilterBase { } + +export interface AnalysisKStemTokenFilter extends AnalysisTokenFilterBase { } + +export type AnalysisKeepTypesMode = 'include' | 'exclude'; + +export interface AnalysisKeepTypesTokenFilter extends AnalysisTokenFilterBase { + mode: AnalysisKeepTypesMode; + types: string[]; +} + +export interface AnalysisKeepWordsTokenFilter extends AnalysisTokenFilterBase { + keep_words: string[]; + keep_words_case: boolean; + keep_words_path: string; +} + +export interface AnalysisKeywordMarkerTokenFilter extends AnalysisTokenFilterBase { + ignore_case: boolean; + keywords: string[]; + keywords_path: string; + keywords_pattern: string; +} + +export interface AnalysisKeywordTokenizer extends AnalysisTokenizerBase { + buffer_size: integer; +} + +export interface AnalysisLengthTokenFilter extends AnalysisTokenFilterBase { + max: integer; + min: integer; +} + +export interface AnalysisLetterTokenizer extends AnalysisTokenizerBase { } + +export interface AnalysisLimitTokenCountTokenFilter extends AnalysisTokenFilterBase { + consume_all_tokens: boolean; + max_token_count: integer; +} + +export interface AnalysisLowercaseTokenFilter extends AnalysisTokenFilterBase { + language: string; +} + +export interface AnalysisLowercaseTokenizer extends AnalysisTokenizerBase { } + +export interface AnalysisMappingCharFilter extends AnalysisCharFilterBase { + mappings: string[]; + mappings_path: string; +} + +export interface AnalysisMultiplexerTokenFilter extends AnalysisTokenFilterBase { + filters: string[]; + preserve_original: boolean; +} + +export interface AnalysisNGramTokenFilter extends AnalysisTokenFilterBase { + max_gram: integer; + min_gram: integer; +} + +export interface AnalysisNGramTokenizer extends AnalysisTokenizerBase { + custom_token_chars: string; + max_gram: integer; + min_gram: integer; + token_chars: AnalysisTokenChar[]; +} + +export type AnalysisNoriDecompoundMode = 'discard' | 'none' | 'mixed'; + +export interface AnalysisNoriPartOfSpeechTokenFilter extends AnalysisTokenFilterBase { + stoptags: string[]; +} + +export interface AnalysisNoriTokenizer extends AnalysisTokenizerBase { + decompound_mode: AnalysisNoriDecompoundMode; + discard_punctuation: boolean; + user_dictionary: string; + user_dictionary_rules: string[]; +} + +export interface AnalysisPathHierarchyTokenizer extends AnalysisTokenizerBase { + buffer_size: integer; + delimiter: string; + replacement: string; + reverse: boolean; + skip: integer; +} + +export interface AnalysisPatternCaptureTokenFilter extends AnalysisTokenFilterBase { + patterns: string[]; + preserve_original: boolean; +} + +export interface AnalysisPatternReplaceTokenFilter extends AnalysisTokenFilterBase { + flags: string; + pattern: string; + replacement: string; +} + +export interface AnalysisPorterStemTokenFilter extends AnalysisTokenFilterBase { } + +export interface AnalysisPredicateTokenFilter extends AnalysisTokenFilterBase { + script: Script; +} + +export interface AnalysisRemoveDuplicatesTokenFilter extends AnalysisTokenFilterBase { } + +export interface AnalysisReverseTokenFilter extends AnalysisTokenFilterBase { } + +export interface AnalysisShingleTokenFilter extends AnalysisTokenFilterBase { + filler_token: string; + max_shingle_size: integer; + min_shingle_size: integer; + output_unigrams: boolean; + output_unigrams_if_no_shingles: boolean; + token_separator: string; +} + +export type AnalysisSnowballLanguage = + | 'Armenian' + | 'Basque' + | 'Catalan' + | 'Danish' + | 'Dutch' + | 'English' + | 'Finnish' + | 'French' + | 'German' + | 'German2' + | 'Hungarian' + | 'Italian' + | 'Kp' + | 'Lovins' + | 'Norwegian' + | 'Porter' + | 'Portuguese' + | 'Romanian' + | 'Russian' + | 'Spanish' + | 'Swedish' + | 'Turkish'; + +export interface AnalysisSnowballTokenFilter extends AnalysisTokenFilterBase { + language: AnalysisSnowballLanguage; +} + +export interface AnalysisStandardTokenizer extends AnalysisTokenizerBase { + max_token_length: integer; +} + +export interface AnalysisStemmerOverrideTokenFilter extends AnalysisTokenFilterBase { + rules: string[]; + rules_path: string; +} + +export interface AnalysisStemmerTokenFilter extends AnalysisTokenFilterBase { + language: string; +} + +export interface AnalysisStopTokenFilter extends AnalysisTokenFilterBase { + ignore_case?: boolean; + remove_trailing?: boolean; + stopwords: AnalysisStopWords; + stopwords_path?: string; +} + +export type AnalysisStopWords = string | string[]; + +export type AnalysisSynonymFormat = 'solr' | 'wordnet'; + +export interface AnalysisSynonymGraphTokenFilter extends AnalysisTokenFilterBase { + expand: boolean; + format: AnalysisSynonymFormat; + lenient: boolean; + synonyms: string[]; + synonyms_path: string; + tokenizer: string; + updateable: boolean; +} + +export interface AnalysisSynonymTokenFilter extends AnalysisTokenFilterBase { + expand: boolean; + format: AnalysisSynonymFormat; + lenient: boolean; + synonyms: string[]; + synonyms_path: string; + tokenizer: string; + updateable: boolean; +} + +export type AnalysisTokenChar = + | 'letter' + | 'digit' + | 'whitespace' + | 'punctuation' + | 'symbol' + | 'custom'; + +export type AnalysisTokenFilter = + | AnalysisAsciiFoldingTokenFilter + | AnalysisCommonGramsTokenFilter + | AnalysisConditionTokenFilter + | AnalysisDelimitedPayloadTokenFilter + | AnalysisEdgeNGramTokenFilter + | AnalysisElisionTokenFilter + | AnalysisFingerprintTokenFilter + | AnalysisHunspellTokenFilter + | AnalysisHyphenationDecompounderTokenFilter + | AnalysisKeepTypesTokenFilter + | AnalysisKeepWordsTokenFilter + | AnalysisKeywordMarkerTokenFilter + | AnalysisKStemTokenFilter + | AnalysisLengthTokenFilter + | AnalysisLimitTokenCountTokenFilter + | AnalysisLowercaseTokenFilter + | AnalysisMultiplexerTokenFilter + | AnalysisNGramTokenFilter + | AnalysisNoriPartOfSpeechTokenFilter + | AnalysisPatternCaptureTokenFilter + | AnalysisPatternReplaceTokenFilter + | AnalysisPorterStemTokenFilter + | AnalysisPredicateTokenFilter + | AnalysisRemoveDuplicatesTokenFilter + | AnalysisReverseTokenFilter + | AnalysisShingleTokenFilter + | AnalysisSnowballTokenFilter + | AnalysisStemmerOverrideTokenFilter + | AnalysisStemmerTokenFilter + | AnalysisStopTokenFilter + | AnalysisSynonymGraphTokenFilter + | AnalysisSynonymTokenFilter + | AnalysisTrimTokenFilter + | AnalysisTruncateTokenFilter + | AnalysisUniqueTokenFilter + | AnalysisUppercaseTokenFilter + | AnalysisWordDelimiterGraphTokenFilter + | AnalysisWordDelimiterTokenFilter; + +export interface AnalysisTokenFilterBase { + type: string; + version?: VersionString; +} + +export type AnalysisTokenizer = + | AnalysisCharGroupTokenizer + | AnalysisEdgeNGramTokenizer + | AnalysisKeywordTokenizer + | AnalysisLetterTokenizer + | AnalysisLowercaseTokenizer + | AnalysisNGramTokenizer + | AnalysisNoriTokenizer + | AnalysisPathHierarchyTokenizer + | AnalysisStandardTokenizer + | AnalysisUaxEmailUrlTokenizer + | AnalysisWhitespaceTokenizer; + +export interface AnalysisTokenizerBase { + type: string; + version?: VersionString; +} + +export interface AnalysisTrimTokenFilter extends AnalysisTokenFilterBase { } + +export interface AnalysisTruncateTokenFilter extends AnalysisTokenFilterBase { + length: integer; +} + +export interface AnalysisUaxEmailUrlTokenizer extends AnalysisTokenizerBase { + max_token_length: integer; +} + +export interface AnalysisUniqueTokenFilter extends AnalysisTokenFilterBase { + only_on_same_position: boolean; +} + +export interface AnalysisUppercaseTokenFilter extends AnalysisTokenFilterBase { } + +export interface AnalysisWhitespaceTokenizer extends AnalysisTokenizerBase { + max_token_length: integer; +} + +export interface AnalysisWordDelimiterGraphTokenFilter extends AnalysisTokenFilterBase { + adjust_offsets: boolean; + catenate_all: boolean; + catenate_numbers: boolean; + catenate_words: boolean; + generate_number_parts: boolean; + generate_word_parts: boolean; + preserve_original: boolean; + protected_words: string[]; + protected_words_path: string; + split_on_case_change: boolean; + split_on_numerics: boolean; + stem_english_possessive: boolean; + type_table: string[]; + type_table_path: string; +} + +export interface AnalysisWordDelimiterTokenFilter extends AnalysisTokenFilterBase { + catenate_all: boolean; + catenate_numbers: boolean; + catenate_words: boolean; + generate_number_parts: boolean; + generate_word_parts: boolean; + preserve_original: boolean; + protected_words: string[]; + protected_words_path: string; + split_on_case_change: boolean; + split_on_numerics: boolean; + stem_english_possessive: boolean; + type_table: string[]; + type_table_path: string; +} + +export interface MappingAllField { + analyzer: string; + enabled: boolean; + omit_norms: boolean; + search_analyzer: string; + similarity: string; + store: boolean; + store_term_vector_offsets: boolean; + store_term_vector_payloads: boolean; + store_term_vector_positions: boolean; + store_term_vectors: boolean; +} + +export interface MappingBinaryProperty extends MappingDocValuesPropertyBase { + type: 'binary'; +} + +export interface MappingBooleanProperty extends MappingDocValuesPropertyBase { + boost?: double; + fielddata?: IndicesNumericFielddata; + index?: boolean; + null_value?: boolean; + type: 'boolean'; +} + +export interface MappingCompletionProperty extends MappingDocValuesPropertyBase { + analyzer?: string; + contexts?: MappingSuggestContext[]; + max_input_length?: integer; + preserve_position_increments?: boolean; + preserve_separators?: boolean; + search_analyzer?: string; + type: 'completion'; +} + +export interface MappingConstantKeywordProperty extends MappingPropertyBase { + value?: any; + type: 'constant_keyword'; +} + +export type MappingCoreProperty = + | MappingObjectProperty + | MappingNestedProperty + | MappingSearchAsYouTypeProperty + | MappingTextProperty + | MappingDocValuesProperty; + +export interface MappingCorePropertyBase extends MappingPropertyBase { + copy_to?: Fields; + similarity?: string; + store?: boolean; +} + +export interface MappingDateNanosProperty extends MappingDocValuesPropertyBase { + boost?: double; + format?: string; + ignore_malformed?: boolean; + index?: boolean; + null_value?: DateString; + precision_step?: integer; + type: 'date_nanos'; +} + +export interface MappingDateProperty extends MappingDocValuesPropertyBase { + boost?: double; + fielddata?: IndicesNumericFielddata; + format?: string; + ignore_malformed?: boolean; + index?: boolean; + null_value?: DateString; + precision_step?: integer; + type: 'date'; +} + +export interface MappingDateRangeProperty extends MappingRangePropertyBase { + format?: string; + type: 'date_range'; +} + +export type MappingDocValuesProperty = + | MappingBinaryProperty + | MappingBooleanProperty + | MappingDateProperty + | MappingDateNanosProperty + | MappingKeywordProperty + | MappingNumberProperty + | MappingRangeProperty + | MappingGeoPointProperty + | MappingGeoShapeProperty + | MappingCompletionProperty + | MappingGenericProperty + | MappingIpProperty + | MappingMurmur3HashProperty + | MappingShapeProperty + | MappingTokenCountProperty + | MappingVersionProperty + | MappingWildcardProperty + | MappingPointProperty; + +export interface MappingDocValuesPropertyBase extends MappingCorePropertyBase { + doc_values?: boolean; +} + +export interface MappingDoubleRangeProperty extends MappingRangePropertyBase { + type: 'double_range'; +} + +export type MappingDynamicMapping = 'strict' | 'runtime' | 'true' | 'false'; + +export interface MappingDynamicTemplate { + mapping?: MappingPropertyBase; + match?: string; + match_mapping_type?: string; + match_pattern?: MappingMatchType; + path_match?: string; + path_unmatch?: string; + unmatch?: string; +} + +export interface MappingFieldAliasProperty extends MappingPropertyBase { + path?: Field; + type: 'alias'; +} + +export interface MappingFieldMapping { } + +export interface MappingFieldNamesField { + enabled: boolean; +} + +export type MappingFieldType = + | 'none' + | 'geo_point' + | 'geo_shape' + | 'ip' + | 'binary' + | 'keyword' + | 'text' + | 'search_as_you_type' + | 'date' + | 'date_nanos' + | 'boolean' + | 'completion' + | 'nested' + | 'object' + | 'murmur3' + | 'token_count' + | 'percolator' + | 'integer' + | 'long' + | 'short' + | 'byte' + | 'float' + | 'half_float' + | 'scaled_float' + | 'double' + | 'integer_range' + | 'float_range' + | 'long_range' + | 'double_range' + | 'date_range' + | 'ip_range' + | 'alias' + | 'join' + | 'rank_feature' + | 'rank_features' + | 'flattened' + | 'shape' + | 'histogram' + | 'constant_keyword'; + +export interface MappingFlattenedProperty extends MappingPropertyBase { + boost?: double; + depth_limit?: integer; + doc_values?: boolean; + eager_global_ordinals?: boolean; + index?: boolean; + index_options?: MappingIndexOptions; + null_value?: string; + similarity?: string; + split_queries_on_whitespace?: boolean; + type: 'flattened'; +} + +export interface MappingFloatRangeProperty extends MappingRangePropertyBase { + type: 'float_range'; +} + +export interface MappingGenericProperty extends MappingDocValuesPropertyBase { + analyzer: string; + boost: double; + fielddata: IndicesStringFielddata; + ignore_malformed: boolean; + index: boolean; + index_options: MappingIndexOptions; + norms: boolean; + null_value: string; + position_increment_gap: integer; + search_analyzer: string; + term_vector: MappingTermVectorOption; + type: string; +} + +export type MappingGeoOrientation = + | 'right' + | 'RIGHT' + | 'counterclockwise' + | 'COUNTERCLOCKWISE' + | 'ccw' + | 'CCW' + | 'left' + | 'LEFT' + | 'clockwise' + | 'CLOCKWISE' + | 'cw' + | 'CW'; + +export interface MappingGeoPointProperty extends MappingDocValuesPropertyBase { + ignore_malformed?: boolean; + ignore_z_value?: boolean; + null_value?: QueryDslGeoLocation; + type: 'geo_point'; +} + +export interface MappingGeoShapeProperty extends MappingDocValuesPropertyBase { + coerce?: boolean; + ignore_malformed?: boolean; + ignore_z_value?: boolean; + orientation?: MappingGeoOrientation; + strategy?: MappingGeoStrategy; + type: 'geo_shape'; +} + +export type MappingGeoStrategy = 'recursive' | 'term'; + +export interface MappingHistogramProperty extends MappingPropertyBase { + ignore_malformed?: boolean; + type: 'histogram'; +} + +export interface MappingIndexField { + enabled: boolean; +} + +export type MappingIndexOptions = 'docs' | 'freqs' | 'positions' | 'offsets'; + +export interface MappingIntegerRangeProperty extends MappingRangePropertyBase { + type: 'integer_range'; +} + +export interface MappingIpProperty extends MappingDocValuesPropertyBase { + boost?: double; + index?: boolean; + null_value?: string; + type: 'ip'; +} + +export interface MappingIpRangeProperty extends MappingRangePropertyBase { + type: 'ip_range'; +} + +export interface MappingJoinProperty extends MappingPropertyBase { + relations?: Record; + type: 'join'; +} + +export interface MappingKeywordProperty extends MappingDocValuesPropertyBase { + boost?: double; + eager_global_ordinals?: boolean; + index?: boolean; + index_options?: MappingIndexOptions; + normalizer?: string; + norms?: boolean; + null_value?: string; + split_queries_on_whitespace?: boolean; + type: 'keyword'; +} + +export interface MappingLongRangeProperty extends MappingRangePropertyBase { + type: 'long_range'; +} + +export type MappingMatchType = 'simple' | 'regex'; + +export interface MappingMurmur3HashProperty extends MappingDocValuesPropertyBase { + type: 'murmur3'; +} + +export interface MappingNestedProperty extends MappingCorePropertyBase { + enabled?: boolean; + include_in_parent?: boolean; + include_in_root?: boolean; + type: 'nested'; +} + +export interface MappingNumberProperty extends MappingDocValuesPropertyBase { + boost?: double; + coerce?: boolean; + fielddata?: IndicesNumericFielddata; + ignore_malformed?: boolean; + index?: boolean; + null_value?: double; + scaling_factor?: double; + type: MappingNumberType; +} + +export type MappingNumberType = + | 'float' + | 'half_float' + | 'scaled_float' + | 'double' + | 'integer' + | 'long' + | 'short' + | 'byte' + | 'unsigned_long'; + +export interface MappingObjectProperty extends MappingCorePropertyBase { + enabled?: boolean; + type?: 'object'; +} + +export interface MappingPercolatorProperty extends MappingPropertyBase { + type: 'percolator'; +} + +export interface MappingPointProperty extends MappingDocValuesPropertyBase { + ignore_malformed?: boolean; + ignore_z_value?: boolean; + null_value?: string; + type: 'point'; +} + +export type MappingProperty = + | MappingFlattenedProperty + | MappingJoinProperty + | MappingPercolatorProperty + | MappingRankFeatureProperty + | MappingRankFeaturesProperty + | MappingConstantKeywordProperty + | MappingFieldAliasProperty + | MappingHistogramProperty + | MappingCoreProperty; + +export interface MappingPropertyBase { + local_metadata?: Metadata; + meta?: Record; + name?: PropertyName; + properties?: Record; + ignore_above?: integer; + dynamic?: boolean | MappingDynamicMapping; + fields?: Record; +} + +export type MappingRangeProperty = + | MappingLongRangeProperty + | MappingIpRangeProperty + | MappingIntegerRangeProperty + | MappingFloatRangeProperty + | MappingDoubleRangeProperty + | MappingDateRangeProperty; + +export interface MappingRangePropertyBase extends MappingDocValuesPropertyBase { + boost?: double; + coerce?: boolean; + index?: boolean; +} + +export interface MappingRankFeatureProperty extends MappingPropertyBase { + positive_score_impact?: boolean; + type: 'rank_feature'; +} + +export interface MappingRankFeaturesProperty extends MappingPropertyBase { + type: 'rank_features'; +} + +export interface MappingRoutingField { + required: boolean; +} + +export interface MappingRuntimeField { + format?: string; + script?: Script; + type: MappingRuntimeFieldType; +} + +export type MappingRuntimeFieldType = + | 'boolean' + | 'date' + | 'double' + | 'geo_point' + | 'ip' + | 'keyword' + | 'long'; + +export type MappingRuntimeFields = Record; + +export interface MappingSearchAsYouTypeProperty extends MappingCorePropertyBase { + analyzer?: string; + index?: boolean; + index_options?: MappingIndexOptions; + max_shingle_size?: integer; + norms?: boolean; + search_analyzer?: string; + search_quote_analyzer?: string; + term_vector?: MappingTermVectorOption; + type: 'search_as_you_type'; +} + +export type MappingShapeOrientation = + | 'right' + | 'counterclockwise' + | 'ccw' + | 'left' + | 'clockwise' + | 'cw'; + +export interface MappingShapeProperty extends MappingDocValuesPropertyBase { + coerce?: boolean; + ignore_malformed?: boolean; + ignore_z_value?: boolean; + orientation?: MappingShapeOrientation; + type: 'shape'; +} + +export interface MappingSizeField { + enabled: boolean; +} + +export interface MappingSourceField { + compress?: boolean; + compress_threshold?: string; + enabled: boolean; + excludes?: string[]; + includes?: string[]; +} + +export interface MappingSuggestContext { + name: Name; + path?: Field; + type: string; + precision?: integer; +} + +export type MappingTermVectorOption = + | 'no' + | 'yes' + | 'with_offsets' + | 'with_positions' + | 'with_positions_offsets' + | 'with_positions_offsets_payloads'; + +export interface MappingTextIndexPrefixes { + max_chars: integer; + min_chars: integer; +} + +export interface MappingTextProperty extends MappingCorePropertyBase { + analyzer?: string; + boost?: double; + eager_global_ordinals?: boolean; + fielddata?: boolean; + fielddata_frequency_filter?: IndicesFielddataFrequencyFilter; + index?: boolean; + index_options?: MappingIndexOptions; + index_phrases?: boolean; + index_prefixes?: MappingTextIndexPrefixes; + norms?: boolean; + position_increment_gap?: integer; + search_analyzer?: string; + search_quote_analyzer?: string; + term_vector?: MappingTermVectorOption; + type: 'text'; +} + +export interface MappingTokenCountProperty extends MappingDocValuesPropertyBase { + analyzer?: string; + boost?: double; + index?: boolean; + null_value?: double; + enable_position_increments?: boolean; + type: 'token_count'; +} + +export interface MappingTypeMapping { + all_field?: MappingAllField; + date_detection?: boolean; + dynamic?: boolean | MappingDynamicMapping; + dynamic_date_formats?: string[]; + dynamic_templates?: + | Record + | Record[]; + _field_names?: MappingFieldNamesField; + index_field?: MappingIndexField; + _meta?: Metadata; + numeric_detection?: boolean; + properties?: Record; + _routing?: MappingRoutingField; + _size?: MappingSizeField; + _source?: MappingSourceField; + runtime?: Record; +} + +export interface MappingVersionProperty extends MappingDocValuesPropertyBase { + type: 'version'; +} + +export interface MappingWildcardProperty extends MappingDocValuesPropertyBase { + type: 'wildcard'; +} + +export interface QueryDslBoolQuery extends QueryDslQueryBase { + filter?: QueryDslQueryContainer | QueryDslQueryContainer[]; + minimum_should_match?: MinimumShouldMatch; + must?: QueryDslQueryContainer | QueryDslQueryContainer[]; + must_not?: QueryDslQueryContainer | QueryDslQueryContainer[]; + should?: QueryDslQueryContainer | QueryDslQueryContainer[]; +} + +export interface QueryDslBoostingQuery extends QueryDslQueryBase { + negative_boost?: double; + negative?: QueryDslQueryContainer; + positive?: QueryDslQueryContainer; +} + +export interface QueryDslBoundingBox { + bottom_right?: QueryDslGeoLocation; + top_left?: QueryDslGeoLocation; + wkt?: string; +} + +export type QueryDslChildScoreMode = 'none' | 'avg' | 'sum' | 'max' | 'min'; + +export interface QueryDslCombinedFieldsQuery { + query: string; + fields: Field[]; + operator?: string; +} + +export interface QueryDslCommonTermsQuery extends QueryDslQueryBase { + analyzer?: string; + cutoff_frequency?: double; + high_freq_operator?: QueryDslOperator; + low_freq_operator?: QueryDslOperator; + minimum_should_match?: MinimumShouldMatch; + query?: string; +} + +export interface QueryDslConstantScoreQuery extends QueryDslQueryBase { + filter?: QueryDslQueryContainer; +} + +export interface QueryDslDateDecayFunctionKeys extends QueryDslDecayFunctionBase { } +export type QueryDslDateDecayFunction = + | QueryDslDateDecayFunctionKeys + | { [property: string]: QueryDslDecayPlacement }; + +export type QueryDslDecayFunction = + | QueryDslDateDecayFunction + | QueryDslNumericDecayFunction + | QueryDslGeoDecayFunction; + +export interface QueryDslDecayFunctionBase extends QueryDslScoreFunctionBase { + multi_value_mode?: QueryDslMultiValueMode; +} + +export interface QueryDslDecayPlacement { + decay?: double; + offset?: TScale; + scale?: TScale; + origin?: TOrigin; +} + +export interface QueryDslDisMaxQuery extends QueryDslQueryBase { + queries?: QueryDslQueryContainer[]; + tie_breaker?: double; +} + +export interface QueryDslDistanceFeatureQuery extends QueryDslQueryBase { + origin?: number[] | QueryDslGeoCoordinate | DateMath; + pivot?: Distance | Time; + field?: Field; +} + +export interface QueryDslExistsQuery extends QueryDslQueryBase { + field?: Field; +} + +export interface QueryDslFieldLookup { + id?: Id; + index?: IndexName; + path?: Field; + routing?: Routing; +} + +export type QueryDslFieldValueFactorModifier = + | 'none' + | 'log' + | 'log1p' + | 'log2p' + | 'ln' + | 'ln1p' + | 'ln2p' + | 'square' + | 'sqrt' + | 'reciprocal'; + +export interface QueryDslFieldValueFactorScoreFunction extends QueryDslScoreFunctionBase { + field: Field; + factor?: double; + missing?: double; + modifier?: QueryDslFieldValueFactorModifier; +} + +export type QueryDslFunctionBoostMode = 'multiply' | 'replace' | 'sum' | 'avg' | 'max' | 'min'; + +export interface QueryDslFunctionScoreContainer { + exp?: QueryDslDecayFunction; + gauss?: QueryDslDecayFunction; + linear?: QueryDslDecayFunction; + field_value_factor?: QueryDslFieldValueFactorScoreFunction; + random_score?: QueryDslRandomScoreFunction; + script_score?: QueryDslScriptScoreFunction; + filter?: QueryDslQueryContainer; + weight?: double; +} + +export type QueryDslFunctionScoreMode = 'multiply' | 'sum' | 'avg' | 'first' | 'max' | 'min'; + +export interface QueryDslFunctionScoreQuery extends QueryDslQueryBase { + boost_mode?: QueryDslFunctionBoostMode; + functions?: QueryDslFunctionScoreContainer[]; + max_boost?: double; + min_score?: double; + query?: QueryDslQueryContainer; + score_mode?: QueryDslFunctionScoreMode; +} + +export interface QueryDslFuzzyQuery extends QueryDslQueryBase { + max_expansions?: integer; + prefix_length?: integer; + rewrite?: MultiTermQueryRewrite; + transpositions?: boolean; + fuzziness?: Fuzziness; + value: any; +} + +export interface QueryDslGeoBoundingBoxQuery extends QueryDslQueryBase { + bounding_box?: QueryDslBoundingBox; + type?: QueryDslGeoExecution; + validation_method?: QueryDslGeoValidationMethod; + top_left?: LatLon; + bottom_right?: LatLon; +} + +export type QueryDslGeoCoordinate = string | double[] | QueryDslThreeDimensionalPoint; + +export interface QueryDslGeoDecayFunctionKeys extends QueryDslDecayFunctionBase { } +export type QueryDslGeoDecayFunction = + | QueryDslGeoDecayFunctionKeys + | { [property: string]: QueryDslDecayPlacement }; + +export interface QueryDslGeoDistanceQueryKeys extends QueryDslQueryBase { + distance?: Distance; + distance_type?: GeoDistanceType; + validation_method?: QueryDslGeoValidationMethod; +} +export type QueryDslGeoDistanceQuery = + | QueryDslGeoDistanceQueryKeys + | { [property: string]: QueryDslGeoLocation }; + +export type QueryDslGeoExecution = 'memory' | 'indexed'; + +export type QueryDslGeoLocation = string | double[] | QueryDslTwoDimensionalPoint; + +export interface QueryDslGeoPolygonQuery extends QueryDslQueryBase { + points?: QueryDslGeoLocation[]; + validation_method?: QueryDslGeoValidationMethod; +} + +export interface QueryDslGeoShape { + type?: string; +} + +export interface QueryDslGeoShapeQuery extends QueryDslQueryBase { + ignore_unmapped?: boolean; + indexed_shape?: QueryDslFieldLookup; + relation?: GeoShapeRelation; + shape?: QueryDslGeoShape; +} + +export type QueryDslGeoValidationMethod = 'coerce' | 'ignore_malformed' | 'strict'; + +export interface QueryDslHasChildQuery extends QueryDslQueryBase { + ignore_unmapped?: boolean; + inner_hits?: SearchInnerHits; + max_children?: integer; + min_children?: integer; + query?: QueryDslQueryContainer; + score_mode?: QueryDslChildScoreMode; + type?: RelationName; +} + +export interface QueryDslHasParentQuery extends QueryDslQueryBase { + ignore_unmapped?: boolean; + inner_hits?: SearchInnerHits; + parent_type?: RelationName; + query?: QueryDslQueryContainer; + score?: boolean; +} + +export interface QueryDslIdsQuery extends QueryDslQueryBase { + values?: Id[] | long[]; +} + +export interface QueryDslIntervalsAllOf { + intervals?: QueryDslIntervalsContainer[]; + max_gaps?: integer; + ordered?: boolean; + filter?: QueryDslIntervalsFilter; +} + +export interface QueryDslIntervalsAnyOf { + intervals?: QueryDslIntervalsContainer[]; + filter?: QueryDslIntervalsFilter; +} + +export interface QueryDslIntervalsContainer { + all_of?: QueryDslIntervalsAllOf; + any_of?: QueryDslIntervalsAnyOf; + fuzzy?: QueryDslIntervalsFuzzy; + match?: QueryDslIntervalsMatch; + prefix?: QueryDslIntervalsPrefix; + wildcard?: QueryDslIntervalsWildcard; +} + +export interface QueryDslIntervalsFilter { + after?: QueryDslIntervalsContainer; + before?: QueryDslIntervalsContainer; + contained_by?: QueryDslIntervalsContainer; + containing?: QueryDslIntervalsContainer; + not_contained_by?: QueryDslIntervalsContainer; + not_containing?: QueryDslIntervalsContainer; + not_overlapping?: QueryDslIntervalsContainer; + overlapping?: QueryDslIntervalsContainer; + script?: Script; +} + +export interface QueryDslIntervalsFuzzy { + analyzer?: string; + fuzziness?: Fuzziness; + prefix_length?: integer; + term?: string; + transpositions?: boolean; + use_field?: Field; +} + +export interface QueryDslIntervalsMatch { + analyzer?: string; + max_gaps?: integer; + ordered?: boolean; + query?: string; + use_field?: Field; + filter?: QueryDslIntervalsFilter; +} + +export interface QueryDslIntervalsPrefix { + analyzer?: string; + prefix?: string; + use_field?: Field; +} + +export interface QueryDslIntervalsQuery extends QueryDslQueryBase { + all_of?: QueryDslIntervalsAllOf; + any_of?: QueryDslIntervalsAnyOf; + fuzzy?: QueryDslIntervalsFuzzy; + match?: QueryDslIntervalsMatch; + prefix?: QueryDslIntervalsPrefix; + wildcard?: QueryDslIntervalsWildcard; +} + +export interface QueryDslIntervalsWildcard { + analyzer?: string; + pattern?: string; + use_field?: Field; +} + +export type QueryDslLike = string | QueryDslLikeDocument; + +export interface QueryDslLikeDocument { + doc?: any; + fields?: Fields; + _id?: Id | number; + _type?: Type; + _index?: IndexName; + per_field_analyzer?: Record; + routing?: Routing; +} + +export interface QueryDslMatchAllQuery extends QueryDslQueryBase { + norm_field?: string; +} + +export interface QueryDslMatchBoolPrefixQuery extends QueryDslQueryBase { + analyzer?: string; + fuzziness?: Fuzziness; + fuzzy_rewrite?: MultiTermQueryRewrite; + fuzzy_transpositions?: boolean; + max_expansions?: integer; + minimum_should_match?: MinimumShouldMatch; + operator?: QueryDslOperator; + prefix_length?: integer; + query?: string; +} + +export interface QueryDslMatchNoneQuery extends QueryDslQueryBase { } + +export interface QueryDslMatchPhrasePrefixQuery extends QueryDslQueryBase { + analyzer?: string; + max_expansions?: integer; + query?: string; + slop?: integer; + zero_terms_query?: QueryDslZeroTermsQuery; +} + +export interface QueryDslMatchPhraseQuery extends QueryDslQueryBase { + analyzer?: string; + query?: string; + slop?: integer; +} + +export interface QueryDslMatchQuery extends QueryDslQueryBase { + analyzer?: string; + auto_generate_synonyms_phrase_query?: boolean; + cutoff_frequency?: double; + fuzziness?: Fuzziness; + fuzzy_rewrite?: MultiTermQueryRewrite; + fuzzy_transpositions?: boolean; + lenient?: boolean; + max_expansions?: integer; + minimum_should_match?: MinimumShouldMatch; + operator?: QueryDslOperator; + prefix_length?: integer; + query?: string | float | boolean; + zero_terms_query?: QueryDslZeroTermsQuery; +} + +export interface QueryDslMoreLikeThisQuery extends QueryDslQueryBase { + analyzer?: string; + boost_terms?: double; + fields?: Fields; + include?: boolean; + like?: QueryDslLike | QueryDslLike[]; + max_doc_freq?: integer; + max_query_terms?: integer; + max_word_length?: integer; + min_doc_freq?: integer; + minimum_should_match?: MinimumShouldMatch; + min_term_freq?: integer; + min_word_length?: integer; + per_field_analyzer?: Record; + routing?: Routing; + stop_words?: AnalysisStopWords; + unlike?: QueryDslLike | QueryDslLike[]; + version?: VersionNumber; + version_type?: VersionType; +} + +export interface QueryDslMultiMatchQuery extends QueryDslQueryBase { + analyzer?: string; + auto_generate_synonyms_phrase_query?: boolean; + cutoff_frequency?: double; + fields?: Fields; + fuzziness?: Fuzziness; + fuzzy_rewrite?: MultiTermQueryRewrite; + fuzzy_transpositions?: boolean; + lenient?: boolean; + max_expansions?: integer; + minimum_should_match?: MinimumShouldMatch; + operator?: QueryDslOperator; + prefix_length?: integer; + query?: string; + slop?: integer; + tie_breaker?: double; + type?: QueryDslTextQueryType; + use_dis_max?: boolean; + zero_terms_query?: QueryDslZeroTermsQuery; +} + +export type QueryDslMultiValueMode = 'min' | 'max' | 'avg' | 'sum'; + +export interface QueryDslNamedQueryKeys { + boost?: float; + _name?: string; + ignore_unmapped?: boolean; +} +export type QueryDslNamedQuery = + | QueryDslNamedQueryKeys + | { [property: string]: TQuery }; + +export interface QueryDslNestedQuery extends QueryDslQueryBase { + ignore_unmapped?: boolean; + inner_hits?: SearchInnerHits; + path?: Field; + query?: QueryDslQueryContainer; + score_mode?: QueryDslNestedScoreMode; +} + +export type QueryDslNestedScoreMode = 'avg' | 'sum' | 'min' | 'max' | 'none'; + +export interface QueryDslNumericDecayFunctionKeys extends QueryDslDecayFunctionBase { } +export type QueryDslNumericDecayFunction = + | QueryDslNumericDecayFunctionKeys + | { [property: string]: QueryDslDecayPlacement }; + +export type QueryDslOperator = 'and' | 'or' | 'AND' | 'OR'; + +export interface QueryDslParentIdQuery extends QueryDslQueryBase { + id?: Id; + ignore_unmapped?: boolean; + type?: RelationName; +} + +export interface QueryDslPercolateQuery extends QueryDslQueryBase { + document?: any; + documents?: any[]; + field?: Field; + id?: Id; + index?: IndexName; + preference?: string; + routing?: Routing; + version?: VersionNumber; +} + +export interface QueryDslPinnedQuery extends QueryDslQueryBase { + ids?: Id[] | long[]; + organic?: QueryDslQueryContainer; +} + +export interface QueryDslPrefixQuery extends QueryDslQueryBase { + rewrite?: MultiTermQueryRewrite; + value: string; +} + +export interface QueryDslQueryBase { + boost?: float; + _name?: string; +} + +export interface QueryDslQueryContainer { + bool?: QueryDslBoolQuery; + boosting?: QueryDslBoostingQuery; + common?: Record; + combined_fields?: QueryDslCombinedFieldsQuery; + constant_score?: QueryDslConstantScoreQuery; + dis_max?: QueryDslDisMaxQuery; + distance_feature?: + | Record + | QueryDslDistanceFeatureQuery; + exists?: QueryDslExistsQuery; + function_score?: QueryDslFunctionScoreQuery; + fuzzy?: Record; + geo_bounding_box?: QueryDslNamedQuery; + geo_distance?: QueryDslGeoDistanceQuery; + geo_polygon?: QueryDslNamedQuery; + geo_shape?: QueryDslNamedQuery; + has_child?: QueryDslHasChildQuery; + has_parent?: QueryDslHasParentQuery; + ids?: QueryDslIdsQuery; + intervals?: QueryDslNamedQuery; + match?: QueryDslNamedQuery; + match_all?: QueryDslMatchAllQuery; + match_bool_prefix?: QueryDslNamedQuery; + match_none?: QueryDslMatchNoneQuery; + match_phrase?: QueryDslNamedQuery; + match_phrase_prefix?: QueryDslNamedQuery; + more_like_this?: QueryDslMoreLikeThisQuery; + multi_match?: QueryDslMultiMatchQuery; + nested?: QueryDslNestedQuery; + parent_id?: QueryDslParentIdQuery; + percolate?: QueryDslPercolateQuery; + pinned?: QueryDslPinnedQuery; + prefix?: QueryDslNamedQuery; + query_string?: QueryDslQueryStringQuery; + range?: QueryDslNamedQuery; + rank_feature?: QueryDslNamedQuery; + regexp?: QueryDslNamedQuery; + script?: QueryDslScriptQuery; + script_score?: QueryDslScriptScoreQuery; + shape?: QueryDslNamedQuery; + simple_query_string?: QueryDslSimpleQueryStringQuery; + span_containing?: QueryDslSpanContainingQuery; + field_masking_span?: QueryDslSpanFieldMaskingQuery; + span_first?: QueryDslSpanFirstQuery; + span_multi?: QueryDslSpanMultiTermQuery; + span_near?: QueryDslSpanNearQuery; + span_not?: QueryDslSpanNotQuery; + span_or?: QueryDslSpanOrQuery; + span_term?: QueryDslNamedQuery; + span_within?: QueryDslSpanWithinQuery; + template?: QueryDslQueryTemplate; + term?: QueryDslNamedQuery; + terms?: QueryDslNamedQuery; + terms_set?: QueryDslNamedQuery; + wildcard?: QueryDslNamedQuery; + type?: QueryDslTypeQuery; +} + +export interface QueryDslQueryStringQuery extends QueryDslQueryBase { + allow_leading_wildcard?: boolean; + analyzer?: string; + analyze_wildcard?: boolean; + auto_generate_synonyms_phrase_query?: boolean; + default_field?: Field; + default_operator?: QueryDslOperator; + enable_position_increments?: boolean; + escape?: boolean; + fields?: Fields; + fuzziness?: Fuzziness; + fuzzy_max_expansions?: integer; + fuzzy_prefix_length?: integer; + fuzzy_rewrite?: MultiTermQueryRewrite; + fuzzy_transpositions?: boolean; + lenient?: boolean; + max_determinized_states?: integer; + minimum_should_match?: MinimumShouldMatch; + phrase_slop?: double; + query?: string; + quote_analyzer?: string; + quote_field_suffix?: string; + rewrite?: MultiTermQueryRewrite; + tie_breaker?: double; + time_zone?: string; + type?: QueryDslTextQueryType; +} + +export interface QueryDslQueryTemplate { + source: string; +} + +export interface QueryDslRandomScoreFunction extends QueryDslScoreFunctionBase { + field?: Field; + seed?: long | string; +} + +export interface QueryDslRangeQuery extends QueryDslQueryBase { + gt?: double | DateMath; + gte?: double | DateMath; + lt?: double | DateMath; + lte?: double | DateMath; + relation?: QueryDslRangeRelation; + time_zone?: string; + from?: double | DateMath; + to?: double | DateMath; +} + +export type QueryDslRangeRelation = 'within' | 'contains' | 'intersects'; + +export interface QueryDslRankFeatureFunction { } + +export interface QueryDslRankFeatureQuery extends QueryDslQueryBase { + function?: QueryDslRankFeatureFunction; +} + +export interface QueryDslRegexpQuery extends QueryDslQueryBase { + flags?: string; + max_determinized_states?: integer; + value?: string; +} + +export interface QueryDslScoreFunctionBase { + filter?: QueryDslQueryContainer; + weight?: double; +} + +export interface QueryDslScriptQuery extends QueryDslQueryBase { + script?: Script; +} + +export interface QueryDslScriptScoreFunction extends QueryDslScoreFunctionBase { + script: Script; +} + +export interface QueryDslScriptScoreQuery extends QueryDslQueryBase { + query?: QueryDslQueryContainer; + script?: Script; +} + +export interface QueryDslShapeQuery extends QueryDslQueryBase { + ignore_unmapped?: boolean; + indexed_shape?: QueryDslFieldLookup; + relation?: ShapeRelation; + shape?: QueryDslGeoShape; +} + +export type QueryDslSimpleQueryStringFlags = + | 'NONE' + | 'AND' + | 'OR' + | 'NOT' + | 'PREFIX' + | 'PHRASE' + | 'PRECEDENCE' + | 'ESCAPE' + | 'WHITESPACE' + | 'FUZZY' + | 'NEAR' + | 'SLOP' + | 'ALL'; + +export interface QueryDslSimpleQueryStringQuery extends QueryDslQueryBase { + analyzer?: string; + analyze_wildcard?: boolean; + auto_generate_synonyms_phrase_query?: boolean; + default_operator?: QueryDslOperator; + fields?: Fields; + flags?: QueryDslSimpleQueryStringFlags | string; + fuzzy_max_expansions?: integer; + fuzzy_prefix_length?: integer; + fuzzy_transpositions?: boolean; + lenient?: boolean; + minimum_should_match?: MinimumShouldMatch; + query?: string; + quote_field_suffix?: string; +} + +export interface QueryDslSpanContainingQuery extends QueryDslQueryBase { + big?: QueryDslSpanQuery; + little?: QueryDslSpanQuery; +} + +export interface QueryDslSpanFieldMaskingQuery extends QueryDslQueryBase { + field?: Field; + query?: QueryDslSpanQuery; +} + +export interface QueryDslSpanFirstQuery extends QueryDslQueryBase { + end?: integer; + match?: QueryDslSpanQuery; +} + +export interface QueryDslSpanGapQuery extends QueryDslQueryBase { + field?: Field; + width?: integer; +} + +export interface QueryDslSpanMultiTermQuery extends QueryDslQueryBase { + match?: QueryDslQueryContainer; +} + +export interface QueryDslSpanNearQuery extends QueryDslQueryBase { + clauses?: QueryDslSpanQuery[]; + in_order?: boolean; + slop?: integer; +} + +export interface QueryDslSpanNotQuery extends QueryDslQueryBase { + dist?: integer; + exclude?: QueryDslSpanQuery; + include?: QueryDslSpanQuery; + post?: integer; + pre?: integer; +} + +export interface QueryDslSpanOrQuery extends QueryDslQueryBase { + clauses?: QueryDslSpanQuery[]; +} + +export interface QueryDslSpanQuery extends QueryDslQueryBase { + span_containing?: QueryDslNamedQuery; + field_masking_span?: QueryDslNamedQuery; + span_first?: QueryDslNamedQuery; + span_gap?: QueryDslNamedQuery; + span_multi?: QueryDslSpanMultiTermQuery; + span_near?: QueryDslNamedQuery; + span_not?: QueryDslNamedQuery; + span_or?: QueryDslNamedQuery; + span_term?: QueryDslNamedQuery; + span_within?: QueryDslNamedQuery; +} + +export interface QueryDslSpanTermQuery extends QueryDslQueryBase { + value: string; +} + +export interface QueryDslSpanWithinQuery extends QueryDslQueryBase { + big?: QueryDslSpanQuery; + little?: QueryDslSpanQuery; +} + +export interface QueryDslTermQuery extends QueryDslQueryBase { + value?: string | float | boolean; +} + +export interface QueryDslTermsQuery extends QueryDslQueryBase { + terms?: string[]; + index?: IndexName; + id?: Id; + path?: string; + routing?: Routing; +} + +export interface QueryDslTermsSetQuery extends QueryDslQueryBase { + minimum_should_match_field?: Field; + minimum_should_match_script?: Script; + terms?: string[]; +} + +export type QueryDslTextQueryType = + | 'best_fields' + | 'most_fields' + | 'cross_fields' + | 'phrase' + | 'phrase_prefix' + | 'bool_prefix'; + +export interface QueryDslThreeDimensionalPoint { + lat: double; + lon: double; + z?: double; +} + +export interface QueryDslTwoDimensionalPoint { + lat: double; + lon: double; +} + +export interface QueryDslTypeQuery extends QueryDslQueryBase { + value: string; +} + +export interface QueryDslWildcardQuery extends QueryDslQueryBase { + rewrite?: MultiTermQueryRewrite; + value: string; +} + +export type QueryDslZeroTermsQuery = 'all' | 'none'; +export interface CatCatRequestBase extends RequestBase, SpecUtilsCommonCatQueryParameters { } + +export interface CatAliasesAliasesRecord { + alias?: string; + a?: string; + index?: IndexName; + i?: IndexName; + idx?: IndexName; + filter?: string; + f?: string; + fi?: string; + 'routing.index'?: string; + ri?: string; + routingIndex?: string; + 'routing.search'?: string; + rs?: string; + routingSearch?: string; + is_write_index?: string; + w?: string; + isWriteIndex?: string; +} + +export interface CatAliasesRequest extends CatCatRequestBase { + name?: Names; + expand_wildcards?: ExpandWildcards; +} + +export type CatAliasesResponse = CatAliasesAliasesRecord[]; + +export interface CatAllocationAllocationRecord { + shards?: string; + s?: string; + 'disk.indices'?: ByteSize; + di?: ByteSize; + diskIndices?: ByteSize; + 'disk.used'?: ByteSize; + du?: ByteSize; + diskUsed?: ByteSize; + 'disk.avail'?: ByteSize; + da?: ByteSize; + diskAvail?: ByteSize; + 'disk.total'?: ByteSize; + dt?: ByteSize; + diskTotal?: ByteSize; + 'disk.percent'?: Percentage; + dp?: Percentage; + diskPercent?: Percentage; + host?: Host; + h?: Host; + ip?: Ip; + node?: string; + n?: string; +} + +export interface CatAllocationRequest extends CatCatRequestBase { + node_id?: NodeIds; + bytes?: Bytes; +} + +export type CatAllocationResponse = CatAllocationAllocationRecord[]; + +export interface CatCountCountRecord { + epoch?: EpochMillis; + t?: EpochMillis; + time?: EpochMillis; + timestamp?: DateString; + ts?: DateString; + hms?: DateString; + hhmmss?: DateString; + count?: string; + dc?: string; + 'docs.count'?: string; + docsCount?: string; +} + +export interface CatCountRequest extends CatCatRequestBase { + index?: Indices; +} + +export type CatCountResponse = CatCountCountRecord[]; + +export interface CatFielddataFielddataRecord { + id?: string; + host?: string; + h?: string; + ip?: string; + node?: string; + n?: string; + field?: string; + f?: string; + size?: string; +} + +export interface CatFielddataRequest extends CatCatRequestBase { + fields?: Fields; + bytes?: Bytes; +} + +export type CatFielddataResponse = CatFielddataFielddataRecord[]; + +export interface CatHealthHealthRecord { + epoch?: EpochMillis; + time?: EpochMillis; + timestamp?: DateString; + ts?: DateString; + hms?: DateString; + hhmmss?: DateString; + cluster?: string; + cl?: string; + status?: string; + st?: string; + 'node.total'?: string; + nt?: string; + nodeTotal?: string; + 'node.data'?: string; + nd?: string; + nodeData?: string; + shards?: string; + t?: string; + sh?: string; + 'shards.total'?: string; + shardsTotal?: string; + pri?: string; + p?: string; + 'shards.primary'?: string; + shardsPrimary?: string; + relo?: string; + r?: string; + 'shards.relocating'?: string; + shardsRelocating?: string; + init?: string; + i?: string; + 'shards.initializing'?: string; + shardsInitializing?: string; + unassign?: string; + u?: string; + 'shards.unassigned'?: string; + shardsUnassigned?: string; + pending_tasks?: string; + pt?: string; + pendingTasks?: string; + max_task_wait_time?: string; + mtwt?: string; + maxTaskWaitTime?: string; + active_shards_percent?: string; + asp?: string; + activeShardsPercent?: string; +} + +export interface CatHealthRequest extends CatCatRequestBase { + include_timestamp?: boolean; + ts?: boolean; +} + +export type CatHealthResponse = CatHealthHealthRecord[]; + +export interface CatHelpHelpRecord { + endpoint: string; +} + +export interface CatHelpRequest extends CatCatRequestBase { } + +export type CatHelpResponse = CatHelpHelpRecord[]; + +export interface CatIndicesIndicesRecord { + health?: string; + h?: string; + status?: string; + s?: string; + index?: string; + i?: string; + idx?: string; + uuid?: string; + id?: string; + pri?: string; + p?: string; + 'shards.primary'?: string; + shardsPrimary?: string; + rep?: string; + r?: string; + 'shards.replica'?: string; + shardsReplica?: string; + 'docs.count'?: string; + dc?: string; + docsCount?: string; + 'docs.deleted'?: string; + dd?: string; + docsDeleted?: string; + 'creation.date'?: string; + cd?: string; + 'creation.date.string'?: string; + cds?: string; + 'store.size'?: string; + ss?: string; + storeSize?: string; + 'pri.store.size'?: string; + 'completion.size'?: string; + cs?: string; + completionSize?: string; + 'pri.completion.size'?: string; + 'fielddata.memory_size'?: string; + fm?: string; + fielddataMemory?: string; + 'pri.fielddata.memory_size'?: string; + 'fielddata.evictions'?: string; + fe?: string; + fielddataEvictions?: string; + 'pri.fielddata.evictions'?: string; + 'query_cache.memory_size'?: string; + qcm?: string; + queryCacheMemory?: string; + 'pri.query_cache.memory_size'?: string; + 'query_cache.evictions'?: string; + qce?: string; + queryCacheEvictions?: string; + 'pri.query_cache.evictions'?: string; + 'request_cache.memory_size'?: string; + rcm?: string; + requestCacheMemory?: string; + 'pri.request_cache.memory_size'?: string; + 'request_cache.evictions'?: string; + rce?: string; + requestCacheEvictions?: string; + 'pri.request_cache.evictions'?: string; + 'request_cache.hit_count'?: string; + rchc?: string; + requestCacheHitCount?: string; + 'pri.request_cache.hit_count'?: string; + 'request_cache.miss_count'?: string; + rcmc?: string; + requestCacheMissCount?: string; + 'pri.request_cache.miss_count'?: string; + 'flush.total'?: string; + ft?: string; + flushTotal?: string; + 'pri.flush.total'?: string; + 'flush.total_time'?: string; + ftt?: string; + flushTotalTime?: string; + 'pri.flush.total_time'?: string; + 'get.current'?: string; + gc?: string; + getCurrent?: string; + 'pri.get.current'?: string; + 'get.time'?: string; + gti?: string; + getTime?: string; + 'pri.get.time'?: string; + 'get.total'?: string; + gto?: string; + getTotal?: string; + 'pri.get.total'?: string; + 'get.exists_time'?: string; + geti?: string; + getExistsTime?: string; + 'pri.get.exists_time'?: string; + 'get.exists_total'?: string; + geto?: string; + getExistsTotal?: string; + 'pri.get.exists_total'?: string; + 'get.missing_time'?: string; + gmti?: string; + getMissingTime?: string; + 'pri.get.missing_time'?: string; + 'get.missing_total'?: string; + gmto?: string; + getMissingTotal?: string; + 'pri.get.missing_total'?: string; + 'indexing.delete_current'?: string; + idc?: string; + indexingDeleteCurrent?: string; + 'pri.indexing.delete_current'?: string; + 'indexing.delete_time'?: string; + idti?: string; + indexingDeleteTime?: string; + 'pri.indexing.delete_time'?: string; + 'indexing.delete_total'?: string; + idto?: string; + indexingDeleteTotal?: string; + 'pri.indexing.delete_total'?: string; + 'indexing.index_current'?: string; + iic?: string; + indexingIndexCurrent?: string; + 'pri.indexing.index_current'?: string; + 'indexing.index_time'?: string; + iiti?: string; + indexingIndexTime?: string; + 'pri.indexing.index_time'?: string; + 'indexing.index_total'?: string; + iito?: string; + indexingIndexTotal?: string; + 'pri.indexing.index_total'?: string; + 'indexing.index_failed'?: string; + iif?: string; + indexingIndexFailed?: string; + 'pri.indexing.index_failed'?: string; + 'merges.current'?: string; + mc?: string; + mergesCurrent?: string; + 'pri.merges.current'?: string; + 'merges.current_docs'?: string; + mcd?: string; + mergesCurrentDocs?: string; + 'pri.merges.current_docs'?: string; + 'merges.current_size'?: string; + mcs?: string; + mergesCurrentSize?: string; + 'pri.merges.current_size'?: string; + 'merges.total'?: string; + mt?: string; + mergesTotal?: string; + 'pri.merges.total'?: string; + 'merges.total_docs'?: string; + mtd?: string; + mergesTotalDocs?: string; + 'pri.merges.total_docs'?: string; + 'merges.total_size'?: string; + mts?: string; + mergesTotalSize?: string; + 'pri.merges.total_size'?: string; + 'merges.total_time'?: string; + mtt?: string; + mergesTotalTime?: string; + 'pri.merges.total_time'?: string; + 'refresh.total'?: string; + rto?: string; + refreshTotal?: string; + 'pri.refresh.total'?: string; + 'refresh.time'?: string; + rti?: string; + refreshTime?: string; + 'pri.refresh.time'?: string; + 'refresh.external_total'?: string; + reto?: string; + 'pri.refresh.external_total'?: string; + 'refresh.external_time'?: string; + reti?: string; + 'pri.refresh.external_time'?: string; + 'refresh.listeners'?: string; + rli?: string; + refreshListeners?: string; + 'pri.refresh.listeners'?: string; + 'search.fetch_current'?: string; + sfc?: string; + searchFetchCurrent?: string; + 'pri.search.fetch_current'?: string; + 'search.fetch_time'?: string; + sfti?: string; + searchFetchTime?: string; + 'pri.search.fetch_time'?: string; + 'search.fetch_total'?: string; + sfto?: string; + searchFetchTotal?: string; + 'pri.search.fetch_total'?: string; + 'search.open_contexts'?: string; + so?: string; + searchOpenContexts?: string; + 'pri.search.open_contexts'?: string; + 'search.query_current'?: string; + sqc?: string; + searchQueryCurrent?: string; + 'pri.search.query_current'?: string; + 'search.query_time'?: string; + sqti?: string; + searchQueryTime?: string; + 'pri.search.query_time'?: string; + 'search.query_total'?: string; + sqto?: string; + searchQueryTotal?: string; + 'pri.search.query_total'?: string; + 'search.scroll_current'?: string; + scc?: string; + searchScrollCurrent?: string; + 'pri.search.scroll_current'?: string; + 'search.scroll_time'?: string; + scti?: string; + searchScrollTime?: string; + 'pri.search.scroll_time'?: string; + 'search.scroll_total'?: string; + scto?: string; + searchScrollTotal?: string; + 'pri.search.scroll_total'?: string; + 'segments.count'?: string; + sc?: string; + segmentsCount?: string; + 'pri.segments.count'?: string; + 'segments.memory'?: string; + sm?: string; + segmentsMemory?: string; + 'pri.segments.memory'?: string; + 'segments.index_writer_memory'?: string; + siwm?: string; + segmentsIndexWriterMemory?: string; + 'pri.segments.index_writer_memory'?: string; + 'segments.version_map_memory'?: string; + svmm?: string; + segmentsVersionMapMemory?: string; + 'pri.segments.version_map_memory'?: string; + 'segments.fixed_bitset_memory'?: string; + sfbm?: string; + fixedBitsetMemory?: string; + 'pri.segments.fixed_bitset_memory'?: string; + 'warmer.current'?: string; + wc?: string; + warmerCurrent?: string; + 'pri.warmer.current'?: string; + 'warmer.total'?: string; + wto?: string; + warmerTotal?: string; + 'pri.warmer.total'?: string; + 'warmer.total_time'?: string; + wtt?: string; + warmerTotalTime?: string; + 'pri.warmer.total_time'?: string; + 'suggest.current'?: string; + suc?: string; + suggestCurrent?: string; + 'pri.suggest.current'?: string; + 'suggest.time'?: string; + suti?: string; + suggestTime?: string; + 'pri.suggest.time'?: string; + 'suggest.total'?: string; + suto?: string; + suggestTotal?: string; + 'pri.suggest.total'?: string; + 'memory.total'?: string; + tm?: string; + memoryTotal?: string; + 'pri.memory.total'?: string; + 'search.throttled'?: string; + sth?: string; + 'bulk.total_operations'?: string; + bto?: string; + bulkTotalOperation?: string; + 'pri.bulk.total_operations'?: string; + 'bulk.total_time'?: string; + btti?: string; + bulkTotalTime?: string; + 'pri.bulk.total_time'?: string; + 'bulk.total_size_in_bytes'?: string; + btsi?: string; + bulkTotalSizeInBytes?: string; + 'pri.bulk.total_size_in_bytes'?: string; + 'bulk.avg_time'?: string; + bati?: string; + bulkAvgTime?: string; + 'pri.bulk.avg_time'?: string; + 'bulk.avg_size_in_bytes'?: string; + basi?: string; + bulkAvgSizeInBytes?: string; + 'pri.bulk.avg_size_in_bytes'?: string; +} + +export interface CatIndicesRequest extends CatCatRequestBase { + index?: Indices; + bytes?: Bytes; + expand_wildcards?: ExpandWildcards; + health?: Health; + include_unloaded_segments?: boolean; + pri?: boolean; +} + +export type CatIndicesResponse = CatIndicesIndicesRecord[]; + +export interface CatClusterManagerClusterManagerRecord { + id?: string + host?: string + h?: string + ip?: string + node?: string + n?: string +} + +/** +* // TODO: delete CatMasterMasterRecord interface when it is removed from OpenSearch +* @deprecated use CatClusterManagerClusterManagerRecord instead +*/ +export interface CatMasterMasterRecord { + id?: string; + host?: string; + h?: string; + ip?: string; + node?: string; + n?: string; +} + +export interface CatClusterManagerRequest extends CatCatRequestBase { +} + +/** +* // TODO: delete CatMasterRequest interface when it is removed from OpenSearch +* @deprecated use CatClusterManagerRequest instead +*/ +export interface CatMasterRequest extends CatCatRequestBase { +} + +export type CatClusterManagerResponse = CatClusterManagerClusterManagerRecord[] + +/** +* // TODO: delete CatMasterResponse type when it is removed from OpenSearch +* @deprecated use CatClusterManagerResponse instead +*/ +export type CatMasterResponse = CatMasterMasterRecord[] + +export interface CatNodeAttributesNodeAttributesRecord { + node?: string; + id?: string; + pid?: string; + host?: string; + h?: string; + ip?: string; + i?: string; + port?: string; + attr?: string; + value?: string; +} + +export interface CatNodeAttributesRequest extends CatCatRequestBase { } + +export type CatNodeAttributesResponse = CatNodeAttributesNodeAttributesRecord[]; + +export interface CatNodesNodesRecord { + id?: Id + nodeId?: Id + pid?: string + p?: string + ip?: string + i?: string + port?: string + po?: string + http_address?: string + http?: string + version?: VersionString + v?: VersionString + flavor?: string + f?: string + type?: Type + t?: Type + build?: string + b?: string + jdk?: string + j?: string + 'disk.total'?: ByteSize + dt?: ByteSize + diskTotal?: ByteSize + 'disk.used'?: ByteSize + du?: ByteSize + diskUsed?: ByteSize + 'disk.avail'?: ByteSize + d?: ByteSize + da?: ByteSize + disk?: ByteSize + diskAvail?: ByteSize + 'disk.used_percent'?: Percentage + dup?: Percentage + diskUsedPercent?: Percentage + 'heap.current'?: string + hc?: string + heapCurrent?: string + 'heap.percent'?: Percentage + hp?: Percentage + heapPercent?: Percentage + 'heap.max'?: string + hm?: string + heapMax?: string + 'ram.current'?: string + rc?: string + ramCurrent?: string + 'ram.percent'?: Percentage + rp?: Percentage + ramPercent?: Percentage + 'ram.max'?: string + rn?: string + ramMax?: string + 'file_desc.current'?: string + fdc?: string + fileDescriptorCurrent?: string + 'file_desc.percent'?: Percentage + fdp?: Percentage + fileDescriptorPercent?: Percentage + 'file_desc.max'?: string + fdm?: string + fileDescriptorMax?: string + cpu?: string + load_1m?: string + load_5m?: string + load_15m?: string + l?: string + uptime?: string + u?: string + 'node.role'?: string + r?: string + role?: string + nodeRole?: string + cluster_manager?: string + /** + * @deprecated use cluster_manager instead + */ + master?: string + m?: string + name?: Name + n?: Name + 'completion.size'?: string + cs?: string + completionSize?: string + 'fielddata.memory_size'?: string + fm?: string + fielddataMemory?: string + 'fielddata.evictions'?: string + fe?: string + fielddataEvictions?: string + 'query_cache.memory_size'?: string + qcm?: string + queryCacheMemory?: string + 'query_cache.evictions'?: string + qce?: string + queryCacheEvictions?: string + 'query_cache.hit_count'?: string + qchc?: string + queryCacheHitCount?: string + 'query_cache.miss_count'?: string + qcmc?: string + queryCacheMissCount?: string + 'request_cache.memory_size'?: string + rcm?: string + requestCacheMemory?: string + 'request_cache.evictions'?: string + rce?: string + requestCacheEvictions?: string + 'request_cache.hit_count'?: string + rchc?: string + requestCacheHitCount?: string + 'request_cache.miss_count'?: string + rcmc?: string + requestCacheMissCount?: string + 'flush.total'?: string + ft?: string + flushTotal?: string + 'flush.total_time'?: string + ftt?: string + flushTotalTime?: string + 'get.current'?: string + gc?: string + getCurrent?: string + 'get.time'?: string + gti?: string + getTime?: string + 'get.total'?: string + gto?: string + getTotal?: string + 'get.exists_time'?: string + geti?: string + getExistsTime?: string + 'get.exists_total'?: string + geto?: string + getExistsTotal?: string + 'get.missing_time'?: string + gmti?: string + getMissingTime?: string + 'get.missing_total'?: string + gmto?: string + getMissingTotal?: string + 'indexing.delete_current'?: string + idc?: string + indexingDeleteCurrent?: string + 'indexing.delete_time'?: string + idti?: string + indexingDeleteTime?: string + 'indexing.delete_total'?: string + idto?: string + indexingDeleteTotal?: string + 'indexing.index_current'?: string + iic?: string + indexingIndexCurrent?: string + 'indexing.index_time'?: string + iiti?: string + indexingIndexTime?: string + 'indexing.index_total'?: string + iito?: string + indexingIndexTotal?: string + 'indexing.index_failed'?: string + iif?: string + indexingIndexFailed?: string + 'merges.current'?: string + mc?: string + mergesCurrent?: string + 'merges.current_docs'?: string + mcd?: string + mergesCurrentDocs?: string + 'merges.current_size'?: string + mcs?: string + mergesCurrentSize?: string + 'merges.total'?: string + mt?: string + mergesTotal?: string + 'merges.total_docs'?: string + mtd?: string + mergesTotalDocs?: string + 'merges.total_size'?: string + mts?: string + mergesTotalSize?: string + 'merges.total_time'?: string + mtt?: string + mergesTotalTime?: string + 'refresh.total'?: string + 'refresh.time'?: string + 'refresh.external_total'?: string + rto?: string + refreshTotal?: string + 'refresh.external_time'?: string + rti?: string + refreshTime?: string + 'refresh.listeners'?: string + rli?: string + refreshListeners?: string + 'script.compilations'?: string + scrcc?: string + scriptCompilations?: string + 'script.cache_evictions'?: string + scrce?: string + scriptCacheEvictions?: string + 'script.compilation_limit_triggered'?: string + scrclt?: string + scriptCacheCompilationLimitTriggered?: string + 'search.fetch_current'?: string + sfc?: string + searchFetchCurrent?: string + 'search.fetch_time'?: string + sfti?: string + searchFetchTime?: string + 'search.fetch_total'?: string + sfto?: string + searchFetchTotal?: string + 'search.open_contexts'?: string + so?: string + searchOpenContexts?: string + 'search.query_current'?: string + sqc?: string + searchQueryCurrent?: string + 'search.query_time'?: string + sqti?: string + searchQueryTime?: string + 'search.query_total'?: string + sqto?: string + searchQueryTotal?: string + 'search.scroll_current'?: string + scc?: string + searchScrollCurrent?: string + 'search.scroll_time'?: string + scti?: string + searchScrollTime?: string + 'search.scroll_total'?: string + scto?: string + searchScrollTotal?: string + 'segments.count'?: string + sc?: string + segmentsCount?: string + 'segments.memory'?: string + sm?: string + segmentsMemory?: string + 'segments.index_writer_memory'?: string + siwm?: string + segmentsIndexWriterMemory?: string + 'segments.version_map_memory'?: string + svmm?: string + segmentsVersionMapMemory?: string + 'segments.fixed_bitset_memory'?: string + sfbm?: string + fixedBitsetMemory?: string + 'suggest.current'?: string + suc?: string + suggestCurrent?: string + 'suggest.time'?: string + suti?: string + suggestTime?: string + 'suggest.total'?: string + suto?: string + suggestTotal?: string + 'bulk.total_operations'?: string + bto?: string + bulkTotalOperations?: string + 'bulk.total_time'?: string + btti?: string + bulkTotalTime?: string + 'bulk.total_size_in_bytes'?: string + btsi?: string + bulkTotalSizeInBytes?: string + 'bulk.avg_time'?: string + bati?: string + bulkAvgTime?: string + 'bulk.avg_size_in_bytes'?: string + basi?: string + bulkAvgSizeInBytes?: string +} + +export interface CatNodesRequest extends CatCatRequestBase { + bytes?: Bytes; + full_id?: boolean | string; +} + +export type CatNodesResponse = CatNodesNodesRecord[]; + +export interface CatPendingTasksPendingTasksRecord { + insertOrder?: string; + o?: string; + timeInQueue?: string; + t?: string; + priority?: string; + p?: string; + source?: string; + s?: string; +} + +export interface CatPendingTasksRequest extends CatCatRequestBase { } + +export type CatPendingTasksResponse = CatPendingTasksPendingTasksRecord[]; + +export interface CatPluginsPluginsRecord { + id?: NodeId; + name?: Name; + n?: Name; + component?: string; + c?: string; + version?: VersionString; + v?: VersionString; + description?: string; + d?: string; + type?: Type; + t?: Type; +} + +export interface CatPluginsRequest extends CatCatRequestBase { } + +export type CatPluginsResponse = CatPluginsPluginsRecord[]; + +export interface CatRecoveryRecoveryRecord { + index?: IndexName; + i?: IndexName; + idx?: IndexName; + shard?: string; + s?: string; + sh?: string; + start_time?: string; + start?: string; + start_time_millis?: string; + start_millis?: string; + stop_time?: string; + stop?: string; + stop_time_millis?: string; + stop_millis?: string; + time?: string; + t?: string; + ti?: string; + type?: Type; + ty?: Type; + stage?: string; + st?: string; + source_host?: string; + shost?: string; + source_node?: string; + snode?: string; + target_host?: string; + thost?: string; + target_node?: string; + tnode?: string; + repository?: string; + rep?: string; + snapshot?: string; + snap?: string; + files?: string; + f?: string; + files_recovered?: string; + fr?: string; + files_percent?: Percentage; + fp?: Percentage; + files_total?: string; + tf?: string; + bytes?: string; + b?: string; + bytes_recovered?: string; + br?: string; + bytes_percent?: Percentage; + bp?: Percentage; + bytes_total?: string; + tb?: string; + translog_ops?: string; + to?: string; + translog_ops_recovered?: string; + tor?: string; + translog_ops_percent?: Percentage; + top?: Percentage; +} + +export interface CatRecoveryRequest extends CatCatRequestBase { + index?: Indices; + active_only?: boolean; + bytes?: Bytes; + detailed?: boolean; +} + +export type CatRecoveryResponse = CatRecoveryRecoveryRecord[]; + +export interface CatRepositoriesRepositoriesRecord { + id?: string; + repoId?: string; + type?: string; + t?: string; +} + +export interface CatRepositoriesRequest extends CatCatRequestBase { } + +export type CatRepositoriesResponse = CatRepositoriesRepositoriesRecord[]; + +export interface CatSegmentsRequest extends CatCatRequestBase { + index?: Indices; + bytes?: Bytes; +} + +export type CatSegmentsResponse = CatSegmentsSegmentsRecord[]; + +export interface CatSegmentsSegmentsRecord { + index?: IndexName; + i?: IndexName; + idx?: IndexName; + shard?: string; + s?: string; + sh?: string; + prirep?: string; + p?: string; + pr?: string; + primaryOrReplica?: string; + ip?: string; + id?: NodeId; + segment?: string; + seg?: string; + generation?: string; + g?: string; + gen?: string; + 'docs.count'?: string; + dc?: string; + docsCount?: string; + 'docs.deleted'?: string; + dd?: string; + docsDeleted?: string; + size?: ByteSize; + si?: ByteSize; + 'size.memory'?: ByteSize; + sm?: ByteSize; + sizeMemory?: ByteSize; + committed?: string; + ic?: string; + isCommitted?: string; + searchable?: string; + is?: string; + isSearchable?: string; + version?: VersionString; + v?: VersionString; + compound?: string; + ico?: string; + isCompound?: string; +} + +export interface CatShardsRequest extends CatCatRequestBase { + index?: Indices; + bytes?: Bytes; +} + +export type CatShardsResponse = CatShardsShardsRecord[]; + +export interface CatShardsShardsRecord { + index?: string; + i?: string; + idx?: string; + shard?: string; + s?: string; + sh?: string; + prirep?: string; + p?: string; + pr?: string; + primaryOrReplica?: string; + state?: string; + st?: string; + docs?: string; + d?: string; + dc?: string; + store?: string; + sto?: string; + ip?: string; + id?: string; + node?: string; + n?: string; + sync_id?: string; + 'unassigned.reason'?: string; + ur?: string; + 'unassigned.at'?: string; + ua?: string; + 'unassigned.for'?: string; + uf?: string; + 'unassigned.details'?: string; + ud?: string; + 'recoverysource.type'?: string; + rs?: string; + 'completion.size'?: string; + cs?: string; + completionSize?: string; + 'fielddata.memory_size'?: string; + fm?: string; + fielddataMemory?: string; + 'fielddata.evictions'?: string; + fe?: string; + fielddataEvictions?: string; + 'query_cache.memory_size'?: string; + qcm?: string; + queryCacheMemory?: string; + 'query_cache.evictions'?: string; + qce?: string; + queryCacheEvictions?: string; + 'flush.total'?: string; + ft?: string; + flushTotal?: string; + 'flush.total_time'?: string; + ftt?: string; + flushTotalTime?: string; + 'get.current'?: string; + gc?: string; + getCurrent?: string; + 'get.time'?: string; + gti?: string; + getTime?: string; + 'get.total'?: string; + gto?: string; + getTotal?: string; + 'get.exists_time'?: string; + geti?: string; + getExistsTime?: string; + 'get.exists_total'?: string; + geto?: string; + getExistsTotal?: string; + 'get.missing_time'?: string; + gmti?: string; + getMissingTime?: string; + 'get.missing_total'?: string; + gmto?: string; + getMissingTotal?: string; + 'indexing.delete_current'?: string; + idc?: string; + indexingDeleteCurrent?: string; + 'indexing.delete_time'?: string; + idti?: string; + indexingDeleteTime?: string; + 'indexing.delete_total'?: string; + idto?: string; + indexingDeleteTotal?: string; + 'indexing.index_current'?: string; + iic?: string; + indexingIndexCurrent?: string; + 'indexing.index_time'?: string; + iiti?: string; + indexingIndexTime?: string; + 'indexing.index_total'?: string; + iito?: string; + indexingIndexTotal?: string; + 'indexing.index_failed'?: string; + iif?: string; + indexingIndexFailed?: string; + 'merges.current'?: string; + mc?: string; + mergesCurrent?: string; + 'merges.current_docs'?: string; + mcd?: string; + mergesCurrentDocs?: string; + 'merges.current_size'?: string; + mcs?: string; + mergesCurrentSize?: string; + 'merges.total'?: string; + mt?: string; + mergesTotal?: string; + 'merges.total_docs'?: string; + mtd?: string; + mergesTotalDocs?: string; + 'merges.total_size'?: string; + mts?: string; + mergesTotalSize?: string; + 'merges.total_time'?: string; + mtt?: string; + mergesTotalTime?: string; + 'refresh.total'?: string; + 'refresh.time'?: string; + 'refresh.external_total'?: string; + rto?: string; + refreshTotal?: string; + 'refresh.external_time'?: string; + rti?: string; + refreshTime?: string; + 'refresh.listeners'?: string; + rli?: string; + refreshListeners?: string; + 'search.fetch_current'?: string; + sfc?: string; + searchFetchCurrent?: string; + 'search.fetch_time'?: string; + sfti?: string; + searchFetchTime?: string; + 'search.fetch_total'?: string; + sfto?: string; + searchFetchTotal?: string; + 'search.open_contexts'?: string; + so?: string; + searchOpenContexts?: string; + 'search.query_current'?: string; + sqc?: string; + searchQueryCurrent?: string; + 'search.query_time'?: string; + sqti?: string; + searchQueryTime?: string; + 'search.query_total'?: string; + sqto?: string; + searchQueryTotal?: string; + 'search.scroll_current'?: string; + scc?: string; + searchScrollCurrent?: string; + 'search.scroll_time'?: string; + scti?: string; + searchScrollTime?: string; + 'search.scroll_total'?: string; + scto?: string; + searchScrollTotal?: string; + 'segments.count'?: string; + sc?: string; + segmentsCount?: string; + 'segments.memory'?: string; + sm?: string; + segmentsMemory?: string; + 'segments.index_writer_memory'?: string; + siwm?: string; + segmentsIndexWriterMemory?: string; + 'segments.version_map_memory'?: string; + svmm?: string; + segmentsVersionMapMemory?: string; + 'segments.fixed_bitset_memory'?: string; + sfbm?: string; + fixedBitsetMemory?: string; + 'seq_no.max'?: string; + sqm?: string; + maxSeqNo?: string; + 'seq_no.local_checkpoint'?: string; + localCheckpoint?: string; + 'seq_no.global_checkpoint'?: string; + sqg?: string; + globalCheckpoint?: string; + 'warmer.current'?: string; + wc?: string; + warmerCurrent?: string; + 'warmer.total'?: string; + wto?: string; + warmerTotal?: string; + 'warmer.total_time'?: string; + wtt?: string; + warmerTotalTime?: string; + 'path.data'?: string; + pd?: string; + dataPath?: string; + 'path.state'?: string; + ps?: string; + statsPath?: string; + 'bulk.total_operations'?: string; + bto?: string; + bulkTotalOperations?: string; + 'bulk.total_time'?: string; + btti?: string; + bulkTotalTime?: string; + 'bulk.total_size_in_bytes'?: string; + btsi?: string; + bulkTotalSizeInBytes?: string; + 'bulk.avg_time'?: string; + bati?: string; + bulkAvgTime?: string; + 'bulk.avg_size_in_bytes'?: string; + basi?: string; + bulkAvgSizeInBytes?: string; +} + +export interface CatSnapshotsRequest extends CatCatRequestBase { + repository?: Names; + ignore_unavailable?: boolean; +} + +export type CatSnapshotsResponse = CatSnapshotsSnapshotsRecord[]; + +export interface CatSnapshotsSnapshotsRecord { + id?: string; + snapshot?: string; + repository?: string; + re?: string; + repo?: string; + status?: string; + s?: string; + start_epoch?: EpochMillis; + ste?: EpochMillis; + startEpoch?: EpochMillis; + start_time?: DateString; + sti?: DateString; + startTime?: DateString; + end_epoch?: EpochMillis; + ete?: EpochMillis; + endEpoch?: EpochMillis; + end_time?: DateString; + eti?: DateString; + endTime?: DateString; + duration?: Time; + dur?: Time; + indices?: string; + i?: string; + successful_shards?: string; + ss?: string; + failed_shards?: string; + fs?: string; + total_shards?: string; + ts?: string; + reason?: string; + r?: string; +} + +export interface CatTasksRequest extends CatCatRequestBase { + actions?: string[]; + detailed?: boolean; + node_id?: string[]; + parent_task?: long; +} + +export type CatTasksResponse = CatTasksTasksRecord[]; + +export interface CatTasksTasksRecord { + id?: Id; + action?: string; + ac?: string; + task_id?: Id; + ti?: Id; + parent_task_id?: string; + pti?: string; + type?: Type; + ty?: Type; + start_time?: string; + start?: string; + timestamp?: string; + ts?: string; + hms?: string; + hhmmss?: string; + running_time_ns?: string; + running_time?: string; + time?: string; + node_id?: NodeId; + ni?: NodeId; + ip?: string; + i?: string; + port?: string; + po?: string; + node?: string; + n?: string; + version?: VersionString; + v?: VersionString; + x_opaque_id?: string; + x?: string; + description?: string; + desc?: string; +} + +export interface CatTemplatesRequest extends CatCatRequestBase { + name?: Name; +} + +export type CatTemplatesResponse = CatTemplatesTemplatesRecord[]; + +export interface CatTemplatesTemplatesRecord { + name?: Name; + n?: Name; + index_patterns?: string; + t?: string; + order?: string; + o?: string; + p?: string; + version?: VersionString; + v?: VersionString; + composed_of?: string; + c?: string; +} + +export interface CatThreadPoolRequest extends CatCatRequestBase { + thread_pool_patterns?: Names; + size?: Size | boolean; +} + +export type CatThreadPoolResponse = CatThreadPoolThreadPoolRecord[]; + +export interface CatThreadPoolThreadPoolRecord { + node_name?: string; + nn?: string; + node_id?: NodeId; + id?: NodeId; + ephemeral_node_id?: string; + eid?: string; + pid?: string; + p?: string; + host?: string; + h?: string; + ip?: string; + i?: string; + port?: string; + po?: string; + name?: string; + n?: string; + type?: string; + t?: string; + active?: string; + a?: string; + pool_size?: string; + psz?: string; + queue?: string; + q?: string; + queue_size?: string; + qs?: string; + rejected?: string; + r?: string; + largest?: string; + l?: string; + completed?: string; + c?: string; + core?: string; + cr?: string; + max?: string; + mx?: string; + size?: string; + sz?: string; + keep_alive?: string; + ka?: string; +} + +export interface ClusterClusterStateBlockIndex { + description?: string; + retryable?: boolean; + levels?: string[]; + aliases?: IndexAlias[]; + aliases_version?: VersionNumber; + version?: VersionNumber; + mapping_version?: VersionNumber; + settings_version?: VersionNumber; + routing_num_shards?: VersionNumber; + state?: string; + settings?: Record; + in_sync_allocations?: Record; + primary_terms?: Record; + mappings?: Record; + rollover_info?: Record; + timestamp_range?: Record; + system?: boolean; +} + +export interface ClusterClusterStateDeletedSnapshots { + snapshot_deletions: string[]; +} + +export interface ClusterClusterStateIndexLifecycle { + policies: Record; + operation_mode: LifecycleOperationMode; +} + +export interface ClusterClusterStateIndexLifecyclePolicy { } + +export interface ClusterClusterStateIndexLifecycleSummary { + policy: ClusterClusterStateIndexLifecyclePolicy; + headers: HttpHeaders; + version: VersionNumber; + modified_date: long; + modified_date_string: DateString; +} + +export interface ClusterClusterStateIngest { + pipeline: ClusterClusterStateIngestPipeline[]; +} + +export interface ClusterClusterStateIngestPipeline { + id: Id; + config: ClusterClusterStateIngestPipelineConfig; +} + +export interface ClusterClusterStateIngestPipelineConfig { + description?: string; + version?: VersionNumber; + processors: IngestProcessorContainer[]; +} + +export interface ClusterClusterStateMetadata { + cluster_uuid: Uuid; + cluster_uuid_committed: boolean; + templates: ClusterClusterStateMetadataTemplate; + indices?: Record; + 'index-graveyard': ClusterClusterStateMetadataIndexGraveyard; + cluster_coordination: ClusterClusterStateMetadataClusterCoordination; + ingest?: ClusterClusterStateIngest; + repositories?: Record; + component_template?: Record; + index_template?: Record; + index_lifecycle?: ClusterClusterStateIndexLifecycle; +} + +export interface ClusterClusterStateMetadataClusterCoordination { + term: integer; + last_committed_config: string[]; + last_accepted_config: string[]; + voting_config_exclusions: ClusterVotingConfigExclusionsItem[]; +} + +export interface ClusterClusterStateMetadataIndexGraveyard { + tombstones: ClusterTombstone[]; +} + +export interface ClusterClusterStateMetadataTemplate { } + +export interface ClusterClusterStateRoutingNodes { + unassigned: NodeShard[]; + nodes: Record; +} + +export interface ClusterClusterStateSnapshots { + snapshots: SnapshotStatus[]; +} + +export type ClusterClusterStatus = 'green' | 'yellow' | 'red'; + +export interface ClusterComponentTemplate { + name: Name; + component_template: ClusterComponentTemplateNode; +} + +export interface ClusterComponentTemplateNode { + template: ClusterComponentTemplateSummary; + version?: VersionNumber; + _meta?: Metadata; +} + +export interface ClusterComponentTemplateSummary { + _meta?: Metadata; + version?: VersionNumber; + settings: Record; + mappings?: MappingTypeMapping; + aliases?: Record; +} + +export interface ClusterTombstone { + index: ClusterTombstoneIndex; + delete_date?: DateString; + delete_date_in_millis: long; +} + +export interface ClusterTombstoneIndex { + index_name: Name; + index_uuid: Uuid; +} + +export interface ClusterVotingConfigExclusionsItem { + node_id: Id; + node_name: Name; +} + +export interface ClusterAllocationExplainAllocationDecision { + decider: string; + decision: ClusterAllocationExplainAllocationExplainDecision; + explanation: string; +} + +export type ClusterAllocationExplainAllocationExplainDecision = + | 'NO' + | 'YES' + | 'THROTTLE' + | 'ALWAYS'; + +export interface ClusterAllocationExplainAllocationStore { + allocation_id: string; + found: boolean; + in_sync: boolean; + matching_size_in_bytes: long; + matching_sync_id: boolean; + store_exception: string; +} + +export interface ClusterAllocationExplainClusterInfo { + nodes: Record; + shard_sizes: Record; + shard_data_set_sizes?: Record; + shard_paths: Record; + reserved_sizes: ClusterAllocationExplainReservedSize[]; +} + +export interface ClusterAllocationExplainCurrentNode { + id: Id; + name: Name; + attributes: Record; + transport_address: TransportAddress; + weight_ranking: integer; +} + +export type ClusterAllocationExplainDecision = + | 'yes' + | 'no' + | 'worse_balance' + | 'throttled' + | 'awaiting_info' + | 'allocation_delayed' + | 'no_valid_shard_copy' + | 'no_attempt'; + +export interface ClusterAllocationExplainDiskUsage { + path: string; + total_bytes: long; + used_bytes: long; + free_bytes: long; + free_disk_percent: double; + used_disk_percent: double; +} + +export interface ClusterAllocationExplainNodeAllocationExplanation { + deciders: ClusterAllocationExplainAllocationDecision[]; + node_attributes: Record; + node_decision: ClusterAllocationExplainDecision; + node_id: Id; + node_name: Name; + store?: ClusterAllocationExplainAllocationStore; + transport_address: TransportAddress; + weight_ranking: integer; +} + +export interface ClusterAllocationExplainNodeDiskUsage { + node_name: Name; + least_available: ClusterAllocationExplainDiskUsage; + most_available: ClusterAllocationExplainDiskUsage; +} + +export interface ClusterAllocationExplainRequest extends RequestBase { + include_disk_info?: boolean; + include_yes_decisions?: boolean; + body?: { + current_node?: string; + index?: IndexName; + primary?: boolean; + shard?: integer; + }; +} + +export interface ClusterAllocationExplainReservedSize { + node_id: Id; + path: string; + total: long; + shards: string[]; +} + +export interface ClusterAllocationExplainResponse { + allocate_explanation?: string; + allocation_delay?: string; + allocation_delay_in_millis?: long; + can_allocate?: ClusterAllocationExplainDecision; + can_move_to_other_node?: ClusterAllocationExplainDecision; + can_rebalance_cluster?: ClusterAllocationExplainDecision; + can_rebalance_cluster_decisions?: ClusterAllocationExplainAllocationDecision[]; + can_rebalance_to_other_node?: ClusterAllocationExplainDecision; + can_remain_decisions?: ClusterAllocationExplainAllocationDecision[]; + can_remain_on_current_node?: ClusterAllocationExplainDecision; + cluster_info?: ClusterAllocationExplainClusterInfo; + configured_delay?: string; + configured_delay_in_millis?: long; + current_node?: ClusterAllocationExplainCurrentNode; + current_state: string; + index: IndexName; + move_explanation?: string; + node_allocation_decisions?: ClusterAllocationExplainNodeAllocationExplanation[]; + primary: boolean; + rebalance_explanation?: string; + remaining_delay?: string; + remaining_delay_in_millis?: long; + shard: integer; + unassigned_info?: ClusterAllocationExplainUnassignedInformation; +} + +export interface ClusterAllocationExplainUnassignedInformation { + at: DateString; + last_allocation_status?: string; + reason: ClusterAllocationExplainUnassignedInformationReason; + details?: string; + failed_allocation_attempts?: integer; + delayed?: boolean; + allocation_status?: string; +} + +export type ClusterAllocationExplainUnassignedInformationReason = + | 'INDEX_CREATED' + | 'CLUSTER_RECOVERED' + | 'INDEX_REOPENED' + | 'DANGLING_INDEX_IMPORTED' + | 'NEW_INDEX_RESTORED' + | 'EXISTING_INDEX_RESTORED' + | 'REPLICA_ADDED' + | 'ALLOCATION_FAILED' + | 'NODE_LEFT' + | 'REROUTE_CANCELLED' + | 'REINITIALIZED' + | 'REALLOCATED_REPLICA' + | 'PRIMARY_FAILED' + | 'FORCED_EMPTY_PRIMARY' + | 'MANUAL_ALLOCATION'; + + +export interface ClusterDeleteComponentTemplateRequest extends RequestBase { + name: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface ClusterDeleteComponentTemplateResponse extends AcknowledgedResponseBase { } + +export interface ClusterDeleteVotingConfigExclusionsRequest extends RequestBase { + body?: { + stub: string; + }; +} + +export interface ClusterDeleteVotingConfigExclusionsResponse { + stub: integer; +} + +export interface ClusterExistsComponentTemplateRequest extends RequestBase { + stub_a: string; + stub_b: string; + body?: { + stub_c: string; + }; +} + +export interface ClusterExistsComponentTemplateResponse { + stub: integer; +} + + +export interface ClusterGetComponentTemplateRequest extends RequestBase { + name?: Name + flat_settings?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface ClusterGetComponentTemplateResponse { + component_templates: ClusterComponentTemplate[]; +} + + +export interface ClusterGetSettingsRequest extends RequestBase { + flat_settings?: boolean + include_defaults?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface ClusterGetSettingsResponse { + persistent: Record; + transient: Record; + defaults?: Record; +} + +export interface ClusterHealthIndexHealthStats { + active_primary_shards: integer; + active_shards: integer; + initializing_shards: integer; + number_of_replicas: integer; + number_of_shards: integer; + relocating_shards: integer; + shards?: Record; + status: Health; + unassigned_shards: integer; +} + + +export interface ClusterHealthRequest extends RequestBase { + index?: Indices + expand_wildcards?: ExpandWildcards + level?: Level + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards + wait_for_events?: WaitForEvents + wait_for_nodes?: string + wait_for_no_initializing_shards?: boolean + wait_for_no_relocating_shards?: boolean + wait_for_status?: WaitForStatus +} + +export interface ClusterHealthResponse { + active_primary_shards: integer; + active_shards: integer; + active_shards_percent_as_number: Percentage; + cluster_name: string; + delayed_unassigned_shards: integer; + indices?: Record; + initializing_shards: integer; + number_of_data_nodes: integer; + number_of_in_flight_fetch: integer; + number_of_nodes: integer; + number_of_pending_tasks: integer; + relocating_shards: integer; + status: Health; + task_max_waiting_in_queue_millis: EpochMillis; + timed_out: boolean; + unassigned_shards: integer; +} + +export interface ClusterHealthShardHealthStats { + active_shards: integer; + initializing_shards: integer; + primary_active: boolean; + relocating_shards: integer; + status: Health; + unassigned_shards: integer; +} + +export interface ClusterPendingTasksPendingTask { + insert_order: integer; + priority: string; + source: string; + time_in_queue: string; + time_in_queue_millis: integer; +} + + +export interface ClusterPendingTasksRequest extends RequestBase { + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface ClusterPendingTasksResponse { + tasks: ClusterPendingTasksPendingTask[]; +} + + +export interface ClusterPutComponentTemplateRequest extends RequestBase { + name: Name + create?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + body?: { + template: IndicesIndexState; + aliases?: Record; + mappings?: MappingTypeMapping; + settings?: IndicesIndexSettings; + version?: VersionNumber; + _meta?: Metadata; + }; +} + +export interface ClusterPutComponentTemplateResponse extends AcknowledgedResponseBase { } + + +export interface ClusterPutSettingsRequest extends RequestBase { + flat_settings?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + persistent?: Record; + transient?: Record; + }; +} + +export interface ClusterPutSettingsResponse { + acknowledged: boolean; + persistent: Record; + transient: Record; +} + +export interface ClusterPutVotingConfigExclusionsRequest extends RequestBase { + node_names?: Names; + node_ids?: Ids; + timeout?: Time; + wait_for_removal?: boolean; +} + +export interface ClusterPutVotingConfigExclusionsResponse { + stub: integer; +} + +export interface ClusterRemoteInfoClusterRemoteInfo { + connected: boolean; + initial_connect_timeout: Time; + max_connections_per_cluster: integer; + num_nodes_connected: long; + seeds: string[]; + skip_unavailable: boolean; +} + +export interface ClusterRemoteInfoRequest extends RequestBase { + body?: { + stub: string; + }; +} + +export interface ClusterRemoteInfoResponse + extends DictionaryResponseBase { } + +export interface ClusterRerouteCommand { + cancel?: ClusterRerouteCommandCancelAction; + move?: ClusterRerouteCommandMoveAction; + allocate_replica?: ClusterRerouteCommandAllocateReplicaAction; + allocate_stale_primary?: ClusterRerouteCommandAllocatePrimaryAction; + allocate_empty_primary?: ClusterRerouteCommandAllocatePrimaryAction; +} + +export interface ClusterRerouteCommandAllocatePrimaryAction { + index: IndexName; + shard: integer; + node: string; + accept_data_loss: boolean; +} + +export interface ClusterRerouteCommandAllocateReplicaAction { + index: IndexName; + shard: integer; + node: string; +} + +export interface ClusterRerouteCommandCancelAction { + index: IndexName; + shard: integer; + node: string; + allow_primary?: boolean; +} + +export interface ClusterRerouteCommandMoveAction { + index: IndexName; + shard: integer; + from_node: string; + to_node: string; +} + + +export interface ClusterRerouteRequest extends RequestBase { + dry_run?: boolean + explain?: boolean + metric?: Metrics + retry_failed?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + commands?: ClusterRerouteCommand[]; + }; +} + +export interface ClusterRerouteRerouteDecision { + decider: string; + decision: string; + explanation: string; +} + +export interface ClusterRerouteRerouteExplanation { + command: string; + decisions: ClusterRerouteRerouteDecision[]; + parameters: ClusterRerouteRerouteParameters; +} + +export interface ClusterRerouteRerouteParameters { + allow_primary: boolean; + index: IndexName; + node: NodeName; + shard: integer; + from_node?: NodeName; + to_node?: NodeName; +} + +export interface ClusterRerouteRerouteState { + cluster_uuid: Uuid + state_uuid?: Uuid + cluster_manager_node?: string + master_node?: string + version?: VersionNumber + blocks?: EmptyObject + nodes?: Record + routing_table?: Record + routing_nodes?: ClusterClusterStateRoutingNodes + security_tokens?: Record + snapshots?: ClusterClusterStateSnapshots + snapshot_deletions?: ClusterClusterStateDeletedSnapshots + metadata?: ClusterClusterStateMetadata +} + +export interface ClusterRerouteResponse extends AcknowledgedResponseBase { + explanations?: ClusterRerouteRerouteExplanation[]; + state: ClusterRerouteRerouteState; +} + +export interface ClusterStateClusterStateBlocks { + indices?: Record>; +} + +export interface ClusterStateRequest extends RequestBase { + metric?: Metrics + index?: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + flat_settings?: boolean + ignore_unavailable?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + wait_for_metadata_version?: VersionNumber + wait_for_timeout?: Time +} + +export interface ClusterStateResponse { + cluster_name: Name + cluster_uuid: Uuid + cluster_manager_node?: string + master_node?: string + state?: string[] + state_uuid?: Uuid + version?: VersionNumber + blocks?: ClusterStateClusterStateBlocks + metadata?: ClusterClusterStateMetadata + nodes?: Record + routing_table?: Record + routing_nodes?: ClusterClusterStateRoutingNodes + snapshots?: ClusterClusterStateSnapshots + snapshot_deletions?: ClusterClusterStateDeletedSnapshots +} + +export interface ClusterStatsCharFilterTypes { + char_filter_types: ClusterStatsFieldTypes[]; + tokenizer_types: ClusterStatsFieldTypes[]; + filter_types: ClusterStatsFieldTypes[]; + analyzer_types: ClusterStatsFieldTypes[]; + built_in_char_filters: ClusterStatsFieldTypes[]; + built_in_tokenizers: ClusterStatsFieldTypes[]; + built_in_filters: ClusterStatsFieldTypes[]; + built_in_analyzers: ClusterStatsFieldTypes[]; +} + +export interface ClusterStatsClusterFileSystem { + available_in_bytes: long; + free_in_bytes: long; + total_in_bytes: long; +} + +export interface ClusterStatsClusterIndices { + completion: CompletionStats; + count: long; + docs: DocStats; + fielddata: FielddataStats; + query_cache: QueryCacheStats; + segments: SegmentsStats; + shards: ClusterStatsClusterIndicesShards; + store: StoreStats; + mappings: ClusterStatsFieldTypesMappings; + analysis: ClusterStatsCharFilterTypes; + versions?: ClusterStatsIndicesVersions[]; +} + +export interface ClusterStatsClusterIndicesShards { + index?: ClusterStatsClusterIndicesShardsIndex; + primaries?: double; + replication?: double; + total?: double; +} + +export interface ClusterStatsClusterIndicesShardsIndex { + primaries: ClusterStatsClusterShardMetrics; + replication: ClusterStatsClusterShardMetrics; + shards: ClusterStatsClusterShardMetrics; +} + +export interface ClusterStatsClusterIngest { + number_of_pipelines: integer; + processor_stats: Record; +} + +export interface ClusterStatsClusterJvm { + max_uptime_in_millis: long; + mem: ClusterStatsClusterJvmMemory; + threads: long; + versions: ClusterStatsClusterJvmVersion[]; +} + +export interface ClusterStatsClusterJvmMemory { + heap_max_in_bytes: long; + heap_used_in_bytes: long; +} + +export interface ClusterStatsClusterJvmVersion { + bundled_jdk: boolean; + count: integer; + using_bundled_jdk: boolean; + version: VersionString; + vm_name: string; + vm_vendor: string; + vm_version: VersionString; +} + +export interface ClusterStatsClusterNetworkTypes { + http_types: Record; + transport_types: Record; +} + +export interface ClusterStatsClusterNodeCount { + coordinating_only: integer + data: integer + ingest: integer + cluster_manager?: integer + /** + * @deprecated use cluster_manager instead + */ + master?: integer + total: integer + voting_only: integer + remote_cluster_client: integer +} + +export interface ClusterStatsClusterNodes { + count: ClusterStatsClusterNodeCount; + discovery_types: Record; + fs: ClusterStatsClusterFileSystem; + ingest: ClusterStatsClusterIngest; + jvm: ClusterStatsClusterJvm; + network_types: ClusterStatsClusterNetworkTypes; + os: ClusterStatsClusterOperatingSystem; + packaging_types: ClusterStatsNodePackagingType[]; + plugins: PluginStats[]; + process: ClusterStatsClusterProcess; + versions: VersionString[]; +} + +export interface ClusterStatsClusterOperatingSystem { + allocated_processors: integer; + available_processors: integer; + mem: ClusterStatsOperatingSystemMemoryInfo; + names: ClusterStatsClusterOperatingSystemName[]; + pretty_names: ClusterStatsClusterOperatingSystemName[]; + architectures?: ClusterStatsClusterOperatingSystemArchitecture[]; +} + +export interface ClusterStatsClusterOperatingSystemArchitecture { + count: integer; + arch: string; +} + +export interface ClusterStatsClusterOperatingSystemName { + count: integer; + name: Name; +} + +export interface ClusterStatsClusterProcess { + cpu: ClusterStatsClusterProcessCpu; + open_file_descriptors: ClusterStatsClusterProcessOpenFileDescriptors; +} + +export interface ClusterStatsClusterProcessCpu { + percent: integer; +} + +export interface ClusterStatsClusterProcessOpenFileDescriptors { + avg: long; + max: long; + min: long; +} + +export interface ClusterStatsClusterProcessor { + count: long; + current: long; + failed: long; + time_in_millis: long; +} + +export interface ClusterStatsClusterShardMetrics { + avg: double; + max: double; + min: double; +} + +export interface ClusterStatsFieldTypes { + name: Name; + count: integer; + index_count: integer; + script_count?: integer; +} + +export interface ClusterStatsFieldTypesMappings { + field_types: ClusterStatsFieldTypes[]; + runtime_field_types?: ClusterStatsRuntimeFieldTypes[]; +} + +export interface ClusterStatsIndicesVersions { + index_count: integer; + primary_shard_count: integer; + total_primary_bytes: long; + version: VersionString; +} + +export interface ClusterStatsNodePackagingType { + count: integer; + flavor: string; + type: string; +} + +export interface ClusterStatsOperatingSystemMemoryInfo { + free_in_bytes: long; + free_percent: integer; + total_in_bytes: long; + used_in_bytes: long; + used_percent: integer; +} + +export interface ClusterStatsRequest extends RequestBase { + node_id?: NodeIds; + flat_settings?: boolean; + timeout?: Time; +} + +export interface ClusterStatsResponse extends NodesNodesResponseBase { + cluster_name: Name; + cluster_uuid: Uuid; + indices: ClusterStatsClusterIndices; + nodes: ClusterStatsClusterNodes; + status: ClusterClusterStatus; + timestamp: long; +} + +export interface ClusterStatsRuntimeFieldTypes { + name: Name; + count: integer; + index_count: integer; + scriptless_count: integer; + shadowed_count: integer; + lang: string[]; + lines_max: integer; + lines_total: integer; + chars_max: integer; + chars_total: integer; + source_max: integer; + source_total: integer; + doc_max: integer; + doc_total: integer; +} + +export interface DanglingIndicesIndexDeleteRequest extends RequestBase { + stub_a: string; + stub_b: string; + body?: { + stub_c: string; + }; +} + +export interface DanglingIndicesIndexDeleteResponse { + stub: integer; +} + +export interface DanglingIndicesIndexImportRequest extends RequestBase { + stub_a: string; + stub_b: string; + body?: { + stub_c: string; + }; +} + +export interface DanglingIndicesIndexImportResponse { + stub: integer; +} + +export interface DanglingIndicesIndicesListRequest extends RequestBase { + stub_a: string; + stub_b: string; + body?: { + stub_c: string; + }; +} + +export interface DanglingIndicesIndicesListResponse { + stub: integer; +} + +export interface FeaturesGetFeaturesRequest extends RequestBase { + stub_a: string; + stub_b: string; + body?: { + stub_c: string; + }; +} + +export interface FeaturesGetFeaturesResponse { + stub: integer; +} + +export interface FeaturesResetFeaturesRequest extends RequestBase { + stub_a: string; + stub_b: string; + body?: { + stub_c: string; + }; +} + +export interface FeaturesResetFeaturesResponse { + stub: integer; +} + +export interface IndicesAlias { + filter?: QueryDslQueryContainer; + index_routing?: Routing; + is_hidden?: boolean; + is_write_index?: boolean; + routing?: Routing; + search_routing?: Routing; +} + +export interface IndicesAliasDefinition { + filter?: QueryDslQueryContainer; + index_routing?: string; + is_write_index?: boolean; + routing?: string; + search_routing?: string; +} + +export type IndicesDataStreamHealthStatus = 'GREEN' | 'green' | 'YELLOW' | 'yellow' | 'RED' | 'red'; + +export interface IndicesFielddataFrequencyFilter { + max: double; + min: double; + min_segment_size: integer; +} + +export type IndicesIndexCheckOnStartup = 'false' | 'checksum' | 'true'; + +export interface IndicesIndexRouting { + allocation?: IndicesIndexRoutingAllocation; + rebalance?: IndicesIndexRoutingRebalance; +} + +export interface IndicesIndexRoutingAllocation { + enable?: IndicesIndexRoutingAllocationOptions; + include?: IndicesIndexRoutingAllocationInclude; + initial_recovery?: IndicesIndexRoutingAllocationInitialRecovery; + disk?: IndicesIndexRoutingAllocationDisk; +} + +export interface IndicesIndexRoutingAllocationDisk { + threshold_enabled: boolean | string; +} + +export interface IndicesIndexRoutingAllocationInclude { + _tier_preference?: string; + _id?: Id; +} + +export interface IndicesIndexRoutingAllocationInitialRecovery { + _id?: Id; +} + +export type IndicesIndexRoutingAllocationOptions = 'all' | 'primaries' | 'new_primaries' | 'none'; + +export interface IndicesIndexRoutingRebalance { + enable: IndicesIndexRoutingRebalanceOptions; +} + +export type IndicesIndexRoutingRebalanceOptions = 'all' | 'primaries' | 'replicas' | 'none'; + +export interface IndicesIndexSettingBlocks { + read_only?: boolean; + 'index.blocks.read_only'?: boolean; + read_only_allow_delete?: boolean; + 'index.blocks.read_only_allow_delete'?: boolean; + read?: boolean; + 'index.blocks.read'?: boolean; + write?: boolean | string; + 'index.blocks.write'?: boolean | string; + metadata?: boolean; + 'index.blocks.metadata'?: boolean; +} + +export interface IndicesIndexSettings { + number_of_shards?: integer | string; + 'index.number_of_shards'?: integer | string; + number_of_replicas?: integer | string; + 'index.number_of_replicas'?: integer | string; + number_of_routing_shards?: integer; + 'index.number_of_routing_shards'?: integer; + check_on_startup?: IndicesIndexCheckOnStartup; + 'index.check_on_startup'?: IndicesIndexCheckOnStartup; + codec?: string; + 'index.codec'?: string; + routing_partition_size?: integer | string; + 'index.routing_partition_size'?: integer | string; + 'soft_deletes.retention_lease.period'?: Time; + 'index.soft_deletes.retention_lease.period'?: Time; + load_fixed_bitset_filters_eagerly?: boolean; + 'index.load_fixed_bitset_filters_eagerly'?: boolean; + hidden?: boolean | string; + 'index.hidden'?: boolean | string; + auto_expand_replicas?: string; + 'index.auto_expand_replicas'?: string; + 'search.idle.after'?: Time; + 'index.search.idle.after'?: Time; + refresh_interval?: Time; + 'index.refresh_interval'?: Time; + max_result_window?: integer; + 'index.max_result_window'?: integer; + max_inner_result_window?: integer; + 'index.max_inner_result_window'?: integer; + max_rescore_window?: integer; + 'index.max_rescore_window'?: integer; + max_docvalue_fields_search?: integer; + 'index.max_docvalue_fields_search'?: integer; + max_script_fields?: integer; + 'index.max_script_fields'?: integer; + max_ngram_diff?: integer; + 'index.max_ngram_diff'?: integer; + max_shingle_diff?: integer; + 'index.max_shingle_diff'?: integer; + blocks?: IndicesIndexSettingBlocks; + 'index.blocks'?: IndicesIndexSettingBlocks; + max_refresh_listeners?: integer; + 'index.max_refresh_listeners'?: integer; + 'analyze.max_token_count'?: integer; + 'index.analyze.max_token_count'?: integer; + 'highlight.max_analyzed_offset'?: integer; + 'index.highlight.max_analyzed_offset'?: integer; + max_terms_count?: integer; + 'index.max_terms_count'?: integer; + max_regex_length?: integer; + 'index.max_regex_length'?: integer; + routing?: IndicesIndexRouting; + 'index.routing'?: IndicesIndexRouting; + gc_deletes?: Time; + 'index.gc_deletes'?: Time; + default_pipeline?: PipelineName; + 'index.default_pipeline'?: PipelineName; + final_pipeline?: PipelineName; + 'index.final_pipeline'?: PipelineName; + lifecycle?: IndicesIndexSettingsLifecycle; + 'index.lifecycle'?: IndicesIndexSettingsLifecycle; + provided_name?: Name; + 'index.provided_name'?: Name; + creation_date?: DateString; + 'index.creation_date'?: DateString; + uuid?: Uuid; + 'index.uuid'?: Uuid; + version?: IndicesIndexVersioning; + 'index.version'?: IndicesIndexVersioning; + verified_before_close?: boolean | string; + 'index.verified_before_close'?: boolean | string; + format?: string | integer; + 'index.format'?: string | integer; + max_slices_per_scroll?: integer; + 'index.max_slices_per_scroll'?: integer; + 'translog.durability'?: string; + 'index.translog.durability'?: string; + 'query_string.lenient'?: boolean | string; + 'index.query_string.lenient'?: boolean | string; + priority?: integer | string; + 'index.priority'?: integer | string; + top_metrics_max_size?: integer; + analysis?: IndicesIndexSettingsAnalysis; +} + +export interface IndicesIndexSettingsAnalysis { + char_filter?: Record; +} + +export interface IndicesIndexSettingsLifecycle { + name: Name; +} + +export interface IndicesIndexState { + aliases?: Record; + mappings?: MappingTypeMapping; + settings: IndicesIndexSettings | IndicesIndexStatePrefixedSettings; +} + +export interface IndicesIndexStatePrefixedSettings { + index: IndicesIndexSettings; +} + +export interface IndicesIndexVersioning { + created: VersionString; +} + +export interface IndicesNumericFielddata { + format: IndicesNumericFielddataFormat; +} + +export type IndicesNumericFielddataFormat = 'array' | 'disabled'; + +export interface IndicesOverlappingIndexTemplate { + name: Name; + index_patterns?: IndexName[]; +} + +export interface IndicesStringFielddata { + format: IndicesStringFielddataFormat; +} + +export type IndicesStringFielddataFormat = 'paged_bytes' | 'disabled'; + +export interface IndicesTemplateMapping { + aliases: Record; + index_patterns: Name[]; + mappings: MappingTypeMapping; + order: integer; + settings: Record; + version?: VersionNumber; +} + +export type IndicesAddBlockIndicesBlockOptions = 'metadata' | 'read' | 'read_only' | 'write'; + +export interface IndicesAddBlockIndicesBlockStatus { + name: IndexName; + blocked: boolean; +} + +export interface IndicesAddBlockRequest extends RequestBase { + index: IndexName + block: IndicesAddBlockIndicesBlockOptions + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface IndicesAddBlockResponse extends AcknowledgedResponseBase { + shards_acknowledged: boolean; + indices: IndicesAddBlockIndicesBlockStatus[]; +} + +export interface IndicesAnalyzeAnalyzeDetail { + analyzer?: IndicesAnalyzeAnalyzerDetail; + charfilters?: IndicesAnalyzeCharFilterDetail[]; + custom_analyzer: boolean; + tokenfilters?: IndicesAnalyzeTokenDetail[]; + tokenizer?: IndicesAnalyzeTokenDetail; +} + +export interface IndicesAnalyzeAnalyzeToken { + end_offset: long; + position: long; + position_length?: long; + start_offset: long; + token: string; + type: string; +} + +export interface IndicesAnalyzeAnalyzerDetail { + name: string; + tokens: IndicesAnalyzeExplainAnalyzeToken[]; +} + +export interface IndicesAnalyzeCharFilterDetail { + filtered_text: string[]; + name: string; +} + +export interface IndicesAnalyzeExplainAnalyzeToken { + bytes: string; + end_offset: long; + keyword?: boolean; + position: long; + positionLength: long; + start_offset: long; + termFrequency: long; + token: string; + type: string; +} + +export interface IndicesAnalyzeRequest extends RequestBase { + index?: IndexName; + body?: { + analyzer?: string; + attributes?: string[]; + char_filter?: (string | AnalysisCharFilter)[]; + explain?: boolean; + field?: Field; + filter?: (string | AnalysisTokenFilter)[]; + normalizer?: string; + text?: IndicesAnalyzeTextToAnalyze; + tokenizer?: string | AnalysisTokenizer; + }; +} + +export interface IndicesAnalyzeResponse { + detail?: IndicesAnalyzeAnalyzeDetail; + tokens?: IndicesAnalyzeAnalyzeToken[]; +} + +export type IndicesAnalyzeTextToAnalyze = string | string[]; + +export interface IndicesAnalyzeTokenDetail { + name: string; + tokens: IndicesAnalyzeExplainAnalyzeToken[]; +} + +export interface IndicesClearCacheRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + fielddata?: boolean; + fields?: Fields; + ignore_unavailable?: boolean; + query?: boolean; + request?: boolean; +} + +export interface IndicesClearCacheResponse extends ShardsOperationResponseBase { } + +export interface IndicesCloneRequest extends RequestBase { + index: IndexName + target: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards + body?: { + aliases?: Record; + settings?: Record; + }; +} + +export interface IndicesCloneResponse extends AcknowledgedResponseBase { + index: IndexName; + shards_acknowledged: boolean; +} + +export interface IndicesCloseCloseIndexResult { + closed: boolean; + shards?: Record; +} + +export interface IndicesCloseCloseShardResult { + failures: ShardFailure[]; +} + +export interface IndicesCloseRequest extends RequestBase { + index: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards +} + +export interface IndicesCloseResponse extends AcknowledgedResponseBase { + indices: Record; + shards_acknowledged: boolean; +} + +export interface IndicesCreateRequest extends RequestBase { + index: IndexName + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards + body?: { + aliases?: Record; + mappings?: Record | MappingTypeMapping; + settings?: Record; + }; +} + +export interface IndicesCreateResponse extends AcknowledgedResponseBase { + index: IndexName; + shards_acknowledged: boolean; +} + +export interface IndicesDeleteRequest extends RequestBase { + index: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface IndicesDeleteResponse extends IndicesResponseBase { } + +export interface IndicesDeleteAliasRequest extends RequestBase { + index: Indices + name: Names + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface IndicesDeleteAliasResponse extends AcknowledgedResponseBase { } + +export interface IndicesDeleteIndexTemplateRequest extends RequestBase { + name: Name; +} + +export interface IndicesDeleteIndexTemplateResponse extends AcknowledgedResponseBase { } + +export interface IndicesDeleteTemplateRequest extends RequestBase { + name: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface IndicesDeleteTemplateResponse extends AcknowledgedResponseBase { } + +export interface IndicesExistsRequest extends RequestBase { + index: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + flat_settings?: boolean; + ignore_unavailable?: boolean; + include_defaults?: boolean; + local?: boolean; +} + +export type IndicesExistsResponse = boolean; + +export interface IndicesExistsAliasRequest extends RequestBase { + name: Names; + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + local?: boolean; +} + +export type IndicesExistsAliasResponse = boolean; + +export interface IndicesExistsIndexTemplateRequest extends RequestBase { + name: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export type IndicesExistsIndexTemplateResponse = boolean; + +export interface IndicesExistsTemplateRequest extends RequestBase { + name: Names + flat_settings?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export type IndicesExistsTemplateResponse = boolean; + +export interface IndicesFlushRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + force?: boolean; + ignore_unavailable?: boolean; + wait_if_ongoing?: boolean; +} + +export interface IndicesFlushResponse extends ShardsOperationResponseBase { } + +export interface IndicesForcemergeRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + flush?: boolean; + ignore_unavailable?: boolean; + max_num_segments?: long; + only_expunge_deletes?: boolean; +} + +export interface IndicesForcemergeResponse extends ShardsOperationResponseBase { } + +export interface IndicesGetRequest extends RequestBase { + index: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + flat_settings?: boolean + ignore_unavailable?: boolean + include_defaults?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface IndicesGetResponse extends DictionaryResponseBase { } + +export interface IndicesGetAliasIndexAliases { + aliases: Record; +} + +export interface IndicesGetAliasRequest extends RequestBase { + name?: Names; + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + local?: boolean; +} + +export interface IndicesGetAliasResponse + extends DictionaryResponseBase { } + +export interface IndicesGetFieldMappingRequest extends RequestBase { + fields: Fields; + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + include_defaults?: boolean; + local?: boolean; +} + +export interface IndicesGetFieldMappingResponse + extends DictionaryResponseBase { } + +export interface IndicesGetFieldMappingTypeFieldMappings { + mappings: Record; +} + +export interface IndicesGetIndexTemplateIndexTemplate { + index_patterns: Name[]; + composed_of: Name[]; + template: IndicesGetIndexTemplateIndexTemplateSummary; + version?: VersionNumber; + priority?: long; + _meta?: Metadata; + allow_auto_create?: boolean; + data_stream?: Record; +} + +export interface IndicesGetIndexTemplateIndexTemplateItem { + name: Name; + index_template: IndicesGetIndexTemplateIndexTemplate; +} + +export interface IndicesGetIndexTemplateIndexTemplateSummary { + aliases?: Record; + mappings?: MappingTypeMapping; + settings?: Record; +} + +export interface IndicesGetIndexTemplateRequest extends RequestBase { + name?: Name; + local?: boolean; + body?: { + flat_settings?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + } +} + +export interface IndicesGetIndexTemplateResponse { + index_templates: IndicesGetIndexTemplateIndexTemplateItem[]; +} + +export interface IndicesGetMappingIndexMappingRecord { + item?: MappingTypeMapping; + mappings: MappingTypeMapping; +} + +export interface IndicesGetMappingRequest extends RequestBase { + index?: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + ignore_unavailable?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface IndicesGetMappingResponse + extends DictionaryResponseBase { } + +export interface IndicesGetSettingsRequest extends RequestBase { + index?: Indices + name?: Names + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + flat_settings?: boolean + ignore_unavailable?: boolean + include_defaults?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface IndicesGetSettingsResponse + extends DictionaryResponseBase { } + +export interface IndicesGetTemplateRequest extends RequestBase { + name?: Names + flat_settings?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface IndicesGetTemplateResponse + extends DictionaryResponseBase { } + +export interface IndicesGetUpgradeRequest extends RequestBase { + stub: string; +} + +export interface IndicesGetUpgradeResponse { + overlapping?: IndicesOverlappingIndexTemplate[]; + template?: IndicesTemplateMapping; +} + +export interface IndicesOpenRequest extends RequestBase { + index: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards +} + +export interface IndicesOpenResponse extends AcknowledgedResponseBase { + shards_acknowledged: boolean; +} + +export interface IndicesPutAliasRequest extends RequestBase { + index: Indices + name: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + filter?: QueryDslQueryContainer; + index_routing?: Routing; + is_write_index?: boolean; + routing?: Routing; + search_routing?: Routing; + }; +} + +export interface IndicesPutAliasResponse extends AcknowledgedResponseBase { } + +export interface IndicesPutIndexTemplateIndexTemplateMapping { + aliases?: Record; + mappings?: MappingTypeMapping; + settings?: IndicesIndexSettings; +} + +export interface IndicesPutIndexTemplateRequest extends RequestBase { + name: Name; + body?: { + index_patterns?: Indices; + composed_of?: Name[]; + template?: IndicesPutIndexTemplateIndexTemplateMapping; + data_stream?: EmptyObject; + priority?: integer; + version?: VersionNumber; + _meta?: Metadata; + }; +} + +export interface IndicesPutIndexTemplateResponse extends AcknowledgedResponseBase { } + +export interface IndicesPutMappingRequest extends RequestBase { + index?: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + write_index_only?: boolean + body?: { + all_field?: MappingAllField; + date_detection?: boolean; + dynamic?: boolean | MappingDynamicMapping; + dynamic_date_formats?: string[]; + dynamic_templates?: + | Record + | Record[]; + field_names_field?: MappingFieldNamesField; + index_field?: MappingIndexField; + meta?: Record; + numeric_detection?: boolean; + properties?: Record; + routing_field?: MappingRoutingField; + size_field?: MappingSizeField; + source_field?: MappingSourceField; + runtime?: MappingRuntimeFields; + }; +} + +export interface IndicesPutMappingResponse extends IndicesResponseBase { } + +export interface IndicesPutSettingsIndexSettingsBody extends IndicesIndexSettings { + settings?: IndicesIndexSettings; +} + +export interface IndicesPutSettingsRequest extends RequestBase { + index?: Indices + allow_no_indices?: boolean + expand_wildcards?: ExpandWildcards + flat_settings?: boolean + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + preserve_existing?: boolean + timeout?: Time + body?: IndicesPutSettingsIndexSettingsBody +} + +export interface IndicesPutSettingsResponse extends AcknowledgedResponseBase { } + +export interface IndicesPutTemplateRequest extends RequestBase { + name: Name + create?: boolean + flat_settings?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + aliases?: Record; + index_patterns?: string | string[]; + mappings?: MappingTypeMapping; + order?: integer; + settings?: Record; + version?: VersionNumber; + }; +} + +export interface IndicesPutTemplateResponse extends AcknowledgedResponseBase { } + +export interface IndicesRecoveryFileDetails { + length: long; + name: string; + recovered: long; +} + +export interface IndicesRecoveryRecoveryBytes { + percent: Percentage; + recovered?: ByteSize; + recovered_in_bytes: ByteSize; + reused?: ByteSize; + reused_in_bytes: ByteSize; + total?: ByteSize; + total_in_bytes: ByteSize; +} + +export interface IndicesRecoveryRecoveryFiles { + details?: IndicesRecoveryFileDetails[]; + percent: Percentage; + recovered: long; + reused: long; + total: long; +} + +export interface IndicesRecoveryRecoveryIndexStatus { + bytes?: IndicesRecoveryRecoveryBytes; + files: IndicesRecoveryRecoveryFiles; + size: IndicesRecoveryRecoveryBytes; + source_throttle_time?: Time; + source_throttle_time_in_millis: EpochMillis; + target_throttle_time?: Time; + target_throttle_time_in_millis: EpochMillis; + total_time_in_millis: EpochMillis; + total_time?: Time; +} + +export interface IndicesRecoveryRecoveryOrigin { + hostname?: string; + host?: Host; + transport_address?: TransportAddress; + id?: Id; + ip?: Ip; + name?: Name; + bootstrap_new_history_uuid?: boolean; + repository?: Name; + snapshot?: Name; + version?: VersionString; + restoreUUID?: Uuid; + index?: IndexName; +} + +export interface IndicesRecoveryRecoveryStartStatus { + check_index_time: long; + total_time_in_millis: string; +} + +export interface IndicesRecoveryRecoveryStatus { + shards: IndicesRecoveryShardRecovery[]; +} + +export interface IndicesRecoveryRequest extends RequestBase { + index?: Indices; + active_only?: boolean; + detailed?: boolean; +} + +export interface IndicesRecoveryResponse + extends DictionaryResponseBase { } + +export interface IndicesRecoveryShardRecovery { + id: long; + index: IndicesRecoveryRecoveryIndexStatus; + primary: boolean; + source: IndicesRecoveryRecoveryOrigin; + stage: string; + start?: IndicesRecoveryRecoveryStartStatus; + start_time?: DateString; + start_time_in_millis: EpochMillis; + stop_time?: DateString; + stop_time_in_millis: EpochMillis; + target: IndicesRecoveryRecoveryOrigin; + total_time?: DateString; + total_time_in_millis: EpochMillis; + translog: IndicesRecoveryTranslogStatus; + type: Type; + verify_index: IndicesRecoveryVerifyIndex; +} + +export interface IndicesRecoveryTranslogStatus { + percent: Percentage; + recovered: long; + total: long; + total_on_start: long; + total_time?: string; + total_time_in_millis: EpochMillis; +} + +export interface IndicesRecoveryVerifyIndex { + check_index_time?: Time; + check_index_time_in_millis: EpochMillis; + total_time?: Time; + total_time_in_millis: EpochMillis; +} + +export interface IndicesRefreshRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; +} + +export interface IndicesRefreshResponse extends ShardsOperationResponseBase { } + +export interface IndicesResolveIndexRequest extends RequestBase { + name: Names; + expand_wildcards?: ExpandWildcards; +} + +export interface IndicesResolveIndexResolveIndexAliasItem { + name: Name; + indices: Indices; +} + +export interface IndicesResolveIndexResolveIndexDataStreamsItem { + name: DataStreamName; + timestamp_field: Field; + backing_indices: Indices; +} + +export interface IndicesResolveIndexResolveIndexItem { + name: Name; + aliases?: string[]; + attributes: string[]; + data_stream?: DataStreamName; +} + +export interface IndicesResolveIndexResponse { + indices: IndicesResolveIndexResolveIndexItem[]; + aliases: IndicesResolveIndexResolveIndexAliasItem[]; + data_streams: IndicesResolveIndexResolveIndexDataStreamsItem[]; +} + +export interface IndicesRolloverRequest extends RequestBase { + alias: IndexAlias + new_index?: IndexName + dry_run?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards + body?: { + aliases?: Record; + conditions?: IndicesRolloverRolloverConditions; + mappings?: Record | MappingTypeMapping; + settings?: Record; + }; +} + +export interface IndicesRolloverResponse extends AcknowledgedResponseBase { + conditions: Record; + dry_run: boolean; + new_index: string; + old_index: string; + rolled_over: boolean; + shards_acknowledged: boolean; +} + +export interface IndicesRolloverRolloverConditions { + max_age?: Time; + max_docs?: long; + max_size?: string; + max_primary_shard_size?: ByteSize; +} + +export interface IndicesSegmentsIndexSegment { + shards: Record; +} + +export interface IndicesSegmentsRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + verbose?: boolean; +} + +export interface IndicesSegmentsResponse { + indices: Record; + _shards: ShardStatistics; +} + +export interface IndicesSegmentsSegment { + attributes: Record; + committed: boolean; + compound: boolean; + deleted_docs: long; + generation: integer; + memory_in_bytes: double; + search: boolean; + size_in_bytes: double; + num_docs: long; + version: VersionString; +} + +export interface IndicesSegmentsShardSegmentRouting { + node: string; + primary: boolean; + state: string; +} + +export interface IndicesSegmentsShardsSegment { + num_committed_segments: integer; + routing: IndicesSegmentsShardSegmentRouting; + num_search_segments: integer; + segments: Record; +} + +export interface IndicesShardStoresIndicesShardStores { + shards: Record; +} + +export interface IndicesShardStoresRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + expand_wildcards?: ExpandWildcards; + ignore_unavailable?: boolean; + status?: string | string[]; +} + +export interface IndicesShardStoresResponse { + indices: Record; +} + +export interface IndicesShardStoresShardStore { + allocation: IndicesShardStoresShardStoreAllocation; + allocation_id: Id; + attributes: Record; + id: Id; + legacy_version: VersionNumber; + name: Name; + store_exception: IndicesShardStoresShardStoreException; + transport_address: TransportAddress; +} + +export type IndicesShardStoresShardStoreAllocation = 'primary' | 'replica' | 'unused'; + +export interface IndicesShardStoresShardStoreException { + reason: string; + type: string; +} + +export interface IndicesShardStoresShardStoreWrapper { + stores: IndicesShardStoresShardStore[]; +} + +export interface IndicesShrinkRequest extends RequestBase { + index: IndexName + target: IndexName + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards + body?: { + aliases?: Record; + settings?: Record; + }; +} + +export interface IndicesShrinkResponse extends AcknowledgedResponseBase { + shards_acknowledged: boolean; + index: IndexName; +} + +export interface IndicesSimulateIndexTemplateRequest extends RequestBase { + name?: Name; + body?: { + index_patterns?: IndexName[]; + composed_of?: Name[]; + overlapping?: IndicesOverlappingIndexTemplate[]; + template?: IndicesTemplateMapping; + }; +} + +export interface IndicesSimulateIndexTemplateResponse { } + +export interface IndicesSimulateTemplateRequest extends RequestBase { + name?: Name + create?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + body?: IndicesGetIndexTemplateIndexTemplate +} + +export interface IndicesSimulateTemplateResponse { + stub: string; +} + +export interface IndicesSplitRequest extends RequestBase { + index: IndexName + target: IndexName + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + wait_for_active_shards?: WaitForActiveShards + body?: { + aliases?: Record; + settings?: Record; + }; +} + +export interface IndicesSplitResponse extends AcknowledgedResponseBase { + shards_acknowledged: boolean; + index: IndexName; +} + +export interface IndicesStatsIndexStats { + completion?: CompletionStats; + docs?: DocStats; + fielddata?: FielddataStats; + flush?: FlushStats; + get?: GetStats; + indexing?: IndexingStats; + merges?: MergesStats; + query_cache?: QueryCacheStats; + recovery?: RecoveryStats; + refresh?: RefreshStats; + request_cache?: RequestCacheStats; + search?: SearchStats; + segments?: SegmentsStats; + store?: StoreStats; + translog?: TranslogStats; + warmer?: WarmerStats; + bulk?: BulkStats; +} + +export interface IndicesStatsIndicesStats { + primaries: IndicesStatsIndexStats; + shards?: Record; + total: IndicesStatsIndexStats; + uuid?: Uuid; +} + +export interface IndicesStatsRequest extends RequestBase { + metric?: Metrics; + index?: Indices; + completion_fields?: Fields; + expand_wildcards?: ExpandWildcards; + fielddata_fields?: Fields; + fields?: Fields; + forbid_closed_indices?: boolean; + groups?: string | string[]; + include_segment_file_sizes?: boolean; + include_unloaded_segments?: boolean; + level?: Level; + types?: Types; +} + +export interface IndicesStatsResponse { + indices?: Record; + _shards: ShardStatistics; + _all: IndicesStatsIndicesStats; +} + +export interface IndicesStatsShardCommit { + generation: integer; + id: Id; + num_docs: long; + user_data: Record; +} + +export interface IndicesStatsShardFileSizeInfo { + description: string; + size_in_bytes: long; + min_size_in_bytes?: long; + max_size_in_bytes?: long; + average_size_in_bytes?: long; + count?: long; +} + +export interface IndicesStatsShardLease { + id: Id; + retaining_seq_no: SequenceNumber; + timestamp: long; + source: string; +} + +export interface IndicesStatsShardPath { + data_path: string; + is_custom_data_path: boolean; + state_path: string; +} + +export interface IndicesStatsShardQueryCache { + cache_count: long; + cache_size: long; + evictions: long; + hit_count: long; + memory_size_in_bytes: long; + miss_count: long; + total_count: long; +} + +export interface IndicesStatsShardRetentionLeases { + primary_term: long; + version: VersionNumber; + leases: IndicesStatsShardLease[]; +} + +export interface IndicesStatsShardRouting { + node: string; + primary: boolean; + relocating_node?: string; + state: IndicesStatsShardRoutingState; +} + +export type IndicesStatsShardRoutingState = + | 'UNASSIGNED' + | 'INITIALIZING' + | 'STARTED' + | 'RELOCATING'; + +export interface IndicesStatsShardSequenceNumber { + global_checkpoint: long; + local_checkpoint: long; + max_seq_no: SequenceNumber; +} + +export interface IndicesStatsShardStats { + commit: IndicesStatsShardCommit; + completion: CompletionStats; + docs: DocStats; + fielddata: FielddataStats; + flush: FlushStats; + get: GetStats; + indexing: IndexingStats; + merges: MergesStats; + shard_path: IndicesStatsShardPath; + query_cache: IndicesStatsShardQueryCache; + recovery: RecoveryStats; + refresh: RefreshStats; + request_cache: RequestCacheStats; + retention_leases: IndicesStatsShardRetentionLeases; + routing: IndicesStatsShardRouting; + search: SearchStats; + segments: SegmentsStats; + seq_no: IndicesStatsShardSequenceNumber; + store: StoreStats; + translog: TranslogStats; + warmer: WarmerStats; + bulk?: BulkStats; +} + +export interface IndicesUpdateAliasesIndicesUpdateAliasBulk { } + +export interface IndicesUpdateAliasesRequest extends RequestBase { + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + actions?: IndicesUpdateAliasesIndicesUpdateAliasBulk[]; + }; +} + +export interface IndicesUpdateAliasesResponse extends AcknowledgedResponseBase { } + +export interface IndicesUpgradeRequest extends RequestBase { + stub_b: integer; + stub_a: integer; + body?: { + stub_c: integer; + }; +} + +export interface IndicesUpgradeResponse { + stub: integer; +} + +export interface IndicesValidateQueryIndicesValidationExplanation { + error?: string; + explanation?: string; + index: IndexName; + valid: boolean; +} + +export interface IndicesValidateQueryRequest extends RequestBase { + index?: Indices; + allow_no_indices?: boolean; + all_shards?: boolean; + analyzer?: string; + analyze_wildcard?: boolean; + default_operator?: DefaultOperator; + df?: string; + expand_wildcards?: ExpandWildcards; + explain?: boolean; + ignore_unavailable?: boolean; + lenient?: boolean; + query_on_query_string?: string; + rewrite?: boolean; + q?: string; + body?: { + query?: QueryDslQueryContainer; + }; +} + +export interface IndicesValidateQueryResponse { + explanations?: IndicesValidateQueryIndicesValidationExplanation[]; + _shards?: ShardStatistics; + valid: boolean; + error?: string; +} + +export interface IngestAppendProcessor extends IngestProcessorBase { + field: Field; + value: any[]; + allow_duplicates?: boolean; +} + +export interface IngestAttachmentProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + indexed_chars?: long; + indexed_chars_field?: Field; + properties?: string[]; + target_field?: Field; + resource_name?: string; +} + +export interface IngestBytesProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + target_field?: Field; +} + +export interface IngestCircleProcessor extends IngestProcessorBase { + error_distance: double; + field: Field; + ignore_missing: boolean; + shape_type: IngestShapeType; + target_field: Field; +} + +export interface IngestConvertProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + target_field: Field; + type: IngestConvertType; +} + +export type IngestConvertType = + | 'integer' + | 'long' + | 'float' + | 'double' + | 'string' + | 'boolean' + | 'auto'; + +export interface IngestCsvProcessor extends IngestProcessorBase { + empty_value: any; + description?: string; + field: Field; + ignore_missing?: boolean; + quote?: string; + separator?: string; + target_fields: Fields; + trim: boolean; +} + +export interface IngestDateIndexNameProcessor extends IngestProcessorBase { + date_formats: string[]; + date_rounding: string | IngestDateRounding; + field: Field; + index_name_format: string; + index_name_prefix: string; + locale: string; + timezone: string; +} + +export interface IngestDateProcessor extends IngestProcessorBase { + field: Field; + formats: string[]; + locale?: string; + target_field?: Field; + timezone?: string; +} + +export type IngestDateRounding = 's' | 'm' | 'h' | 'd' | 'w' | 'M' | 'y'; + +export interface IngestDissectProcessor extends IngestProcessorBase { + append_separator: string; + field: Field; + ignore_missing: boolean; + pattern: string; +} + +export interface IngestDotExpanderProcessor extends IngestProcessorBase { + field: Field; + path?: string; +} + +export interface IngestDropProcessor extends IngestProcessorBase { } + +export interface IngestEnrichProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + max_matches?: integer; + override?: boolean; + policy_name: string; + shape_relation?: GeoShapeRelation; + target_field: Field; +} + +export interface IngestFailProcessor extends IngestProcessorBase { + message: string; +} + +export interface IngestForeachProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + processor: IngestProcessorContainer; +} + +export interface IngestGeoIpProcessor extends IngestProcessorBase { + database_file: string; + field: Field; + first_only: boolean; + ignore_missing: boolean; + properties: string[]; + target_field: Field; +} + +export interface IngestGrokProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + pattern_definitions: Record; + patterns: string[]; + trace_match?: boolean; +} + +export interface IngestGsubProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + pattern: string; + replacement: string; + target_field?: Field; +} + +export interface IngestInferenceConfig { + regression?: IngestInferenceConfigRegression; +} + +export interface IngestInferenceConfigRegression { + results_field: string; +} + +export interface IngestInferenceProcessor extends IngestProcessorBase { + model_id: Id; + target_field: Field; + field_map?: Record; + inference_config?: IngestInferenceConfig; +} + +export interface IngestJoinProcessor extends IngestProcessorBase { + field: Field; + separator: string; + target_field?: Field; +} + +export interface IngestJsonProcessor extends IngestProcessorBase { + add_to_root: boolean; + field: Field; + target_field: Field; +} + +export interface IngestKeyValueProcessor extends IngestProcessorBase { + exclude_keys?: string[]; + field: Field; + field_split: string; + ignore_missing?: boolean; + include_keys?: string[]; + prefix?: string; + strip_brackets?: boolean; + target_field?: Field; + trim_key?: string; + trim_value?: string; + value_split: string; +} + +export interface IngestLowercaseProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + target_field?: Field; +} + +export interface IngestPipeline { + description?: string; + on_failure?: IngestProcessorContainer[]; + processors?: IngestProcessorContainer[]; + version?: VersionNumber; +} + +export interface IngestPipelineConfig { + description?: string; + version?: VersionNumber; + processors: IngestProcessorContainer[]; +} + +export interface IngestPipelineProcessor extends IngestProcessorBase { + name: Name; +} + +export interface IngestProcessorBase { + if?: string; + ignore_failure?: boolean; + on_failure?: IngestProcessorContainer[]; + tag?: string; +} + +export interface IngestProcessorContainer { + attachment?: IngestAttachmentProcessor; + append?: IngestAppendProcessor; + csv?: IngestCsvProcessor; + convert?: IngestConvertProcessor; + date?: IngestDateProcessor; + date_index_name?: IngestDateIndexNameProcessor; + dot_expander?: IngestDotExpanderProcessor; + fail?: IngestFailProcessor; + foreach?: IngestForeachProcessor; + json?: IngestJsonProcessor; + user_agent?: IngestUserAgentProcessor; + kv?: IngestKeyValueProcessor; + geoip?: IngestGeoIpProcessor; + grok?: IngestGrokProcessor; + gsub?: IngestGsubProcessor; + join?: IngestJoinProcessor; + lowercase?: IngestLowercaseProcessor; + remove?: IngestRemoveProcessor; + rename?: IngestRenameProcessor; + script?: Script; + set?: IngestSetProcessor; + sort?: IngestSortProcessor; + split?: IngestSplitProcessor; + trim?: IngestTrimProcessor; + uppercase?: IngestUppercaseProcessor; + urldecode?: IngestUrlDecodeProcessor; + bytes?: IngestBytesProcessor; + dissect?: IngestDissectProcessor; + set_security_user?: IngestSetSecurityUserProcessor; + pipeline?: IngestPipelineProcessor; + drop?: IngestDropProcessor; + circle?: IngestCircleProcessor; + inference?: IngestInferenceProcessor; +} + +export interface IngestRemoveProcessor extends IngestProcessorBase { + field: Fields; + ignore_missing?: boolean; +} + +export interface IngestRenameProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + target_field: Field; +} + +export interface IngestSetProcessor extends IngestProcessorBase { + field: Field; + override?: boolean; + value: any; +} + +export interface IngestSetSecurityUserProcessor extends IngestProcessorBase { + field: Field; + properties?: string[]; +} + +export type IngestShapeType = 'geo_shape' | 'shape'; + +export interface IngestSortProcessor extends IngestProcessorBase { + field: Field; + order: SearchSortOrder; + target_field: Field; +} + +export interface IngestSplitProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + preserve_trailing?: boolean; + separator: string; + target_field?: Field; +} + +export interface IngestTrimProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + target_field?: Field; +} + +export interface IngestUppercaseProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + target_field?: Field; +} + +export interface IngestUrlDecodeProcessor extends IngestProcessorBase { + field: Field; + ignore_missing?: boolean; + target_field?: Field; +} + +export interface IngestUserAgentProcessor extends IngestProcessorBase { + field: Field; + ignore_missing: boolean; + options: IngestUserAgentProperty[]; + regex_file: string; + target_field: Field; +} + +export type IngestUserAgentProperty = + | 'NAME' + | 'MAJOR' + | 'MINOR' + | 'PATCH' + | 'OS' + | 'OS_NAME' + | 'OS_MAJOR' + | 'OS_MINOR' + | 'DEVICE' + | 'BUILD'; + +export interface IngestDeletePipelineRequest extends RequestBase { + id: Id + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface IngestDeletePipelineResponse extends AcknowledgedResponseBase { } + +export interface IngestGeoIpStatsGeoIpDownloadStatistics { + successful_downloads: integer; + failed_downloads: integer; + total_download_time: integer; + database_count: integer; + skipped_updates: integer; +} + +export interface IngestGeoIpStatsGeoIpNodeDatabaseName { + name: Name; +} + +export interface IngestGeoIpStatsGeoIpNodeDatabases { + databases: IngestGeoIpStatsGeoIpNodeDatabaseName[]; + files_in_temp: string[]; +} + +export interface IngestGeoIpStatsRequest extends RequestBase { } + +export interface IngestGeoIpStatsResponse { + stats: IngestGeoIpStatsGeoIpDownloadStatistics; + nodes: Record; +} + +export interface IngestGetPipelineRequest extends RequestBase { + id?: Id + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + summary?: boolean +} + +export interface IngestGetPipelineResponse extends DictionaryResponseBase { } + +export interface IngestProcessorGrokRequest extends RequestBase { } + +export interface IngestProcessorGrokResponse { + patterns: Record; +} + +export interface IngestPutPipelineRequest extends RequestBase { + id: Id + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + description?: string; + on_failure?: IngestProcessorContainer[]; + processors?: IngestProcessorContainer[]; + version?: VersionNumber; + }; +} + +export interface IngestPutPipelineResponse extends AcknowledgedResponseBase { } + +export interface IngestSimulatePipelineDocument { + _id?: Id; + _index?: IndexName; + _source: any; +} + +export interface IngestSimulatePipelineDocumentSimulation { + _id: Id; + _index: IndexName; + _ingest: IngestSimulatePipelineIngest; + _parent?: string; + _routing?: string; + _source: Record; + _type?: Type; +} + +export interface IngestSimulatePipelineIngest { + timestamp: DateString; + pipeline?: Name; +} + +export interface IngestSimulatePipelinePipelineSimulation { + doc?: IngestSimulatePipelineDocumentSimulation; + processor_results?: IngestSimulatePipelinePipelineSimulation[]; + tag?: string; + processor_type?: string; +} + +export interface IngestSimulatePipelineRequest extends RequestBase { + id?: Id; + verbose?: boolean; + body?: { + docs?: IngestSimulatePipelineDocument[]; + pipeline?: IngestPipeline; + }; +} + +export interface IngestSimulatePipelineResponse { + docs: IngestSimulatePipelinePipelineSimulation[]; +} + +export interface NodesAdaptiveSelection { + avg_queue_size: long; + avg_response_time: long; + avg_response_time_ns: long; + avg_service_time: string; + avg_service_time_ns: long; + outgoing_searches: long; + rank: string; +} + +export interface NodesBreaker { + estimated_size: string; + estimated_size_in_bytes: long; + limit_size: string; + limit_size_in_bytes: long; + overhead: float; + tripped: float; +} + +export interface NodesCpu { + percent: integer; + sys?: string; + sys_in_millis?: long; + total?: string; + total_in_millis?: long; + user?: string; + user_in_millis?: long; + load_average?: Record; +} + +export interface NodesDataPathStats { + available: string; + available_in_bytes: long; + disk_queue: string; + disk_reads: long; + disk_read_size: string; + disk_read_size_in_bytes: long; + disk_writes: long; + disk_write_size: string; + disk_write_size_in_bytes: long; + free: string; + free_in_bytes: long; + mount: string; + path: string; + total: string; + total_in_bytes: long; + type: string; +} + +export interface NodesExtendedMemoryStats extends NodesMemoryStats { + free_percent: integer; + used_percent: integer; + total_in_bytes: integer; + free_in_bytes: integer; + used_in_bytes: integer; +} + +export interface NodesFileSystem { + data: NodesDataPathStats[]; + timestamp: long; + total: NodesFileSystemTotal; +} + +export interface NodesFileSystemTotal { + available: string; + available_in_bytes: long; + free: string; + free_in_bytes: long; + total: string; + total_in_bytes: long; +} + +export interface NodesGarbageCollector { + collectors: Record; +} + +export interface NodesGarbageCollectorTotal { + collection_count: long; + collection_time: string; + collection_time_in_millis: long; +} + +export interface NodesHttp { + current_open: integer; + total_opened: long; +} + +export interface NodesIngest { + pipelines: Record; + total: NodesIngestTotal; +} + +export interface NodesIngestTotal { + count: long; + current: long; + failed: long; + processors: NodesKeyedProcessor[]; + time_in_millis: long; +} + +export interface NodesJvm { + buffer_pools: Record; + classes: NodesJvmClasses; + gc: NodesGarbageCollector; + mem: NodesMemoryStats; + threads: NodesJvmThreads; + timestamp: long; + uptime: string; + uptime_in_millis: long; +} + +export interface NodesJvmClasses { + current_loaded_count: long; + total_loaded_count: long; + total_unloaded_count: long; +} + +export interface NodesJvmThreads { + count: long; + peak_count: long; +} + +export interface NodesKeyedProcessor { + statistics: NodesProcess; + type: string; +} + +export interface NodesMemoryStats { + resident?: string; + resident_in_bytes?: long; + share?: string; + share_in_bytes?: long; + total_virtual?: string; + total_virtual_in_bytes?: long; + total_in_bytes: long; + free_in_bytes: long; + used_in_bytes: long; +} + +export interface NodesNodeBufferPool { + count: long; + total_capacity: string; + total_capacity_in_bytes: long; + used: string; + used_in_bytes: long; +} + +export interface NodesNodesResponseBase { + _nodes: NodeStatistics; +} + +export interface NodesOperatingSystem { + cpu: NodesCpu; + mem: NodesExtendedMemoryStats; + swap: NodesMemoryStats; + timestamp: long; +} + +export interface NodesProcess { + cpu: NodesCpu; + mem: NodesMemoryStats; + open_file_descriptors: integer; + timestamp: long; +} + +export interface NodesScripting { + cache_evictions: long; + compilations: long; +} + +export interface NodesStats { + adaptive_selection: Record; + breakers: Record; + fs: NodesFileSystem; + host: Host; + http: NodesHttp; + indices: IndicesStatsIndexStats; + ingest: NodesIngest; + ip: Ip | Ip[]; + jvm: NodesJvm; + name: Name; + os: NodesOperatingSystem; + process: NodesProcess; + roles: NodeRoles; + script: NodesScripting; + thread_pool: Record; + timestamp: long; + transport: NodesTransport; + transport_address: TransportAddress; + attributes: Record; +} + +export interface NodesThreadCount { + active: long; + completed: long; + largest: long; + queue: long; + rejected: long; + threads: long; +} + +export interface NodesTransport { + rx_count: long; + rx_size: string; + rx_size_in_bytes: long; + server_open: integer; + tx_count: long; + tx_size: string; + tx_size_in_bytes: long; +} + +export interface NodesHotThreadsHotThread { + hosts: Host[]; + node_id: Id; + node_name: Name; + threads: string[]; +} + +export interface NodesHotThreadsRequest extends RequestBase { + node_id?: NodeIds; + ignore_idle_threads?: boolean; + interval?: Time; + snapshots?: long; + threads?: long; + thread_type?: ThreadType; + timeout?: Time; +} + +export interface NodesHotThreadsResponse { + hot_threads: NodesHotThreadsHotThread[]; +} + +export interface NodesInfoNodeInfo { + attributes: Record; + build_hash: string; + build_type: string; + host: Host; + http?: NodesInfoNodeInfoHttp; + ip: Ip; + jvm?: NodesInfoNodeJvmInfo; + name: Name; + network?: NodesInfoNodeInfoNetwork; + os?: NodesInfoNodeOperatingSystemInfo; + plugins?: PluginStats[]; + process?: NodesInfoNodeProcessInfo; + roles: NodeRoles; + settings?: NodesInfoNodeInfoSettings; + thread_pool?: Record; + total_indexing_buffer?: long; + total_indexing_buffer_in_bytes?: ByteSize; + transport?: NodesInfoNodeInfoTransport; + transport_address: TransportAddress; + version: VersionString; + modules?: PluginStats[]; + ingest?: NodesInfoNodeInfoIngest; + aggregations?: Record; +} + +export interface NodesInfoNodeInfoAction { + destructive_requires_name: string; +} + +export interface NodesInfoNodeInfoAggregation { + types: string[]; +} + +export interface NodesInfoNodeInfoBootstrap { + memory_lock: string; +} + +export interface NodesInfoNodeInfoClient { + type: string; +} + +export interface NodesInfoNodeInfoDiscover { + seed_hosts: string; +} + +export interface NodesInfoNodeInfoHttp { + bound_address: string[]; + max_content_length?: ByteSize; + max_content_length_in_bytes: long; + publish_address: string; +} + +export interface NodesInfoNodeInfoIngest { + processors: NodesInfoNodeInfoIngestProcessor[]; +} + +export interface NodesInfoNodeInfoIngestProcessor { + type: string; +} + +export interface NodesInfoNodeInfoJvmMemory { + direct_max?: ByteSize; + direct_max_in_bytes: long; + heap_init?: ByteSize; + heap_init_in_bytes: long; + heap_max?: ByteSize; + heap_max_in_bytes: long; + non_heap_init?: ByteSize; + non_heap_init_in_bytes: long; + non_heap_max?: ByteSize; + non_heap_max_in_bytes: long; +} + +export interface NodesInfoNodeInfoMemory { + total: string; + total_in_bytes: long; +} + +export interface NodesInfoNodeInfoNetwork { + primary_interface: NodesInfoNodeInfoNetworkInterface; + refresh_interval: integer; +} + +export interface NodesInfoNodeInfoNetworkInterface { + address: string; + mac_address: string; + name: Name; +} + +export interface NodesInfoNodeInfoOSCPU { + cache_size: string; + cache_size_in_bytes: integer; + cores_per_socket: integer; + mhz: integer; + model: string; + total_cores: integer; + total_sockets: integer; + vendor: string; +} + +export interface NodesInfoNodeInfoPath { + logs: string; + home: string; + repo: string[]; + data?: string[]; +} + +export interface NodesInfoNodeInfoRepositories { + url: NodesInfoNodeInfoRepositoriesUrl; +} + +export interface NodesInfoNodeInfoRepositoriesUrl { + allowed_urls: string; +} + +export interface NodesInfoNodeInfoScript { + allowed_types: string; + disable_max_compilations_rate: string; +} + +export interface NodesInfoNodeInfoSearch { + remote: NodesInfoNodeInfoSearchRemote; +} + +export interface NodesInfoNodeInfoSearchRemote { + connect: string; +} + +export interface NodesInfoNodeInfoSettings { + cluster: NodesInfoNodeInfoSettingsCluster; + node: NodesInfoNodeInfoSettingsNode; + path: NodesInfoNodeInfoPath; + repositories?: NodesInfoNodeInfoRepositories; + discovery?: NodesInfoNodeInfoDiscover; + action?: NodesInfoNodeInfoAction; + client: NodesInfoNodeInfoClient; + http: NodesInfoNodeInfoSettingsHttp; + bootstrap?: NodesInfoNodeInfoBootstrap; + transport: NodesInfoNodeInfoSettingsTransport; + network?: NodesInfoNodeInfoSettingsNetwork; + script?: NodesInfoNodeInfoScript; + search?: NodesInfoNodeInfoSearch; +} + +export interface NodesInfoNodeInfoSettingsCluster { + name: Name + routing?: IndicesIndexRouting + election: NodesInfoNodeInfoSettingsClusterElection + initial_cluster_manager_nodes?: string + initial_master_nodes?: string +} + +export interface NodesInfoNodeInfoSettingsClusterElection { + strategy: Name; +} + +export interface NodesInfoNodeInfoSettingsHttp { + type: string | NodesInfoNodeInfoSettingsHttpType; + 'type.default'?: string; + compression?: boolean | string; + port?: integer | string; +} + +export interface NodesInfoNodeInfoSettingsHttpType { + default: string; +} + +export interface NodesInfoNodeInfoSettingsNetwork { + host: Host; +} + +export interface NodesInfoNodeInfoSettingsNode { + name: Name; + attr: Record; + max_local_storage_nodes?: string; +} + +export interface NodesInfoNodeInfoSettingsTransport { + type: string | NodesInfoNodeInfoSettingsTransportType; + 'type.default'?: string; + features?: NodesInfoNodeInfoSettingsTransportFeatures; +} + +export interface NodesInfoNodeInfoSettingsTransportFeatures { } + +export interface NodesInfoNodeInfoSettingsTransportType { + default: string; +} + +export interface NodesInfoNodeInfoTransport { + bound_address: string[]; + publish_address: string; + profiles: Record; +} + +export interface NodesInfoNodeJvmInfo { + gc_collectors: string[]; + mem: NodesInfoNodeInfoJvmMemory; + memory_pools: string[]; + pid: integer; + start_time_in_millis: long; + version: VersionString; + vm_name: Name; + vm_vendor: string; + vm_version: VersionString; + bundled_jdk: boolean; + using_bundled_jdk: boolean; + using_compressed_ordinary_object_pointers?: boolean | string; + input_arguments: string[]; +} + +export interface NodesInfoNodeOperatingSystemInfo { + arch: string; + available_processors: integer; + allocated_processors?: integer; + name: Name; + pretty_name: Name; + refresh_interval_in_millis: integer; + version: VersionString; + cpu?: NodesInfoNodeInfoOSCPU; + mem?: NodesInfoNodeInfoMemory; + swap?: NodesInfoNodeInfoMemory; +} + +export interface NodesInfoNodeProcessInfo { + id: long; + mlockall: boolean; + refresh_interval_in_millis: long; +} + +export interface NodesInfoNodeThreadPoolInfo { + core?: integer; + keep_alive?: string; + max?: integer; + queue_size: integer; + size?: integer; + type: string; +} + +export interface NodesInfoRequest extends RequestBase { + node_id?: NodeIds + metric?: Metrics + flat_settings?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface NodesInfoResponse extends NodesNodesResponseBase { + cluster_name: Name; + nodes: Record; +} + +export interface NodesReloadSecureSettingsNodeReloadException { + name: Name; + reload_exception?: NodesReloadSecureSettingsNodeReloadExceptionCausedBy; +} + +export interface NodesReloadSecureSettingsNodeReloadExceptionCausedBy { + type: string; + reason: string; + caused_by?: NodesReloadSecureSettingsNodeReloadExceptionCausedBy; +} + +export interface NodesReloadSecureSettingsRequest extends RequestBase { + node_id?: NodeIds; + timeout?: Time; + body?: { + secure_settings_password?: Password; + }; +} + +export interface NodesReloadSecureSettingsResponse extends NodesNodesResponseBase { + cluster_name: Name; + nodes: Record; +} + +export interface NodesStatsRequest extends RequestBase { + node_id?: NodeIds + metric?: Metrics + index_metric?: Metrics + completion_fields?: Fields + fielddata_fields?: Fields + fields?: Fields + groups?: boolean + include_segment_file_sizes?: boolean + level?: Level + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + types?: string[] + include_unloaded_segments?: boolean +} + +export interface NodesStatsResponse extends NodesNodesResponseBase { + cluster_name: Name; + nodes: Record; +} + +export interface NodesUsageNodeUsage { + rest_actions: Record; + since: EpochMillis; + timestamp: EpochMillis; + aggregations: Record; +} + +export interface NodesUsageRequest extends RequestBase { + node_id?: NodeIds; + metric?: Metrics; + timeout?: Time; +} + +export interface NodesUsageResponse extends NodesNodesResponseBase { + cluster_name: Name; + nodes: Record; +} + +export interface ShutdownDeleteNodeRequest extends RequestBase { + body?: { + stub: string; + }; +} + +export interface ShutdownDeleteNodeResponse { + stub: boolean; +} + +export interface ShutdownGetNodeRequest extends RequestBase { + body?: { + stub: string; + }; +} + +export interface ShutdownGetNodeResponse { + stub: boolean; +} + +export interface ShutdownPutNodeRequest extends RequestBase { + body?: { + stub: string; + }; +} + +export interface ShutdownPutNodeResponse { + stub: boolean; +} + +export interface SnapshotFileCountSnapshotStats { + file_count: integer; + size_in_bytes: long; +} + +export interface SnapshotIndexDetails { + shard_count: integer; + size?: ByteSize; + size_in_bytes: long; + max_segments_per_shard: long; +} + +export interface SnapshotInfoFeatureState { + feature_name: string; + indices: Indices; +} + +export interface SnapshotRepository { + type: string; + uuid?: Uuid; + settings: SnapshotRepositorySettings; +} + +export interface SnapshotRepositorySettings { + chunk_size?: string; + compress?: string | boolean; + concurrent_streams?: string | integer; + location: string; + read_only?: string | boolean; + readonly?: string | boolean; +} + +export interface SnapshotShardsStats { + done: long; + failed: long; + finalizing: long; + initializing: long; + started: long; + total: long; +} + +export type SnapshotShardsStatsStage = 'DONE' | 'FAILURE' | 'FINALIZE' | 'INIT' | 'STARTED'; + +export interface SnapshotShardsStatsSummary { + incremental: SnapshotShardsStatsSummaryItem; + total: SnapshotShardsStatsSummaryItem; + start_time_in_millis: long; + time_in_millis: long; +} + +export interface SnapshotShardsStatsSummaryItem { + file_count: long; + size_in_bytes: long; +} + +export interface SnapshotSnapshotIndexStats { + shards: Record; + shards_stats: SnapshotShardsStats; + stats: SnapshotSnapshotStats; +} + +export interface SnapshotSnapshotInfo { + data_streams: string[]; + duration?: Time; + duration_in_millis?: EpochMillis; + end_time?: Time; + end_time_in_millis?: EpochMillis; + failures?: SnapshotSnapshotShardFailure[]; + include_global_state?: boolean; + indices: IndexName[]; + index_details?: Record; + metadata?: Metadata; + reason?: string; + snapshot: Name; + shards?: ShardStatistics; + start_time?: Time; + start_time_in_millis?: EpochMillis; + state?: string; + uuid: Uuid; + version?: VersionString; + version_id?: VersionNumber; + feature_states?: SnapshotInfoFeatureState[]; +} + +export interface SnapshotSnapshotShardFailure { + index: IndexName; + node_id: Id; + reason: string; + shard_id: Id; + status: string; +} + +export interface SnapshotSnapshotShardsStatus { + stage: SnapshotShardsStatsStage; + stats: SnapshotShardsStatsSummary; +} + +export interface SnapshotSnapshotStats { + incremental: SnapshotFileCountSnapshotStats; + start_time_in_millis: long; + time_in_millis: long; + total: SnapshotFileCountSnapshotStats; +} + +export interface SnapshotStatus { + include_global_state: boolean; + indices: Record; + repository: string; + shards_stats: SnapshotShardsStats; + snapshot: string; + state: string; + stats: SnapshotSnapshotStats; + uuid: Uuid; +} + +export interface SnapshotCleanupRepositoryCleanupRepositoryResults { + deleted_blobs: long; + deleted_bytes: long; +} + +export interface SnapshotCleanupRepositoryRequest extends RequestBase { + repository: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface SnapshotCleanupRepositoryResponse { + results: SnapshotCleanupRepositoryCleanupRepositoryResults; +} + +export interface SnapshotCloneRequest extends RequestBase { + repository: Name + snapshot: Name + target_snapshot: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + body?: { + indices: string; + }; +} + +export interface SnapshotCloneResponse extends AcknowledgedResponseBase { } + +export interface SnapshotCreateRequest extends RequestBase { + repository: Name + snapshot: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + wait_for_completion?: boolean + body?: { + ignore_unavailable?: boolean; + include_global_state?: boolean; + indices?: Indices; + metadata?: Metadata; + partial?: boolean; + }; +} + +export interface SnapshotCreateResponse { + accepted?: boolean; + snapshot?: SnapshotSnapshotInfo; +} + +export interface SnapshotCreateRepositoryRequest extends RequestBase { + repository: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time + verify?: boolean + body?: { + repository?: SnapshotRepository; + type: string; + settings: SnapshotRepositorySettings; + }; +} + +export interface SnapshotCreateRepositoryResponse extends AcknowledgedResponseBase { } + +export interface SnapshotDeleteRequest extends RequestBase { + repository: Name + snapshot: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface SnapshotDeleteResponse extends AcknowledgedResponseBase { } + +export interface SnapshotDeleteRepositoryRequest extends RequestBase { + repository: Names + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface SnapshotDeleteRepositoryResponse extends AcknowledgedResponseBase { } + +export interface SnapshotGetRequest extends RequestBase { + repository: Name + snapshot: Names + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + verbose?: boolean + index_details?: boolean + human?: boolean +} + +export interface SnapshotGetResponse { + responses?: SnapshotGetSnapshotResponseItem[]; + snapshots?: SnapshotSnapshotInfo[]; +} + +export interface SnapshotGetSnapshotResponseItem { + repository: Name; + snapshots?: SnapshotSnapshotInfo[]; + error?: ErrorCause; +} + +export interface SnapshotGetRepositoryRequest extends RequestBase { + repository?: Names + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface SnapshotGetRepositoryResponse + extends DictionaryResponseBase { } + +export interface SnapshotRestoreRequest extends RequestBase { + repository: Name + snapshot: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + wait_for_completion?: boolean + body?: { + ignore_index_settings?: string[]; + ignore_unavailable?: boolean; + include_aliases?: boolean; + include_global_state?: boolean; + index_settings?: IndicesPutSettingsRequest; + indices?: Indices; + partial?: boolean; + rename_pattern?: string; + rename_replacement?: string; + }; +} + +export interface SnapshotRestoreResponse { + snapshot: SnapshotRestoreSnapshotRestore; +} + +export interface SnapshotRestoreSnapshotRestore { + indices: IndexName[]; + snapshot: string; + shards: ShardStatistics; +} + +export interface SnapshotStatusRequest extends RequestBase { + repository?: Name + snapshot?: Names + ignore_unavailable?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time +} + +export interface SnapshotStatusResponse { + snapshots: SnapshotStatus[]; +} + +export interface SnapshotVerifyRepositoryCompactNodeInfo { + name: Name; +} + +export interface SnapshotVerifyRepositoryRequest extends RequestBase { + repository: Name + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + timeout?: Time +} + +export interface SnapshotVerifyRepositoryResponse { + nodes: Record; +} + +export interface TaskInfo { + action: string; + cancellable: boolean; + children?: TaskInfo[]; + description?: string; + headers: HttpHeaders; + id: long; + node: string; + running_time_in_nanos: long; + start_time_in_millis: long; + status?: TaskStatus; + type: string; + parent_task_id?: Id; +} + +export interface TaskState { + action: string; + cancellable: boolean; + description?: string; + headers: HttpHeaders; + id: long; + node: string; + parent_task_id?: TaskId; + running_time_in_nanos: long; + start_time_in_millis: long; + status?: TaskStatus; + type: string; +} + +export interface TaskStatus { + batches: long; + canceled?: string; + created: long; + deleted: long; + noops: long; + failures?: string[]; + requests_per_second: float; + retries: Retries; + throttled?: Time; + throttled_millis: long; + throttled_until?: Time; + throttled_until_millis: long; + timed_out?: boolean; + took?: long; + total: long; + updated: long; + version_conflicts: long; +} + +export interface TaskTaskExecutingNode extends SpecUtilsBaseNode { + tasks: Record; +} + +export interface TaskCancelRequest extends RequestBase { + task_id?: TaskId; + actions?: string | string[]; + nodes?: string[]; + parent_task_id?: string; + wait_for_completion?: boolean; +} + +export interface TaskCancelResponse { + node_failures?: ErrorCause[]; + nodes: Record; +} + +export interface TaskGetRequest extends RequestBase { + task_id: Id; + timeout?: Time; + wait_for_completion?: boolean; +} + +export interface TaskGetResponse { + completed: boolean; + task: TaskInfo; + response?: TaskStatus; + error?: ErrorCause; +} + +export interface TaskListRequest extends RequestBase { + actions?: string | string[]; + detailed?: boolean; + group_by?: GroupBy; + nodes?: string[]; + parent_task_id?: Id; + timeout?: Time; + wait_for_completion?: boolean; +} + +export interface TaskListResponse { + node_failures?: ErrorCause[]; + nodes?: Record; + tasks?: Record | TaskInfo[]; +} + +export interface SpecUtilsAdditionalProperties { } + +export interface SpecUtilsCommonQueryParameters { + error_trace?: boolean; + filter_path?: string | string[]; + human?: boolean; + pretty?: boolean; + source_query_string?: string; +} + +export interface SpecUtilsCommonCatQueryParameters { + format?: string + h?: Names + help?: boolean + local?: boolean + cluster_manager_timeout?: Time + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: Time + s?: string[] + v?: boolean +} + +export interface PointInTime { + pit_id: string; + creation_time: Time; + keep_alive: Time +} + +export interface PointInTimeDelete { + pit_id: string; + successful: boolean +} + +export interface PointInTimeCreateRequest extends RequestBase { + index: Indices; + keep_alive: string; + preference?: string; + routing?: string; + expand_wildcards?: ExpandWildcards; + allow_partial_pit_creation?: boolean +} + +export interface PointInTimeCreateResponse extends ShardsOperationResponseBase { + pit_id: string; + creation_time: Time; +} + +export interface PointInTimeGetAllRequest extends RequestBase { } + +export interface PointInTimeGetAllResponse { + pits: PointInTime[]; +} + +export interface PointInTimeDeleteAllRequest extends RequestBase { } + +export interface PointInTimeDeleteAllResponse { + pits: PointInTimeDelete[]; +} + +export interface PointInTimeDeleteRequest extends RequestBase { + body?: { + pit_id: string[] + }; +} + +export interface PointInTimeDeleteResponse { + pits: PointInTimeDelete[]; +} diff --git a/src/types/params.ts b/src/types/params.ts new file mode 100644 index 000000000..e2cfbca90 --- /dev/null +++ b/src/types/params.ts @@ -0,0 +1,1832 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +// import { RequestBody, RequestNDBody } from '../lib/Transport'; +import type { RequestBody, RequestNDBody } from '@/types/transport' + +export interface Generic { + method?: string; + filter_path?: string | string[]; + pretty?: boolean; + human?: boolean; + error_trace?: boolean; + source?: string; +} + +export interface Bulk extends Generic { + index?: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + wait_for_active_shards?: string; + refresh?: 'wait_for' | boolean; + routing?: string; + timeout?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + pipeline?: string; + require_alias?: boolean; + body: T; +} + +export interface CatAliases extends Generic { + name?: string | string[]; + format?: string; + local?: boolean; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface CatAllocation extends Generic { + node_id?: string | string[]; + format?: string; + bytes?: 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatCount extends Generic { + index?: string | string[]; + format?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatFielddata extends Generic { + fields?: string | string[]; + format?: string; + bytes?: 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatHealth extends Generic { + format?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + ts?: boolean; + v?: boolean; +} + +export interface CatHelp extends Generic { + help?: boolean; + s?: string | string[]; +} + +export interface CatIndices extends Generic { + index?: string | string[]; + format?: string; + bytes?: 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + health?: 'green' | 'yellow' | 'red'; + help?: boolean; + pri?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + v?: boolean; + include_unloaded_segments?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface CatClusterManager extends Generic { + format?: string; + local?: boolean; + cluster_manager_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +/** + * // TODO: delete CatMaster interface when it is removed from OpenSearch + * @deprecated use CatClusterManager instead + */ +export interface CatMaster extends Generic { + format?: string; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatNodeattrs extends Generic { + format?: string; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatNodes extends Generic { + bytes?: 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + format?: string; + full_id?: boolean; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + v?: boolean; + include_unloaded_segments?: boolean; +} + +export interface CatPendingTasks extends Generic { + format?: string; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + v?: boolean; +} + +export interface CatPlugins extends Generic { + format?: string; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + include_bootstrap?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatRecovery extends Generic { + index?: string | string[]; + format?: string; + active_only?: boolean; + bytes?: 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + detailed?: boolean; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + v?: boolean; +} + +export interface CatRepositories extends Generic { + format?: string; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatSegments extends Generic { + index?: string | string[]; + format?: string; + bytes?: 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatShards extends Generic { + index?: string | string[]; + format?: string; + bytes?: 'b' | 'k' | 'kb' | 'm' | 'mb' | 'g' | 'gb' | 't' | 'tb' | 'p' | 'pb'; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + v?: boolean; +} + +export interface CatSnapshots extends Generic { + repository?: string | string[]; + format?: string; + ignore_unavailable?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + v?: boolean; +} + +export interface CatTasks extends Generic { + format?: string; + nodes?: string | string[]; + actions?: string | string[]; + detailed?: boolean; + parent_task_id?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + time?: 'd' | 'h' | 'm' | 's' | 'ms' | 'micros' | 'nanos'; + v?: boolean; +} + +export interface CatTemplates extends Generic { + name?: string; + format?: string; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface CatThreadPool extends Generic { + thread_pool_patterns?: string | string[]; + format?: string; + size?: '' | 'k' | 'm' | 'g' | 't' | 'p'; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + h?: string | string[]; + help?: boolean; + s?: string | string[]; + v?: boolean; +} + +export interface ClearScroll extends Generic { + scroll_id?: string | string[]; + body?: T; +} + +export interface ClusterAllocationExplain extends Generic { + include_yes_decisions?: boolean; + include_disk_info?: boolean; + body?: T; +} + +export interface ClusterDeleteComponentTemplate extends Generic { + name: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface ClusterDeleteVotingConfigExclusions extends Generic { + wait_for_removal?: boolean; +} + +export interface ClusterExistsComponentTemplate extends Generic { + name: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface ClusterGetComponentTemplate extends Generic { + name?: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface ClusterGetSettings extends Generic { + flat_settings?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; + include_defaults?: boolean; +} + +export interface ClusterHealth extends Generic { + index?: string | string[]; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + level?: 'cluster' | 'indices' | 'shards'; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; + wait_for_active_shards?: string; + wait_for_nodes?: string; + wait_for_events?: 'immediate' | 'urgent' | 'high' | 'normal' | 'low' | 'languid'; + wait_for_no_relocating_shards?: boolean; + wait_for_no_initializing_shards?: boolean; + wait_for_status?: 'green' | 'yellow' | 'red'; +} + +export interface ClusterPendingTasks extends Generic { + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface ClusterPostVotingConfigExclusions extends Generic { + node_ids?: string; + node_names?: string; + timeout?: string; +} + +export interface ClusterPutComponentTemplate extends Generic { + name: string; + create?: boolean; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body: T; +} + +export interface ClusterPutSettings extends Generic { + flat_settings?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; + body: T; +} + +export interface ClusterRemoteInfo extends Generic {} + +export interface ClusterReroute extends Generic { + dry_run?: boolean; + explain?: boolean; + retry_failed?: boolean; + metric?: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; + body?: T; +} + +export interface ClusterState extends Generic { + index?: string | string[]; + metric?: string | string[]; + local?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + flat_settings?: boolean; + wait_for_metadata_version?: number; + wait_for_timeout?: string; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface ClusterStats extends Generic { + node_id?: string | string[]; + flat_settings?: boolean; + timeout?: string; +} + +export interface Count extends Generic { + index?: string | string[]; + ignore_unavailable?: boolean; + ignore_throttled?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + min_score?: number; + preference?: string; + routing?: string | string[]; + q?: string; + analyzer?: string; + analyze_wildcard?: boolean; + default_operator?: 'AND' | 'OR'; + df?: string; + lenient?: boolean; + terminate_after?: number; + body?: T; +} + +export interface Create extends Generic { + id: string; + index: string; + wait_for_active_shards?: string; + refresh?: 'wait_for' | boolean; + routing?: string; + timeout?: string; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte'; + pipeline?: string; + body: T; +} + +export interface CreatePit extends Generic { + index: string | string[]; + allow_partial_pit_creation?: boolean; + keep_alive: string; + preference?: string; + routing?: string | string[]; +} + +export interface DanglingIndicesDeleteDanglingIndex extends Generic { + index_uuid: string; + accept_data_loss?: boolean; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface DanglingIndicesImportDanglingIndex extends Generic { + index_uuid: string; + accept_data_loss?: boolean; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface DanglingIndicesListDanglingIndices extends Generic {} + +export interface Delete extends Generic { + id: string; + index: string; + wait_for_active_shards?: string; + refresh?: 'wait_for' | boolean; + routing?: string; + timeout?: string; + if_seq_no?: number; + if_primary_term?: number; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte' | 'force'; +} + +export interface DeleteAllPits extends Generic {} + +export interface DeleteByQuery extends Generic { + index: string | string[]; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + analyzer?: string; + analyze_wildcard?: boolean; + default_operator?: 'AND' | 'OR'; + df?: string; + from?: number; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + conflicts?: 'abort' | 'proceed'; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + lenient?: boolean; + preference?: string; + q?: string; + routing?: string | string[]; + scroll?: string; + search_type?: 'query_then_fetch' | 'dfs_query_then_fetch'; + search_timeout?: string; + size?: number; + max_docs?: number; + sort?: string | string[]; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + terminate_after?: number; + stats?: string | string[]; + version?: boolean; + request_cache?: boolean; + refresh?: boolean; + timeout?: string; + wait_for_active_shards?: string; + scroll_size?: number; + wait_for_completion?: boolean; + requests_per_second?: number; + slices?: number | string; + body: T; +} + +export interface DeleteByQueryRethrottle extends Generic { + task_id: string; + requests_per_second: number; +} + +export interface DeletePit extends Generic { + body: T; +} + +export interface DeleteScript extends Generic { + id: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface Exists extends Generic { + id: string; + index: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + stored_fields?: string | string[]; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte' | 'force'; +} + +export interface ExistsSource extends Generic { + id: string; + index: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte' | 'force'; +} + +export interface Explain extends Generic { + id: string; + index: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + analyze_wildcard?: boolean; + analyzer?: string; + default_operator?: 'AND' | 'OR'; + df?: string; + stored_fields?: string | string[]; + lenient?: boolean; + preference?: string; + q?: string; + routing?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + body?: T; +} + +export interface FeaturesGetFeatures extends Generic { + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface FeaturesResetFeatures extends Generic {} + +export interface FieldCaps extends Generic { + index?: string | string[]; + fields?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + include_unmapped?: boolean; + body?: T; +} + +export interface Get extends Generic { + id: string; + index: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + stored_fields?: string | string[]; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte' | 'force'; +} + +export interface GetAllPits extends Generic {} + +export interface GetScript extends Generic { + id: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface GetScriptContext extends Generic {} + +export interface GetScriptLanguages extends Generic {} + +export interface GetSource extends Generic { + id: string; + index: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte' | 'force'; +} + +export interface Index extends Generic { + id?: string; + index: string; + wait_for_active_shards?: string; + op_type?: 'index' | 'create'; + refresh?: 'wait_for' | boolean; + routing?: string; + timeout?: string; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte'; + if_seq_no?: number; + if_primary_term?: number; + pipeline?: string; + require_alias?: boolean; + body: T; +} + +export interface IndicesAddBlock extends Generic { + index: string | string[]; + block: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesAnalyze extends Generic { + index?: string; + body?: T; +} + +export interface IndicesClearCache extends Generic { + index?: string | string[]; + fielddata?: boolean; + fields?: string | string[]; + query?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + request?: boolean; +} + +export interface IndicesClone extends Generic { + index: string; + target: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + wait_for_active_shards?: string; + body?: T; +} + +export interface IndicesClose extends Generic { + index: string | string[]; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + wait_for_active_shards?: string; +} + +export interface IndicesCreate extends Generic { + index: string; + wait_for_active_shards?: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body?: T; +} + +export interface IndicesDelete extends Generic { + index: string | string[]; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesDeleteAlias extends Generic { + index: string | string[]; + name: string | string[]; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface IndicesDeleteIndexTemplate extends Generic { + name: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface IndicesDeleteTemplate extends Generic { + name: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface IndicesDiskUsage extends Generic { + index: string; + run_expensive_tasks?: boolean; + flush?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesExists extends Generic { + index: string | string[]; + local?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + flat_settings?: boolean; + include_defaults?: boolean; +} + +export interface IndicesExistsAlias extends Generic { + name: string | string[]; + index?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + local?: boolean; +} + +export interface IndicesExistsIndexTemplate extends Generic { + name: string; + flat_settings?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface IndicesExistsTemplate extends Generic { + name: string | string[]; + flat_settings?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface IndicesFieldUsageStats extends Generic { + index: string; + fields?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesFlush extends Generic { + index?: string | string[]; + force?: boolean; + wait_if_ongoing?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesForcemerge extends Generic { + index?: string | string[]; + flush?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + max_num_segments?: number; + only_expunge_deletes?: boolean; +} + +export interface IndicesGet extends Generic { + index: string | string[]; + local?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + flat_settings?: boolean; + include_defaults?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface IndicesGetAlias extends Generic { + name?: string | string[]; + index?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + local?: boolean; +} + +export interface IndicesGetFieldMapping extends Generic { + fields: string | string[]; + index?: string | string[]; + include_defaults?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + local?: boolean; +} + +export interface IndicesGetIndexTemplate extends Generic { + name?: string | string[]; + flat_settings?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface IndicesGetMapping extends Generic { + index?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface IndicesGetSettings extends Generic { + index?: string | string[]; + name?: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + flat_settings?: boolean; + local?: boolean; + include_defaults?: boolean; +} + +export interface IndicesGetTemplate extends Generic { + name?: string | string[]; + flat_settings?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface IndicesGetUpgrade extends Generic { + index?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesOpen extends Generic { + index: string | string[]; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + wait_for_active_shards?: string; +} + +export interface IndicesPutAlias extends Generic { + index: string | string[]; + name: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body?: T; +} + +export interface IndicesPutIndexTemplate extends Generic { + name: string; + create?: boolean; + cause?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body: T; +} + +export interface IndicesPutMapping extends Generic { + index?: string | string[]; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + write_index_only?: boolean; + body: T; +} + +export interface IndicesPutSettings extends Generic { + index?: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; + preserve_existing?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + flat_settings?: boolean; + body: T; +} + +export interface IndicesPutTemplate extends Generic { + name: string; + order?: number; + create?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body: T; +} + +export interface IndicesRecovery extends Generic { + index?: string | string[]; + detailed?: boolean; + active_only?: boolean; +} + +export interface IndicesRefresh extends Generic { + index?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesResolveIndex extends Generic { + name: string | string[]; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesRollover extends Generic { + alias: string; + new_index?: string; + timeout?: string; + dry_run?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + wait_for_active_shards?: string; + body?: T; +} + +export interface IndicesSegments extends Generic { + index?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + verbose?: boolean; +} + +export interface IndicesShardStores extends Generic { + index?: string | string[]; + status?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface IndicesShrink extends Generic { + index: string; + target: string; + copy_settings?: boolean; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + wait_for_active_shards?: string; + body?: T; +} + +export interface IndicesSimulateIndexTemplate extends Generic { + name: string; + create?: boolean; + cause?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body?: T; +} + +export interface IndicesSimulateTemplate extends Generic { + name?: string; + create?: boolean; + cause?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body?: T; +} + +export interface IndicesSplit extends Generic { + index: string; + target: string; + copy_settings?: boolean; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + wait_for_active_shards?: string; + body?: T; +} + +export interface IndicesStats extends Generic { + metric?: string | string[]; + index?: string | string[]; + completion_fields?: string | string[]; + fielddata_fields?: string | string[]; + fields?: string | string[]; + groups?: string | string[]; + level?: 'cluster' | 'indices' | 'shards'; + types?: string | string[]; + include_segment_file_sizes?: boolean; + include_unloaded_segments?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + forbid_closed_indices?: boolean; +} + +export interface IndicesUpdateAliases extends Generic { + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body: T; +} + +export interface IndicesUpgrade extends Generic { + index?: string | string[]; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + ignore_unavailable?: boolean; + wait_for_completion?: boolean; + only_ancient_segments?: boolean; +} + +export interface IndicesValidateQuery extends Generic { + index?: string | string[]; + explain?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + q?: string; + analyzer?: string; + analyze_wildcard?: boolean; + default_operator?: 'AND' | 'OR'; + df?: string; + lenient?: boolean; + rewrite?: boolean; + all_shards?: boolean; + body?: T; +} + +export interface Info extends Generic {} + +export interface IngestDeletePipeline extends Generic { + id: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; +} + +export interface IngestGeoIpStats extends Generic {} + +export interface IngestGetPipeline extends Generic { + id?: string; + summary?: boolean; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface IngestProcessorGrok extends Generic {} + +export interface IngestPutPipeline extends Generic { + id: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; + body: T; +} + +export interface IngestSimulate extends Generic { + id?: string; + verbose?: boolean; + body: T; +} + +export interface Mget extends Generic { + index?: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + stored_fields?: string | string[]; + preference?: string; + realtime?: boolean; + refresh?: boolean; + routing?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + body: T; +} + +export interface Msearch extends Generic { + index?: string | string[]; + search_type?: 'query_then_fetch' | 'dfs_query_then_fetch'; + max_concurrent_searches?: number; + typed_keys?: boolean; + pre_filter_shard_size?: number; + max_concurrent_shard_requests?: number; + rest_total_hits_as_int?: boolean; + ccs_minimize_roundtrips?: boolean; + body: T; +} + +export interface MsearchTemplate extends Generic { + index?: string | string[]; + search_type?: 'query_then_fetch' | 'dfs_query_then_fetch'; + typed_keys?: boolean; + max_concurrent_searches?: number; + rest_total_hits_as_int?: boolean; + ccs_minimize_roundtrips?: boolean; + body: T; +} + +export interface Mtermvectors extends Generic { + index?: string; + ids?: string | string[]; + term_statistics?: boolean; + field_statistics?: boolean; + fields?: string | string[]; + offsets?: boolean; + positions?: boolean; + payloads?: boolean; + preference?: string; + routing?: string; + realtime?: boolean; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte' | 'force'; + body?: T; +} + +export interface NodesClearMeteringArchive extends Generic { + node_id: string | string[]; + max_archive_version: number; +} + +export interface NodesGetMeteringInfo extends Generic { + node_id: string | string[]; +} + +export interface NodesHotThreads extends Generic { + node_id?: string | string[]; + interval?: string; + snapshots?: number; + threads?: number; + ignore_idle_threads?: boolean; + type?: 'cpu' | 'wait' | 'block'; + timeout?: string; +} + +export interface NodesInfo extends Generic { + node_id?: string | string[]; + metric?: string | string[]; + flat_settings?: boolean; + timeout?: string; +} + +export interface NodesReloadSecureSettings extends Generic { + node_id?: string | string[]; + timeout?: string; + body?: T; +} + +export interface NodesStats extends Generic { + node_id?: string | string[]; + metric?: string | string[]; + index_metric?: string | string[]; + completion_fields?: string | string[]; + fielddata_fields?: string | string[]; + fields?: string | string[]; + groups?: boolean; + level?: 'indices' | 'node' | 'shards'; + types?: string | string[]; + timeout?: string; + include_segment_file_sizes?: boolean; + include_unloaded_segments?: boolean; +} + +export interface NodesUsage extends Generic { + node_id?: string | string[]; + metric?: string | string[]; + timeout?: string; +} + +export interface Ping extends Generic {} + +export interface PutScript extends Generic { + id: string; + context?: string; + timeout?: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body: T; +} + +export interface RankEval extends Generic { + index?: string | string[]; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + search_type?: 'query_then_fetch' | 'dfs_query_then_fetch'; + body: T; +} + +export interface Reindex extends Generic { + refresh?: boolean; + timeout?: string; + wait_for_active_shards?: string; + wait_for_completion?: boolean; + requests_per_second?: number; + scroll?: string; + slices?: number | string; + max_docs?: number; + body: T; +} + +export interface ReindexRethrottle extends Generic { + task_id: string; + requests_per_second: number; +} + +export interface RenderSearchTemplate extends Generic { + id?: string; + body?: T; +} + +export interface ScriptsPainlessExecute extends Generic { + body?: T; +} + +export interface Scroll extends Generic { + scroll_id?: string; + scroll?: string; + rest_total_hits_as_int?: boolean; + body?: T; +} + +export interface Search extends Generic { + index?: string | string[]; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + analyzer?: string; + analyze_wildcard?: boolean; + ccs_minimize_roundtrips?: boolean; + default_operator?: 'AND' | 'OR'; + df?: string; + explain?: boolean; + stored_fields?: string | string[]; + docvalue_fields?: string | string[]; + from?: number; + ignore_unavailable?: boolean; + ignore_throttled?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + lenient?: boolean; + preference?: string; + q?: string; + routing?: string | string[]; + scroll?: string; + search_type?: 'query_then_fetch' | 'dfs_query_then_fetch'; + size?: number; + sort?: string | string[]; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + terminate_after?: number; + stats?: string | string[]; + suggest_field?: string; + suggest_mode?: 'missing' | 'popular' | 'always'; + suggest_size?: number; + suggest_text?: string; + timeout?: string; + track_scores?: boolean; + track_total_hits?: boolean; + allow_partial_search_results?: boolean; + typed_keys?: boolean; + version?: boolean; + seq_no_primary_term?: boolean; + request_cache?: boolean; + batched_reduce_size?: number; + max_concurrent_shard_requests?: number; + pre_filter_shard_size?: number; + rest_total_hits_as_int?: boolean; + min_compatible_shard_node?: string; + body?: T; +} + +export interface SearchShards extends Generic { + index?: string | string[]; + preference?: string; + routing?: string; + local?: boolean; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; +} + +export interface SearchTemplate extends Generic { + index?: string | string[]; + ignore_unavailable?: boolean; + ignore_throttled?: boolean; + allow_no_indices?: boolean; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + preference?: string; + routing?: string | string[]; + scroll?: string; + search_type?: 'query_then_fetch' | 'dfs_query_then_fetch'; + explain?: boolean; + profile?: boolean; + typed_keys?: boolean; + rest_total_hits_as_int?: boolean; + ccs_minimize_roundtrips?: boolean; + body: T; +} + +export interface ShutdownDeleteNode extends Generic { + node_id: string; +} + +export interface ShutdownGetNode extends Generic { + node_id?: string; +} + +export interface ShutdownPutNode extends Generic { + node_id: string; + body: T; +} + +export interface SnapshotCleanupRepository extends Generic { + repository: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; +} + +export interface SnapshotClone extends Generic { + repository: string; + snapshot: string; + target_snapshot: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + body: T; +} + +export interface SnapshotCreate extends Generic { + repository: string; + snapshot: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + wait_for_completion?: boolean; + body?: T; +} + +export interface SnapshotCreateRepository extends Generic { + repository: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; + verify?: boolean; + body: T; +} + +export interface SnapshotDelete extends Generic { + repository: string; + snapshot: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; +} + +export interface SnapshotDeleteRepository extends Generic { + repository: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; +} + +export interface SnapshotGet extends Generic { + repository: string; + snapshot: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; + index_details?: boolean; + include_repository?: boolean; + verbose?: boolean; +} + +export interface SnapshotGetRepository extends Generic { + repository?: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + local?: boolean; +} + +export interface SnapshotRepositoryAnalyze extends Generic { + repository: string; + blob_count?: number; + concurrency?: number; + read_node_count?: number; + early_read_node_count?: number; + seed?: number; + rare_action_probability?: number; + max_blob_size?: string; + max_total_data_size?: string; + timeout?: string; + detailed?: boolean; + rarely_abort_writes?: boolean; +} + +export interface SnapshotRestore extends Generic { + repository: string; + snapshot: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + wait_for_completion?: boolean; + body?: T; +} + +export interface SnapshotStatus extends Generic { + repository?: string; + snapshot?: string | string[]; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + ignore_unavailable?: boolean; +} + +export interface SnapshotVerifyRepository extends Generic { + repository: string; + cluster_manager_timeout?: string; + /** + * @deprecated use cluster_manager_timeout instead + */ + master_timeout?: string; + timeout?: string; +} + +export interface TasksCancel extends Generic { + task_id?: string; + nodes?: string | string[]; + actions?: string | string[]; + parent_task_id?: string; + wait_for_completion?: boolean; +} + +export interface TasksGet extends Generic { + task_id: string; + wait_for_completion?: boolean; + timeout?: string; +} + +export interface TasksList extends Generic { + nodes?: string | string[]; + actions?: string | string[]; + detailed?: boolean; + parent_task_id?: string; + wait_for_completion?: boolean; + group_by?: 'nodes' | 'parents' | 'none'; + timeout?: string; +} + +export interface TermsEnum extends Generic { + index: string | string[]; + body?: T; +} + +export interface Termvectors extends Generic { + index: string; + id?: string; + term_statistics?: boolean; + field_statistics?: boolean; + fields?: string | string[]; + offsets?: boolean; + positions?: boolean; + payloads?: boolean; + preference?: string; + routing?: string; + realtime?: boolean; + version?: number; + version_type?: 'internal' | 'external' | 'external_gte' | 'force'; + body?: T; +} + +export interface Update extends Generic { + id: string; + index: string; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + wait_for_active_shards?: string; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + lang?: string; + refresh?: 'wait_for' | boolean; + retry_on_conflict?: number; + routing?: string; + timeout?: string; + if_seq_no?: number; + if_primary_term?: number; + require_alias?: boolean; + body: T; +} + +export interface UpdateByQuery extends Generic { + index: string | string[]; + _source_exclude?: string | string[]; + _source_include?: string | string[]; + analyzer?: string; + analyze_wildcard?: boolean; + default_operator?: 'AND' | 'OR'; + df?: string; + from?: number; + ignore_unavailable?: boolean; + allow_no_indices?: boolean; + conflicts?: 'abort' | 'proceed'; + expand_wildcards?: 'open' | 'closed' | 'hidden' | 'none' | 'all'; + lenient?: boolean; + pipeline?: string; + preference?: string; + q?: string; + routing?: string | string[]; + scroll?: string; + search_type?: 'query_then_fetch' | 'dfs_query_then_fetch'; + search_timeout?: string; + size?: number; + max_docs?: number; + sort?: string | string[]; + _source?: string | string[]; + _source_excludes?: string | string[]; + _source_includes?: string | string[]; + terminate_after?: number; + stats?: string | string[]; + version?: boolean; + version_type?: boolean; + request_cache?: boolean; + refresh?: boolean; + timeout?: string; + wait_for_active_shards?: string; + scroll_size?: number; + wait_for_completion?: boolean; + requests_per_second?: number; + slices?: number | string; + body?: T; +} + +export interface UpdateByQueryRethrottle extends Generic { + task_id: string; + requests_per_second: number; +} diff --git a/src/types/pool.ts b/src/types/pool.ts new file mode 100644 index 000000000..7990bfed8 --- /dev/null +++ b/src/types/pool.ts @@ -0,0 +1,215 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import type { URL } from 'node:url'; +import type { SecureContextOptions } from 'node:tls'; +// import { type AgentOptions } from '#transport'; +import type { nodeFilterFn, nodeSelectorFn } from './transport'; +import { Connection } from '../transport'; + +export interface BaseConnectionPoolOptions { + ssl?: SecureContextOptions; + agent?: AgentOptions | false + proxy?: string | URL; + auth?: BasicAuth; + emit: (event: string | symbol, ...args: any[]) => boolean; + Connection: typeof Connection; +} + +export interface ConnectionPoolOptions extends BaseConnectionPoolOptions { + pingTimeout?: number; + resurrectStrategy?: 'ping' | 'optimistic' | 'none'; + sniffEnabled?: boolean; +} + +export interface GetConnectionOptions { + filter?: nodeFilterFn; + selector?: nodeSelectorFn; + requestId: string | number; + name: string; + now: number; +} + +export interface BasicAuth { + username: string; + password: string; +} + +export interface ResurrectOptions { + now?: number; + requestId: string | number; + name: string; +} + +export interface ResurrectEvent { + strategy: string; + isAlive: boolean; + connection: Connection; + name: string; + request: { + id: any; + }; +} + +// declare class BaseConnectionPool { +// connections: Connection[]; +// size: number; +// emit: (event: string | symbol, ...args: any[]) => boolean; +// _ssl: SecureContextOptions | null; +// _agent: AgentOptions | null; +// _proxy: string | URL; +// auth: BasicAuth; +// Connection: typeof Connection; +// constructor(opts?: BaseConnectionPoolOptions); +// /** +// * Marks a connection as 'alive'. +// * If needed removes the connection from the dead list +// * and then resets the `deadCount`. +// * +// * @param {object} connection +// */ +// markAlive(connection: Connection): this; +// /** +// * Marks a connection as 'dead'. +// * If needed adds the connection to the dead list +// * and then increments the `deadCount`. +// * +// * @param {object} connection +// */ +// markDead(connection: Connection): this; +// /** +// * Returns an alive connection if present, +// * otherwise returns a dead connection. +// * By default it filters the `cluster_manager` or `master` only nodes. +// * It uses the selector to choose which +// * connection return. +// * +// * @param {object} options (filter and selector) +// * @returns {object|null} connection +// */ +// getConnection(opts?: getConnectionOptions): Connection | null; +// /** +// * Adds a new connection to the pool. +// * +// * @param {object|string} host +// * @returns {ConnectionPool} +// */ +// addConnection(opts: any): Connection; +// /** +// * Removes a new connection to the pool. +// * +// * @param {object} connection +// * @returns {ConnectionPool} +// */ +// removeConnection(connection: Connection): this; +// /** +// * Empties the connection pool. +// * +// * @returns {ConnectionPool} +// */ +// empty(): this; +// /** +// * Update the ConnectionPool with new connections. +// * +// * @param {array} array of connections +// * @returns {ConnectionPool} +// */ +// update(connections: any[]): this; +// /** +// * Transforms the nodes objects to a host object. +// * +// * @param {object} nodes +// * @returns {array} hosts +// */ +// nodesToHost(nodes: any, protocol: string): any[]; +// /** +// * Transforms an url string to a host object +// * +// * @param {string} url +// * @returns {object} host +// */ +// urlToHost(url: string): { url: URL }; +// } + +// declare class ConnectionPool extends BaseConnectionPool { +// static resurrectStrategies: { +// none: number; +// ping: number; +// optimistic: number; +// }; +// dead: string[]; +// _sniffEnabled: boolean; +// resurrectTimeout: number; +// resurrectTimeoutCutoff: number; +// pingTimeout: number; +// resurrectStrategy: number; +// constructor(opts?: ConnectionPoolOptions); + +// /** +// * If enabled, tries to resurrect a connection with the given +// * resurrect strategy ('ping', 'optimistic', 'none'). +// * +// * @param {object} { now, requestId, name } +// * @param {function} callback (isAlive, connection) +// */ +// resurrect( +// opts: resurrectOptions, +// callback?: (isAlive: boolean | null, connection: Connection | null) => void +// ): void; +// } + +// declare class CloudConnectionPool extends BaseConnectionPool { +// cloudConnection: Connection | null; +// constructor(opts?: BaseConnectionPoolOptions); +// getConnection(): Connection | null; +// } + +// declare function defaultNodeFilter(node: Connection): boolean; +// declare function roundRobinSelector(): (connections: Connection[]) => Connection; +// declare function randomSelector(connections: Connection[]): Connection; + +// declare const internals: { +// defaultNodeFilter: typeof defaultNodeFilter; +// roundRobinSelector: typeof roundRobinSelector; +// randomSelector: typeof randomSelector; +// }; + +// export { +// // Interfaces +// ConnectionPoolOptions, +// getConnectionOptions, +// BasicAuth, +// internals, +// resurrectOptions, +// ResurrectEvent, +// // Classes +// BaseConnectionPool, +// ConnectionPool, +// CloudConnectionPool, +// }; diff --git a/src/types/transport.ts b/src/types/transport.ts new file mode 100644 index 000000000..b3611dbb1 --- /dev/null +++ b/src/types/transport.ts @@ -0,0 +1,163 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import { Readable as ReadableStream } from 'node:stream'; +// import Connection from './Connection'; +import * as errors from '@/errors' + +// import { CloudConnectionPool, ConnectionPool } from './pool'; +// import Serializer from './Serializer'; + +export type ApiError = + | errors.ConfigurationError + | errors.ConnectionError + | errors.DeserializationError + | errors.SerializationError + | errors.NoLivingConnectionsError + | errors.ResponseError + | errors.TimeoutError + | errors.RequestAbortedError + | errors.NotCompatibleError; + +export type Context = unknown; + +export interface nodeSelectorFn { + (connections: Connection[]): Connection; +} + +export interface nodeFilterFn { + (connection: Connection): boolean; +} + +export interface generateRequestIdFn { + (params: TransportRequestParams, options: TransportRequestOptions): any; +} + +export interface MemoryCircuitBreakerOptions { + enabled: boolean; + maxPercentage: number; +} + +export interface TransportOptions { + emit: (event: string | symbol, ...args: any[]) => boolean; + connectionPool: ConnectionPool | CloudConnectionPool; + serializer: Serializer; + maxRetries: number; + requestTimeout: number | string; + suggestCompression?: boolean; + compression?: 'gzip'; + sniffInterval?: number; + sniffOnConnectionFault?: boolean; + sniffEndpoint: string; + sniffOnStart?: boolean; + nodeFilter?: nodeFilterFn; + nodeSelector?: string | nodeSelectorFn; + headers?: Record; + generateRequestId?: generateRequestIdFn; + name?: string; + opaqueIdPrefix?: string; + memoryCircuitBreaker?: MemoryCircuitBreakerOptions; +} + +export interface RequestEvent, TContext = Context> { + body: TResponse; + statusCode: number | null; + headers: Record | null; + warnings: string[] | null; + meta: { + context: TContext; + name: string | symbol; + request: { + params: TransportRequestParams; + options: TransportRequestOptions; + id: any; + }; + connection: Connection; + attempts: number; + aborted: boolean; + sniff?: { + hosts: any[]; + reason: string; + }; + }; +} + +// ApiResponse and RequestEvent are the same thing +// we are doing this for have more clear names +export interface ApiResponse, TContext = Context> + extends RequestEvent {} + +export type RequestBody> = T | string | Buffer | ReadableStream; +export type RequestNDBody[]> = + | T + | string + | string[] + | Buffer + | ReadableStream; + +export interface TransportRequestParams { + method: string; + path: string; + body?: RequestBody; + bulkBody?: RequestNDBody; + querystring?: Record | string; +} + +export interface TransportRequestOptions { + ignore?: number[]; + requestTimeout?: number | string; + maxRetries?: number; + asStream?: boolean; + headers?: Record; + querystring?: Record; + compression?: 'gzip'; + id?: any; + context?: Context; + warnings?: string[]; + opaqueId?: string; +} + +export interface TransportRequestCallback { + abort: () => void; +} + +export interface TransportRequestPromise extends Promise { + abort: () => void; + finally(onFinally?: (() => void) | undefined | null): Promise; +} + +export interface TransportGetConnectionOptions { + requestId: string; +} + +export interface TransportSniffOptions { + reason: string; + requestId?: string; +} + diff --git a/src/utils.ts b/src/utils.ts new file mode 100644 index 000000000..cb9775d09 --- /dev/null +++ b/src/utils.ts @@ -0,0 +1,75 @@ +/* + * Copyright OpenSearch Contributors + * SPDX-License-Identifier: Apache-2.0 + * + * The OpenSearch Contributors require contributions made to + * this file be licensed under the Apache-2.0 license or a + * compatible open source license. + * + */ + +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +const result = { body: null, statusCode: null, headers: null, warnings: null }; +export const kConfigurationError = Symbol('Configuration error'); + +export function handleError(error: symbol, callback: Function) { + if (callback) { + process.nextTick(callback, error, result); + return { then: NOOP, catch: NOOP, abort: NOOP }; + } + return Promise.reject(error); +} + +export function snakeCaseKeys( + acceptedQuerystring: string[], + snakeCase: Record, + querystring: Record +) { + const target: Record = {}; + const keys = Object.keys(querystring); + for (let i = 0, len = keys.length; i < len; i++) { + const key = keys[i]; + // if (!acceptedQuerystring.includes(key)) { + // throw new Error(`The querystring key ${key} is not accepted.`); + // } + target[snakeCase[key] || key] = querystring[key]; + } + return target; +} + +export function normalizeArguments( + params: Record, + options: Record, + callback: Function +) { + if (typeof options === 'function') { + callback = options; + options = {}; + } + if (typeof params === 'function' || params == null) { + callback = params; + params = {}; + options = {}; + } + return [params, options, callback]; +} + +export function NOOP(): void {} diff --git a/tsconfig.cjs.json b/tsconfig.cjs.json new file mode 100644 index 000000000..e69de29bb diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 000000000..fa3b2b3c4 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,36 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "rootDir": ".", + "target": "ES2015", + "module": "commonjs", + "moduleResolution": "node", + "outDir": "dist", + "declaration": true, + "sourceMap": true, + "pretty": true, + "strict": true, + "noEmitOnError": true, + "newLine": "lf", + "esModuleInterop": true, + "skipLibCheck": false, + "importHelpers": true, + "noFallthroughCasesInSwitch": true, + "resolveJsonModule": true, + "useDefineForClassFields": true, + "forceConsistentCasingInFileNames": true, + "lib": ["ESNext"], + "types": ["node"], + "paths": { + "#/*": ["./*"], + "@/*": ["src/*"], + "#internal/*": ["src/api/internal/*"], + "#internal": ["src/api/internal/index"], + "#transport/*": ["src/transport/*"], + "#transport": ["src/transport/index"], + "#types": ["src/types/*"] + } + }, + "include": ["src/**/*.ts"], + "exclude": ["node_modules"] +} diff --git a/tsconfig.mjs.json b/tsconfig.mjs.json new file mode 100644 index 000000000..e69de29bb diff --git a/yarn.lock b/yarn.lock index 3e8e7fc20..1dfef2128 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,29 +2,61 @@ # yarn lockfile v1 +"@ampproject/remapping@^2.1.0": + "version" "2.1.2" + dependencies: + "@jridgewell/trace-mapping" "^0.3.0" + "@aws-sdk/types@^3.160.0": - version "3.257.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.257.0.tgz#4951ee3456cd9a46829516f5596c2b8a05ffe06a" - integrity sha512-LmqXuBQBGeaGi/3Rp7XiEX1B5IPO2UUfBVvu0wwGqVsmstT0SbOVDZGPmxygACbm64n+PRx3uTSDefRfoiWYZg== + "integrity" "sha512-LmqXuBQBGeaGi/3Rp7XiEX1B5IPO2UUfBVvu0wwGqVsmstT0SbOVDZGPmxygACbm64n+PRx3uTSDefRfoiWYZg==" + "resolved" "https://registry.npmjs.org/@aws-sdk/types/-/types-3.257.0.tgz" + "version" "3.257.0" dependencies: - tslib "^2.3.1" + "tslib" "^2.3.1" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== + "integrity" "sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==" + "resolved" "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/highlight" "^7.14.5" -"@babel/compat-data@^7.14.7", "@babel/compat-data@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.15.0.tgz#2dbaf8b85334796cafbb0f5793a90a2fc010b176" - integrity sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA== - -"@babel/core@^7.5.5", "@babel/core@^7.7.5": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.15.0.tgz#749e57c68778b73ad8082775561f67f5196aafa8" - integrity sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw== +"@babel/code-frame@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/highlight" "^7.16.7" + +"@babel/compat-data@^7.15.0": + "integrity" "sha512-0NqAC1IJE0S0+lL1SWFMxMkz1pKCNCjI4tr2Zx4LJSXxCLAdr6KyArnY+sno5m3yH9g737ygOyPABDsnXkpxiA==" + "resolved" "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.15.0.tgz" + "version" "7.15.0" + +"@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.7": + "version" "7.17.7" + +"@babel/core@^7.0.0-0", "@babel/core@^7.5.5": + "version" "7.17.8" + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.7" + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-module-transforms" "^7.17.7" + "@babel/helpers" "^7.17.8" + "@babel/parser" "^7.17.8" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.1.2" + "semver" "^6.3.0" + +"@babel/core@^7.0.0", "@babel/core@^7.7.5", "@babel/core@>=7.11.0": + "integrity" "sha512-tXtmTminrze5HEUPn/a0JtOzzfp0nk+UEXQ/tqIJo3WDGypl/2OFQEMll/zSFU8f/lfmfLXvTaORHF3cfXIQMw==" + "resolved" "https://registry.npmjs.org/@babel/core/-/core-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/code-frame" "^7.14.5" "@babel/generator" "^7.15.0" @@ -35,89 +67,129 @@ "@babel/template" "^7.14.5" "@babel/traverse" "^7.15.0" "@babel/types" "^7.15.0" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" + "convert-source-map" "^1.7.0" + "debug" "^4.1.0" + "gensync" "^1.0.0-beta.2" + "json5" "^2.1.2" + "semver" "^6.3.0" + "source-map" "^0.5.0" "@babel/eslint-parser@^7.19.1": - version "7.19.1" - resolved "https://registry.yarnpkg.com/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz#4f68f6b0825489e00a24b41b6a1ae35414ecd2f4" - integrity sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ== + "integrity" "sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==" + "resolved" "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.19.1.tgz" + "version" "7.19.1" dependencies: "@nicolo-ribaudo/eslint-scope-5-internals" "5.1.1-v1" - eslint-visitor-keys "^2.1.0" - semver "^6.3.0" + "eslint-visitor-keys" "^2.1.0" + "semver" "^6.3.0" "@babel/generator@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.15.0.tgz#a7d0c172e0d814974bad5aa77ace543b97917f15" - integrity sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ== + "integrity" "sha512-eKl4XdMrbpYvuB505KTta4AV9g+wWzmVBW69tX0H2NwKVKd2YJbKgyK6M8j/rgLbmHOYJn6rUklV677nOyJrEQ==" + "resolved" "https://registry.npmjs.org/@babel/generator/-/generator-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/types" "^7.15.0" - jsesc "^2.5.1" - source-map "^0.5.0" + "jsesc" "^2.5.1" + "source-map" "^0.5.0" -"@babel/helper-annotate-as-pure@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.14.5.tgz#7bf478ec3b71726d56a8ca5775b046fc29879e61" - integrity sha512-EivH9EgBIb+G8ij1B2jAwSH36WnGvkQSEC6CkX/6v6ZFlw5fVOHvsgGF4uiEHO2GzMvunZb6tDLQEQSdrdocrA== +"@babel/generator@^7.17.3", "@babel/generator@^7.17.7": + "version" "7.17.7" dependencies: - "@babel/types" "^7.14.5" + "@babel/types" "^7.17.0" + "jsesc" "^2.5.1" + "source-map" "^0.5.0" -"@babel/helper-compilation-targets@^7.14.5", "@babel/helper-compilation-targets@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz#973df8cbd025515f3ff25db0c05efc704fa79818" - integrity sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A== +"@babel/helper-annotate-as-pure@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + +"@babel/helper-compilation-targets@^7.15.0": + "integrity" "sha512-h+/9t0ncd4jfZ8wsdAsoIxSa61qhBYlycXiHWqJaQBCXAhDCMbPRSMTGnZIkkmt1u4ag+UQmuqcILwqKzZ4N2A==" + "resolved" "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/compat-data" "^7.15.0" "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" + "browserslist" "^4.16.6" + "semver" "^6.3.0" + +"@babel/helper-compilation-targets@^7.16.7", "@babel/helper-compilation-targets@^7.17.7": + "version" "7.17.7" + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-validator-option" "^7.16.7" + "browserslist" "^4.17.5" + "semver" "^6.3.0" + +"@babel/helper-environment-visitor@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" "@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== + "integrity" "sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-get-function-arity" "^7.14.5" "@babel/template" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/helper-function-name@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/helper-get-function-arity" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== + "integrity" "sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg==" + "resolved" "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/types" "^7.14.5" +"@babel/helper-get-function-arity@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== + "integrity" "sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/types" "^7.14.5" +"@babel/helper-hoist-variables@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-member-expression-to-functions@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz#0ddaf5299c8179f27f37327936553e9bba60990b" - integrity sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg== + "integrity" "sha512-Jq8H8U2kYiafuj2xMTPQwkTBnEEdGKpT35lJEQsRRjnG0LW3neucsaMWLgKcwu3OHKNeYugfw+Z20BXBSEs2Lg==" + "resolved" "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/types" "^7.15.0" "@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + "integrity" "sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/types" "^7.14.5" +"@babel/helper-module-imports@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-module-transforms@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz#679275581ea056373eddbe360e1419ef23783b08" - integrity sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg== + "integrity" "sha512-RkGiW5Rer7fpXv9m1B3iHIFDZdItnO2/BLfWVW/9q7+KqQSDY5kUfQEbzdXM1MVhJGcugKV7kRrNVzNxmk7NBg==" + "resolved" "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/helper-module-imports" "^7.14.5" "@babel/helper-replace-supers" "^7.15.0" @@ -128,22 +200,32 @@ "@babel/traverse" "^7.15.0" "@babel/types" "^7.15.0" +"@babel/helper-module-transforms@^7.17.7": + "version" "7.17.7" + dependencies: + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-simple-access" "^7.17.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/helper-validator-identifier" "^7.16.7" + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== + "integrity" "sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA==" + "resolved" "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/types" "^7.14.5" -"@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.8.0": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.14.5.tgz#5ac822ce97eec46741ab70a517971e443a70c5a9" - integrity sha512-/37qQCE3K0vvZKwoK4XU/irIJQdIfCJuhU5eKnNxpFDsOkgFaUAwbv+RYw6eYgsC0E4hS7r5KqGULUogqui0fQ== +"@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.8.0": + "version" "7.16.7" "@babel/helper-replace-supers@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz#ace07708f5bf746bf2e6ba99572cce79b5d4e7f4" - integrity sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA== + "integrity" "sha512-6O+eWrhx+HEra/uJnifCwhwMd6Bp5+ZfZeJwbqUTuqkhIT6YcRhiZCOOFChRypOIe0cV46kFrRBlm+t5vHCEaA==" + "resolved" "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/helper-member-expression-to-functions" "^7.15.0" "@babel/helper-optimise-call-expression" "^7.14.5" @@ -151,120 +233,150 @@ "@babel/types" "^7.15.0" "@babel/helper-simple-access@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz#82e1fec0644a7e775c74d305f212c39f8fe73924" - integrity sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg== + "integrity" "sha512-TrFN4RHh9gnWEU+s7JloIho2T76GPwRHhdzOWLqTrMnlas8T9O7ec+oEDNsRXndOmru9ymH9DFrEOxpzPoSbdg==" + "resolved" "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.14.8.tgz" + "version" "7.14.8" dependencies: "@babel/types" "^7.14.8" +"@babel/helper-simple-access@^7.17.7": + "version" "7.17.7" + dependencies: + "@babel/types" "^7.17.0" + "@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== + "integrity" "sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA==" + "resolved" "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/types" "^7.14.5" +"@babel/helper-split-export-declaration@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/types" "^7.16.7" + "@babel/helper-validator-identifier@^7.14.5", "@babel/helper-validator-identifier@^7.14.9": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz#6654d171b2024f6d8ee151bf2509699919131d48" - integrity sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g== + "integrity" "sha512-pQYxPY0UP6IHISRitNe8bsijHex4TWZXi2HwKVsjPiltzlhse2znVcm9Ace510VT1kxIHjGJCZZQBX2gJDbo0g==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.9.tgz" + "version" "7.14.9" + +"@babel/helper-validator-identifier@^7.16.7": + "version" "7.16.7" "@babel/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + "integrity" "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==" + "resolved" "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz" + "version" "7.14.5" + +"@babel/helper-validator-option@^7.16.7": + "version" "7.16.7" "@babel/helpers@^7.14.8": - version "7.14.8" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.8.tgz#839f88f463025886cff7f85a35297007e2da1b77" - integrity sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw== + "integrity" "sha512-ZRDmI56pnV+p1dH6d+UN6GINGz7Krps3+270qqI9UJ4wxYThfAIcI5i7j5vXC4FJ3Wap+S9qcebxeYiqn87DZw==" + "resolved" "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.8.tgz" + "version" "7.14.8" dependencies: "@babel/template" "^7.14.5" "@babel/traverse" "^7.14.8" "@babel/types" "^7.14.8" +"@babel/helpers@^7.17.8": + "version" "7.17.8" + dependencies: + "@babel/template" "^7.16.7" + "@babel/traverse" "^7.17.3" + "@babel/types" "^7.17.0" + "@babel/highlight@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" - integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + "integrity" "sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg==" + "resolved" "https://registry.npmjs.org/@babel/highlight/-/highlight-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/helper-validator-identifier" "^7.14.5" - chalk "^2.0.0" - js-tokens "^4.0.0" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" + +"@babel/highlight@^7.16.7": + "version" "7.16.10" + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + "chalk" "^2.0.0" + "js-tokens" "^4.0.0" "@babel/parser@^7.14.5", "@babel/parser@^7.15.0": - version "7.15.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.15.2.tgz#08d4ffcf90d211bf77e7cc7154c6f02d468d2b1d" - integrity sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg== + "integrity" "sha512-bMJXql1Ss8lFnvr11TZDH4ArtwlAS5NG9qBmdiFW2UHHm6MVoR+GDc5XE2b9K938cyjc9O6/+vjjcffLDtfuDg==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.15.2.tgz" + "version" "7.15.2" + +"@babel/parser@^7.16.7", "@babel/parser@^7.17.3", "@babel/parser@^7.17.8": + "version" "7.17.8" "@babel/parser@^7.9.4": - version "7.20.5" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" - integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== + "integrity" "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==" + "resolved" "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz" + "version" "7.20.5" "@babel/plugin-proposal-object-rest-spread@^7.5.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.14.7.tgz#5920a2b3df7f7901df0205974c0641b13fd9d363" - integrity sha512-082hsZz+sVabfmDWo1Oct1u1AgbKbUAyVgmX4otIc7bdsRgHBXwTwb3DpDmD4Eyyx6DNiuz5UAATT655k+kL5g== + "version" "7.17.3" dependencies: - "@babel/compat-data" "^7.14.7" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/compat-data" "^7.17.0" + "@babel/helper-compilation-targets" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread" "^7.8.3" - "@babel/plugin-transform-parameters" "^7.14.5" + "@babel/plugin-transform-parameters" "^7.16.7" -"@babel/plugin-syntax-jsx@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.14.5.tgz#000e2e25d8673cce49300517a3eda44c263e4201" - integrity sha512-ohuFIsOMXJnbOMRfX7/w7LocdR6R7whhuRD4ax8IipLcLPlZGJKkBxgHp++U4N/vKyU16/YDQr2f5seajD3jIw== +"@babel/plugin-syntax-jsx@^7.16.7": + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-syntax-object-rest-spread@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" - integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + "integrity" "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==" + "resolved" "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz" + "version" "7.8.3" dependencies: "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-transform-destructuring@^7.5.0": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.7.tgz#0ad58ed37e23e22084d109f185260835e5557576" - integrity sha512-0mDE99nK+kVh3xlc5vKwB6wnP9ecuSj+zQCa/n0voENtP/zymdT4HH6QEb65wjjcbqr1Jb/7z9Qp7TF5FtwYGw== + "version" "7.17.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" -"@babel/plugin-transform-parameters@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz#49662e86a1f3ddccac6363a7dfb1ff0a158afeb3" - integrity sha512-Tl7LWdr6HUxTmzQtzuU14SqbgrSKmaR77M0OKyq4njZLQTPfOvzblNKyNkGwOfEFCEx7KeYHQHDI0P3F02IVkA== +"@babel/plugin-transform-parameters@^7.16.7": + "version" "7.16.7" dependencies: - "@babel/helper-plugin-utils" "^7.14.5" + "@babel/helper-plugin-utils" "^7.16.7" "@babel/plugin-transform-react-jsx@^7.3.0": - version "7.14.9" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.14.9.tgz#3314b2163033abac5200a869c4de242cd50a914c" - integrity sha512-30PeETvS+AeD1f58i1OVyoDlVYQhap/K20ZrMjLmmzmC2AYR/G43D4sdJAaDAqCD3MYpSWbmrz3kES158QSLjw== + "version" "7.17.3" dependencies: - "@babel/helper-annotate-as-pure" "^7.14.5" - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-plugin-utils" "^7.14.5" - "@babel/plugin-syntax-jsx" "^7.14.5" - "@babel/types" "^7.14.9" + "@babel/helper-annotate-as-pure" "^7.16.7" + "@babel/helper-module-imports" "^7.16.7" + "@babel/helper-plugin-utils" "^7.16.7" + "@babel/plugin-syntax-jsx" "^7.16.7" + "@babel/types" "^7.17.0" "@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== + "integrity" "sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g==" + "resolved" "https://registry.npmjs.org/@babel/template/-/template-7.14.5.tgz" + "version" "7.14.5" dependencies: "@babel/code-frame" "^7.14.5" "@babel/parser" "^7.14.5" "@babel/types" "^7.14.5" +"@babel/template@^7.16.7": + "version" "7.16.7" + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/parser" "^7.16.7" + "@babel/types" "^7.16.7" + "@babel/traverse@^7.14.8", "@babel/traverse@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.15.0.tgz#4cca838fd1b2a03283c1f38e141f639d60b3fc98" - integrity sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw== + "integrity" "sha512-392d8BN0C9eVxVWd8H6x9WfipgVH5IaIoLp23334Sc1vbKKWINnvwRpb4us0xtPaCumlwbTtIYNA0Dv/32sVFw==" + "resolved" "https://registry.npmjs.org/@babel/traverse/-/traverse-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/code-frame" "^7.14.5" "@babel/generator" "^7.15.0" @@ -273,3238 +385,3393 @@ "@babel/helper-split-export-declaration" "^7.14.5" "@babel/parser" "^7.15.0" "@babel/types" "^7.15.0" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.14.9", "@babel/types@^7.15.0": - version "7.15.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.15.0.tgz#61af11f2286c4e9c69ca8deb5f4375a73c72dcbd" - integrity sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ== + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/traverse@^7.17.3": + "version" "7.17.3" + dependencies: + "@babel/code-frame" "^7.16.7" + "@babel/generator" "^7.17.3" + "@babel/helper-environment-visitor" "^7.16.7" + "@babel/helper-function-name" "^7.16.7" + "@babel/helper-hoist-variables" "^7.16.7" + "@babel/helper-split-export-declaration" "^7.16.7" + "@babel/parser" "^7.17.3" + "@babel/types" "^7.17.0" + "debug" "^4.1.0" + "globals" "^11.1.0" + +"@babel/types@^7.14.5", "@babel/types@^7.14.8", "@babel/types@^7.15.0": + "integrity" "sha512-OBvfqnllOIdX4ojTHpwZbpvz4j3EWyjkZEdmjH0/cgsd6QOdSgU8rLSk6ard/pcW7rlmjdVSX/AWOaORR1uNOQ==" + "resolved" "https://registry.npmjs.org/@babel/types/-/types-7.15.0.tgz" + "version" "7.15.0" dependencies: "@babel/helper-validator-identifier" "^7.14.9" - to-fast-properties "^2.0.0" + "to-fast-properties" "^2.0.0" + +"@babel/types@^7.16.7", "@babel/types@^7.17.0": + "version" "7.17.0" + dependencies: + "@babel/helper-validator-identifier" "^7.16.7" + "to-fast-properties" "^2.0.0" "@eslint/eslintrc@^1.4.1": - version "1.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-1.4.1.tgz#af58772019a2d271b7e2d4c23ff4ddcba3ccfb3e" - integrity sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA== - dependencies: - ajv "^6.12.4" - debug "^4.3.2" - espree "^9.4.0" - globals "^13.19.0" - ignore "^5.2.0" - import-fresh "^3.2.1" - js-yaml "^4.1.0" - minimatch "^3.1.2" - strip-json-comments "^3.1.1" + "integrity" "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==" + "resolved" "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz" + "version" "1.4.1" + dependencies: + "ajv" "^6.12.4" + "debug" "^4.3.2" + "espree" "^9.4.0" + "globals" "^13.19.0" + "ignore" "^5.2.0" + "import-fresh" "^3.2.1" + "js-yaml" "^4.1.0" + "minimatch" "^3.1.2" + "strip-json-comments" "^3.1.1" "@humanwhocodes/config-array@^0.11.8": - version "0.11.8" - resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.11.8.tgz#03595ac2075a4dc0f191cc2131de14fbd7d410b9" - integrity sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g== + "integrity" "sha512-UybHIJzJnR5Qc/MsD9Kr+RpO2h+/P1GhOwdiLPXK5TWk5sgTdu88bTD9UP+CKbPPh5Rni1u0GjAdYQLemG8g+g==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.8.tgz" + "version" "0.11.8" dependencies: "@humanwhocodes/object-schema" "^1.2.1" - debug "^4.1.1" - minimatch "^3.0.5" + "debug" "^4.1.1" + "minimatch" "^3.0.5" "@humanwhocodes/module-importer@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" - integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + "integrity" "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz" + "version" "1.0.1" "@humanwhocodes/object-schema@^1.2.1": - version "1.2.1" - resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" - integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== + "integrity" "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + "resolved" "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz" + "version" "1.2.1" "@isaacs/import-jsx@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@isaacs/import-jsx/-/import-jsx-4.0.1.tgz#493cab5fc543a0703dba7c3f5947d6499028a169" - integrity sha512-l34FEsEqpdYdGcQjRCxWy+7rHY6euUbOBz9FI+Mq6oQeVhNegHcXFSJxVxrJvOpO31NbnDjS74quKXDlPDearA== + "integrity" "sha512-l34FEsEqpdYdGcQjRCxWy+7rHY6euUbOBz9FI+Mq6oQeVhNegHcXFSJxVxrJvOpO31NbnDjS74quKXDlPDearA==" + "resolved" "https://registry.npmjs.org/@isaacs/import-jsx/-/import-jsx-4.0.1.tgz" + "version" "4.0.1" dependencies: "@babel/core" "^7.5.5" "@babel/plugin-proposal-object-rest-spread" "^7.5.5" "@babel/plugin-transform-destructuring" "^7.5.0" "@babel/plugin-transform-react-jsx" "^7.3.0" - caller-path "^3.0.1" - find-cache-dir "^3.2.0" - make-dir "^3.0.2" - resolve-from "^3.0.0" - rimraf "^3.0.0" + "caller-path" "^3.0.1" + "find-cache-dir" "^3.2.0" + "make-dir" "^3.0.2" + "resolve-from" "^3.0.0" + "rimraf" "^3.0.0" "@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + "integrity" "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==" + "resolved" "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz" + "version" "1.1.0" dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" + "camelcase" "^5.3.1" + "find-up" "^4.1.0" + "get-package-type" "^0.1.0" + "js-yaml" "^3.13.1" + "resolve-from" "^5.0.0" "@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + "integrity" "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==" + "resolved" "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz" + "version" "0.1.3" + +"@jridgewell/resolve-uri@^3.0.3": + "version" "3.0.5" + +"@jridgewell/sourcemap-codec@^1.4.10": + "version" "1.4.11" + +"@jridgewell/trace-mapping@^0.3.0": + "version" "0.3.4" + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" "@jsdoc/salty@^0.2.1": - version "0.2.2" - resolved "https://registry.yarnpkg.com/@jsdoc/salty/-/salty-0.2.2.tgz#567017ddda2048c5ff921aeffd38564a0578fdca" - integrity sha512-A1FrVnc7L9qI2gUGsfN0trTiJNK72Y0CL/VAyrmYEmeKI3pnHDawP64CEev31XLyAAOx2xmDo3tbadPxC0CSbw== + "integrity" "sha512-A1FrVnc7L9qI2gUGsfN0trTiJNK72Y0CL/VAyrmYEmeKI3pnHDawP64CEev31XLyAAOx2xmDo3tbadPxC0CSbw==" + "resolved" "https://registry.npmjs.org/@jsdoc/salty/-/salty-0.2.2.tgz" + "version" "0.2.2" dependencies: - lodash "^4.17.21" + "lodash" "^4.17.21" "@kwsites/file-exists@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@kwsites/file-exists/-/file-exists-1.1.1.tgz#ad1efcac13e1987d8dbaf235ef3be5b0d96faa99" - integrity sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw== + "integrity" "sha512-m9/5YGR18lIwxSFDwfE3oA7bWuq9kdau6ugN4H2rJeyhFQZcG9AgSHkQtSD15a8WvTgfz9aikZMrKPHvbpqFiw==" + "resolved" "https://registry.npmjs.org/@kwsites/file-exists/-/file-exists-1.1.1.tgz" + "version" "1.1.1" dependencies: - debug "^4.1.1" + "debug" "^4.1.1" "@kwsites/promise-deferred@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz#8ace5259254426ccef57f3175bc64ed7095ed919" - integrity sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw== + "integrity" "sha512-GaHYm+c0O9MjZRu0ongGBRbinu8gVAMd2UZjji6jVmqKtZluZnptXGWhz1E8j8D2HJ3f/yMxKAUC0b+57wncIw==" + "resolved" "https://registry.npmjs.org/@kwsites/promise-deferred/-/promise-deferred-1.1.1.tgz" + "version" "1.1.1" "@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1": - version "5.1.1-v1" - resolved "https://registry.yarnpkg.com/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz#dbf733a965ca47b1973177dc0bb6c889edcfb129" - integrity sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg== + "integrity" "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==" + "resolved" "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz" + "version" "5.1.1-v1" dependencies: - eslint-scope "5.1.1" + "eslint-scope" "5.1.1" "@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + "integrity" "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz" + "version" "2.1.5" dependencies: "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" + "run-parallel" "^1.1.9" -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== +"@nodelib/fs.stat@^2.0.2", "@nodelib/fs.stat@2.0.5": + "integrity" "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz" + "version" "2.0.5" "@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + "integrity" "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==" + "resolved" "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz" + "version" "1.2.8" dependencies: "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" + "fastq" "^1.6.0" "@oozcitak/dom@1.15.10": - version "1.15.10" - resolved "https://registry.yarnpkg.com/@oozcitak/dom/-/dom-1.15.10.tgz#dca7289f2b292cff2a901ea4fbbcc0a1ab0b05c2" - integrity sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ== + "integrity" "sha512-0JT29/LaxVgRcGKvHmSrUTEvZ8BXvZhGl2LASRUgHqDTC1M5g1pLmVv56IYNyt3bG2CUjDkc67wnyZC14pbQrQ==" + "resolved" "https://registry.npmjs.org/@oozcitak/dom/-/dom-1.15.10.tgz" + "version" "1.15.10" dependencies: "@oozcitak/infra" "1.0.8" "@oozcitak/url" "1.0.4" "@oozcitak/util" "8.3.8" "@oozcitak/infra@1.0.8": - version "1.0.8" - resolved "https://registry.yarnpkg.com/@oozcitak/infra/-/infra-1.0.8.tgz#b0b089421f7d0f6878687608301fbaba837a7d17" - integrity sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg== + "integrity" "sha512-JRAUc9VR6IGHOL7OGF+yrvs0LO8SlqGnPAMqyzOuFZPSZSXI7Xf2O9+awQPSMXgIWGtgUf/dA6Hs6X6ySEaWTg==" + "resolved" "https://registry.npmjs.org/@oozcitak/infra/-/infra-1.0.8.tgz" + "version" "1.0.8" dependencies: "@oozcitak/util" "8.3.8" "@oozcitak/url@1.0.4": - version "1.0.4" - resolved "https://registry.yarnpkg.com/@oozcitak/url/-/url-1.0.4.tgz#ca8b1c876319cf5a648dfa1123600a6aa5cda6ba" - integrity sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw== + "integrity" "sha512-kDcD8y+y3FCSOvnBI6HJgl00viO/nGbQoCINmQ0h98OhnGITrWR3bOGfwYCthgcrV8AnTJz8MzslTQbC3SOAmw==" + "resolved" "https://registry.npmjs.org/@oozcitak/url/-/url-1.0.4.tgz" + "version" "1.0.4" dependencies: "@oozcitak/infra" "1.0.8" "@oozcitak/util" "8.3.8" "@oozcitak/util@8.3.8": - version "8.3.8" - resolved "https://registry.yarnpkg.com/@oozcitak/util/-/util-8.3.8.tgz#10f65fe1891fd8cde4957360835e78fd1936bfdd" - integrity sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ== + "integrity" "sha512-T8TbSnGsxo6TDBJx/Sgv/BlVJL3tshxZP7Aq5R1mSnM5OcHY2dQaxLMu2+E8u3gN0MLOzdjurqN4ZRVuzQycOQ==" + "resolved" "https://registry.npmjs.org/@oozcitak/util/-/util-8.3.8.tgz" + "version" "8.3.8" "@sinonjs/commons@^1.7.0": - version "1.8.3" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.3.tgz#3802ddd21a50a949b6721ddd72da36e67e7f1b2d" - integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ== + "integrity" "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==" + "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" + "version" "1.8.3" dependencies: - type-detect "4.0.8" + "type-detect" "4.0.8" "@sinonjs/fake-timers@github:sinonjs/fake-timers#0bfffc1": - version "6.0.1" - resolved "https://codeload.github.com/sinonjs/fake-timers/tar.gz/0bfffc1810990f6e5dc42c5238e48cd90bd41265" + "resolved" "git+ssh://git@github.com/sinonjs/fake-timers.git#0bfffc1810990f6e5dc42c5238e48cd90bd41265" + "version" "6.0.1" dependencies: "@sinonjs/commons" "^1.7.0" "@tsd/typescript@~4.9.5": - version "4.9.5" - resolved "https://registry.yarnpkg.com/@tsd/typescript/-/typescript-4.9.5.tgz#85daafcf51f4af92bd8caf0e82b655ceaf948f99" - integrity sha512-+UgxOvJUl5rQdPFSSOOwhmSmpThm8DJ3HwHxAOq5XYe7CcmG1LcM2QeqWwILzUIT5tbeMqY8qABiCsRtIjk/2g== + "integrity" "sha512-+UgxOvJUl5rQdPFSSOOwhmSmpThm8DJ3HwHxAOq5XYe7CcmG1LcM2QeqWwILzUIT5tbeMqY8qABiCsRtIjk/2g==" + "resolved" "https://registry.npmjs.org/@tsd/typescript/-/typescript-4.9.5.tgz" + "version" "4.9.5" + +"@types/aws4@^1.11.2": + "integrity" "sha512-x0f96eBPrCCJzJxdPbUvDFRva4yPpINJzTuXXpmS2j9qLUpF2nyGzvXPlRziuGbCsPukwY4JfuO+8xwsoZLzGw==" + "resolved" "https://registry.npmjs.org/@types/aws4/-/aws4-1.11.2.tgz" + "version" "1.11.2" + dependencies: + "@types/node" "*" + +"@types/debug@^4.1.7": + "integrity" "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==" + "resolved" "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz" + "version" "4.1.7" + dependencies: + "@types/ms" "*" "@types/eslint@^7.2.13": - version "7.28.0" - resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-7.28.0.tgz#7e41f2481d301c68e14f483fe10b017753ce8d5a" - integrity sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A== + "integrity" "sha512-07XlgzX0YJUn4iG1ocY4IX9DzKSmMGUs6ESKlxWhZRaa0fatIWaHWUVapcuGa8r5HFnTqzj+4OCjd5f7EZ/i/A==" + "resolved" "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz" + "version" "7.28.0" dependencies: "@types/estree" "*" "@types/json-schema" "*" "@types/estree@*": - version "0.0.50" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.50.tgz#1e0caa9364d3fccd2931c3ed96fdbeaa5d4cca83" - integrity sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw== + "integrity" "sha512-C6N5s2ZFtuZRj54k2/zyRhNDjJwwcViAM3Nbm8zjBpbqAdZ00mr0CFxvSKeO8Y/e03WVFLpQMdHYVfUd6SB+Hw==" + "resolved" "https://registry.npmjs.org/@types/estree/-/estree-0.0.50.tgz" + "version" "0.0.50" "@types/json-schema@*": - version "7.0.9" - resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.9.tgz#97edc9037ea0c38585320b28964dde3b39e4660d" - integrity sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ== + "integrity" "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==" + "resolved" "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz" + "version" "7.0.9" "@types/linkify-it@*": - version "3.0.2" - resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.2.tgz#fd2cd2edbaa7eaac7e7f3c1748b52a19143846c9" - integrity sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA== + "integrity" "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==" + "resolved" "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz" + "version" "3.0.2" -"@types/markdown-it@^12.2.3": - version "12.2.3" - resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-12.2.3.tgz#0d6f6e5e413f8daaa26522904597be3d6cd93b51" - integrity sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ== +"@types/markdown-it@*", "@types/markdown-it@^12.2.3": + "integrity" "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==" + "resolved" "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz" + "version" "12.2.3" dependencies: "@types/linkify-it" "*" "@types/mdurl" "*" "@types/mdurl@*": - version "1.0.2" - resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.2.tgz#e2ce9d83a613bacf284c7be7d491945e39e1f8e9" - integrity sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA== + "integrity" "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==" + "resolved" "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz" + "version" "1.0.2" "@types/minimist@^1.2.0": - version "1.2.2" - resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.2.tgz#ee771e2ba4b3dc5b372935d549fd9617bf345b8c" - integrity sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ== + "integrity" "sha512-jhuKLIRrhvCPLqwPcx6INqmKeiA5EWrsCOPhrlFSrbrmU4ZMPjj5Ul/oLCMDO98XRUIwVm78xICz4EPCektzeQ==" + "resolved" "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.2.tgz" + "version" "1.2.2" -"@types/node@*": - version "18.11.19" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.11.19.tgz#35e26df9ec441ab99d73e99e9aca82935eea216d" - integrity sha512-YUgMWAQBWLObABqrvx8qKO1enAvBUdjZOAWQ5grBAkp5LQv45jBvYKZ3oFS9iKRCQyFjqw6iuEa1vmFqtxYLZw== +"@types/ms@*": + "integrity" "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==" + "resolved" "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz" + "version" "0.7.31" -"@types/node@^17.0.45": - version "17.0.45" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.45.tgz#2c0fafd78705e7a18b7906b5201a522719dc5190" - integrity sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw== +"@types/node@*", "@types/node@^17.0.45": + "integrity" "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==" + "resolved" "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz" + "version" "17.0.45" "@types/normalize-package-data@^2.4.0": - version "2.4.1" - resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz#d3357479a0fdfdd5907fe67e17e0a85c906e1301" - integrity sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw== + "integrity" "sha512-Gj7cI7z+98M282Tqmp2K5EIsoouUEzbBJhQQzDE3jSIRk6r9gsz0oUokqIUR4u1R3dMHo0pDHM7sNOHyhulypw==" + "resolved" "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.1.tgz" + "version" "2.4.1" "@types/prop-types@*": - version "15.7.4" - resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.4.tgz#fcf7205c25dff795ee79af1e30da2c9790808f11" - integrity sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ== + "integrity" "sha512-rZ5drC/jWjrArrS8BR6SIr4cWpW09RNTYt9AMZo3Jwwif+iacXAqgVjm0B0Bv/S1jhDXKHqRVNCbACkJ89RAnQ==" + "resolved" "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.4.tgz" + "version" "15.7.4" -"@types/react@^17.0.52": - version "17.0.53" - resolved "https://registry.yarnpkg.com/@types/react/-/react-17.0.53.tgz#10d4d5999b8af3d6bc6a9369d7eb953da82442ab" - integrity sha512-1yIpQR2zdYu1Z/dc1OxC+MA6GR240u3gcnP4l6mvj/PJiVaqHsQPmWttsvHsfnhfPbU2FuGmo0wSITPygjBmsw== +"@types/react@^17.0.52", "@types/react@>=16.8.0": + "version" "17.0.52" dependencies: "@types/prop-types" "*" "@types/scheduler" "*" - csstype "^3.0.2" + "csstype" "^3.0.2" "@types/scheduler@*": - version "0.16.2" - resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39" - integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew== + "integrity" "sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==" + "resolved" "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz" + "version" "0.16.2" "@types/yoga-layout@1.9.2": - version "1.9.2" - resolved "https://registry.yarnpkg.com/@types/yoga-layout/-/yoga-layout-1.9.2.tgz#efaf9e991a7390dc081a0b679185979a83a9639a" - integrity sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw== - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -acorn-jsx@^5.3.2: - version "5.3.2" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" - integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== - -acorn@^8.8.0: - version "8.8.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.8.1.tgz#0a3f9cbecc4ec3bea6f0a80b66ae8dd2da250b73" - integrity sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA== - -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - -ajv@^6.10.0, ajv@^6.12.4: - version "6.12.6" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" - integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== - dependencies: - fast-deep-equal "^3.1.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - -ansi-escapes@^4.2.1: - version "4.3.2" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" - integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== - dependencies: - type-fest "^0.21.3" - -ansi-regex@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" - integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -ansi-styles@^4.0.0, ansi-styles@^4.1.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" - integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== - dependencies: - color-convert "^2.0.1" - -ansicolors@~0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/ansicolors/-/ansicolors-0.3.2.tgz#665597de86a9ffe3aa9bfbe6cae5c6ea426b4979" - integrity sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk= - -anymatch@~3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== - dependencies: - normalize-path "^3.0.0" - picomatch "^2.0.4" - -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - -archy@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" - integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -argparse@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" - integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== - -args@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/args/-/args-5.0.1.tgz#4bf298df90a4799a09521362c579278cc2fdd761" - integrity sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ== - dependencies: - camelcase "5.0.0" - chalk "2.4.2" - leven "2.1.0" - mri "1.1.4" - -array-find-index@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -arrify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" - integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= - -asap@^2.0.0: - version "2.0.6" - resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" - integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= - -astral-regex@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" - integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== - -async-hook-domain@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/async-hook-domain/-/async-hook-domain-2.0.4.tgz#5a24910982c04394ea33dd442860f80cce2d972c" - integrity sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw== - -auto-bind@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/auto-bind/-/auto-bind-4.0.0.tgz#e3589fc6c2da8f7ca43ba9f84fa52a744fc997fb" - integrity sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ== - -aws4@^1.11.0: - version "1.12.0" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.12.0.tgz#ce1c9d143389679e253b314241ea9aa5cec980d3" - integrity sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg== - -balanced-match@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" - integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== - -base64-js@^1.3.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" - integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== - -basic-auth-parser@0.0.2: - version "0.0.2" - resolved "https://registry.yarnpkg.com/basic-auth-parser/-/basic-auth-parser-0.0.2.tgz#ce9e71a77f23c1279eecd2659b2a46244c156e41" - integrity sha1-zp5xp38jwSee7NJlmypGJEwVbkE= - -binary-extensions@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" - integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== - -bind-obj-methods@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bind-obj-methods/-/bind-obj-methods-3.0.0.tgz#65b66544d9d668d80dfefe2089dd347ad1dbcaed" - integrity sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw== - -bl@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-5.1.0.tgz#183715f678c7188ecef9fe475d90209400624273" - integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ== - dependencies: - buffer "^6.0.3" - inherits "^2.0.4" - readable-stream "^3.4.0" - -bluebird@^3.7.2: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -brace-expansion@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" - integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== - dependencies: - balanced-match "^1.0.0" - -braces@^3.0.1, braces@~3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - -browserslist@^4.16.6: - version "4.16.7" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.7.tgz#108b0d1ef33c4af1b587c54f390e7041178e4335" - integrity sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA== - dependencies: - caniuse-lite "^1.0.30001248" - colorette "^1.2.2" - electron-to-chromium "^1.3.793" - escalade "^3.1.1" - node-releases "^1.1.73" - -buffer-from@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" - integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== - -buffer@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/buffer/-/buffer-6.0.3.tgz#2ace578459cc8fbe2a70aaa8f52ee63b6a74c6c6" - integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA== - dependencies: - base64-js "^1.3.1" - ieee754 "^1.2.1" - -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== - dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.0.0" - -caller-callsite@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/caller-callsite/-/caller-callsite-4.1.0.tgz#3e33cb1d910e7b09332d59a3503b9af7462f7295" - integrity sha512-99nnnGlJexTc41xwQTr+mWl15OI5PPczUJzM4YRE7QjkefMKCXGa5gfQjCOuVrD+1TjI/fevIDHg2nz3iYN5Ig== - dependencies: - callsites "^3.1.0" - -caller-path@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/caller-path/-/caller-path-3.0.1.tgz#bc932ecec3f943e10c2f8922146e23b132f932e4" - integrity sha512-fhmztL4wURO/BzwJUJ4aVRdnKEFskPBbrJ8fNgl7XdUiD1ygzzlt+nhPgUBSRq2ciEVubo6x+W8vJQzm55QLLQ== - dependencies: - caller-callsite "^4.1.0" - -callsites@^3.0.0, callsites@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" - integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== - -camelcase-keys@^6.2.2: - version "6.2.2" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-6.2.2.tgz#5e755d6ba51aa223ec7d3d52f25778210f9dc3c0" - integrity sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg== - dependencies: - camelcase "^5.3.1" - map-obj "^4.0.0" - quick-lru "^4.0.1" - -camelcase@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.0.0.tgz#03295527d58bd3cd4aa75363f35b2e8d97be2f42" - integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA== - -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - -caniuse-lite@^1.0.30001248: - version "1.0.30001249" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz#90a330057f8ff75bfe97a94d047d5e14fabb2ee8" - integrity sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw== - -cardinal@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/cardinal/-/cardinal-2.1.1.tgz#7cc1055d822d212954d07b085dea251cc7bc5505" - integrity sha1-fMEFXYItISlU0HsIXeolHMe8VQU= - dependencies: - ansicolors "~0.3.2" - redeyed "~2.1.0" - -catharsis@^0.9.0: - version "0.9.0" - resolved "https://registry.yarnpkg.com/catharsis/-/catharsis-0.9.0.tgz#40382a168be0e6da308c277d3a2b3eb40c7d2121" - integrity sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A== - dependencies: - lodash "^4.17.15" - -chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^4.0.0, chalk@^4.1.0: - version "4.1.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" - integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== - dependencies: - ansi-styles "^4.1.0" - supports-color "^7.1.0" - -chalk@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-5.2.0.tgz#249623b7d66869c673699fb66d65723e54dfcfb3" - integrity sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA== - -chokidar@^3.3.0: - version "3.5.2" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.2.tgz#dba3976fcadb016f66fd365021d91600d01c1e75" - integrity sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ== - dependencies: - anymatch "~3.1.2" - braces "~3.0.2" - glob-parent "~5.1.2" - is-binary-path "~2.1.0" - is-glob "~4.0.1" - normalize-path "~3.0.0" - readdirp "~3.6.0" + "integrity" "sha512-S9q47ByT2pPvD65IvrWp7qppVMpk9WGMbVq9wbWZOHg6tnXSD4vyhao6nOSBwwfDdV2p3Kx9evA9vI+XWTfDvw==" + "resolved" "https://registry.npmjs.org/@types/yoga-layout/-/yoga-layout-1.9.2.tgz" + "version" "1.9.2" + +"abbrev@1": + "integrity" "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + "resolved" "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz" + "version" "1.1.1" + +"acorn-jsx@^5.3.2": + "integrity" "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + "resolved" "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" + "version" "5.3.2" + +"acorn@^6.0.0 || ^7.0.0 || ^8.0.0", "acorn@^8.8.0": + "integrity" "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==" + "resolved" "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz" + "version" "8.8.1" + +"aggregate-error@^3.0.0": + "integrity" "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==" + "resolved" "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "clean-stack" "^2.0.0" + "indent-string" "^4.0.0" + +"ajv@^6.10.0", "ajv@^6.12.4": + "integrity" "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==" + "resolved" "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz" + "version" "6.12.6" + dependencies: + "fast-deep-equal" "^3.1.1" + "fast-json-stable-stringify" "^2.0.0" + "json-schema-traverse" "^0.4.1" + "uri-js" "^4.2.2" + +"ansi-escapes@^4.2.1": + "integrity" "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==" + "resolved" "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz" + "version" "4.3.2" + dependencies: + "type-fest" "^0.21.3" + +"ansi-regex@^2.0.0": + "integrity" "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz" + "version" "2.1.1" + +"ansi-regex@^5.0.1": + "integrity" "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz" + "version" "5.0.1" + +"ansi-regex@^6.0.1": + "integrity" "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + "resolved" "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz" + "version" "6.0.1" + +"ansi-styles@^3.2.1": + "integrity" "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz" + "version" "3.2.1" + dependencies: + "color-convert" "^1.9.0" + +"ansi-styles@^4.0.0", "ansi-styles@^4.1.0": + "integrity" "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==" + "resolved" "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "color-convert" "^2.0.1" + +"ansicolors@~0.3.2": + "integrity" "sha1-ZlWX3oap/+Oqm/vmyuXG6kJrSXk=" + "resolved" "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz" + "version" "0.3.2" + +"anymatch@~3.1.2": + "integrity" "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==" + "resolved" "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "normalize-path" "^3.0.0" + "picomatch" "^2.0.4" + +"append-transform@^2.0.0": + "integrity" "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==" + "resolved" "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "default-require-extensions" "^3.0.0" + +"archy@^1.0.0": + "integrity" "sha1-+cjBN1fMHde8N5rHeyxipcKGjEA=" + "resolved" "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz" + "version" "1.0.0" + +"argparse@^1.0.7": + "integrity" "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz" + "version" "1.0.10" + dependencies: + "sprintf-js" "~1.0.2" + +"argparse@^2.0.1": + "integrity" "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "resolved" "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz" + "version" "2.0.1" + +"args@5.0.1": + "integrity" "sha512-1kqmFCFsPffavQFGt8OxJdIcETti99kySRUPMpOhaGjL6mRJn8HFU1OxKY5bMqfZKUwTQc1mZkAjmGYaVOHFtQ==" + "resolved" "https://registry.npmjs.org/args/-/args-5.0.1.tgz" + "version" "5.0.1" + dependencies: + "camelcase" "5.0.0" + "chalk" "2.4.2" + "leven" "2.1.0" + "mri" "1.1.4" + +"array-find-index@^1.0.2": + "integrity" "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=" + "resolved" "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz" + "version" "1.0.2" + +"array-union@^2.1.0": + "integrity" "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + "resolved" "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz" + "version" "2.1.0" + +"arrify@^1.0.1": + "integrity" "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=" + "resolved" "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz" + "version" "1.0.1" + +"asap@^2.0.0": + "integrity" "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" + "resolved" "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz" + "version" "2.0.6" + +"astral-regex@^2.0.0": + "integrity" "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + "resolved" "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz" + "version" "2.0.0" + +"async-hook-domain@^2.0.4": + "integrity" "sha512-14LjCmlK1PK8eDtTezR6WX8TMaYNIzBIsd2D1sGoGjgx0BuNMMoSdk7i/drlbtamy0AWv9yv2tkB+ASdmeqFIw==" + "resolved" "https://registry.npmjs.org/async-hook-domain/-/async-hook-domain-2.0.4.tgz" + "version" "2.0.4" + +"auto-bind@4.0.0": + "integrity" "sha512-Hdw8qdNiqdJ8LqT0iK0sVzkFbzg6fhnQqqfWhBDxcHZvU75+B+ayzTy8x+k5Ix0Y92XOhOUlx74ps+bA6BeYMQ==" + "resolved" "https://registry.npmjs.org/auto-bind/-/auto-bind-4.0.0.tgz" + "version" "4.0.0" + +"aws4@^1.11.0": + "integrity" "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==" + "resolved" "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz" + "version" "1.12.0" + +"balanced-match@^1.0.0": + "integrity" "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "resolved" "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz" + "version" "1.0.2" + +"base64-js@^1.3.1": + "integrity" "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + "resolved" "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz" + "version" "1.5.1" + +"basic-auth-parser@0.0.2": + "integrity" "sha1-zp5xp38jwSee7NJlmypGJEwVbkE=" + "resolved" "https://registry.npmjs.org/basic-auth-parser/-/basic-auth-parser-0.0.2.tgz" + "version" "0.0.2" + +"binary-extensions@^2.0.0": + "integrity" "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + "resolved" "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz" + "version" "2.2.0" + +"bind-obj-methods@^3.0.0": + "integrity" "sha512-nLEaaz3/sEzNSyPWRsN9HNsqwk1AUyECtGj+XwGdIi3xABnEqecvXtIJ0wehQXuuER5uZ/5fTs2usONgYjG+iw==" + "resolved" "https://registry.npmjs.org/bind-obj-methods/-/bind-obj-methods-3.0.0.tgz" + "version" "3.0.0" + +"bl@^5.0.0": + "integrity" "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==" + "resolved" "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "buffer" "^6.0.3" + "inherits" "^2.0.4" + "readable-stream" "^3.4.0" + +"bluebird@^3.7.2": + "integrity" "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==" + "resolved" "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz" + "version" "3.7.2" + +"brace-expansion@^1.1.7": + "integrity" "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz" + "version" "1.1.11" + dependencies: + "balanced-match" "^1.0.0" + "concat-map" "0.0.1" + +"brace-expansion@^2.0.1": + "integrity" "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==" + "resolved" "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "balanced-match" "^1.0.0" + +"braces@^3.0.1", "braces@~3.0.2": + "integrity" "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==" + "resolved" "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "fill-range" "^7.0.1" + +"browserslist@^4.16.6": + "integrity" "sha512-7I4qVwqZltJ7j37wObBe3SoTz+nS8APaNcrBOlgoirb6/HbEU2XxW/LpUDTCngM6iauwFqmRTuOMfyKnFGY5JA==" + "resolved" "https://registry.npmjs.org/browserslist/-/browserslist-4.16.7.tgz" + "version" "4.16.7" + dependencies: + "caniuse-lite" "^1.0.30001248" + "colorette" "^1.2.2" + "electron-to-chromium" "^1.3.793" + "escalade" "^3.1.1" + "node-releases" "^1.1.73" + +"browserslist@^4.17.5": + "version" "4.20.2" + dependencies: + "caniuse-lite" "^1.0.30001317" + "electron-to-chromium" "^1.4.84" + "escalade" "^3.1.1" + "node-releases" "^2.0.2" + "picocolors" "^1.0.0" + +"buffer-from@^1.0.0": + "integrity" "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + "resolved" "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz" + "version" "1.1.2" + +"buffer@^6.0.3": + "integrity" "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==" + "resolved" "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz" + "version" "6.0.3" + dependencies: + "base64-js" "^1.3.1" + "ieee754" "^1.2.1" + +"caching-transform@^4.0.0": + "integrity" "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==" + "resolved" "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "hasha" "^5.0.0" + "make-dir" "^3.0.0" + "package-hash" "^4.0.0" + "write-file-atomic" "^3.0.0" + +"caller-callsite@^4.1.0": + "integrity" "sha512-99nnnGlJexTc41xwQTr+mWl15OI5PPczUJzM4YRE7QjkefMKCXGa5gfQjCOuVrD+1TjI/fevIDHg2nz3iYN5Ig==" + "resolved" "https://registry.npmjs.org/caller-callsite/-/caller-callsite-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "callsites" "^3.1.0" + +"caller-path@^3.0.1": + "integrity" "sha512-fhmztL4wURO/BzwJUJ4aVRdnKEFskPBbrJ8fNgl7XdUiD1ygzzlt+nhPgUBSRq2ciEVubo6x+W8vJQzm55QLLQ==" + "resolved" "https://registry.npmjs.org/caller-path/-/caller-path-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "caller-callsite" "^4.1.0" + +"callsites@^3.0.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"callsites@^3.1.0": + "integrity" "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + "resolved" "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz" + "version" "3.1.0" + +"camelcase-keys@^6.2.2": + "integrity" "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==" + "resolved" "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz" + "version" "6.2.2" + dependencies: + "camelcase" "^5.3.1" + "map-obj" "^4.0.0" + "quick-lru" "^4.0.1" + +"camelcase@^5.0.0", "camelcase@^5.3.1": + "integrity" "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz" + "version" "5.3.1" + +"camelcase@5.0.0": + "integrity" "sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==" + "resolved" "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz" + "version" "5.0.0" + +"caniuse-lite@^1.0.30001248": + "integrity" "sha512-vcX4U8lwVXPdqzPWi6cAJ3FnQaqXbBqy/GZseKNQzRj37J7qZdGcBtxq/QLFNLLlfsoXLUdHw8Iwenri86Tagw==" + "resolved" "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001249.tgz" + "version" "1.0.30001249" + +"caniuse-lite@^1.0.30001317": + "version" "1.0.30001319" + +"cardinal@^2.1.1": + "integrity" "sha1-fMEFXYItISlU0HsIXeolHMe8VQU=" + "resolved" "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "ansicolors" "~0.3.2" + "redeyed" "~2.1.0" + +"catharsis@^0.9.0": + "integrity" "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==" + "resolved" "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz" + "version" "0.9.0" + dependencies: + "lodash" "^4.17.15" + +"chalk@^2.0.0": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^2.4.1": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chalk@^3.0.0": + "integrity" "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^4.0.0", "chalk@^4.1.0": + "integrity" "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz" + "version" "4.1.2" + dependencies: + "ansi-styles" "^4.1.0" + "supports-color" "^7.1.0" + +"chalk@^5.0.0": + "integrity" "sha512-ree3Gqw/nazQAPuJJEy+avdl7QfZMcUvmHIKgEZkGL+xOBzRvup5Hxo6LHuMceSxOabuJLJm5Yp/92R9eMmMvA==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-5.2.0.tgz" + "version" "5.2.0" + +"chalk@2.4.2": + "integrity" "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==" + "resolved" "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz" + "version" "2.4.2" + dependencies: + "ansi-styles" "^3.2.1" + "escape-string-regexp" "^1.0.5" + "supports-color" "^5.3.0" + +"chokidar@^3.3.0": + "integrity" "sha512-ekGhOnNVPgT77r4K/U3GDhu+FQ2S8TnK/s2KbIGXi0SZWuwkZ2QNyfWdZW+TVfn84DpEP7rLeCt2UI6bJ8GwbQ==" + "resolved" "https://registry.npmjs.org/chokidar/-/chokidar-3.5.2.tgz" + "version" "3.5.2" + dependencies: + "anymatch" "~3.1.2" + "braces" "~3.0.2" + "glob-parent" "~5.1.2" + "is-binary-path" "~2.1.0" + "is-glob" "~4.0.1" + "normalize-path" "~3.0.0" + "readdirp" "~3.6.0" optionalDependencies: - fsevents "~2.3.2" - -ci-info@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" - integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== - -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - -cli-boxes@^2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-boxes/-/cli-boxes-2.2.1.tgz#ddd5035d25094fce220e9cab40a45840a440318f" - integrity sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw== - -cli-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" - integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== - dependencies: - restore-cursor "^3.1.0" - -cli-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-4.0.0.tgz#3cecfe3734bf4fe02a8361cbdc0f6fe28c6a57ea" - integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg== - dependencies: - restore-cursor "^4.0.0" - -cli-spinners@^2.6.1: - version "2.7.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.7.0.tgz#f815fd30b5f9eaac02db604c7a231ed7cb2f797a" - integrity sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw== - -cli-truncate@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" - integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== - dependencies: - slice-ansi "^3.0.0" - string-width "^4.2.0" - -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - -cliui@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - -clone@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" - integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= - -code-excerpt@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/code-excerpt/-/code-excerpt-3.0.0.tgz#fcfb6748c03dba8431c19f5474747fad3f250f10" - integrity sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw== - dependencies: - convert-to-spaces "^1.0.1" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-convert@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" - integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== - dependencies: - color-name "~1.1.4" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -color-name@~1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" - integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== - -color-support@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" - integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== - -colorette@^1.2.2: - version "1.3.0" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.3.0.tgz#ff45d2f0edb244069d3b772adeb04fed38d0a0af" - integrity sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w== - -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== - -convert-hrtime@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/convert-hrtime/-/convert-hrtime-5.0.0.tgz#f2131236d4598b95de856926a67100a0a97e9fa3" - integrity sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg== - -convert-source-map@^1.7.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" - integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== - dependencies: - safe-buffer "~5.1.1" - -convert-to-spaces@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz#7e3e48bbe6d997b1417ddca2868204b4d3d85715" - integrity sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ== - -core-util-is@~1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" - integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= - -cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: - version "7.0.3" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" - integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== - dependencies: - path-key "^3.1.0" - shebang-command "^2.0.0" - which "^2.0.1" - -cross-zip@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/cross-zip/-/cross-zip-4.0.0.tgz#c29bfb2c001659a6d480ae9596f3bee83b48a230" - integrity sha512-MEzGfZo0rqE10O/B+AEcCSJLZsrWuRUvmqJTqHNqBtALhaJc3E3ixLGLJNTRzEA2K34wbmOHC4fwYs9sVsdcCA== - -csstype@^3.0.2: - version "3.0.8" - resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.0.8.tgz#d2266a792729fb227cd216fb572f43728e1ad340" - integrity sha512-jXKhWqXPmlUeoQnF/EhTtTl4C9SnrxSH/jZUih3jmO6lBKr99rP3/+FmrMj4EFpOXzMtXHAZkd3x0E6h6Fgflw== - -data-uri-to-buffer@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz#b5db46aea50f6176428ac05b73be39a57701a64b" - integrity sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA== - -debug@^3.1.0: - version "3.2.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" - integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -debuglog@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" - integrity sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI= - -decamelize-keys@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/decamelize-keys/-/decamelize-keys-1.1.0.tgz#d171a87933252807eb3cb61dc1c1445d078df2d9" - integrity sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk= - dependencies: - decamelize "^1.1.0" - map-obj "^1.0.0" - -decamelize@^1.1.0, decamelize@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -dedent@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" - integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= - -deep-is@^0.1.3: - version "0.1.3" - resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" - integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= - -deepmerge@^4.2.2: - version "4.3.0" - resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.0.tgz#65491893ec47756d44719ae520e0e2609233b59b" - integrity sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og== - -default-require-extensions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" - integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== - dependencies: - strip-bom "^4.0.0" - -defaults@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" - integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= - dependencies: - clone "^1.0.2" - -dezalgo@^1.0.0, dezalgo@^1.0.3: - version "1.0.4" - resolved "https://registry.yarnpkg.com/dezalgo/-/dezalgo-1.0.4.tgz#751235260469084c132157dfa857f386d4c33d81" - integrity sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig== - dependencies: - asap "^2.0.0" - wrappy "1" - -diff@^4.0.1, diff@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" - integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - -doctrine@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" - integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== - dependencies: - esutils "^2.0.2" - -electron-to-chromium@^1.3.793: - version "1.3.801" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.801.tgz#f41c588e408ad1a4f794f91f38aa94a89c492f51" - integrity sha512-xapG8ekC+IAHtJrGBMQSImNuN+dm+zl7UP1YbhvTkwQn8zf/yYuoxfTSAEiJ9VDD+kjvXaAhNDPSxJ+VImtAJA== - -emoji-regex@^8.0.0: - version "8.0.0" - resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" - integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== - -entities@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/entities/-/entities-2.1.0.tgz#992d3129cf7df6870b96c57858c249a120f8b8b5" - integrity sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w== - -error-ex@^1.3.1: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - -escalade@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" - integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -escape-string-regexp@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" - integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== - -escape-string-regexp@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" - integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== - -eslint-config-prettier@^8.5.0: - version "8.6.0" - resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz#dec1d29ab728f4fa63061774e1672ac4e363d207" - integrity sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA== - -eslint-formatter-pretty@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz#7a6877c14ffe2672066c853587d89603e97c7708" - integrity sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ== + "fsevents" "~2.3.2" + +"ci-info@^2.0.0": + "integrity" "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + "resolved" "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz" + "version" "2.0.0" + +"clean-stack@^2.0.0": + "integrity" "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + "resolved" "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz" + "version" "2.2.0" + +"cli-boxes@^2.2.0": + "integrity" "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + "resolved" "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz" + "version" "2.2.1" + +"cli-cursor@^3.1.0": + "integrity" "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "restore-cursor" "^3.1.0" + +"cli-cursor@^4.0.0": + "integrity" "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==" + "resolved" "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "restore-cursor" "^4.0.0" + +"cli-spinners@^2.6.1": + "integrity" "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==" + "resolved" "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz" + "version" "2.7.0" + +"cli-truncate@^2.1.0": + "integrity" "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==" + "resolved" "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "slice-ansi" "^3.0.0" + "string-width" "^4.2.0" + +"cliui@^6.0.0": + "integrity" "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^6.2.0" + +"cliui@^7.0.4": + "integrity" "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==" + "resolved" "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz" + "version" "7.0.4" + dependencies: + "string-width" "^4.2.0" + "strip-ansi" "^6.0.0" + "wrap-ansi" "^7.0.0" + +"clone@^1.0.2": + "integrity" "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + "resolved" "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz" + "version" "1.0.4" + +"code-excerpt@^3.0.0": + "integrity" "sha512-VHNTVhd7KsLGOqfX3SyeO8RyYPMp1GJOg194VITk04WMYCv4plV68YWe6TJZxd9MhobjtpMRnVky01gqZsalaw==" + "resolved" "https://registry.npmjs.org/code-excerpt/-/code-excerpt-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "convert-to-spaces" "^1.0.1" + +"color-convert@^1.9.0": + "integrity" "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz" + "version" "1.9.3" + dependencies: + "color-name" "1.1.3" + +"color-convert@^2.0.1": + "integrity" "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==" + "resolved" "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz" + "version" "2.0.1" + dependencies: + "color-name" "~1.1.4" + +"color-name@~1.1.4": + "integrity" "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz" + "version" "1.1.4" + +"color-name@1.1.3": + "integrity" "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" + "resolved" "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz" + "version" "1.1.3" + +"color-support@^1.1.0": + "integrity" "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==" + "resolved" "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz" + "version" "1.1.3" + +"colorette@^1.2.2": + "integrity" "sha512-ecORCqbSFP7Wm8Y6lyqMJjexBQqXSF7SSeaTyGGphogUjBlFP9m9o08wy86HL2uB7fMTxtOUzLMk7ogKcxMg1w==" + "resolved" "https://registry.npmjs.org/colorette/-/colorette-1.3.0.tgz" + "version" "1.3.0" + +"commondir@^1.0.1": + "integrity" "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=" + "resolved" "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz" + "version" "1.0.1" + +"concat-map@0.0.1": + "integrity" "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "resolved" "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz" + "version" "0.0.1" + +"convert-hrtime@^5.0.0": + "integrity" "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==" + "resolved" "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz" + "version" "5.0.0" + +"convert-source-map@^1.7.0": + "integrity" "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==" + "resolved" "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz" + "version" "1.8.0" + dependencies: + "safe-buffer" "~5.1.1" + +"convert-to-spaces@^1.0.1": + "integrity" "sha512-cj09EBuObp9gZNQCzc7hByQyrs6jVGE+o9kSJmeUoj+GiPiJvi5LYqEH/Hmme4+MTLHM+Ejtq+FChpjjEnsPdQ==" + "resolved" "https://registry.npmjs.org/convert-to-spaces/-/convert-to-spaces-1.0.2.tgz" + "version" "1.0.2" + +"core-util-is@~1.0.0": + "integrity" "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + "resolved" "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz" + "version" "1.0.2" + +"cross-spawn@^7.0.0", "cross-spawn@^7.0.2", "cross-spawn@^7.0.3": + "integrity" "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==" + "resolved" "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz" + "version" "7.0.3" + dependencies: + "path-key" "^3.1.0" + "shebang-command" "^2.0.0" + "which" "^2.0.1" + +"cross-zip@^4.0.0": + "integrity" "sha512-MEzGfZo0rqE10O/B+AEcCSJLZsrWuRUvmqJTqHNqBtALhaJc3E3ixLGLJNTRzEA2K34wbmOHC4fwYs9sVsdcCA==" + "resolved" "https://registry.npmjs.org/cross-zip/-/cross-zip-4.0.0.tgz" + "version" "4.0.0" + +"csstype@^3.0.2": + "version" "3.0.11" + +"data-uri-to-buffer@^4.0.0": + "integrity" "sha512-Vr3mLBA8qWmcuschSLAOogKgQ/Jwxulv3RNE4FXnYWRGujzrRWQI4m12fQqRkwX06C0KanhLr4hK+GydchZsaA==" + "resolved" "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.0.tgz" + "version" "4.0.0" + +"debug@^3.1.0": + "integrity" "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz" + "version" "3.2.7" + dependencies: + "ms" "^2.1.1" + +"debug@^4.1.0", "debug@^4.1.1", "debug@^4.3.1", "debug@^4.3.2", "debug@^4.3.4": + "integrity" "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz" + "version" "4.3.4" + dependencies: + "ms" "2.1.2" + +"debuglog@^1.0.1": + "integrity" "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=" + "resolved" "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz" + "version" "1.0.1" + +"decamelize-keys@^1.1.0": + "integrity" "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=" + "resolved" "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "decamelize" "^1.1.0" + "map-obj" "^1.0.0" + +"decamelize@^1.1.0", "decamelize@^1.2.0": + "integrity" "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=" + "resolved" "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz" + "version" "1.2.0" + +"dedent@^0.7.0": + "integrity" "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=" + "resolved" "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz" + "version" "0.7.0" + +"deep-is@^0.1.3": + "integrity" "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" + "resolved" "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz" + "version" "0.1.3" + +"deepmerge@^4.2.2": + "integrity" "sha512-z2wJZXrmeHdvYJp/Ux55wIjqo81G5Bp4c+oELTW+7ar6SogWHajt5a9gO3s3IDaGSAXjDk0vlQKN3rms8ab3og==" + "resolved" "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.0.tgz" + "version" "4.3.0" + +"default-require-extensions@^3.0.0": + "integrity" "sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg==" + "resolved" "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "strip-bom" "^4.0.0" + +"defaults@^1.0.3": + "integrity" "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=" + "resolved" "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "clone" "^1.0.2" + +"dezalgo@^1.0.0", "dezalgo@^1.0.3": + "integrity" "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==" + "resolved" "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz" + "version" "1.0.4" + dependencies: + "asap" "^2.0.0" + "wrappy" "1" + +"diff@^4.0.1", "diff@^4.0.2": + "integrity" "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==" + "resolved" "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" + "version" "4.0.2" + +"dir-glob@^3.0.1": + "integrity" "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==" + "resolved" "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "path-type" "^4.0.0" + +"doctrine@^3.0.0": + "integrity" "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==" + "resolved" "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "esutils" "^2.0.2" + +"electron-to-chromium@^1.3.793": + "integrity" "sha512-xapG8ekC+IAHtJrGBMQSImNuN+dm+zl7UP1YbhvTkwQn8zf/yYuoxfTSAEiJ9VDD+kjvXaAhNDPSxJ+VImtAJA==" + "resolved" "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.801.tgz" + "version" "1.3.801" + +"electron-to-chromium@^1.4.84": + "version" "1.4.89" + +"emoji-regex@^8.0.0": + "integrity" "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "resolved" "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz" + "version" "8.0.0" + +"entities@~2.1.0": + "integrity" "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==" + "resolved" "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz" + "version" "2.1.0" + +"error-ex@^1.3.1": + "integrity" "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==" + "resolved" "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz" + "version" "1.3.2" + dependencies: + "is-arrayish" "^0.2.1" + +"es6-error@^4.0.1": + "integrity" "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==" + "resolved" "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz" + "version" "4.1.1" + +"escalade@^3.1.1": + "integrity" "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + "resolved" "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz" + "version" "3.1.1" + +"escape-string-regexp@^1.0.5": + "integrity" "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz" + "version" "1.0.5" + +"escape-string-regexp@^2.0.0": + "integrity" "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz" + "version" "2.0.0" + +"escape-string-regexp@^4.0.0": + "integrity" "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + "resolved" "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz" + "version" "4.0.0" + +"eslint-config-prettier@^8.5.0": + "integrity" "sha512-bAF0eLpLVqP5oEVUFKpMA+NnRFICwn9X8B5jrR9FcqnYBuPbqWEjTEspPWMj5ye6czoSLDweCzSo3Ko7gGrZaA==" + "resolved" "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.6.0.tgz" + "version" "8.6.0" + +"eslint-formatter-pretty@^4.1.0": + "integrity" "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==" + "resolved" "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz" + "version" "4.1.0" dependencies: "@types/eslint" "^7.2.13" - ansi-escapes "^4.2.1" - chalk "^4.1.0" - eslint-rule-docs "^1.1.5" - log-symbols "^4.0.0" - plur "^4.0.0" - string-width "^4.2.0" - supports-hyperlinks "^2.0.0" - -eslint-plugin-prettier@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz#651cbb88b1dab98bfd42f017a12fa6b2d993f94b" - integrity sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ== - dependencies: - prettier-linter-helpers "^1.0.0" - -eslint-rule-docs@^1.1.5: - version "1.1.231" - resolved "https://registry.yarnpkg.com/eslint-rule-docs/-/eslint-rule-docs-1.1.231.tgz#648b978bc5a1bb740be5f28d07470f0926b9cdf1" - integrity sha512-egHz9A1WG7b8CS0x1P6P/Rj5FqZOjray/VjpJa14tMZalfRKvpE2ONJ3plCM7+PcinmU4tcmbPLv0VtwzSdLVA== - -eslint-scope@5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" - integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== - dependencies: - esrecurse "^4.3.0" - estraverse "^4.1.1" - -eslint-scope@^7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.1.1.tgz#fff34894c2f65e5226d3041ac480b4513a163642" - integrity sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw== - dependencies: - esrecurse "^4.3.0" - estraverse "^5.2.0" - -eslint-utils@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" - integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== - dependencies: - eslint-visitor-keys "^2.0.0" - -eslint-visitor-keys@^2.0.0, eslint-visitor-keys@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" - integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== - -eslint-visitor-keys@^3.3.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" - integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== - -eslint@^8.30.0: - version "8.33.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.33.0.tgz#02f110f32998cb598c6461f24f4d306e41ca33d7" - integrity sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA== + "ansi-escapes" "^4.2.1" + "chalk" "^4.1.0" + "eslint-rule-docs" "^1.1.5" + "log-symbols" "^4.0.0" + "plur" "^4.0.0" + "string-width" "^4.2.0" + "supports-hyperlinks" "^2.0.0" + +"eslint-plugin-prettier@^4.0.0": + "integrity" "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==" + "resolved" "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz" + "version" "4.2.1" + dependencies: + "prettier-linter-helpers" "^1.0.0" + +"eslint-rule-docs@^1.1.5": + "integrity" "sha512-egHz9A1WG7b8CS0x1P6P/Rj5FqZOjray/VjpJa14tMZalfRKvpE2ONJ3plCM7+PcinmU4tcmbPLv0VtwzSdLVA==" + "resolved" "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.231.tgz" + "version" "1.1.231" + +"eslint-scope@^7.1.1": + "integrity" "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz" + "version" "7.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^5.2.0" + +"eslint-scope@5.1.1": + "integrity" "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==" + "resolved" "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz" + "version" "5.1.1" + dependencies: + "esrecurse" "^4.3.0" + "estraverse" "^4.1.1" + +"eslint-utils@^3.0.0": + "integrity" "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==" + "resolved" "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "eslint-visitor-keys" "^2.0.0" + +"eslint-visitor-keys@^2.0.0", "eslint-visitor-keys@^2.1.0": + "integrity" "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz" + "version" "2.1.0" + +"eslint-visitor-keys@^3.3.0": + "integrity" "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==" + "resolved" "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz" + "version" "3.3.0" + +"eslint@^7.5.0 || ^8.0.0", "eslint@^8.30.0", "eslint@>=5", "eslint@>=7.0.0", "eslint@>=7.28.0": + "integrity" "sha512-WjOpFQgKK8VrCnAtl8We0SUOy/oVZ5NHykyMiagV1M9r8IFpIJX7DduK6n1mpfhlG7T1NLWm2SuD8QB7KFySaA==" + "resolved" "https://registry.npmjs.org/eslint/-/eslint-8.33.0.tgz" + "version" "8.33.0" dependencies: "@eslint/eslintrc" "^1.4.1" "@humanwhocodes/config-array" "^0.11.8" "@humanwhocodes/module-importer" "^1.0.1" "@nodelib/fs.walk" "^1.2.8" - ajv "^6.10.0" - chalk "^4.0.0" - cross-spawn "^7.0.2" - debug "^4.3.2" - doctrine "^3.0.0" - escape-string-regexp "^4.0.0" - eslint-scope "^7.1.1" - eslint-utils "^3.0.0" - eslint-visitor-keys "^3.3.0" - espree "^9.4.0" - esquery "^1.4.0" - esutils "^2.0.2" - fast-deep-equal "^3.1.3" - file-entry-cache "^6.0.1" - find-up "^5.0.0" - glob-parent "^6.0.2" - globals "^13.19.0" - grapheme-splitter "^1.0.4" - ignore "^5.2.0" - import-fresh "^3.0.0" - imurmurhash "^0.1.4" - is-glob "^4.0.0" - is-path-inside "^3.0.3" - js-sdsl "^4.1.4" - js-yaml "^4.1.0" - json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.4.1" - lodash.merge "^4.6.2" - minimatch "^3.1.2" - natural-compare "^1.4.0" - optionator "^0.9.1" - regexpp "^3.2.0" - strip-ansi "^6.0.1" - strip-json-comments "^3.1.0" - text-table "^0.2.0" - -espree@^9.4.0: - version "9.4.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-9.4.1.tgz#51d6092615567a2c2cff7833445e37c28c0065bd" - integrity sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg== - dependencies: - acorn "^8.8.0" - acorn-jsx "^5.3.2" - eslint-visitor-keys "^3.3.0" - -esprima@^4.0.0, esprima@~4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -esquery@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" - integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== - dependencies: - estraverse "^5.1.0" - -esrecurse@^4.3.0: - version "4.3.0" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" - integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== - dependencies: - estraverse "^5.2.0" - -estraverse@^4.1.1: - version "4.3.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" - integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== - -estraverse@^5.1.0, estraverse@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" - integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== - -esutils@^2.0.2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" - integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== - -events-to-array@^1.0.1: - version "1.1.2" - resolved "https://registry.yarnpkg.com/events-to-array/-/events-to-array-1.1.2.tgz#2d41f563e1fe400ed4962fe1a4d5c6a7539df7f6" - integrity sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y= - -fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: - version "3.1.3" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" - integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== - -fast-diff@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" - integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== - -fast-glob@^3.1.1: - version "3.2.7" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.2.7.tgz#fd6cb7a2d7e9aa7a7846111e85a196d6b2f766a1" - integrity sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q== + "ajv" "^6.10.0" + "chalk" "^4.0.0" + "cross-spawn" "^7.0.2" + "debug" "^4.3.2" + "doctrine" "^3.0.0" + "escape-string-regexp" "^4.0.0" + "eslint-scope" "^7.1.1" + "eslint-utils" "^3.0.0" + "eslint-visitor-keys" "^3.3.0" + "espree" "^9.4.0" + "esquery" "^1.4.0" + "esutils" "^2.0.2" + "fast-deep-equal" "^3.1.3" + "file-entry-cache" "^6.0.1" + "find-up" "^5.0.0" + "glob-parent" "^6.0.2" + "globals" "^13.19.0" + "grapheme-splitter" "^1.0.4" + "ignore" "^5.2.0" + "import-fresh" "^3.0.0" + "imurmurhash" "^0.1.4" + "is-glob" "^4.0.0" + "is-path-inside" "^3.0.3" + "js-sdsl" "^4.1.4" + "js-yaml" "^4.1.0" + "json-stable-stringify-without-jsonify" "^1.0.1" + "levn" "^0.4.1" + "lodash.merge" "^4.6.2" + "minimatch" "^3.1.2" + "natural-compare" "^1.4.0" + "optionator" "^0.9.1" + "regexpp" "^3.2.0" + "strip-ansi" "^6.0.1" + "strip-json-comments" "^3.1.0" + "text-table" "^0.2.0" + +"espree@^9.4.0": + "integrity" "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==" + "resolved" "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz" + "version" "9.4.1" + dependencies: + "acorn" "^8.8.0" + "acorn-jsx" "^5.3.2" + "eslint-visitor-keys" "^3.3.0" + +"esprima@^4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esprima@~4.0.0": + "integrity" "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + "resolved" "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz" + "version" "4.0.1" + +"esquery@^1.4.0": + "integrity" "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==" + "resolved" "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "estraverse" "^5.1.0" + +"esrecurse@^4.3.0": + "integrity" "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==" + "resolved" "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz" + "version" "4.3.0" + dependencies: + "estraverse" "^5.2.0" + +"estraverse@^4.1.1": + "integrity" "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz" + "version" "4.3.0" + +"estraverse@^5.1.0", "estraverse@^5.2.0": + "integrity" "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==" + "resolved" "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz" + "version" "5.2.0" + +"esutils@^2.0.2": + "integrity" "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + "resolved" "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz" + "version" "2.0.3" + +"events-to-array@^1.0.1": + "integrity" "sha1-LUH1Y+H+QA7Uli/hpNXGp1Od9/Y=" + "resolved" "https://registry.npmjs.org/events-to-array/-/events-to-array-1.1.2.tgz" + "version" "1.1.2" + +"fast-deep-equal@^3.1.1", "fast-deep-equal@^3.1.3": + "integrity" "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + "resolved" "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz" + "version" "3.1.3" + +"fast-diff@^1.1.2": + "integrity" "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==" + "resolved" "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz" + "version" "1.2.0" + +"fast-glob@^3.1.1": + "integrity" "sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==" + "resolved" "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.7.tgz" + "version" "3.2.7" dependencies: "@nodelib/fs.stat" "^2.0.2" "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fast-json-stable-stringify@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" - integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + "glob-parent" "^5.1.2" + "merge2" "^1.3.0" + "micromatch" "^4.0.4" + +"fast-json-stable-stringify@^2.0.0": + "integrity" "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + "resolved" "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz" + "version" "2.1.0" -fast-levenshtein@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" - integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +"fast-levenshtein@^2.0.6": + "integrity" "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + "resolved" "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz" + "version" "2.0.6" -fastq@^1.6.0: - version "1.11.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.11.1.tgz#5d8175aae17db61947f8b162cfc7f63264d22807" - integrity sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw== +"fastq@^1.6.0": + "integrity" "sha512-HOnr8Mc60eNYl1gzwp6r5RoUyAn5/glBolUzP/Ez6IFVPMPirxn/9phgL6zhOtaTy7ISwPvQ+wT+hfcRZh/bzw==" + "resolved" "https://registry.npmjs.org/fastq/-/fastq-1.11.1.tgz" + "version" "1.11.1" dependencies: - reusify "^1.0.4" - -fetch-blob@^3.1.2, fetch-blob@^3.1.4: - version "3.2.0" - resolved "https://registry.yarnpkg.com/fetch-blob/-/fetch-blob-3.2.0.tgz#f09b8d4bbd45adc6f0c20b7e787e793e309dcce9" - integrity sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ== - dependencies: - node-domexception "^1.0.0" - web-streams-polyfill "^3.0.3" - -file-entry-cache@^6.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" - integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== - dependencies: - flat-cache "^3.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - -find-cache-dir@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.0" - -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.0.0" - path-exists "^4.0.0" - -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - -findit@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findit/-/findit-2.0.0.tgz#6509f0126af4c178551cfa99394e032e13a4d56e" - integrity sha1-ZQnwEmr0wXhVHPqZOU4DLhOk1W4= - -flat-cache@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" - integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== - dependencies: - flatted "^3.1.0" - rimraf "^3.0.2" - -flatted@^3.1.0: - version "3.2.5" - resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.2.5.tgz#76c8584f4fc843db64702a6bd04ab7a8bd666da3" - integrity sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg== - -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - -formdata-polyfill@^4.0.10: - version "4.0.10" - resolved "https://registry.yarnpkg.com/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz#24807c31c9d402e002ab3d8c720144ceb8848423" - integrity sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g== - dependencies: - fetch-blob "^3.1.2" - -from2@^2.3.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/from2/-/from2-2.3.0.tgz#8bfb5502bde4a4d36cfdeea007fcca21d7e382af" - integrity sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8= - dependencies: - inherits "^2.0.1" - readable-stream "^2.0.0" - -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - -fs-exists-cached@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz#cf25554ca050dc49ae6656b41de42258989dcbce" - integrity sha1-zyVVTKBQ3EmuZla0HeQiWJidy84= - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -fsevents@~2.3.2: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== - -function-bind@^1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" - integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== - -function-loop@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/function-loop/-/function-loop-2.0.1.tgz#799c56ced01698cf12a1b80e4802e9dafc2ebada" - integrity sha512-ktIR+O6i/4h+j/ZhZJNdzeI4i9lEPeEK6UPR2EVyTVBqOwcU3Za9xYKLH64ZR9HmcROyRrOkizNyjjtWJzDDkQ== - -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - -get-caller-file@^2.0.1: - version "2.0.5" - resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" - integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== - -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - -glob-parent@^5.1.2, glob-parent@~5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -glob-parent@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" - integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== - dependencies: - is-glob "^4.0.3" - -glob@^7.0.5, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4, glob@^7.1.6, glob@^7.2.3: - version "7.2.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" - integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.1.1" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^9.2.0: - version "9.2.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-9.2.1.tgz#f47e34e1119e7d4f93a546e75851ba1f1e68de50" - integrity sha512-Pxxgq3W0HyA3XUvSXcFhRSs+43Jsx0ddxcFrbjxNGkL2Ak5BAUBxLqI5G6ADDeCHLfzzXFhe0b1yYcctGmytMA== - dependencies: - fs.realpath "^1.0.0" - minimatch "^7.4.1" - minipass "^4.2.4" - path-scurry "^1.6.1" - -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - -globals@^13.19.0: - version "13.19.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.19.0.tgz#7a42de8e6ad4f7242fbcca27ea5b23aca367b5c8" - integrity sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ== - dependencies: - type-fest "^0.20.2" - -globby@^11.0.1: - version "11.0.4" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.4.tgz#2cbaff77c2f2a62e71e9b2813a67b97a3a3001a5" - integrity sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.1.1" - ignore "^5.1.4" - merge2 "^1.3.0" - slash "^3.0.0" - -graceful-fs@^4.1.15, graceful-fs@^4.1.2: - version "4.2.8" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.8.tgz#e412b8d33f5e006593cbd3cee6df9f2cebbe802a" - integrity sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg== - -graceful-fs@^4.1.9: - version "4.2.10" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c" - integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA== - -grapheme-splitter@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz#9cf3a665c6247479896834af35cf1dbb4400767e" - integrity sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ== - -hard-rejection@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/hard-rejection/-/hard-rejection-2.1.0.tgz#1c6eda5c1685c63942766d79bb40ae773cecd883" - integrity sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA== - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-flag@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" - integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== - -has@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" - integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== - dependencies: - function-bind "^1.1.1" - -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - -hosted-git-info@^2.1.4: - version "2.8.9" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" - integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== - -hosted-git-info@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-4.1.0.tgz#827b82867e9ff1c8d0c4d9d53880397d2c86d224" - integrity sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA== - dependencies: - lru-cache "^6.0.0" - -hpagent@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/hpagent/-/hpagent-1.2.0.tgz#0ae417895430eb3770c03443456b8d90ca464903" - integrity sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA== - -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - -ieee754@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" - integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== - -ignore@^5.1.4, ignore@^5.2.0: - version "5.2.4" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" - integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== - -import-fresh@^3.0.0, import-fresh@^3.2.1: - version "3.3.0" - resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" - integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== - dependencies: - parent-module "^1.0.0" - resolve-from "^4.0.0" - -imurmurhash@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" - integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= - -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: - version "2.0.4" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" - integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== - -ink@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ink/-/ink-3.2.0.tgz#434793630dc57d611c8fe8fffa1db6b56f1a16bb" - integrity sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg== - dependencies: - ansi-escapes "^4.2.1" - auto-bind "4.0.0" - chalk "^4.1.0" - cli-boxes "^2.2.0" - cli-cursor "^3.1.0" - cli-truncate "^2.1.0" - code-excerpt "^3.0.0" - indent-string "^4.0.0" - is-ci "^2.0.0" - lodash "^4.17.20" - patch-console "^1.0.0" - react-devtools-core "^4.19.1" - react-reconciler "^0.26.2" - scheduler "^0.20.2" - signal-exit "^3.0.2" - slice-ansi "^3.0.0" - stack-utils "^2.0.2" - string-width "^4.2.2" - type-fest "^0.12.0" - widest-line "^3.1.0" - wrap-ansi "^6.2.0" - ws "^7.5.5" - yoga-layout-prebuilt "^1.9.6" - -into-stream@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/into-stream/-/into-stream-6.0.0.tgz#4bfc1244c0128224e18b8870e85b2de8e66c6702" - integrity sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA== - dependencies: - from2 "^2.3.0" - p-is-promise "^3.0.0" - -irregular-plurals@^3.2.0: - version "3.3.0" - resolved "https://registry.yarnpkg.com/irregular-plurals/-/irregular-plurals-3.3.0.tgz#67d0715d4361a60d9fd9ee80af3881c631a31ee2" - integrity sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g== - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-binary-path@~2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" - integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== - dependencies: - binary-extensions "^2.0.0" - -is-ci@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" - integrity sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w== - dependencies: - ci-info "^2.0.0" - -is-core-module@^2.2.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.5.0.tgz#f754843617c70bfd29b7bd87327400cda5c18491" - integrity sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg== - dependencies: - has "^1.0.3" - -is-core-module@^2.5.0: - version "2.10.0" - resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed" - integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg== - dependencies: - has "^1.0.3" - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-fullwidth-code-point@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" - integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== - -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-interactive@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-2.0.0.tgz#40c57614593826da1100ade6059778d597f16e90" - integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ== - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -is-path-inside@^3.0.3: - version "3.0.3" - resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" - integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== - -is-plain-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e" - integrity sha1-caUMhCnfync8kqOQpKA7OfzVHT4= - -is-stream@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" - integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== - -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - -is-unicode-supported@^1.1.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz#d824984b616c292a2e198207d4a609983842f714" - integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ== - -is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@~1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -istanbul-lib-coverage@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-coverage@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz#189e7909d0a39fa5a3dfad5b03f71947770191d3" - integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw== - -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" - -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + "reusify" "^1.0.4" + +"fetch-blob@^3.1.2", "fetch-blob@^3.1.4": + "integrity" "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==" + "resolved" "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "node-domexception" "^1.0.0" + "web-streams-polyfill" "^3.0.3" + +"file-entry-cache@^6.0.1": + "integrity" "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==" + "resolved" "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "flat-cache" "^3.0.4" + +"fill-range@^7.0.1": + "integrity" "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==" + "resolved" "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "to-regex-range" "^5.0.1" + +"find-cache-dir@^3.2.0": + "integrity" "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==" + "resolved" "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz" + "version" "3.3.1" + dependencies: + "commondir" "^1.0.1" + "make-dir" "^3.0.2" + "pkg-dir" "^4.1.0" + +"find-up@^4.0.0", "find-up@^4.1.0": + "integrity" "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "locate-path" "^5.0.0" + "path-exists" "^4.0.0" + +"find-up@^5.0.0": + "integrity" "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==" + "resolved" "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "locate-path" "^6.0.0" + "path-exists" "^4.0.0" + +"findit@^2.0.0": + "integrity" "sha1-ZQnwEmr0wXhVHPqZOU4DLhOk1W4=" + "resolved" "https://registry.npmjs.org/findit/-/findit-2.0.0.tgz" + "version" "2.0.0" + +"flat-cache@^3.0.4": + "integrity" "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==" + "resolved" "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "flatted" "^3.1.0" + "rimraf" "^3.0.2" + +"flatted@^3.1.0": + "integrity" "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==" + "resolved" "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz" + "version" "3.2.5" + +"foreground-child@^2.0.0": + "integrity" "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==" + "resolved" "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "cross-spawn" "^7.0.0" + "signal-exit" "^3.0.2" + +"formdata-polyfill@^4.0.10": + "integrity" "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==" + "resolved" "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz" + "version" "4.0.10" + dependencies: + "fetch-blob" "^3.1.2" + +"from2@^2.3.0": + "integrity" "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=" + "resolved" "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "inherits" "^2.0.1" + "readable-stream" "^2.0.0" + +"fromentries@^1.2.0": + "integrity" "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==" + "resolved" "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz" + "version" "1.3.2" + +"fs-exists-cached@^1.0.0": + "integrity" "sha1-zyVVTKBQ3EmuZla0HeQiWJidy84=" + "resolved" "https://registry.npmjs.org/fs-exists-cached/-/fs-exists-cached-1.0.0.tgz" + "version" "1.0.0" + +"fs.realpath@^1.0.0": + "integrity" "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "resolved" "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz" + "version" "1.0.0" + +"fsevents@~2.3.2": + "integrity" "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==" + "resolved" "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz" + "version" "2.3.2" + +"function-bind@^1.1.1": + "integrity" "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "resolved" "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz" + "version" "1.1.1" + +"function-loop@^2.0.1": + "integrity" "sha512-ktIR+O6i/4h+j/ZhZJNdzeI4i9lEPeEK6UPR2EVyTVBqOwcU3Za9xYKLH64ZR9HmcROyRrOkizNyjjtWJzDDkQ==" + "resolved" "https://registry.npmjs.org/function-loop/-/function-loop-2.0.1.tgz" + "version" "2.0.1" + +"gensync@^1.0.0-beta.2": + "integrity" "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==" + "resolved" "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz" + "version" "1.0.0-beta.2" + +"get-caller-file@^2.0.1": + "integrity" "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + "resolved" "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz" + "version" "2.0.5" + +"get-package-type@^0.1.0": + "integrity" "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==" + "resolved" "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz" + "version" "0.1.0" + +"glob-parent@^5.1.2", "glob-parent@~5.1.2": + "integrity" "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "is-glob" "^4.0.1" + +"glob-parent@^6.0.2": + "integrity" "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==" + "resolved" "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz" + "version" "6.0.2" + dependencies: + "is-glob" "^4.0.3" + +"glob@^7.0.5", "glob@^7.1.1", "glob@^7.1.3", "glob@^7.1.4", "glob@^7.1.6", "glob@^7.2.3": + "integrity" "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==" + "resolved" "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz" + "version" "7.2.3" + dependencies: + "fs.realpath" "^1.0.0" + "inflight" "^1.0.4" + "inherits" "2" + "minimatch" "^3.1.1" + "once" "^1.3.0" + "path-is-absolute" "^1.0.0" + +"glob@^9.2.0": + "integrity" "sha512-Pxxgq3W0HyA3XUvSXcFhRSs+43Jsx0ddxcFrbjxNGkL2Ak5BAUBxLqI5G6ADDeCHLfzzXFhe0b1yYcctGmytMA==" + "resolved" "https://registry.npmjs.org/glob/-/glob-9.2.1.tgz" + "version" "9.2.1" + dependencies: + "fs.realpath" "^1.0.0" + "minimatch" "^7.4.1" + "minipass" "^4.2.4" + "path-scurry" "^1.6.1" + +"globals@^11.1.0": + "integrity" "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==" + "resolved" "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz" + "version" "11.12.0" + +"globals@^13.19.0": + "integrity" "sha512-dkQ957uSRWHw7CFXLUtUHQI3g3aWApYhfNR2O6jn/907riyTYKVBmxYVROkBcY614FSSeSJh7Xm7SrUWCxvJMQ==" + "resolved" "https://registry.npmjs.org/globals/-/globals-13.19.0.tgz" + "version" "13.19.0" + dependencies: + "type-fest" "^0.20.2" + +"globby@^11.0.1": + "integrity" "sha512-9O4MVG9ioZJ08ffbcyVYyLOJLk5JQ688pJ4eMGLpdWLHq/Wr1D9BlriLQyL0E+jbkuePVZXYFj47QM/v093wHg==" + "resolved" "https://registry.npmjs.org/globby/-/globby-11.0.4.tgz" + "version" "11.0.4" + dependencies: + "array-union" "^2.1.0" + "dir-glob" "^3.0.1" + "fast-glob" "^3.1.1" + "ignore" "^5.1.4" + "merge2" "^1.3.0" + "slash" "^3.0.0" + +"graceful-fs@^4.1.15", "graceful-fs@^4.1.2": + "integrity" "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz" + "version" "4.2.8" + +"graceful-fs@^4.1.9": + "integrity" "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + "resolved" "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz" + "version" "4.2.10" + +"grapheme-splitter@^1.0.4": + "integrity" "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==" + "resolved" "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz" + "version" "1.0.4" + +"hard-rejection@^2.1.0": + "integrity" "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==" + "resolved" "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz" + "version" "2.1.0" + +"has-flag@^3.0.0": + "integrity" "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz" + "version" "3.0.0" + +"has-flag@^4.0.0": + "integrity" "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + "resolved" "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz" + "version" "4.0.0" + +"has@^1.0.3": + "integrity" "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==" + "resolved" "https://registry.npmjs.org/has/-/has-1.0.3.tgz" + "version" "1.0.3" + dependencies: + "function-bind" "^1.1.1" + +"hasha@^5.0.0": + "integrity" "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==" + "resolved" "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz" + "version" "5.2.2" + dependencies: + "is-stream" "^2.0.0" + "type-fest" "^0.8.0" + +"hosted-git-info@^2.1.4": + "integrity" "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz" + "version" "2.8.9" + +"hosted-git-info@^4.0.1": + "integrity" "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==" + "resolved" "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "lru-cache" "^6.0.0" + +"hpagent@^1.2.0": + "integrity" "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==" + "resolved" "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz" + "version" "1.2.0" + +"html-escaper@^2.0.0": + "integrity" "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==" + "resolved" "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz" + "version" "2.0.2" + +"ieee754@^1.2.1": + "integrity" "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" + "resolved" "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz" + "version" "1.2.1" + +"ignore@^5.1.4", "ignore@^5.2.0": + "integrity" "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==" + "resolved" "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz" + "version" "5.2.4" + +"import-fresh@^3.0.0", "import-fresh@^3.2.1": + "integrity" "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==" + "resolved" "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz" + "version" "3.3.0" + dependencies: + "parent-module" "^1.0.0" + "resolve-from" "^4.0.0" + +"imurmurhash@^0.1.4": + "integrity" "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + "resolved" "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz" + "version" "0.1.4" + +"indent-string@^4.0.0": + "integrity" "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + "resolved" "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz" + "version" "4.0.0" + +"inflight@^1.0.4": + "integrity" "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=" + "resolved" "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz" + "version" "1.0.6" + dependencies: + "once" "^1.3.0" + "wrappy" "1" + +"inherits@^2.0.1", "inherits@^2.0.3", "inherits@^2.0.4", "inherits@~2.0.3", "inherits@2": + "integrity" "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + "resolved" "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" + "version" "2.0.4" + +"ink@^3.2.0": + "integrity" "sha512-firNp1q3xxTzoItj/eOOSZQnYSlyrWks5llCTVX37nJ59K3eXbQ8PtzCguqo8YI19EELo5QxaKnJd4VxzhU8tg==" + "resolved" "https://registry.npmjs.org/ink/-/ink-3.2.0.tgz" + "version" "3.2.0" + dependencies: + "ansi-escapes" "^4.2.1" + "auto-bind" "4.0.0" + "chalk" "^4.1.0" + "cli-boxes" "^2.2.0" + "cli-cursor" "^3.1.0" + "cli-truncate" "^2.1.0" + "code-excerpt" "^3.0.0" + "indent-string" "^4.0.0" + "is-ci" "^2.0.0" + "lodash" "^4.17.20" + "patch-console" "^1.0.0" + "react-devtools-core" "^4.19.1" + "react-reconciler" "^0.26.2" + "scheduler" "^0.20.2" + "signal-exit" "^3.0.2" + "slice-ansi" "^3.0.0" + "stack-utils" "^2.0.2" + "string-width" "^4.2.2" + "type-fest" "^0.12.0" + "widest-line" "^3.1.0" + "wrap-ansi" "^6.2.0" + "ws" "^7.5.5" + "yoga-layout-prebuilt" "^1.9.6" + +"into-stream@^6.0.0": + "integrity" "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==" + "resolved" "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "from2" "^2.3.0" + "p-is-promise" "^3.0.0" + +"irregular-plurals@^3.2.0": + "integrity" "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==" + "resolved" "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz" + "version" "3.3.0" + +"is-arrayish@^0.2.1": + "integrity" "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" + "resolved" "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz" + "version" "0.2.1" + +"is-binary-path@~2.1.0": + "integrity" "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==" + "resolved" "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz" + "version" "2.1.0" + dependencies: + "binary-extensions" "^2.0.0" + +"is-ci@^2.0.0": + "integrity" "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==" + "resolved" "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "ci-info" "^2.0.0" + +"is-core-module@^2.2.0": + "integrity" "sha512-TXCMSDsEHMEEZ6eCA8rwRDbLu55MRGmrctljsBX/2v1d9/GzqHOxW5c5oPSgrUt2vBFXebu9rGqckXGPWOlYpg==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "has" "^1.0.3" + +"is-core-module@^2.5.0": + "integrity" "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==" + "resolved" "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "has" "^1.0.3" + +"is-extglob@^2.1.1": + "integrity" "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + "resolved" "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz" + "version" "2.1.1" + +"is-fullwidth-code-point@^3.0.0": + "integrity" "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + "resolved" "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz" + "version" "3.0.0" + +"is-glob@^4.0.0", "is-glob@^4.0.1", "is-glob@^4.0.3", "is-glob@~4.0.1": + "integrity" "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==" + "resolved" "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "is-extglob" "^2.1.1" + +"is-interactive@^2.0.0": + "integrity" "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==" + "resolved" "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz" + "version" "2.0.0" + +"is-number@^7.0.0": + "integrity" "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + "resolved" "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz" + "version" "7.0.0" + +"is-path-inside@^3.0.3": + "integrity" "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + "resolved" "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz" + "version" "3.0.3" + +"is-plain-obj@^1.1.0": + "integrity" "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=" + "resolved" "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz" + "version" "1.1.0" + +"is-stream@^2.0.0": + "integrity" "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + "resolved" "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz" + "version" "2.0.1" + +"is-typedarray@^1.0.0": + "integrity" "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + "resolved" "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz" + "version" "1.0.0" + +"is-unicode-supported@^0.1.0": + "integrity" "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz" + "version" "0.1.0" + +"is-unicode-supported@^1.1.0": + "integrity" "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==" + "resolved" "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz" + "version" "1.3.0" + +"is-windows@^1.0.2": + "integrity" "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + "resolved" "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz" + "version" "1.0.2" + +"isarray@~1.0.0": + "integrity" "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + "resolved" "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz" + "version" "1.0.0" + +"isexe@^2.0.0": + "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" + +"istanbul-lib-coverage@^3.0.0": + "integrity" "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==" + "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz" + "version" "3.0.0" + +"istanbul-lib-coverage@^3.2.0": + "integrity" "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz" + "version" "3.2.0" + +"istanbul-lib-hook@^3.0.0": + "integrity" "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==" + "resolved" "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "append-transform" "^2.0.0" + +"istanbul-lib-instrument@^4.0.0": + "integrity" "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==" + "resolved" "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz" + "version" "4.0.3" dependencies: "@babel/core" "^7.7.5" "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-processinfo@^2.0.2, istanbul-lib-processinfo@^2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz#366d454cd0dcb7eb6e0e419378e60072c8626169" - integrity sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.3" - istanbul-lib-coverage "^3.2.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^8.3.2" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - -jackspeak@^1.4.2: - version "1.4.2" - resolved "https://registry.yarnpkg.com/jackspeak/-/jackspeak-1.4.2.tgz#30ad5e4b7b36f9f3ae580e23272b1a386b4f6b93" - integrity sha512-GHeGTmnuaHnvS+ZctRB01bfxARuu9wW83ENbuiweu07SFcVlZrJpcshSre/keGT7YGBhLHg/+rXCNSrsEHKU4Q== - dependencies: - cliui "^7.0.4" - -js-sdsl@^4.1.4: - version "4.2.0" - resolved "https://registry.yarnpkg.com/js-sdsl/-/js-sdsl-4.2.0.tgz#278e98b7bea589b8baaf048c20aeb19eb7ad09d0" - integrity sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ== - -"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" - integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== - -js-yaml@3.14.0: - version "3.14.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" - integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^3.13.1: - version "3.14.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" - integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -js-yaml@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" - integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== - dependencies: - argparse "^2.0.1" - -js2xmlparser@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/js2xmlparser/-/js2xmlparser-4.0.2.tgz#2a1fdf01e90585ef2ae872a01bc169c6a8d5e60a" - integrity sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA== - dependencies: - xmlcreate "^2.0.4" - -jsdoc@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/jsdoc/-/jsdoc-4.0.0.tgz#9569f79ea5b14ba4bc726da1a48fe6a241ad7893" - integrity sha512-tzTgkklbWKrlaQL2+e3NNgLcZu3NaK2vsHRx7tyHQ+H5jcB9Gx0txSd2eJWlMC/xU1+7LQu4s58Ry0RkuaEQVg== + "istanbul-lib-coverage" "^3.0.0" + "semver" "^6.3.0" + +"istanbul-lib-processinfo@^2.0.2", "istanbul-lib-processinfo@^2.0.3": + "integrity" "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==" + "resolved" "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz" + "version" "2.0.3" + dependencies: + "archy" "^1.0.0" + "cross-spawn" "^7.0.3" + "istanbul-lib-coverage" "^3.2.0" + "p-map" "^3.0.0" + "rimraf" "^3.0.0" + "uuid" "^8.3.2" + +"istanbul-lib-report@^3.0.0": + "integrity" "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==" + "resolved" "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "istanbul-lib-coverage" "^3.0.0" + "make-dir" "^3.0.0" + "supports-color" "^7.1.0" + +"istanbul-lib-source-maps@^4.0.0": + "integrity" "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==" + "resolved" "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "debug" "^4.1.1" + "istanbul-lib-coverage" "^3.0.0" + "source-map" "^0.6.1" + +"istanbul-reports@^3.0.2": + "integrity" "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==" + "resolved" "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "html-escaper" "^2.0.0" + "istanbul-lib-report" "^3.0.0" + +"jackspeak@^1.4.2": + "integrity" "sha512-GHeGTmnuaHnvS+ZctRB01bfxARuu9wW83ENbuiweu07SFcVlZrJpcshSre/keGT7YGBhLHg/+rXCNSrsEHKU4Q==" + "resolved" "https://registry.npmjs.org/jackspeak/-/jackspeak-1.4.2.tgz" + "version" "1.4.2" + dependencies: + "cliui" "^7.0.4" + +"js-sdsl@^4.1.4": + "integrity" "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==" + "resolved" "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz" + "version" "4.2.0" + +"js-tokens@^3.0.0 || ^4.0.0", "js-tokens@^4.0.0": + "integrity" "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + "resolved" "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz" + "version" "4.0.0" + +"js-yaml@^3.13.1": + "integrity" "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz" + "version" "3.14.1" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js-yaml@^4.1.0": + "integrity" "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "argparse" "^2.0.1" + +"js-yaml@3.14.0": + "integrity" "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==" + "resolved" "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz" + "version" "3.14.0" + dependencies: + "argparse" "^1.0.7" + "esprima" "^4.0.0" + +"js2xmlparser@^4.0.2": + "integrity" "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==" + "resolved" "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz" + "version" "4.0.2" + dependencies: + "xmlcreate" "^2.0.4" + +"jsdoc@^4.0.0": + "integrity" "sha512-tzTgkklbWKrlaQL2+e3NNgLcZu3NaK2vsHRx7tyHQ+H5jcB9Gx0txSd2eJWlMC/xU1+7LQu4s58Ry0RkuaEQVg==" + "resolved" "https://registry.npmjs.org/jsdoc/-/jsdoc-4.0.0.tgz" + "version" "4.0.0" dependencies: "@babel/parser" "^7.9.4" "@jsdoc/salty" "^0.2.1" "@types/markdown-it" "^12.2.3" - bluebird "^3.7.2" - catharsis "^0.9.0" - escape-string-regexp "^2.0.0" - js2xmlparser "^4.0.2" - klaw "^3.0.0" - markdown-it "^12.3.2" - markdown-it-anchor "^8.4.1" - marked "^4.0.10" - mkdirp "^1.0.4" - requizzle "^0.2.3" - strip-json-comments "^3.1.0" - underscore "~1.13.2" - -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - -json-parse-even-better-errors@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" - integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== - -json-schema-traverse@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" - integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== - -json-stable-stringify-without-jsonify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" - integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= - -json5@^2.1.2: - version "2.2.3" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" - integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== - -kind-of@^6.0.3: - version "6.0.3" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" - integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== - -klaw@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/klaw/-/klaw-3.0.0.tgz#b11bec9cf2492f06756d6e809ab73a2910259146" - integrity sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g== - dependencies: - graceful-fs "^4.1.9" - -leven@2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" - integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= - -levn@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" - integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== - dependencies: - prelude-ls "^1.2.1" - type-check "~0.4.0" - -libtap@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/libtap/-/libtap-1.4.0.tgz#5c6dea65d2d95f2c855d819a457e1fa7d2af5bf0" - integrity sha512-STLFynswQ2A6W14JkabgGetBNk6INL1REgJ9UeNKw5llXroC2cGLgKTqavv0sl8OLVztLLipVKMcQ7yeUcqpmg== - dependencies: - async-hook-domain "^2.0.4" - bind-obj-methods "^3.0.0" - diff "^4.0.2" - function-loop "^2.0.1" - minipass "^3.1.5" - own-or "^1.0.0" - own-or-env "^1.0.2" - signal-exit "^3.0.4" - stack-utils "^2.0.4" - tap-parser "^11.0.0" - tap-yaml "^1.0.0" - tcompare "^5.0.6" - trivial-deferred "^1.0.1" - -license-checker@^25.0.1: - version "25.0.1" - resolved "https://registry.yarnpkg.com/license-checker/-/license-checker-25.0.1.tgz#4d14504478a5240a857bb3c21cd0491a00d761fa" - integrity sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g== - dependencies: - chalk "^2.4.1" - debug "^3.1.0" - mkdirp "^0.5.1" - nopt "^4.0.1" - read-installed "~4.0.3" - semver "^5.5.0" - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - spdx-satisfies "^4.0.0" - treeify "^1.1.0" - -lines-and-columns@^1.1.6: - version "1.1.6" - resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" - integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= - -linkify-it@^3.0.1: - version "3.0.3" - resolved "https://registry.yarnpkg.com/linkify-it/-/linkify-it-3.0.3.tgz#a98baf44ce45a550efb4d49c769d07524cc2fa2e" - integrity sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ== - dependencies: - uc.micro "^1.0.1" - -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= - -lodash.merge@^4.6.2: - version "4.6.2" - resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" - integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== - -lodash@^4.17.15, lodash@^4.17.20, lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - -log-symbols@^4.0.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - -log-symbols@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-5.1.0.tgz#a20e3b9a5f53fac6aeb8e2bb22c07cf2c8f16d93" - integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA== - dependencies: - chalk "^5.0.0" - is-unicode-supported "^1.1.0" - -loose-envify@^1.1.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" - integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== - dependencies: - js-tokens "^3.0.0 || ^4.0.0" - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - -lru-cache@^7.14.1: - version "7.18.3" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" - integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== - -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.0.0" - -map-obj@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-obj@^4.0.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.2.1.tgz#e4ea399dbc979ae735c83c863dd31bdf364277b7" - integrity sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ== - -markdown-it-anchor@^8.4.1: - version "8.6.6" - resolved "https://registry.yarnpkg.com/markdown-it-anchor/-/markdown-it-anchor-8.6.6.tgz#4a12e358c9c2167ee28cb7a5f10e29d6f1ffd7ca" - integrity sha512-jRW30YGywD2ESXDc+l17AiritL0uVaSnWsb26f+68qaW9zgbIIr1f4v2Nsvc0+s0Z2N3uX6t/yAw7BwCQ1wMsA== - -markdown-it@^12.3.2: - version "12.3.2" - resolved "https://registry.yarnpkg.com/markdown-it/-/markdown-it-12.3.2.tgz#bf92ac92283fe983fe4de8ff8abfb5ad72cd0c90" - integrity sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg== - dependencies: - argparse "^2.0.1" - entities "~2.1.0" - linkify-it "^3.0.1" - mdurl "^1.0.1" - uc.micro "^1.0.5" - -marked@^4.0.10: - version "4.2.4" - resolved "https://registry.yarnpkg.com/marked/-/marked-4.2.4.tgz#5a4ce6c7a1ae0c952601fce46376ee4cf1797e1c" - integrity sha512-Wcc9ikX7Q5E4BYDPvh1C6QNSxrjC9tBgz+A/vAhp59KXUgachw++uMvMKiSW8oA85nopmPZcEvBoex/YLMsiyA== - -mdurl@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/mdurl/-/mdurl-1.0.1.tgz#fe85b2ec75a59037f2adfec100fd6c601761152e" - integrity sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g== - -meow@^9.0.0: - version "9.0.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-9.0.0.tgz#cd9510bc5cac9dee7d03c73ee1f9ad959f4ea364" - integrity sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ== + "bluebird" "^3.7.2" + "catharsis" "^0.9.0" + "escape-string-regexp" "^2.0.0" + "js2xmlparser" "^4.0.2" + "klaw" "^3.0.0" + "markdown-it" "^12.3.2" + "markdown-it-anchor" "^8.4.1" + "marked" "^4.0.10" + "mkdirp" "^1.0.4" + "requizzle" "^0.2.3" + "strip-json-comments" "^3.1.0" + "underscore" "~1.13.2" + +"jsesc@^2.5.1": + "integrity" "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==" + "resolved" "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz" + "version" "2.5.2" + +"json-parse-even-better-errors@^2.3.0": + "integrity" "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "resolved" "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz" + "version" "2.3.1" + +"json-schema-traverse@^0.4.1": + "integrity" "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + "resolved" "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz" + "version" "0.4.1" + +"json-stable-stringify-without-jsonify@^1.0.1": + "integrity" "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=" + "resolved" "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" + "version" "1.0.1" + +"json5@^2.1.2": + "integrity" "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" + "resolved" "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz" + "version" "2.2.3" + +"kind-of@^6.0.3": + "integrity" "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + "resolved" "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz" + "version" "6.0.3" + +"klaw@^3.0.0": + "integrity" "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==" + "resolved" "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "graceful-fs" "^4.1.9" + +"leven@2.1.0": + "integrity" "sha1-wuep93IJTe6dNCAq6KzORoeHVYA=" + "resolved" "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz" + "version" "2.1.0" + +"levn@^0.4.1": + "integrity" "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==" + "resolved" "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz" + "version" "0.4.1" + dependencies: + "prelude-ls" "^1.2.1" + "type-check" "~0.4.0" + +"libtap@^1.4.0": + "integrity" "sha512-STLFynswQ2A6W14JkabgGetBNk6INL1REgJ9UeNKw5llXroC2cGLgKTqavv0sl8OLVztLLipVKMcQ7yeUcqpmg==" + "resolved" "https://registry.npmjs.org/libtap/-/libtap-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "async-hook-domain" "^2.0.4" + "bind-obj-methods" "^3.0.0" + "diff" "^4.0.2" + "function-loop" "^2.0.1" + "minipass" "^3.1.5" + "own-or" "^1.0.0" + "own-or-env" "^1.0.2" + "signal-exit" "^3.0.4" + "stack-utils" "^2.0.4" + "tap-parser" "^11.0.0" + "tap-yaml" "^1.0.0" + "tcompare" "^5.0.6" + "trivial-deferred" "^1.0.1" + +"license-checker@^25.0.1": + "integrity" "sha512-mET5AIwl7MR2IAKYYoVBBpV0OnkKQ1xGj2IMMeEFIs42QAkEVjRtFZGWmQ28WeU7MP779iAgOaOy93Mn44mn6g==" + "resolved" "https://registry.npmjs.org/license-checker/-/license-checker-25.0.1.tgz" + "version" "25.0.1" + dependencies: + "chalk" "^2.4.1" + "debug" "^3.1.0" + "mkdirp" "^0.5.1" + "nopt" "^4.0.1" + "read-installed" "~4.0.3" + "semver" "^5.5.0" + "spdx-correct" "^3.0.0" + "spdx-expression-parse" "^3.0.0" + "spdx-satisfies" "^4.0.0" + "treeify" "^1.1.0" + +"lines-and-columns@^1.1.6": + "integrity" "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=" + "resolved" "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz" + "version" "1.1.6" + +"linkify-it@^3.0.1": + "integrity" "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==" + "resolved" "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "uc.micro" "^1.0.1" + +"locate-path@^5.0.0": + "integrity" "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-locate" "^4.1.0" + +"locate-path@^6.0.0": + "integrity" "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==" + "resolved" "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "p-locate" "^5.0.0" + +"lodash.flattendeep@^4.4.0": + "integrity" "sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI=" + "resolved" "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz" + "version" "4.4.0" + +"lodash.merge@^4.6.2": + "integrity" "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + "resolved" "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz" + "version" "4.6.2" + +"lodash@^4.17.15", "lodash@^4.17.21": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"lodash@^4.17.20": + "integrity" "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + "resolved" "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz" + "version" "4.17.21" + +"log-symbols@^4.0.0": + "integrity" "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "chalk" "^4.1.0" + "is-unicode-supported" "^0.1.0" + +"log-symbols@^5.1.0": + "integrity" "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==" + "resolved" "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz" + "version" "5.1.0" + dependencies: + "chalk" "^5.0.0" + "is-unicode-supported" "^1.1.0" + +"loose-envify@^1.1.0": + "integrity" "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==" + "resolved" "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "js-tokens" "^3.0.0 || ^4.0.0" + +"lru-cache@^6.0.0": + "integrity" "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz" + "version" "6.0.0" + dependencies: + "yallist" "^4.0.0" + +"lru-cache@^7.14.1": + "integrity" "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==" + "resolved" "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz" + "version" "7.18.3" + +"make-dir@^3.0.0", "make-dir@^3.0.2": + "integrity" "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==" + "resolved" "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "semver" "^6.0.0" + +"map-obj@^1.0.0": + "integrity" "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz" + "version" "1.0.1" + +"map-obj@^4.0.0": + "integrity" "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==" + "resolved" "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz" + "version" "4.2.1" + +"markdown-it-anchor@^8.4.1": + "integrity" "sha512-jRW30YGywD2ESXDc+l17AiritL0uVaSnWsb26f+68qaW9zgbIIr1f4v2Nsvc0+s0Z2N3uX6t/yAw7BwCQ1wMsA==" + "resolved" "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.6.tgz" + "version" "8.6.6" + +"markdown-it@*", "markdown-it@^12.3.2": + "integrity" "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==" + "resolved" "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz" + "version" "12.3.2" + dependencies: + "argparse" "^2.0.1" + "entities" "~2.1.0" + "linkify-it" "^3.0.1" + "mdurl" "^1.0.1" + "uc.micro" "^1.0.5" + +"marked@^4.0.10": + "integrity" "sha512-Wcc9ikX7Q5E4BYDPvh1C6QNSxrjC9tBgz+A/vAhp59KXUgachw++uMvMKiSW8oA85nopmPZcEvBoex/YLMsiyA==" + "resolved" "https://registry.npmjs.org/marked/-/marked-4.2.4.tgz" + "version" "4.2.4" + +"mdurl@^1.0.1": + "integrity" "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==" + "resolved" "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz" + "version" "1.0.1" + +"meow@^9.0.0": + "integrity" "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==" + "resolved" "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz" + "version" "9.0.0" dependencies: "@types/minimist" "^1.2.0" - camelcase-keys "^6.2.2" - decamelize "^1.2.0" - decamelize-keys "^1.1.0" - hard-rejection "^2.1.0" - minimist-options "4.1.0" - normalize-package-data "^3.0.0" - read-pkg-up "^7.0.1" - redent "^3.0.0" - trim-newlines "^3.0.0" - type-fest "^0.18.0" - yargs-parser "^20.2.3" - -merge2@^1.3.0: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.4.tgz#896d519dfe9db25fce94ceb7a500919bf881ebf9" - integrity sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg== - dependencies: - braces "^3.0.1" - picomatch "^2.2.3" - -mimic-fn@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" - integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== - -min-indent@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/min-indent/-/min-indent-1.0.1.tgz#a63f681673b30571fbe8bc25686ae746eefa9869" - integrity sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg== - -minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" - integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== - dependencies: - brace-expansion "^1.1.7" - -minimatch@^7.4.1: - version "7.4.2" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-7.4.2.tgz#157e847d79ca671054253b840656720cb733f10f" - integrity sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA== - dependencies: - brace-expansion "^2.0.1" - -minimist-options@4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/minimist-options/-/minimist-options-4.1.0.tgz#c0655713c53a8a2ebd77ffa247d342c40f010619" - integrity sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A== - dependencies: - arrify "^1.0.1" - is-plain-obj "^1.1.0" - kind-of "^6.0.3" - -minimist@^1.2.5: - version "1.2.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" - integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== - -minipass@^3.1.5, minipass@^3.1.6, minipass@^3.3.4: - version "3.3.6" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" - integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== - dependencies: - yallist "^4.0.0" - -minipass@^4.0.2, minipass@^4.2.4: - version "4.2.5" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-4.2.5.tgz#9e0e5256f1e3513f8c34691dd68549e85b2c8ceb" - integrity sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q== - -mkdirp@^0.5.1: - version "0.5.5" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" - integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== - dependencies: - minimist "^1.2.5" - -mkdirp@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" - integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== - -mri@1.1.4: - version "1.1.4" - resolved "https://registry.yarnpkg.com/mri/-/mri-1.1.4.tgz#7cb1dd1b9b40905f1fac053abe25b6720f44744a" - integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w== - -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - -ms@^2.1.1, ms@^2.1.2, ms@^2.1.3: - version "2.1.3" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" - integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== - -natural-compare@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" - integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= - -node-domexception@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/node-domexception/-/node-domexception-1.0.0.tgz#6888db46a1f71c0b76b3f7555016b63fe64766e5" - integrity sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ== - -node-fetch@^3.2.10: - version "3.2.10" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-3.2.10.tgz#e8347f94b54ae18b57c9c049ef641cef398a85c8" - integrity sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA== - dependencies: - data-uri-to-buffer "^4.0.0" - fetch-blob "^3.1.4" - formdata-polyfill "^4.0.10" - -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" - -node-releases@^1.1.73: - version "1.1.74" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.74.tgz#e5866488080ebaa70a93b91144ccde06f3c3463e" - integrity sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw== - -nopt@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.3.tgz#a375cad9d02fd921278d954c2254d5aa57e15e48" - integrity sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg== - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.0.0, normalize-package-data@^2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -normalize-package-data@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-3.0.3.tgz#dbcc3e2da59509a0983422884cd172eefdfa525e" - integrity sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA== - dependencies: - hosted-git-info "^4.0.1" - is-core-module "^2.5.0" - semver "^7.3.4" - validate-npm-package-license "^3.0.1" - -normalize-path@^3.0.0, normalize-path@~3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" - integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== - -npm-normalize-package-bin@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== - -nyc@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== + "camelcase-keys" "^6.2.2" + "decamelize" "^1.2.0" + "decamelize-keys" "^1.1.0" + "hard-rejection" "^2.1.0" + "minimist-options" "4.1.0" + "normalize-package-data" "^3.0.0" + "read-pkg-up" "^7.0.1" + "redent" "^3.0.0" + "trim-newlines" "^3.0.0" + "type-fest" "^0.18.0" + "yargs-parser" "^20.2.3" + +"merge2@^1.3.0": + "integrity" "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + "resolved" "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz" + "version" "1.4.1" + +"micromatch@^4.0.4": + "integrity" "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==" + "resolved" "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz" + "version" "4.0.4" + dependencies: + "braces" "^3.0.1" + "picomatch" "^2.2.3" + +"mimic-fn@^2.1.0": + "integrity" "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + "resolved" "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz" + "version" "2.1.0" + +"min-indent@^1.0.0": + "integrity" "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==" + "resolved" "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz" + "version" "1.0.1" + +"minimatch@^3.0.4", "minimatch@^3.0.5", "minimatch@^3.1.1", "minimatch@^3.1.2": + "integrity" "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz" + "version" "3.1.2" + dependencies: + "brace-expansion" "^1.1.7" + +"minimatch@^7.4.1": + "integrity" "sha512-xy4q7wou3vUoC9k1xGTXc+awNdGaGVHtFUaey8tiX4H1QRc04DZ/rmDFwNm2EBsuYEhAZ6SgMmYf3InGY6OauA==" + "resolved" "https://registry.npmjs.org/minimatch/-/minimatch-7.4.2.tgz" + "version" "7.4.2" + dependencies: + "brace-expansion" "^2.0.1" + +"minimist-options@4.1.0": + "integrity" "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==" + "resolved" "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "arrify" "^1.0.1" + "is-plain-obj" "^1.1.0" + "kind-of" "^6.0.3" + +"minimist@^1.2.5": + "integrity" "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" + "resolved" "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz" + "version" "1.2.8" + +"minipass@^3.1.5", "minipass@^3.1.6": + "integrity" "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz" + "version" "3.3.6" + dependencies: + "yallist" "^4.0.0" + +"minipass@^3.3.4": + "version" "3.3.4" + dependencies: + "yallist" "^4.0.0" + +"minipass@^4.0.2": + "integrity" "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz" + "version" "4.2.5" + +"minipass@^4.2.4": + "integrity" "sha512-+yQl7SX3bIT83Lhb4BVorMAHVuqsskxRdlmO9kTpyukp8vsm2Sn/fUOV9xlnG8/a5JsypJzap21lz/y3FBMJ8Q==" + "resolved" "https://registry.npmjs.org/minipass/-/minipass-4.2.5.tgz" + "version" "4.2.5" + +"mkdirp@^0.5.1": + "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" + "version" "0.5.5" + dependencies: + "minimist" "^1.2.5" + +"mkdirp@^1.0.4": + "integrity" "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==" + "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz" + "version" "1.0.4" + +"mri@1.1.4": + "integrity" "sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==" + "resolved" "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz" + "version" "1.1.4" + +"ms@^2.1.1", "ms@^2.1.3": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" + +"ms@^2.1.2", "ms@2.1.2": + "integrity" "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz" + "version" "2.1.2" + +"natural-compare@^1.4.0": + "integrity" "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=" + "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" + "version" "1.4.0" + +"node-domexception@^1.0.0": + "integrity" "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==" + "resolved" "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz" + "version" "1.0.0" + +"node-fetch@^3.2.10": + "integrity" "sha512-MhuzNwdURnZ1Cp4XTazr69K0BTizsBroX7Zx3UgDSVcZYKF/6p0CBe4EUb/hLqmzVhl0UpYfgRljQ4yxE+iCxA==" + "resolved" "https://registry.npmjs.org/node-fetch/-/node-fetch-3.2.10.tgz" + "version" "3.2.10" + dependencies: + "data-uri-to-buffer" "^4.0.0" + "fetch-blob" "^3.1.4" + "formdata-polyfill" "^4.0.10" + +"node-preload@^0.2.1": + "integrity" "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==" + "resolved" "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz" + "version" "0.2.1" + dependencies: + "process-on-spawn" "^1.0.0" + +"node-releases@^1.1.73": + "integrity" "sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw==" + "resolved" "https://registry.npmjs.org/node-releases/-/node-releases-1.1.74.tgz" + "version" "1.1.74" + +"node-releases@^2.0.2": + "version" "2.0.2" + +"nopt@^4.0.1": + "integrity" "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==" + "resolved" "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "abbrev" "1" + "osenv" "^0.1.4" + +"normalize-package-data@^2.0.0", "normalize-package-data@^2.5.0": + "integrity" "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz" + "version" "2.5.0" + dependencies: + "hosted-git-info" "^2.1.4" + "resolve" "^1.10.0" + "semver" "2 || 3 || 4 || 5" + "validate-npm-package-license" "^3.0.1" + +"normalize-package-data@^3.0.0": + "integrity" "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==" + "resolved" "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "hosted-git-info" "^4.0.1" + "is-core-module" "^2.5.0" + "semver" "^7.3.4" + "validate-npm-package-license" "^3.0.1" + +"normalize-path@^3.0.0", "normalize-path@~3.0.0": + "integrity" "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + "resolved" "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz" + "version" "3.0.0" + +"npm-normalize-package-bin@^1.0.0": + "integrity" "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" + "resolved" "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz" + "version" "1.0.1" + +"nyc@^15.1.0": + "integrity" "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==" + "resolved" "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz" + "version" "15.1.0" dependencies: "@istanbuljs/load-nyc-config" "^1.0.0" "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" - -object-assign@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -onetime@^5.1.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" - integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== - dependencies: - mimic-fn "^2.1.0" - -opener@^1.5.1: - version "1.5.2" - resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.2.tgz#5d37e1f35077b9dcac4301372271afdeb2a13598" - integrity sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A== - -optionator@^0.9.1: - version "0.9.1" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" - integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== - dependencies: - deep-is "^0.1.3" - fast-levenshtein "^2.0.6" - levn "^0.4.1" - prelude-ls "^1.2.1" - type-check "^0.4.0" - word-wrap "^1.2.3" - -ora@^6.1.2: - version "6.1.2" - resolved "https://registry.yarnpkg.com/ora/-/ora-6.1.2.tgz#7b3c1356b42fd90fb1dad043d5dbe649388a0bf5" - integrity sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw== - dependencies: - bl "^5.0.0" - chalk "^5.0.0" - cli-cursor "^4.0.0" - cli-spinners "^2.6.1" - is-interactive "^2.0.0" - is-unicode-supported "^1.1.0" - log-symbols "^5.1.0" - strip-ansi "^7.0.1" - wcwidth "^1.0.1" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -own-or-env@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/own-or-env/-/own-or-env-1.0.2.tgz#84e78d2d5128f7ee8a59f741ad5aafb4256a7c89" - integrity sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw== - dependencies: - own-or "^1.0.0" - -own-or@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/own-or/-/own-or-1.0.0.tgz#4e877fbeda9a2ec8000fbc0bcae39645ee8bf8dc" - integrity sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw= - -p-is-promise@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-3.0.0.tgz#58e78c7dfe2e163cf2a04ff869e7c1dba64a5971" - integrity sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ== - -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.0.0" - -p-limit@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" - integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== - dependencies: - yocto-queue "^0.1.0" - -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== - dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - -parent-module@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" - integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== - dependencies: - callsites "^3.0.0" - -parse-json@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" - integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + "caching-transform" "^4.0.0" + "convert-source-map" "^1.7.0" + "decamelize" "^1.2.0" + "find-cache-dir" "^3.2.0" + "find-up" "^4.1.0" + "foreground-child" "^2.0.0" + "get-package-type" "^0.1.0" + "glob" "^7.1.6" + "istanbul-lib-coverage" "^3.0.0" + "istanbul-lib-hook" "^3.0.0" + "istanbul-lib-instrument" "^4.0.0" + "istanbul-lib-processinfo" "^2.0.2" + "istanbul-lib-report" "^3.0.0" + "istanbul-lib-source-maps" "^4.0.0" + "istanbul-reports" "^3.0.2" + "make-dir" "^3.0.0" + "node-preload" "^0.2.1" + "p-map" "^3.0.0" + "process-on-spawn" "^1.0.0" + "resolve-from" "^5.0.0" + "rimraf" "^3.0.0" + "signal-exit" "^3.0.2" + "spawn-wrap" "^2.0.0" + "test-exclude" "^6.0.0" + "yargs" "^15.0.2" + +"object-assign@^4.1.1": + "integrity" "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + "resolved" "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz" + "version" "4.1.1" + +"once@^1.3.0": + "integrity" "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=" + "resolved" "https://registry.npmjs.org/once/-/once-1.4.0.tgz" + "version" "1.4.0" + dependencies: + "wrappy" "1" + +"onetime@^5.1.0": + "integrity" "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==" + "resolved" "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz" + "version" "5.1.2" + dependencies: + "mimic-fn" "^2.1.0" + +"opener@^1.5.1": + "integrity" "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==" + "resolved" "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz" + "version" "1.5.2" + +"optionator@^0.9.1": + "integrity" "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==" + "resolved" "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz" + "version" "0.9.1" + dependencies: + "deep-is" "^0.1.3" + "fast-levenshtein" "^2.0.6" + "levn" "^0.4.1" + "prelude-ls" "^1.2.1" + "type-check" "^0.4.0" + "word-wrap" "^1.2.3" + +"ora@^6.1.2": + "integrity" "sha512-EJQ3NiP5Xo94wJXIzAyOtSb0QEIAUu7m8t6UZ9krbz0vAJqr92JpcK/lEXg91q6B9pEGqrykkd2EQplnifDSBw==" + "resolved" "https://registry.npmjs.org/ora/-/ora-6.1.2.tgz" + "version" "6.1.2" + dependencies: + "bl" "^5.0.0" + "chalk" "^5.0.0" + "cli-cursor" "^4.0.0" + "cli-spinners" "^2.6.1" + "is-interactive" "^2.0.0" + "is-unicode-supported" "^1.1.0" + "log-symbols" "^5.1.0" + "strip-ansi" "^7.0.1" + "wcwidth" "^1.0.1" + +"os-homedir@^1.0.0": + "integrity" "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" + "resolved" "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz" + "version" "1.0.2" + +"os-tmpdir@^1.0.0": + "integrity" "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" + "resolved" "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz" + "version" "1.0.2" + +"osenv@^0.1.4": + "integrity" "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==" + "resolved" "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz" + "version" "0.1.5" + dependencies: + "os-homedir" "^1.0.0" + "os-tmpdir" "^1.0.0" + +"own-or-env@^1.0.2": + "integrity" "sha512-NQ7v0fliWtK7Lkb+WdFqe6ky9XAzYmlkXthQrBbzlYbmFKoAYbDDcwmOm6q8kOuwSRXW8bdL5ORksploUJmWgw==" + "resolved" "https://registry.npmjs.org/own-or-env/-/own-or-env-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "own-or" "^1.0.0" + +"own-or@^1.0.0": + "integrity" "sha1-Tod/vtqaLsgAD7wLyuOWRe6L+Nw=" + "resolved" "https://registry.npmjs.org/own-or/-/own-or-1.0.0.tgz" + "version" "1.0.0" + +"p-is-promise@^3.0.0": + "integrity" "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==" + "resolved" "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz" + "version" "3.0.0" + +"p-limit@^2.2.0": + "integrity" "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz" + "version" "2.3.0" + dependencies: + "p-try" "^2.0.0" + +"p-limit@^3.0.2": + "integrity" "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==" + "resolved" "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "yocto-queue" "^0.1.0" + +"p-locate@^4.1.0": + "integrity" "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz" + "version" "4.1.0" + dependencies: + "p-limit" "^2.2.0" + +"p-locate@^5.0.0": + "integrity" "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==" + "resolved" "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz" + "version" "5.0.0" + dependencies: + "p-limit" "^3.0.2" + +"p-map@^3.0.0": + "integrity" "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==" + "resolved" "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "aggregate-error" "^3.0.0" + +"p-try@^2.0.0": + "integrity" "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==" + "resolved" "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz" + "version" "2.2.0" + +"package-hash@^4.0.0": + "integrity" "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==" + "resolved" "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "graceful-fs" "^4.1.15" + "hasha" "^5.0.0" + "lodash.flattendeep" "^4.4.0" + "release-zalgo" "^1.0.0" + +"parent-module@^1.0.0": + "integrity" "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==" + "resolved" "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "callsites" "^3.0.0" + +"parse-json@^5.0.0": + "integrity" "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==" + "resolved" "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz" + "version" "5.2.0" dependencies: "@babel/code-frame" "^7.0.0" - error-ex "^1.3.1" - json-parse-even-better-errors "^2.3.0" - lines-and-columns "^1.1.6" - -patch-console@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/patch-console/-/patch-console-1.0.0.tgz#19b9f028713feb8a3c023702a8cc8cb9f7466f9d" - integrity sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA== - -path-exists@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" - integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== - -path-is-absolute@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-key@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" - integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== - -path-parse@^1.0.6: - version "1.0.7" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" - integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== - -path-scurry@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/path-scurry/-/path-scurry-1.6.1.tgz#dab45f7bb1d3f45a0e271ab258999f4ab7e23132" - integrity sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA== - dependencies: - lru-cache "^7.14.1" - minipass "^4.0.2" - -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - -picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3: - version "2.3.0" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" - integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== - -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - -plur@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/plur/-/plur-4.0.0.tgz#729aedb08f452645fe8c58ef115bf16b0a73ef84" - integrity sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg== - dependencies: - irregular-plurals "^3.2.0" - -prelude-ls@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" - integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== - -prettier-linter-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" - integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== - dependencies: - fast-diff "^1.1.2" - -prettier@^2.6.2: - version "2.8.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.4.tgz#34dd2595629bfbb79d344ac4a91ff948694463c3" - integrity sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw== - -pretty-hrtime@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" - integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= - -process-nextick-args@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" - integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== - -process-on-spawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== - dependencies: - fromentries "^1.2.0" - -proxy@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/proxy/-/proxy-1.0.2.tgz#e0cfbe11c0a7a8b238fd2d7134de4e2867578e7f" - integrity sha512-KNac2ueWRpjbUh77OAFPZuNdfEqNynm9DD4xHT14CccGpW8wKZwEkN0yjlb7X9G9Z9F55N0Q+1z+WfgAhwYdzQ== - dependencies: - args "5.0.1" - basic-auth-parser "0.0.2" - debug "^4.1.1" - -punycode@^2.0.0, punycode@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" - integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== - -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -quick-lru@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-4.0.1.tgz#5b8878f113a58217848c6482026c73e1ba57727f" - integrity sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g== - -react-devtools-core@^4.19.1: - version "4.25.0" - resolved "https://registry.yarnpkg.com/react-devtools-core/-/react-devtools-core-4.25.0.tgz#78b11a2c9f81dd9ebff3745ab4ee2147cc96c12a" - integrity sha512-iewRrnu0ZnmfL+jJayKphXj04CFh6i3ezVnpCtcnZbTPSQgN09XqHAzXbKbqNDl7aTg9QLNkQRP6M3DvdrinWA== - dependencies: - shell-quote "^1.6.1" - ws "^7" - -react-reconciler@^0.26.2: - version "0.26.2" - resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.26.2.tgz#bbad0e2d1309423f76cf3c3309ac6c96e05e9d91" - integrity sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - scheduler "^0.20.2" - -react@^17.0.2: - version "17.0.2" - resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" - integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -read-installed@~4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/read-installed/-/read-installed-4.0.3.tgz#ff9b8b67f187d1e4c29b9feb31f6b223acd19067" - integrity sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc= - dependencies: - debuglog "^1.0.1" - read-package-json "^2.0.0" - readdir-scoped-modules "^1.0.0" - semver "2 || 3 || 4 || 5" - slide "~1.1.3" - util-extend "^1.0.1" + "error-ex" "^1.3.1" + "json-parse-even-better-errors" "^2.3.0" + "lines-and-columns" "^1.1.6" + +"patch-console@^1.0.0": + "integrity" "sha512-nxl9nrnLQmh64iTzMfyylSlRozL7kAXIaxw1fVcLYdyhNkJCRUzirRZTikXGJsg+hc4fqpneTK6iU2H1Q8THSA==" + "resolved" "https://registry.npmjs.org/patch-console/-/patch-console-1.0.0.tgz" + "version" "1.0.0" + +"path-exists@^4.0.0": + "integrity" "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + "resolved" "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz" + "version" "4.0.0" + +"path-is-absolute@^1.0.0": + "integrity" "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "resolved" "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz" + "version" "1.0.1" + +"path-key@^3.1.0": + "integrity" "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + "resolved" "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz" + "version" "3.1.1" + +"path-parse@^1.0.6": + "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz" + "version" "1.0.7" + +"path-scurry@^1.6.1": + "integrity" "sha512-OW+5s+7cw6253Q4E+8qQ/u1fVvcJQCJo/VFD8pje+dbJCF1n5ZRMV2AEHbGp+5Q7jxQIYJxkHopnj6nzdGeZLA==" + "resolved" "https://registry.npmjs.org/path-scurry/-/path-scurry-1.6.1.tgz" + "version" "1.6.1" + dependencies: + "lru-cache" "^7.14.1" + "minipass" "^4.0.2" + +"path-type@^4.0.0": + "integrity" "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + "resolved" "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" + "version" "4.0.0" + +"picocolors@^1.0.0": + "version" "1.0.0" + +"picomatch@^2.0.4", "picomatch@^2.2.1", "picomatch@^2.2.3": + "integrity" "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==" + "resolved" "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz" + "version" "2.3.0" + +"pkg-dir@^4.1.0": + "integrity" "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==" + "resolved" "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz" + "version" "4.2.0" + dependencies: + "find-up" "^4.0.0" + +"plur@^4.0.0": + "integrity" "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==" + "resolved" "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "irregular-plurals" "^3.2.0" + +"prelude-ls@^1.2.1": + "integrity" "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + "resolved" "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz" + "version" "1.2.1" + +"prettier-linter-helpers@^1.0.0": + "integrity" "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==" + "resolved" "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fast-diff" "^1.1.2" + +"prettier@^2.6.2", "prettier@>=2.0.0": + "integrity" "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==" + "resolved" "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz" + "version" "2.8.4" + +"pretty-hrtime@^1.0.3": + "integrity" "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=" + "resolved" "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz" + "version" "1.0.3" + +"process-nextick-args@~2.0.0": + "integrity" "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + "resolved" "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz" + "version" "2.0.1" + +"process-on-spawn@^1.0.0": + "integrity" "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==" + "resolved" "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "fromentries" "^1.2.0" + +"proxy@^1.0.2": + "integrity" "sha512-KNac2ueWRpjbUh77OAFPZuNdfEqNynm9DD4xHT14CccGpW8wKZwEkN0yjlb7X9G9Z9F55N0Q+1z+WfgAhwYdzQ==" + "resolved" "https://registry.npmjs.org/proxy/-/proxy-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "args" "5.0.1" + "basic-auth-parser" "0.0.2" + "debug" "^4.1.1" + +"punycode@^2.0.0", "punycode@^2.1.0": + "integrity" "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + "resolved" "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz" + "version" "2.1.1" + +"queue-microtask@^1.2.2": + "integrity" "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + "resolved" "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz" + "version" "1.2.3" + +"quick-lru@^4.0.1": + "integrity" "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==" + "resolved" "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz" + "version" "4.0.1" + +"react-devtools-core@^4.19.1": + "version" "4.24.1" + dependencies: + "shell-quote" "^1.6.1" + "ws" "^7" + +"react-reconciler@^0.26.2": + "integrity" "sha512-nK6kgY28HwrMNwDnMui3dvm3rCFjZrcGiuwLc5COUipBK5hWHLOxMJhSnSomirqWwjPBJKV1QcbkI0VJr7Gl1Q==" + "resolved" "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.26.2.tgz" + "version" "0.26.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + "scheduler" "^0.20.2" + +"react@^17.0.2", "react@>=16.8.0": + "integrity" "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==" + "resolved" "https://registry.npmjs.org/react/-/react-17.0.2.tgz" + "version" "17.0.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"read-installed@~4.0.3": + "integrity" "sha1-/5uLZ/GH0eTCm5/rMfayI6zRkGc=" + "resolved" "https://registry.npmjs.org/read-installed/-/read-installed-4.0.3.tgz" + "version" "4.0.3" + dependencies: + "debuglog" "^1.0.1" + "read-package-json" "^2.0.0" + "readdir-scoped-modules" "^1.0.0" + "semver" "2 || 3 || 4 || 5" + "slide" "~1.1.3" + "util-extend" "^1.0.1" optionalDependencies: - graceful-fs "^4.1.2" + "graceful-fs" "^4.1.2" -read-package-json@^2.0.0: - version "2.1.2" - resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-2.1.2.tgz#6992b2b66c7177259feb8eaac73c3acd28b9222a" - integrity sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA== +"read-package-json@^2.0.0": + "integrity" "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==" + "resolved" "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz" + "version" "2.1.2" dependencies: - glob "^7.1.1" - json-parse-even-better-errors "^2.3.0" - normalize-package-data "^2.0.0" - npm-normalize-package-bin "^1.0.0" + "glob" "^7.1.1" + "json-parse-even-better-errors" "^2.3.0" + "normalize-package-data" "^2.0.0" + "npm-normalize-package-bin" "^1.0.0" -read-pkg-up@^7.0.0, read-pkg-up@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" - integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== +"read-pkg-up@^7.0.0", "read-pkg-up@^7.0.1": + "integrity" "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==" + "resolved" "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz" + "version" "7.0.1" dependencies: - find-up "^4.1.0" - read-pkg "^5.2.0" - type-fest "^0.8.1" + "find-up" "^4.1.0" + "read-pkg" "^5.2.0" + "type-fest" "^0.8.1" -read-pkg@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" - integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== +"read-pkg@^5.2.0": + "integrity" "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==" + "resolved" "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz" + "version" "5.2.0" dependencies: "@types/normalize-package-data" "^2.4.0" - normalize-package-data "^2.5.0" - parse-json "^5.0.0" - type-fest "^0.6.0" - -readable-stream@^2.0.0: - version "2.3.7" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" - integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.3" - isarray "~1.0.0" - process-nextick-args "~2.0.0" - safe-buffer "~5.1.1" - string_decoder "~1.1.1" - util-deprecate "~1.0.1" - -readable-stream@^3.4.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" - integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== - dependencies: - inherits "^2.0.3" - string_decoder "^1.1.1" - util-deprecate "^1.0.1" - -readdir-scoped-modules@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz#8d45407b4f870a0dcaebc0e28670d18e74514309" - integrity sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw== - dependencies: - debuglog "^1.0.1" - dezalgo "^1.0.0" - graceful-fs "^4.1.2" - once "^1.3.0" - -readdirp@~3.6.0: - version "3.6.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" - integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== - dependencies: - picomatch "^2.2.1" - -redent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-3.0.0.tgz#e557b7998316bb53c9f1f56fa626352c6963059f" - integrity sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg== - dependencies: - indent-string "^4.0.0" - strip-indent "^3.0.0" - -redeyed@~2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/redeyed/-/redeyed-2.1.1.tgz#8984b5815d99cb220469c99eeeffe38913e6cc0b" - integrity sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs= - dependencies: - esprima "~4.0.0" - -regexpp@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" - integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== - -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= - dependencies: - es6-error "^4.0.1" - -require-directory@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" - integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= - -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - -requizzle@^0.2.3: - version "0.2.4" - resolved "https://registry.yarnpkg.com/requizzle/-/requizzle-0.2.4.tgz#319eb658b28c370f0c20f968fa8ceab98c13d27c" - integrity sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw== - dependencies: - lodash "^4.17.21" - -resolve-from@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" - integrity sha1-six699nWiBvItuZTM17rywoYh0g= - -resolve-from@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" - integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== - -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - -resolve@^1.10.0: - version "1.20.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" - integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== - dependencies: - is-core-module "^2.2.0" - path-parse "^1.0.6" - -restore-cursor@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" - integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -restore-cursor@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-4.0.0.tgz#519560a4318975096def6e609d44100edaa4ccb9" - integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg== - dependencies: - onetime "^5.1.0" - signal-exit "^3.0.2" - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - -rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - -rimraf@^4.1.1: - version "4.4.0" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-4.4.0.tgz#c7a9f45bb2ec058d2e60ef9aca5167974313d605" - integrity sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ== - dependencies: - glob "^9.2.0" - -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@~5.2.0: - version "5.2.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" - integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== - -scheduler@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" - integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== - dependencies: - loose-envify "^1.1.0" - object-assign "^4.1.1" - -secure-json-parse@^2.4.0: - version "2.7.0" - resolved "https://registry.yarnpkg.com/secure-json-parse/-/secure-json-parse-2.7.0.tgz#5a5f9cd6ae47df23dba3151edd06855d47e09862" - integrity sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw== - -"semver@2 || 3 || 4 || 5", semver@^5.5.0: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== - -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - -semver@^7.3.4, semver@^7.3.5: - version "7.3.8" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.8.tgz#07a78feafb3f7b32347d725e33de7e2a2df67798" - integrity sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A== - dependencies: - lru-cache "^6.0.0" - -set-blocking@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" - integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= - -shebang-command@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" - integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + "normalize-package-data" "^2.5.0" + "parse-json" "^5.0.0" + "type-fest" "^0.6.0" + +"readable-stream@^2.0.0": + "integrity" "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" + "version" "2.3.7" + dependencies: + "core-util-is" "~1.0.0" + "inherits" "~2.0.3" + "isarray" "~1.0.0" + "process-nextick-args" "~2.0.0" + "safe-buffer" "~5.1.1" + "string_decoder" "~1.1.1" + "util-deprecate" "~1.0.1" + +"readable-stream@^3.4.0": + "integrity" "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==" + "resolved" "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "inherits" "^2.0.3" + "string_decoder" "^1.1.1" + "util-deprecate" "^1.0.1" + +"readdir-scoped-modules@^1.0.0": + "integrity" "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==" + "resolved" "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz" + "version" "1.1.0" + dependencies: + "debuglog" "^1.0.1" + "dezalgo" "^1.0.0" + "graceful-fs" "^4.1.2" + "once" "^1.3.0" + +"readdirp@~3.6.0": + "integrity" "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==" + "resolved" "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz" + "version" "3.6.0" + dependencies: + "picomatch" "^2.2.1" + +"redent@^3.0.0": + "integrity" "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==" + "resolved" "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "indent-string" "^4.0.0" + "strip-indent" "^3.0.0" + +"redeyed@~2.1.0": + "integrity" "sha1-iYS1gV2ZyyIEacme7v/jiRPmzAs=" + "resolved" "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz" + "version" "2.1.1" + dependencies: + "esprima" "~4.0.0" + +"regexpp@^3.2.0": + "integrity" "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + "resolved" "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz" + "version" "3.2.0" + +"release-zalgo@^1.0.0": + "integrity" "sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA=" + "resolved" "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "es6-error" "^4.0.1" + +"require-directory@^2.1.1": + "integrity" "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=" + "resolved" "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz" + "version" "2.1.1" + +"require-main-filename@^2.0.0": + "integrity" "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==" + "resolved" "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz" + "version" "2.0.0" + +"requizzle@^0.2.3": + "integrity" "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==" + "resolved" "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz" + "version" "0.2.4" + dependencies: + "lodash" "^4.17.21" + +"resolve-from@^3.0.0": + "integrity" "sha1-six699nWiBvItuZTM17rywoYh0g=" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz" + "version" "3.0.0" + +"resolve-from@^4.0.0": + "integrity" "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz" + "version" "4.0.0" + +"resolve-from@^5.0.0": + "integrity" "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==" + "resolved" "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz" + "version" "5.0.0" + +"resolve@^1.10.0": + "integrity" "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==" + "resolved" "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz" + "version" "1.20.0" + dependencies: + "is-core-module" "^2.2.0" + "path-parse" "^1.0.6" + +"restore-cursor@^3.1.0": + "integrity" "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + +"restore-cursor@^4.0.0": + "integrity" "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==" + "resolved" "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz" + "version" "4.0.0" + dependencies: + "onetime" "^5.1.0" + "signal-exit" "^3.0.2" + +"reusify@^1.0.4": + "integrity" "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + "resolved" "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz" + "version" "1.0.4" + +"rimraf@^3.0.0": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rimraf@^3.0.2": + "integrity" "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz" + "version" "3.0.2" + dependencies: + "glob" "^7.1.3" + +"rimraf@^4.1.1": + "integrity" "sha512-X36S+qpCUR0HjXlkDe4NAOhS//aHH0Z+h8Ckf2auGJk3PTnx5rLmrHkwNdbVQuCSUhOyFrlRvFEllZOYE+yZGQ==" + "resolved" "https://registry.npmjs.org/rimraf/-/rimraf-4.4.0.tgz" + "version" "4.4.0" + dependencies: + "glob" "^9.2.0" + +"run-parallel@^1.1.9": + "integrity" "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==" + "resolved" "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz" + "version" "1.2.0" + dependencies: + "queue-microtask" "^1.2.2" + +"safe-buffer@~5.1.0", "safe-buffer@~5.1.1": + "integrity" "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz" + "version" "5.1.2" + +"safe-buffer@~5.2.0": + "integrity" "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "resolved" "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz" + "version" "5.2.1" + +"scheduler@^0.20.2": + "integrity" "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==" + "resolved" "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz" + "version" "0.20.2" + dependencies: + "loose-envify" "^1.1.0" + "object-assign" "^4.1.1" + +"secure-json-parse@^2.4.0": + "integrity" "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==" + "resolved" "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz" + "version" "2.7.0" + +"semver@^5.5.0": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"semver@^6.0.0", "semver@^6.3.0": + "integrity" "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + "resolved" "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz" + "version" "6.3.0" + +"semver@^7.3.4", "semver@^7.3.5": + "integrity" "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==" + "resolved" "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz" + "version" "7.3.8" + dependencies: + "lru-cache" "^6.0.0" + +"semver@2 || 3 || 4 || 5": + "integrity" "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "resolved" "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz" + "version" "5.7.1" + +"set-blocking@^2.0.0": + "integrity" "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" + "resolved" "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz" + "version" "2.0.0" + +"shebang-command@^2.0.0": + "integrity" "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==" + "resolved" "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz" + "version" "2.0.0" dependencies: - shebang-regex "^3.0.0" - -shebang-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" - integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== - -shell-quote@^1.6.1: - version "1.7.3" - resolved "https://registry.yarnpkg.com/shell-quote/-/shell-quote-1.7.3.tgz#aa40edac170445b9a431e17bb62c0b881b9c4123" - integrity sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw== + "shebang-regex" "^3.0.0" + +"shebang-regex@^3.0.0": + "integrity" "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + "resolved" "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz" + "version" "3.0.0" + +"shell-quote@^1.6.1": + "integrity" "sha512-Vpfqwm4EnqGdlsBFNmHhxhElJYrdfcxPThu+ryKS5J8L/fhAwLazFZtq+S+TWZ9ANj2piSQLGj6NQg+lKPmxrw==" + "resolved" "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.3.tgz" + "version" "1.7.3" + +"signal-exit@^3.0.2", "signal-exit@^3.0.4", "signal-exit@^3.0.6": + "integrity" "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "resolved" "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz" + "version" "3.0.7" -signal-exit@^3.0.2, signal-exit@^3.0.4, signal-exit@^3.0.6: - version "3.0.7" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" - integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== - -simple-git@^3.15.0: - version "3.16.0" - resolved "https://registry.yarnpkg.com/simple-git/-/simple-git-3.16.0.tgz#421773e24680f5716999cc4a1d60127b4b6a9dec" - integrity sha512-zuWYsOLEhbJRWVxpjdiXl6eyAyGo/KzVW+KFhhw9MqEEJttcq+32jTWSGyxTdf9e/YCohxRE+9xpWFj9FdiJNw== +"simple-git@^3.15.0": + "integrity" "sha512-zuWYsOLEhbJRWVxpjdiXl6eyAyGo/KzVW+KFhhw9MqEEJttcq+32jTWSGyxTdf9e/YCohxRE+9xpWFj9FdiJNw==" + "resolved" "https://registry.npmjs.org/simple-git/-/simple-git-3.16.0.tgz" + "version" "3.16.0" dependencies: "@kwsites/file-exists" "^1.1.1" "@kwsites/promise-deferred" "^1.1.1" - debug "^4.3.4" - -simple-statistics@^7.7.0: - version "7.8.3" - resolved "https://registry.yarnpkg.com/simple-statistics/-/simple-statistics-7.8.3.tgz#62998dd7786ba14fa27b07f4f3cd498466f7961a" - integrity sha512-JFvMY00t6SBGtwMuJ+nqgsx9ylkMiJ5JlK9bkj8AdvniIe5615wWQYkKHXe84XtSuc40G/tlrPu0A5/NlJvv8A== - -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - -slice-ansi@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" - integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== - dependencies: - ansi-styles "^4.0.0" - astral-regex "^2.0.0" - is-fullwidth-code-point "^3.0.0" - -slide@~1.1.3: - version "1.1.6" - resolved "https://registry.yarnpkg.com/slide/-/slide-1.1.6.tgz#56eb027d65b4d2dce6cb2e2d32c4d4afc9e1d707" - integrity sha1-VusCfWW00tzmyy4tMsTUr8nh1wc= - -source-map-support@^0.5.16: - version "0.5.19" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" - integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== - dependencies: - buffer-from "^1.0.0" - source-map "^0.6.0" - -source-map@^0.5.0: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.0, source-map@^0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== - -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" - -spdx-compare@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/spdx-compare/-/spdx-compare-1.0.0.tgz#2c55f117362078d7409e6d7b08ce70a857cd3ed7" - integrity sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A== - dependencies: - array-find-index "^1.0.2" - spdx-expression-parse "^3.0.0" - spdx-ranges "^2.0.0" - -spdx-correct@^3.0.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" - integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" - integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== - -spdx-expression-parse@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" - integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.10" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz#0d9becccde7003d6c658d487dd48a32f0bf3014b" - integrity sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA== - -spdx-ranges@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/spdx-ranges/-/spdx-ranges-2.1.1.tgz#87573927ba51e92b3f4550ab60bfc83dd07bac20" - integrity sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA== - -spdx-satisfies@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz#9a09a68d80f5f1a31cfaebb384b0c6009e4969fe" - integrity sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA== - dependencies: - spdx-compare "^1.0.0" - spdx-expression-parse "^3.0.0" - spdx-ranges "^2.0.0" - -split2@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/split2/-/split2-4.1.0.tgz#101907a24370f85bb782f08adaabe4e281ecf809" - integrity sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -stack-utils@^2.0.2, stack-utils@^2.0.4: - version "2.0.5" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.5.tgz#d25265fca995154659dbbfba3b49254778d2fdd5" - integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA== - dependencies: - escape-string-regexp "^2.0.0" - -stoppable@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/stoppable/-/stoppable-1.1.0.tgz#32da568e83ea488b08e4d7ea2c3bcc9d75015d5b" - integrity sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw== - -string-width@^4.0.0, string-width@^4.1.0, string-width@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" - integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.0" - -string-width@^4.2.2: - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string_decoder@^1.1.1: - version "1.3.0" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" - integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== - dependencies: - safe-buffer "~5.2.0" - -string_decoder@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" - integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== - dependencies: - safe-buffer "~5.1.0" - -strip-ansi@^3.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1, strip-ansi@^7.0.1: - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - -strip-indent@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-3.0.0.tgz#c32e1cee940b6b3432c771bc2c54bcce73cd3001" - integrity sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ== - dependencies: - min-indent "^1.0.0" - -strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" - integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -supports-color@^7.0.0, supports-color@^7.1.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" - integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== - dependencies: - has-flag "^4.0.0" - -supports-hyperlinks@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz#4f77b42488765891774b70c79babd87f9bd594bb" - integrity sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ== - dependencies: - has-flag "^4.0.0" - supports-color "^7.0.0" - -tap-mocha-reporter@^5.0.3: - version "5.0.3" - resolved "https://registry.yarnpkg.com/tap-mocha-reporter/-/tap-mocha-reporter-5.0.3.tgz#3e261b2a43092ba8bc0cb67a89b33e283decee05" - integrity sha512-6zlGkaV4J+XMRFkN0X+yuw6xHbE9jyCZ3WUKfw4KxMyRGOpYSRuuQTRJyWX88WWuLdVTuFbxzwXhXuS2XE6o0g== + "debug" "^4.3.4" + +"simple-statistics@^7.7.0": + "integrity" "sha512-JFvMY00t6SBGtwMuJ+nqgsx9ylkMiJ5JlK9bkj8AdvniIe5615wWQYkKHXe84XtSuc40G/tlrPu0A5/NlJvv8A==" + "resolved" "https://registry.npmjs.org/simple-statistics/-/simple-statistics-7.8.3.tgz" + "version" "7.8.3" + +"slash@^3.0.0": + "integrity" "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + "resolved" "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" + "version" "3.0.0" + +"slice-ansi@^3.0.0": + "integrity" "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==" + "resolved" "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "astral-regex" "^2.0.0" + "is-fullwidth-code-point" "^3.0.0" + +"slide@~1.1.3": + "integrity" "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=" + "resolved" "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz" + "version" "1.1.6" + +"source-map-support@^0.5.16": + "integrity" "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==" + "resolved" "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" + "version" "0.5.19" + dependencies: + "buffer-from" "^1.0.0" + "source-map" "^0.6.0" + +"source-map@^0.5.0": + "integrity" "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz" + "version" "0.5.7" + +"source-map@^0.6.0": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"source-map@^0.6.1": + "integrity" "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" + "resolved" "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz" + "version" "0.6.1" + +"spawn-wrap@^2.0.0": + "integrity" "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==" + "resolved" "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz" + "version" "2.0.0" + dependencies: + "foreground-child" "^2.0.0" + "is-windows" "^1.0.2" + "make-dir" "^3.0.0" + "rimraf" "^3.0.0" + "signal-exit" "^3.0.2" + "which" "^2.0.1" + +"spdx-compare@^1.0.0": + "integrity" "sha512-C1mDZOX0hnu0ep9dfmuoi03+eOdDoz2yvK79RxbcrVEG1NO1Ph35yW102DHWKN4pk80nwCgeMmSY5L25VE4D9A==" + "resolved" "https://registry.npmjs.org/spdx-compare/-/spdx-compare-1.0.0.tgz" + "version" "1.0.0" + dependencies: + "array-find-index" "^1.0.2" + "spdx-expression-parse" "^3.0.0" + "spdx-ranges" "^2.0.0" + +"spdx-correct@^3.0.0": + "integrity" "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==" + "resolved" "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz" + "version" "3.1.1" + dependencies: + "spdx-expression-parse" "^3.0.0" + "spdx-license-ids" "^3.0.0" + +"spdx-exceptions@^2.1.0": + "integrity" "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "resolved" "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz" + "version" "2.3.0" + +"spdx-expression-parse@^3.0.0": + "integrity" "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==" + "resolved" "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "spdx-exceptions" "^2.1.0" + "spdx-license-ids" "^3.0.0" + +"spdx-license-ids@^3.0.0": + "integrity" "sha512-oie3/+gKf7QtpitB0LYLETe+k8SifzsX4KixvpOsbI6S0kRiRQ5MKOio8eMSAKQ17N06+wdEOXRiId+zOxo0hA==" + "resolved" "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.10.tgz" + "version" "3.0.10" + +"spdx-ranges@^2.0.0": + "integrity" "sha512-mcdpQFV7UDAgLpXEE/jOMqvK4LBoO0uTQg0uvXUewmEFhpiZx5yJSZITHB8w1ZahKdhfZqP5GPEOKLyEq5p8XA==" + "resolved" "https://registry.npmjs.org/spdx-ranges/-/spdx-ranges-2.1.1.tgz" + "version" "2.1.1" + +"spdx-satisfies@^4.0.0": + "integrity" "sha512-WVzZ/cXAzoNmjCWiEluEA3BjHp5tiUmmhn9MK+X0tBbR9sOqtC6UQwmgCNrAIZvNlMuBUYAaHYfb2oqlF9SwKA==" + "resolved" "https://registry.npmjs.org/spdx-satisfies/-/spdx-satisfies-4.0.1.tgz" + "version" "4.0.1" + dependencies: + "spdx-compare" "^1.0.0" + "spdx-expression-parse" "^3.0.0" + "spdx-ranges" "^2.0.0" + +"split2@^4.1.0": + "integrity" "sha512-VBiJxFkxiXRlUIeyMQi8s4hgvKCSjtknJv/LVYbrgALPwf5zSKmEwV9Lst25AkvMDnvxODugjdl6KZgwKM1WYQ==" + "resolved" "https://registry.npmjs.org/split2/-/split2-4.1.0.tgz" + "version" "4.1.0" + +"sprintf-js@~1.0.2": + "integrity" "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" + "resolved" "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz" + "version" "1.0.3" + +"stack-utils@^2.0.2": + "integrity" "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==" + "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "escape-string-regexp" "^2.0.0" + +"stack-utils@^2.0.4": + "integrity" "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==" + "resolved" "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz" + "version" "2.0.5" + dependencies: + "escape-string-regexp" "^2.0.0" + +"stoppable@^1.1.0": + "integrity" "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==" + "resolved" "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz" + "version" "1.1.0" + +"string_decoder@^1.1.1": + "integrity" "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz" + "version" "1.3.0" + dependencies: + "safe-buffer" "~5.2.0" + +"string_decoder@~1.1.1": + "integrity" "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==" + "resolved" "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz" + "version" "1.1.1" + dependencies: + "safe-buffer" "~5.1.0" + +"string-width@^4.0.0", "string-width@^4.2.2": + "integrity" "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz" + "version" "4.2.3" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.1" + +"string-width@^4.1.0", "string-width@^4.2.0": + "integrity" "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==" + "resolved" "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz" + "version" "4.2.2" + dependencies: + "emoji-regex" "^8.0.0" + "is-fullwidth-code-point" "^3.0.0" + "strip-ansi" "^6.0.0" + +"strip-ansi@^3.0.1": + "integrity" "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz" + "version" "3.0.1" + dependencies: + "ansi-regex" "^2.0.0" + +"strip-ansi@^6.0.0", "strip-ansi@^6.0.1": + "integrity" "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz" + "version" "6.0.1" + dependencies: + "ansi-regex" "^5.0.1" + +"strip-ansi@^7.0.1": + "integrity" "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==" + "resolved" "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz" + "version" "7.0.1" + dependencies: + "ansi-regex" "^6.0.1" + +"strip-bom@^4.0.0": + "integrity" "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==" + "resolved" "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz" + "version" "4.0.0" + +"strip-indent@^3.0.0": + "integrity" "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==" + "resolved" "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "min-indent" "^1.0.0" + +"strip-json-comments@^3.1.0", "strip-json-comments@^3.1.1": + "integrity" "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + "resolved" "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz" + "version" "3.1.1" + +"supports-color@^5.3.0": + "integrity" "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz" + "version" "5.5.0" + dependencies: + "has-flag" "^3.0.0" + +"supports-color@^7.0.0", "supports-color@^7.1.0": + "integrity" "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==" + "resolved" "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz" + "version" "7.2.0" + dependencies: + "has-flag" "^4.0.0" + +"supports-hyperlinks@^2.0.0": + "integrity" "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==" + "resolved" "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz" + "version" "2.2.0" dependencies: - color-support "^1.1.0" - debug "^4.1.1" - diff "^4.0.1" - escape-string-regexp "^2.0.0" - glob "^7.0.5" - tap-parser "^11.0.0" - tap-yaml "^1.0.0" - unicode-length "^2.0.2" + "has-flag" "^4.0.0" + "supports-color" "^7.0.0" -tap-parser@^11.0.0, tap-parser@^11.0.2: - version "11.0.2" - resolved "https://registry.yarnpkg.com/tap-parser/-/tap-parser-11.0.2.tgz#5d3e76e2cc521e23a8c50201487b273ca0fba800" - integrity sha512-6qGlC956rcORw+fg7Fv1iCRAY8/bU9UabUAhs3mXRH6eRmVZcNPLheSXCYaVaYeSwx5xa/1HXZb1537YSvwDZg== - dependencies: - events-to-array "^1.0.1" - minipass "^3.1.6" - tap-yaml "^1.0.0" - -tap-yaml@^1.0.0, tap-yaml@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/tap-yaml/-/tap-yaml-1.0.2.tgz#62032a459e5524e10661c19ee9df5d33d78812fa" - integrity sha512-GegASpuqBnRNdT1U+yuUPZ8rEU64pL35WPBpCISWwff4dErS2/438barz7WFJl4Nzh3Y05tfPidZnH+GaV1wMg== - dependencies: - yaml "^1.10.2" +"tap-mocha-reporter@^5.0.3": + "integrity" "sha512-6zlGkaV4J+XMRFkN0X+yuw6xHbE9jyCZ3WUKfw4KxMyRGOpYSRuuQTRJyWX88WWuLdVTuFbxzwXhXuS2XE6o0g==" + "resolved" "https://registry.npmjs.org/tap-mocha-reporter/-/tap-mocha-reporter-5.0.3.tgz" + "version" "5.0.3" + dependencies: + "color-support" "^1.1.0" + "debug" "^4.1.1" + "diff" "^4.0.1" + "escape-string-regexp" "^2.0.0" + "glob" "^7.0.5" + "tap-parser" "^11.0.0" + "tap-yaml" "^1.0.0" + "unicode-length" "^2.0.2" -tap@^16.3.0: - version "16.3.4" - resolved "https://registry.yarnpkg.com/tap/-/tap-16.3.4.tgz#4dc740a9dcbfa2d890fb2b647720f29980289179" - integrity sha512-SAexdt2ZF4XBgye6TPucFI2y7VE0qeFXlXucJIV1XDPCs+iJodk0MYacr1zR6Ycltzz7PYg8zrblDXKbAZM2LQ== +"tap-parser@^11.0.0", "tap-parser@^11.0.2": + "integrity" "sha512-6qGlC956rcORw+fg7Fv1iCRAY8/bU9UabUAhs3mXRH6eRmVZcNPLheSXCYaVaYeSwx5xa/1HXZb1537YSvwDZg==" + "resolved" "https://registry.npmjs.org/tap-parser/-/tap-parser-11.0.2.tgz" + "version" "11.0.2" + dependencies: + "events-to-array" "^1.0.1" + "minipass" "^3.1.6" + "tap-yaml" "^1.0.0" + +"tap-yaml@^1.0.0", "tap-yaml@^1.0.2": + "integrity" "sha512-GegASpuqBnRNdT1U+yuUPZ8rEU64pL35WPBpCISWwff4dErS2/438barz7WFJl4Nzh3Y05tfPidZnH+GaV1wMg==" + "resolved" "https://registry.npmjs.org/tap-yaml/-/tap-yaml-1.0.2.tgz" + "version" "1.0.2" + dependencies: + "yaml" "^1.10.2" + +"tap@^16.3.0": + "integrity" "sha512-SAexdt2ZF4XBgye6TPucFI2y7VE0qeFXlXucJIV1XDPCs+iJodk0MYacr1zR6Ycltzz7PYg8zrblDXKbAZM2LQ==" + "resolved" "https://registry.npmjs.org/tap/-/tap-16.3.4.tgz" + "version" "16.3.4" dependencies: "@isaacs/import-jsx" "^4.0.1" "@types/react" "^17.0.52" - chokidar "^3.3.0" - findit "^2.0.0" - foreground-child "^2.0.0" - fs-exists-cached "^1.0.0" - glob "^7.2.3" - ink "^3.2.0" - isexe "^2.0.0" - istanbul-lib-processinfo "^2.0.3" - jackspeak "^1.4.2" - libtap "^1.4.0" - minipass "^3.3.4" - mkdirp "^1.0.4" - nyc "^15.1.0" - opener "^1.5.1" - react "^17.0.2" - rimraf "^3.0.0" - signal-exit "^3.0.6" - source-map-support "^0.5.16" - tap-mocha-reporter "^5.0.3" - tap-parser "^11.0.2" - tap-yaml "^1.0.2" - tcompare "^5.0.7" - treport "^3.0.4" - which "^2.0.2" - -tcompare@^5.0.6, tcompare@^5.0.7: - version "5.0.7" - resolved "https://registry.yarnpkg.com/tcompare/-/tcompare-5.0.7.tgz#8c2d647208031ed5cac5e573428149e16f795bbf" - integrity sha512-d9iddt6YYGgyxJw5bjsN7UJUO1kGOtjSlNy/4PoGYAjQS5pAT/hzIoLf1bZCw+uUxRmZJh7Yy1aA7xKVRT9B4w== - dependencies: - diff "^4.0.2" - -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + "chokidar" "^3.3.0" + "findit" "^2.0.0" + "foreground-child" "^2.0.0" + "fs-exists-cached" "^1.0.0" + "glob" "^7.2.3" + "ink" "^3.2.0" + "isexe" "^2.0.0" + "istanbul-lib-processinfo" "^2.0.3" + "jackspeak" "^1.4.2" + "libtap" "^1.4.0" + "minipass" "^3.3.4" + "mkdirp" "^1.0.4" + "nyc" "^15.1.0" + "opener" "^1.5.1" + "react" "^17.0.2" + "rimraf" "^3.0.0" + "signal-exit" "^3.0.6" + "source-map-support" "^0.5.16" + "tap-mocha-reporter" "^5.0.3" + "tap-parser" "^11.0.2" + "tap-yaml" "^1.0.2" + "tcompare" "^5.0.7" + "treport" "^3.0.4" + "which" "^2.0.2" + +"tcompare@^5.0.6", "tcompare@^5.0.7": + "integrity" "sha512-d9iddt6YYGgyxJw5bjsN7UJUO1kGOtjSlNy/4PoGYAjQS5pAT/hzIoLf1bZCw+uUxRmZJh7Yy1aA7xKVRT9B4w==" + "resolved" "https://registry.npmjs.org/tcompare/-/tcompare-5.0.7.tgz" + "version" "5.0.7" + dependencies: + "diff" "^4.0.2" + +"test-exclude@^6.0.0": + "integrity" "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==" + "resolved" "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz" + "version" "6.0.0" dependencies: "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" + "glob" "^7.1.4" + "minimatch" "^3.0.4" -text-table@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" - integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +"text-table@^0.2.0": + "integrity" "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=" + "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" + "version" "0.2.0" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= +"to-fast-properties@^2.0.0": + "integrity" "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=" + "resolved" "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz" + "version" "2.0.0" -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== +"to-regex-range@^5.0.1": + "integrity" "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==" + "resolved" "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz" + "version" "5.0.1" dependencies: - is-number "^7.0.0" + "is-number" "^7.0.0" -treeify@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/treeify/-/treeify-1.1.0.tgz#4e31c6a463accd0943879f30667c4fdaff411bb8" - integrity sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A== +"treeify@^1.1.0": + "integrity" "sha512-1m4RA7xVAJrSGrrXGs0L3YTwyvBs2S8PbRHaLZAkFw7JR8oIFwYtysxlBZhYIa7xSyiYJKZ3iGrrk55cGA3i9A==" + "resolved" "https://registry.npmjs.org/treeify/-/treeify-1.1.0.tgz" + "version" "1.1.0" -treport@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/treport/-/treport-3.0.4.tgz#05247fa7820ad3afe92355e4cf08fe41a933084b" - integrity sha512-zUw1sfJypuoZi0I54woo6CNsfvMrv+OwLBD0/wc4LhMW8MA0MbSE+4fNObn22JSR8x9lOYccuAzfBfZ2IemzoQ== +"treport@^3.0.4": + "integrity" "sha512-zUw1sfJypuoZi0I54woo6CNsfvMrv+OwLBD0/wc4LhMW8MA0MbSE+4fNObn22JSR8x9lOYccuAzfBfZ2IemzoQ==" + "resolved" "https://registry.npmjs.org/treport/-/treport-3.0.4.tgz" + "version" "3.0.4" dependencies: "@isaacs/import-jsx" "^4.0.1" - cardinal "^2.1.1" - chalk "^3.0.0" - ink "^3.2.0" - ms "^2.1.2" - tap-parser "^11.0.0" - tap-yaml "^1.0.0" - unicode-length "^2.0.2" - -trim-newlines@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" - integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== - -trivial-deferred@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/trivial-deferred/-/trivial-deferred-1.0.1.tgz#376d4d29d951d6368a6f7a0ae85c2f4d5e0658f3" - integrity sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM= - -tsd@^0.27.0: - version "0.27.0" - resolved "https://registry.yarnpkg.com/tsd/-/tsd-0.27.0.tgz#5f02d6e75cac36d9db7fe4e52109284ace1268b8" - integrity sha512-G/2Sejk9N21TcuWlHwrvVWwIyIl2mpECFPbnJvFMsFN1xQCIbi2QnvG4fkw3VitFhNF6dy38cXxKJ8Paq8kOGQ== + "cardinal" "^2.1.1" + "chalk" "^3.0.0" + "ink" "^3.2.0" + "ms" "^2.1.2" + "tap-parser" "^11.0.0" + "tap-yaml" "^1.0.0" + "unicode-length" "^2.0.2" + +"trim-newlines@^3.0.0": + "integrity" "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==" + "resolved" "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz" + "version" "3.0.1" + +"trivial-deferred@^1.0.1": + "integrity" "sha1-N21NKdlR1jaKb3oK6FwvTV4GWPM=" + "resolved" "https://registry.npmjs.org/trivial-deferred/-/trivial-deferred-1.0.1.tgz" + "version" "1.0.1" + +"tsd@^0.27.0": + "integrity" "sha512-G/2Sejk9N21TcuWlHwrvVWwIyIl2mpECFPbnJvFMsFN1xQCIbi2QnvG4fkw3VitFhNF6dy38cXxKJ8Paq8kOGQ==" + "resolved" "https://registry.npmjs.org/tsd/-/tsd-0.27.0.tgz" + "version" "0.27.0" dependencies: "@tsd/typescript" "~4.9.5" - eslint-formatter-pretty "^4.1.0" - globby "^11.0.1" - meow "^9.0.0" - path-exists "^4.0.0" - read-pkg-up "^7.0.0" - -tslib@^2.3.1: - version "2.4.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" - integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== - -type-check@^0.4.0, type-check@~0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" - integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== - dependencies: - prelude-ls "^1.2.1" - -type-detect@4.0.8: - version "4.0.8" - resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" - integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== - -type-fest@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.12.0.tgz#f57a27ab81c68d136a51fd71467eff94157fa1ee" - integrity sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg== - -type-fest@^0.18.0: - version "0.18.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.18.1.tgz#db4bc151a4a2cf4eebf9add5db75508db6cc841f" - integrity sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw== - -type-fest@^0.20.2: - version "0.20.2" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" - integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== - -type-fest@^0.21.3: - version "0.21.3" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" - integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== - -type-fest@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" - integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== - -type-fest@^0.8.0, type-fest@^0.8.1: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - -uc.micro@^1.0.1, uc.micro@^1.0.5: - version "1.0.6" - resolved "https://registry.yarnpkg.com/uc.micro/-/uc.micro-1.0.6.tgz#9c411a802a409a91fc6cf74081baba34b24499ac" - integrity sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA== - -underscore@~1.13.2: - version "1.13.6" - resolved "https://registry.yarnpkg.com/underscore/-/underscore-1.13.6.tgz#04786a1f589dc6c09f761fc5f45b89e935136441" - integrity sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A== - -unicode-length@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/unicode-length/-/unicode-length-2.0.2.tgz#e5eb4c0d523fdf7bebb59ca261c9ca1cf732da96" - integrity sha512-Ph/j1VbS3/r77nhoY2WU0GWGjVYOHL3xpKp0y/Eq2e5r0mT/6b649vm7KFO6RdAdrZkYLdxphYVgvODxPB+Ebg== - dependencies: - punycode "^2.0.0" - strip-ansi "^3.0.1" - -uri-js@^4.2.2: - version "4.4.1" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" - integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== - dependencies: - punycode "^2.1.0" - -util-deprecate@^1.0.1, util-deprecate@~1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -util-extend@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/util-extend/-/util-extend-1.0.3.tgz#a7c216d267545169637b3b6edc6ca9119e2ff93f" - integrity sha1-p8IW0mdUUWljeztu3GypEZ4v+T8= - -uuid@^8.3.2: - version "8.3.2" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" - integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -wcwidth@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" - integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= - dependencies: - defaults "^1.0.3" - -web-streams-polyfill@^3.0.3: - version "3.2.1" - resolved "https://registry.yarnpkg.com/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz#71c2718c52b45fd49dbeee88634b3a60ceab42a6" - integrity sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q== - -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - -which@^2.0.1, which@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" - integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== - dependencies: - isexe "^2.0.0" - -widest-line@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/widest-line/-/widest-line-3.1.0.tgz#8292333bbf66cb45ff0de1603b136b7ae1496eca" - integrity sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg== - dependencies: - string-width "^4.0.0" - -word-wrap@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" - integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== - -workq@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/workq/-/workq-3.0.0.tgz#2a54cd67bc65bc7595548c8fafcd493ab4e0c559" - integrity sha512-zCLwCuqc1WMiCtcbtKBtkgOkFHCvGsmkJ6IbgazOcctPXGjM8/AYKBjYaJvKzsMigbUW3CFApZudMor4E6D6zA== - dependencies: - debug "^4.1.1" - -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - -ws@^7, ws@^7.5.5: - version "7.5.9" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.5.9.tgz#54fa7db29f4c7cec68b1ddd3a89de099942bb591" - integrity sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q== - -xmlbuilder2@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz#fc499688b35a916f269e7b459c2fa02bb5c0822a" - integrity sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw== + "eslint-formatter-pretty" "^4.1.0" + "globby" "^11.0.1" + "meow" "^9.0.0" + "path-exists" "^4.0.0" + "read-pkg-up" "^7.0.0" + +"tslib@^2.3.1": + "integrity" "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" + "resolved" "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz" + "version" "2.4.1" + +"type-check@^0.4.0", "type-check@~0.4.0": + "integrity" "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==" + "resolved" "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz" + "version" "0.4.0" + dependencies: + "prelude-ls" "^1.2.1" + +"type-detect@4.0.8": + "integrity" "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + "resolved" "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz" + "version" "4.0.8" + +"type-fest@^0.12.0": + "integrity" "sha512-53RyidyjvkGpnWPMF9bQgFtWp+Sl8O2Rp13VavmJgfAP9WWG6q6TkrKU8iyJdnwnfgHI6k2hTlgqH4aSdjoTbg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.12.0.tgz" + "version" "0.12.0" + +"type-fest@^0.18.0": + "integrity" "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz" + "version" "0.18.1" + +"type-fest@^0.20.2": + "integrity" "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz" + "version" "0.20.2" + +"type-fest@^0.21.3": + "integrity" "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz" + "version" "0.21.3" + +"type-fest@^0.6.0": + "integrity" "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz" + "version" "0.6.0" + +"type-fest@^0.8.0", "type-fest@^0.8.1": + "integrity" "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==" + "resolved" "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz" + "version" "0.8.1" + +"typedarray-to-buffer@^3.1.5": + "integrity" "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==" + "resolved" "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz" + "version" "3.1.5" + dependencies: + "is-typedarray" "^1.0.0" + +"typescript@^4.9.5", "typescript@>=3.7.2": + "integrity" "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==" + "resolved" "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz" + "version" "4.9.5" + +"uc.micro@^1.0.1", "uc.micro@^1.0.5": + "integrity" "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==" + "resolved" "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz" + "version" "1.0.6" + +"underscore@~1.13.2": + "integrity" "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + "resolved" "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz" + "version" "1.13.6" + +"unicode-length@^2.0.2": + "integrity" "sha512-Ph/j1VbS3/r77nhoY2WU0GWGjVYOHL3xpKp0y/Eq2e5r0mT/6b649vm7KFO6RdAdrZkYLdxphYVgvODxPB+Ebg==" + "resolved" "https://registry.npmjs.org/unicode-length/-/unicode-length-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "punycode" "^2.0.0" + "strip-ansi" "^3.0.1" + +"uri-js@^4.2.2": + "integrity" "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==" + "resolved" "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz" + "version" "4.4.1" + dependencies: + "punycode" "^2.1.0" + +"util-deprecate@^1.0.1", "util-deprecate@~1.0.1": + "integrity" "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + "resolved" "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz" + "version" "1.0.2" + +"util-extend@^1.0.1": + "integrity" "sha1-p8IW0mdUUWljeztu3GypEZ4v+T8=" + "resolved" "https://registry.npmjs.org/util-extend/-/util-extend-1.0.3.tgz" + "version" "1.0.3" + +"uuid@^8.3.2": + "integrity" "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + "resolved" "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz" + "version" "8.3.2" + +"validate-npm-package-license@^3.0.1": + "integrity" "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==" + "resolved" "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz" + "version" "3.0.4" + dependencies: + "spdx-correct" "^3.0.0" + "spdx-expression-parse" "^3.0.0" + +"wcwidth@^1.0.1": + "integrity" "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=" + "resolved" "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz" + "version" "1.0.1" + dependencies: + "defaults" "^1.0.3" + +"web-streams-polyfill@^3.0.3": + "integrity" "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" + "resolved" "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz" + "version" "3.2.1" + +"which-module@^2.0.0": + "integrity" "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=" + "resolved" "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" + "version" "2.0.0" + +"which@^2.0.1", "which@^2.0.2": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"widest-line@^3.1.0": + "integrity" "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==" + "resolved" "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz" + "version" "3.1.0" + dependencies: + "string-width" "^4.0.0" + +"word-wrap@^1.2.3": + "integrity" "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + "resolved" "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" + "version" "1.2.3" + +"workq@^3.0.0": + "integrity" "sha512-zCLwCuqc1WMiCtcbtKBtkgOkFHCvGsmkJ6IbgazOcctPXGjM8/AYKBjYaJvKzsMigbUW3CFApZudMor4E6D6zA==" + "resolved" "https://registry.npmjs.org/workq/-/workq-3.0.0.tgz" + "version" "3.0.0" + dependencies: + "debug" "^4.1.1" + +"wrap-ansi@^6.2.0": + "integrity" "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz" + "version" "6.2.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrap-ansi@^7.0.0": + "integrity" "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==" + "resolved" "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz" + "version" "7.0.0" + dependencies: + "ansi-styles" "^4.0.0" + "string-width" "^4.1.0" + "strip-ansi" "^6.0.0" + +"wrappy@1": + "integrity" "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "resolved" "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz" + "version" "1.0.2" + +"write-file-atomic@^3.0.0": + "integrity" "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==" + "resolved" "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz" + "version" "3.0.3" + dependencies: + "imurmurhash" "^0.1.4" + "is-typedarray" "^1.0.0" + "signal-exit" "^3.0.2" + "typedarray-to-buffer" "^3.1.5" + +"ws@^7", "ws@^7.5.5": + "version" "7.5.7" + +"xmlbuilder2@^3.0.2": + "integrity" "sha512-h4MUawGY21CTdhV4xm3DG9dgsqyhDkZvVJBx88beqX8wJs3VgyGQgAn5VreHuae6unTQxh115aMK5InCVmOIKw==" + "resolved" "https://registry.npmjs.org/xmlbuilder2/-/xmlbuilder2-3.0.2.tgz" + "version" "3.0.2" dependencies: "@oozcitak/dom" "1.15.10" "@oozcitak/infra" "1.0.8" "@oozcitak/util" "8.3.8" "@types/node" "*" - js-yaml "3.14.0" - -xmlcreate@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/xmlcreate/-/xmlcreate-2.0.4.tgz#0c5ab0f99cdd02a81065fa9cd8f8ae87624889be" - integrity sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg== - -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== - -yaml@^1.10.2: - version "1.10.2" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" - integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== - -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - -yargs-parser@^20.2.3: - version "20.2.9" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" - integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== - -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - -yocto-queue@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" - integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== - -yoga-layout-prebuilt@^1.9.6: - version "1.10.0" - resolved "https://registry.yarnpkg.com/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz#2936fbaf4b3628ee0b3e3b1df44936d6c146faa6" - integrity sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g== + "js-yaml" "3.14.0" + +"xmlcreate@^2.0.4": + "integrity" "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==" + "resolved" "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz" + "version" "2.0.4" + +"y18n@^4.0.0": + "integrity" "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==" + "resolved" "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz" + "version" "4.0.3" + +"yallist@^4.0.0": + "integrity" "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "resolved" "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz" + "version" "4.0.0" + +"yaml@^1.10.2": + "integrity" "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" + "resolved" "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz" + "version" "1.10.2" + +"yargs-parser@^18.1.2": + "integrity" "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz" + "version" "18.1.3" + dependencies: + "camelcase" "^5.0.0" + "decamelize" "^1.2.0" + +"yargs-parser@^20.2.3": + "integrity" "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==" + "resolved" "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz" + "version" "20.2.9" + +"yargs@^15.0.2": + "integrity" "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==" + "resolved" "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz" + "version" "15.4.1" + dependencies: + "cliui" "^6.0.0" + "decamelize" "^1.2.0" + "find-up" "^4.1.0" + "get-caller-file" "^2.0.1" + "require-directory" "^2.1.1" + "require-main-filename" "^2.0.0" + "set-blocking" "^2.0.0" + "string-width" "^4.2.0" + "which-module" "^2.0.0" + "y18n" "^4.0.0" + "yargs-parser" "^18.1.2" + +"yocto-queue@^0.1.0": + "integrity" "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + "resolved" "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz" + "version" "0.1.0" + +"yoga-layout-prebuilt@^1.9.6": + "integrity" "sha512-YnOmtSbv4MTf7RGJMK0FvZ+KD8OEe/J5BNnR0GHhD8J/XcG/Qvxgszm0Un6FTHWW4uHlTgP0IztiXQnGyIR45g==" + "resolved" "https://registry.npmjs.org/yoga-layout-prebuilt/-/yoga-layout-prebuilt-1.10.0.tgz" + "version" "1.10.0" dependencies: "@types/yoga-layout" "1.9.2"