diff --git a/package.json b/package.json index 539d3a067665f..a79d41a67f580 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "@elastic/eui": "18.3.0", "@elastic/filesaver": "1.1.2", "@elastic/good": "8.1.1-kibana2", - "@elastic/numeral": "2.3.3", + "@elastic/numeral": "2.3.5", "@elastic/request-crypto": "^1.0.2", "@elastic/ui-ace": "0.2.3", "@hapi/wreck": "^15.0.1", diff --git a/src/legacy/core_plugins/kibana/ui_setting_defaults.js b/src/legacy/core_plugins/kibana/ui_setting_defaults.js index 02a4f10a543c4..744ede891b84a 100644 --- a/src/legacy/core_plugins/kibana/ui_setting_defaults.js +++ b/src/legacy/core_plugins/kibana/ui_setting_defaults.js @@ -815,6 +815,9 @@ export function getUiSettingDefaults() { value: 'en', type: 'select', options: numeralLanguageIds, + optionLabels: Object.fromEntries( + numeralLanguages.map(language => [language.id, language.name]) + ), description: i18n.translate('kbn.advancedSettings.format.formattingLocaleText', { defaultMessage: `{numeralLanguageLink} locale`, description: diff --git a/src/plugins/data/common/field_formats/converters/boolean.ts b/src/plugins/data/common/field_formats/converters/boolean.ts index 6cc6c71465d50..a824f9e73fb1e 100644 --- a/src/plugins/data/common/field_formats/converters/boolean.ts +++ b/src/plugins/data/common/field_formats/converters/boolean.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; @@ -24,7 +25,9 @@ import { asPrettyString } from '../utils'; export class BoolFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.BOOLEAN; - static title = 'Boolean'; + static title = i18n.translate('data.fieldFormats.boolean.title', { + defaultMessage: 'Boolean', + }); static fieldType = [KBN_FIELD_TYPES.BOOLEAN, KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.STRING]; textConvert: TextContextTypeConvert = value => { diff --git a/src/plugins/data/common/field_formats/converters/bytes.ts b/src/plugins/data/common/field_formats/converters/bytes.ts index f1110add3e7de..13770e087b2a7 100644 --- a/src/plugins/data/common/field_formats/converters/bytes.ts +++ b/src/plugins/data/common/field_formats/converters/bytes.ts @@ -17,12 +17,15 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { NumeralFormat } from './numeral'; import { FIELD_FORMAT_IDS } from '../types'; export class BytesFormat extends NumeralFormat { static id = FIELD_FORMAT_IDS.BYTES; - static title = 'Bytes'; + static title = i18n.translate('data.fieldFormats.bytes.title', { + defaultMessage: 'Bytes', + }); id = BytesFormat.id; title = BytesFormat.title; diff --git a/src/plugins/data/common/field_formats/converters/color.ts b/src/plugins/data/common/field_formats/converters/color.ts index 20d9d6aee6d26..babf3dbd8c451 100644 --- a/src/plugins/data/common/field_formats/converters/color.ts +++ b/src/plugins/data/common/field_formats/converters/color.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { findLast, cloneDeep, template, escape } from 'lodash'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; @@ -28,7 +29,9 @@ const convertTemplate = template('<%- val %>') export class ColorFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.COLOR; - static title = 'Color'; + static title = i18n.translate('data.fieldFormats.color.title', { + defaultMessage: 'Color', + }); static fieldType = [KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.STRING]; getParamDefaults() { diff --git a/src/plugins/data/common/field_formats/converters/date.ts b/src/plugins/data/common/field_formats/converters/date.ts index 06af64d9c17c2..3888df051b118 100644 --- a/src/plugins/data/common/field_formats/converters/date.ts +++ b/src/plugins/data/common/field_formats/converters/date.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { memoize, noop } from 'lodash'; import moment from 'moment'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; @@ -25,7 +26,9 @@ import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; export class DateFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.DATE; - static title = 'Date'; + static title = i18n.translate('data.fieldFormats.date.title', { + defaultMessage: 'Date', + }); static fieldType = KBN_FIELD_TYPES.DATE; private memoizedConverter: Function = noop; diff --git a/src/plugins/data/common/field_formats/converters/date_nanos.ts b/src/plugins/data/common/field_formats/converters/date_nanos.ts index 8b0f8b111694e..93f3a62842749 100644 --- a/src/plugins/data/common/field_formats/converters/date_nanos.ts +++ b/src/plugins/data/common/field_formats/converters/date_nanos.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import moment, { Moment } from 'moment'; import { memoize, noop } from 'lodash'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; @@ -70,7 +71,9 @@ export function formatWithNanos( export class DateNanosFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.DATE_NANOS; - static title = 'Date Nanos'; + static title = i18n.translate('data.fieldFormats.date_nanos.title', { + defaultMessage: 'Date nanos', + }); static fieldType = KBN_FIELD_TYPES.DATE; private memoizedConverter: Function = noop; diff --git a/src/plugins/data/common/field_formats/converters/date_server.ts b/src/plugins/data/common/field_formats/converters/date_server.ts index cc7eba966cf0d..9be8f066539f1 100644 --- a/src/plugins/data/common/field_formats/converters/date_server.ts +++ b/src/plugins/data/common/field_formats/converters/date_server.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { memoize, noop } from 'lodash'; import moment from 'moment-timezone'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; @@ -30,14 +31,16 @@ import { export class DateFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.DATE; - static title = 'Date'; + static title = i18n.translate('data.fieldFormats.date.title', { + defaultMessage: 'Date', + }); static fieldType = KBN_FIELD_TYPES.DATE; private memoizedConverter: Function = noop; private memoizedPattern: string = ''; private timeZone: string = ''; - constructor(params: IFieldFormatMetaParams, getConfig: GetConfigFn) { + constructor(params: IFieldFormatMetaParams, getConfig?: GetConfigFn) { super(params, getConfig); this.memoizedConverter = memoize((val: any) => { diff --git a/src/plugins/data/common/field_formats/converters/duration.ts b/src/plugins/data/common/field_formats/converters/duration.ts index 8caa11be5ca79..3b3b6f87f36f9 100644 --- a/src/plugins/data/common/field_formats/converters/duration.ts +++ b/src/plugins/data/common/field_formats/converters/duration.ts @@ -31,76 +31,76 @@ const ratioToSeconds: Record = { const HUMAN_FRIENDLY = 'humanize'; const DEFAULT_OUTPUT_PRECISION = 2; const DEFAULT_INPUT_FORMAT = { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.seconds', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.seconds', { defaultMessage: 'Seconds', }), kind: 'seconds', }; const inputFormats = [ { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.picoseconds', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.picoseconds', { defaultMessage: 'Picoseconds', }), kind: 'picoseconds', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.nanoseconds', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.nanoseconds', { defaultMessage: 'Nanoseconds', }), kind: 'nanoseconds', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.microseconds', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.microseconds', { defaultMessage: 'Microseconds', }), kind: 'microseconds', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.milliseconds', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.milliseconds', { defaultMessage: 'Milliseconds', }), kind: 'milliseconds', }, { ...DEFAULT_INPUT_FORMAT }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.minutes', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.minutes', { defaultMessage: 'Minutes', }), kind: 'minutes', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.hours', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.hours', { defaultMessage: 'Hours', }), kind: 'hours', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.days', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.days', { defaultMessage: 'Days', }), kind: 'days', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.weeks', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.weeks', { defaultMessage: 'Weeks', }), kind: 'weeks', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.months', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.months', { defaultMessage: 'Months', }), kind: 'months', }, { - text: i18n.translate('data.common.fieldFormats.duration.inputFormats.years', { + text: i18n.translate('data.fieldFormats.duration.inputFormats.years', { defaultMessage: 'Years', }), kind: 'years', }, ]; const DEFAULT_OUTPUT_FORMAT = { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.humanize', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.humanize', { defaultMessage: 'Human Readable', }), method: 'humanize', @@ -108,49 +108,49 @@ const DEFAULT_OUTPUT_FORMAT = { const outputFormats = [ { ...DEFAULT_OUTPUT_FORMAT }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asMilliseconds', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asMilliseconds', { defaultMessage: 'Milliseconds', }), method: 'asMilliseconds', }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asSeconds', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asSeconds', { defaultMessage: 'Seconds', }), method: 'asSeconds', }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asMinutes', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asMinutes', { defaultMessage: 'Minutes', }), method: 'asMinutes', }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asHours', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asHours', { defaultMessage: 'Hours', }), method: 'asHours', }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asDays', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asDays', { defaultMessage: 'Days', }), method: 'asDays', }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asWeeks', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asWeeks', { defaultMessage: 'Weeks', }), method: 'asWeeks', }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asMonths', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asMonths', { defaultMessage: 'Months', }), method: 'asMonths', }, { - text: i18n.translate('data.common.fieldFormats.duration.outputFormats.asYears', { + text: i18n.translate('data.fieldFormats.duration.outputFormats.asYears', { defaultMessage: 'Years', }), method: 'asYears', @@ -167,7 +167,9 @@ function parseInputAsDuration(val: number, inputFormat: string) { export class DurationFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.DURATION; - static title = 'Duration'; + static title = i18n.translate('data.fieldFormats.duration.title', { + defaultMessage: 'Duration', + }); static fieldType = KBN_FIELD_TYPES.NUMBER; static inputFormats = inputFormats; static outputFormats = outputFormats; @@ -189,7 +191,12 @@ export class DurationFormat extends FieldFormat { const outputFormat = this.param('outputFormat') as keyof Duration; const outputPrecision = this.param('outputPrecision'); const human = this.isHuman(); - const prefix = val < 0 && human ? 'minus ' : ''; + const prefix = + val < 0 && human + ? i18n.translate('data.fieldFormats.duration.negativeLabel', { + defaultMessage: 'minus', + }) + ' ' + : ''; const duration = parseInputAsDuration(val, inputFormat) as Record; const formatted = duration[outputFormat](); const precise = human ? formatted : formatted.toFixed(outputPrecision); diff --git a/src/plugins/data/common/field_formats/converters/ip.ts b/src/plugins/data/common/field_formats/converters/ip.ts index 3e011e8d7dde8..8e65d9c12d6c8 100644 --- a/src/plugins/data/common/field_formats/converters/ip.ts +++ b/src/plugins/data/common/field_formats/converters/ip.ts @@ -17,13 +17,16 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; export class IpFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.IP; - static title = 'IP Address'; + static title = i18n.translate('data.fieldFormats.ip.title', { + defaultMessage: 'IP address', + }); static fieldType = KBN_FIELD_TYPES.IP; textConvert: TextContextTypeConvert = val => { diff --git a/src/plugins/data/common/field_formats/converters/number.ts b/src/plugins/data/common/field_formats/converters/number.ts index 686329e887682..17c7006f622a3 100644 --- a/src/plugins/data/common/field_formats/converters/number.ts +++ b/src/plugins/data/common/field_formats/converters/number.ts @@ -17,12 +17,15 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { NumeralFormat } from './numeral'; import { FIELD_FORMAT_IDS } from '../types'; export class NumberFormat extends NumeralFormat { static id = FIELD_FORMAT_IDS.NUMBER; - static title = 'Number'; + static title = i18n.translate('data.fieldFormats.number.title', { + defaultMessage: 'Number', + }); id = NumberFormat.id; title = NumberFormat.title; diff --git a/src/plugins/data/common/field_formats/converters/percent.ts b/src/plugins/data/common/field_formats/converters/percent.ts index d839a54dd0c2c..8cbc2d36d0ef1 100644 --- a/src/plugins/data/common/field_formats/converters/percent.ts +++ b/src/plugins/data/common/field_formats/converters/percent.ts @@ -17,12 +17,15 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { NumeralFormat } from './numeral'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; export class PercentFormat extends NumeralFormat { static id = FIELD_FORMAT_IDS.PERCENT; - static title = 'Percentage'; + static title = i18n.translate('data.fieldFormats.percent.title', { + defaultMessage: 'Percentage', + }); id = PercentFormat.id; title = PercentFormat.title; diff --git a/src/plugins/data/common/field_formats/converters/relative_date.ts b/src/plugins/data/common/field_formats/converters/relative_date.ts index 273b2cef28a03..7c7f20ee9c411 100644 --- a/src/plugins/data/common/field_formats/converters/relative_date.ts +++ b/src/plugins/data/common/field_formats/converters/relative_date.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import moment from 'moment'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; @@ -24,7 +25,9 @@ import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; export class RelativeDateFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.RELATIVE_DATE; - static title = 'Relative Date'; + static title = i18n.translate('data.fieldFormats.relative_date.title', { + defaultMessage: 'Relative date', + }); static fieldType = KBN_FIELD_TYPES.DATE; textConvert: TextContextTypeConvert = val => { diff --git a/src/plugins/data/common/field_formats/converters/static_lookup.ts b/src/plugins/data/common/field_formats/converters/static_lookup.ts index 419e7c786640b..c835afd3db5ec 100644 --- a/src/plugins/data/common/field_formats/converters/static_lookup.ts +++ b/src/plugins/data/common/field_formats/converters/static_lookup.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; import { TextContextTypeConvert, FIELD_FORMAT_IDS } from '../types'; @@ -33,7 +34,9 @@ function convertLookupEntriesToMap(lookupEntries: any[]) { export class StaticLookupFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.STATIC_LOOKUP; - static title = 'Static Lookup'; + static title = i18n.translate('data.fieldFormats.static_lookup.title', { + defaultMessage: 'Static lookup', + }); static fieldType = [ KBN_FIELD_TYPES.STRING, KBN_FIELD_TYPES.NUMBER, diff --git a/src/plugins/data/common/field_formats/converters/string.ts b/src/plugins/data/common/field_formats/converters/string.ts index 1a095d4fd3cfd..22df9f1f88bfb 100644 --- a/src/plugins/data/common/field_formats/converters/string.ts +++ b/src/plugins/data/common/field_formats/converters/string.ts @@ -27,43 +27,43 @@ import { shortenDottedString } from '../../utils'; const TRANSFORM_OPTIONS = [ { kind: false, - text: i18n.translate('data.common.fieldFormats.string.transformOptions.none', { + text: i18n.translate('data.fieldFormats.string.transformOptions.none', { defaultMessage: '- None -', }), }, { kind: 'lower', - text: i18n.translate('data.common.fieldFormats.string.transformOptions.lower', { + text: i18n.translate('data.fieldFormats.string.transformOptions.lower', { defaultMessage: 'Lower Case', }), }, { kind: 'upper', - text: i18n.translate('data.common.fieldFormats.string.transformOptions.upper', { + text: i18n.translate('data.fieldFormats.string.transformOptions.upper', { defaultMessage: 'Upper Case', }), }, { kind: 'title', - text: i18n.translate('data.common.fieldFormats.string.transformOptions.title', { + text: i18n.translate('data.fieldFormats.string.transformOptions.title', { defaultMessage: 'Title Case', }), }, { kind: 'short', - text: i18n.translate('data.common.fieldFormats.string.transformOptions.short', { + text: i18n.translate('data.fieldFormats.string.transformOptions.short', { defaultMessage: 'Short Dots', }), }, { kind: 'base64', - text: i18n.translate('data.common.fieldFormats.string.transformOptions.base64', { + text: i18n.translate('data.fieldFormats.string.transformOptions.base64', { defaultMessage: 'Base64 Decode', }), }, { kind: 'urlparam', - text: i18n.translate('data.common.fieldFormats.string.transformOptions.url', { + text: i18n.translate('data.fieldFormats.string.transformOptions.url', { defaultMessage: 'URL Param Decode', }), }, @@ -72,7 +72,9 @@ const DEFAULT_TRANSFORM_OPTION = false; export class StringFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.STRING; - static title = 'String'; + static title = i18n.translate('data.fieldFormats.string.title', { + defaultMessage: 'String', + }); static fieldType = [ KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.BOOLEAN, diff --git a/src/plugins/data/common/field_formats/converters/truncate.ts b/src/plugins/data/common/field_formats/converters/truncate.ts index dc25d71ec95d7..70b2a3dff18f2 100644 --- a/src/plugins/data/common/field_formats/converters/truncate.ts +++ b/src/plugins/data/common/field_formats/converters/truncate.ts @@ -17,6 +17,7 @@ * under the License. */ +import { i18n } from '@kbn/i18n'; import { trunc } from 'lodash'; import { KBN_FIELD_TYPES } from '../../kbn_field_types/types'; import { FieldFormat } from '../field_format'; @@ -26,7 +27,9 @@ const omission = '...'; export class TruncateFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.TRUNCATE; - static title = 'Truncated String'; + static title = i18n.translate('data.fieldFormats.truncated_string.title', { + defaultMessage: 'Truncated string', + }); static fieldType = KBN_FIELD_TYPES.STRING; textConvert: TextContextTypeConvert = val => { diff --git a/src/plugins/data/common/field_formats/converters/url.ts b/src/plugins/data/common/field_formats/converters/url.ts index 7c3e1e1d2cad1..60d7efdba34ff 100644 --- a/src/plugins/data/common/field_formats/converters/url.ts +++ b/src/plugins/data/common/field_formats/converters/url.ts @@ -35,19 +35,19 @@ const whitelistUrlSchemes = ['http://', 'https://']; const URL_TYPES = [ { kind: 'a', - text: i18n.translate('data.common.fieldFormats.url.types.link', { + text: i18n.translate('data.fieldFormats.url.types.link', { defaultMessage: 'Link', }), }, { kind: 'img', - text: i18n.translate('data.common.fieldFormats.url.types.img', { + text: i18n.translate('data.fieldFormats.url.types.img', { defaultMessage: 'Image', }), }, { kind: 'audio', - text: i18n.translate('data.common.fieldFormats.url.types.audio', { + text: i18n.translate('data.fieldFormats.url.types.audio', { defaultMessage: 'Audio', }), }, @@ -56,7 +56,9 @@ const DEFAULT_URL_TYPE = 'a'; export class UrlFormat extends FieldFormat { static id = FIELD_FORMAT_IDS.URL; - static title = 'Url'; + static title = i18n.translate('data.fieldFormats.url.title', { + defaultMessage: 'Url', + }); static fieldType = [ KBN_FIELD_TYPES.NUMBER, KBN_FIELD_TYPES.BOOLEAN, diff --git a/yarn.lock b/yarn.lock index 7ebf896964378..a35cd1d541762 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2043,6 +2043,11 @@ resolved "https://registry.yarnpkg.com/@elastic/numeral/-/numeral-2.3.3.tgz#94d38a35bd315efa7a6918b22695128fc40a885e" integrity sha512-0OyB9oztlYIq8F1LHjcNf+T089PKfYw78tgUY+q2dtox/jmb4xzFKtI9kv1hwAt5tcgBUTtUMK9kszpSh1UZaQ== +"@elastic/numeral@2.3.5": + version "2.3.5" + resolved "https://registry.yarnpkg.com/@elastic/numeral/-/numeral-2.3.5.tgz#fcaeac57ddc55cd4b7f0b9c7e070c242dd5d0600" + integrity sha512-lJVZHPuI2csrfwDIEdKedFqNIF+5YsyqvX2soAqhu49iKOd9n7tifLRn30vP6D7oKd+6HsiGfPzT0nzdJWsexQ== + "@elastic/request-crypto@^1.0.2": version "1.0.2" resolved "https://registry.yarnpkg.com/@elastic/request-crypto/-/request-crypto-1.0.2.tgz#bf27bf009227166f3eeb2b5193a108752335ebd3"