diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/flatten_hit.js b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/flatten_hit.ts similarity index 80% rename from src/legacy/core_plugins/data/public/index_patterns/index_patterns/flatten_hit.js rename to src/legacy/core_plugins/data/public/index_patterns/index_patterns/flatten_hit.ts index b9d25dc0ccb41c..b10c0dca857ff1 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/flatten_hit.js +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/flatten_hit.ts @@ -18,18 +18,19 @@ */ import _ from 'lodash'; +import { IndexPattern } from './'; // Takes a hit, merges it with any stored/scripted fields, and with the metaFields // returns a flattened version -function flattenHit(indexPattern, hit, deep) { - const flat = {}; +function flattenHit(indexPattern: IndexPattern, hit: Record, deep: boolean) { + const flat = {} as Record; // recursively merge _source const fields = indexPattern.fields.byName; - (function flatten(obj, keyPrefix) { + (function flatten(obj, keyPrefix = '') { keyPrefix = keyPrefix ? keyPrefix + '.' : ''; - _.forOwn(obj, function (val, key) { + _.forOwn(obj, function(val, key) { key = keyPrefix + key; if (deep) { @@ -52,28 +53,28 @@ function flattenHit(indexPattern, hit, deep) { } else if (Array.isArray(flat[key])) { flat[key].push(val); } else { - flat[key] = [ flat[key], val ]; + flat[key] = [flat[key], val]; } return; } flatten(val, key); }); - }(hit._source)); + })(hit._source); return flat; } -function decorateFlattenedWrapper(hit, metaFields) { - return function (flattened) { +function decorateFlattenedWrapper(hit: Record, metaFields: Record) { + return function(flattened: Record) { // assign the meta fields - _.each(metaFields, function (meta) { + _.each(metaFields, function(meta) { if (meta === '_source') return; flattened[meta] = hit[meta]; }); // unwrap computed fields - _.forOwn(hit.fields, function (val, key) { + _.forOwn(hit.fields, function(val, key: any) { if (key[0] === '_' && !_.contains(metaFields, key)) return; flattened[key] = Array.isArray(val) && val.length === 1 ? val[0] : val; }); @@ -88,8 +89,12 @@ function decorateFlattenedWrapper(hit, metaFields) { * * @internal */ -export function flattenHitWrapper(indexPattern, metaFields = {}, cache = new WeakMap()) { - return function cachedFlatten(hit, deep = false) { +export function flattenHitWrapper( + indexPattern: IndexPattern, + metaFields = {}, + cache = new WeakMap() +) { + return function cachedFlatten(hit: Record, deep = false) { const decorateFlattened = decorateFlattenedWrapper(hit, metaFields); const cached = cache.get(hit); const flattened = cached || flattenHit(indexPattern, hit, deep); diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index.ts b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index.ts index 31ff03d51f97a6..4ca7e053a4492f 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index.ts +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index.ts @@ -17,7 +17,6 @@ * under the License. */ -// @ts-ignore export * from './flatten_hit'; export * from './format_hit'; export * from './index_pattern'; diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.tsx b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.tsx index fe8cf2442db087..ec1005bdce2610 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.tsx +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns/index_pattern.tsx @@ -38,7 +38,6 @@ import { Field, FieldList, FieldType } from '../fields'; import { createFieldsFetcher } from './_fields_fetcher'; import { getRoutes } from '../utils'; import { formatHitProvider } from './format_hit'; -// @ts-ignore import { flattenHitWrapper } from './flatten_hit'; import { IndexPatternsApiClient } from './index_patterns_api_client'; diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.mock.ts b/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.mock.ts index d4e5cc011d5f3b..5dcf4005ef4e86 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.mock.ts +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.mock.ts @@ -18,8 +18,7 @@ */ import { IndexPatternsService, IndexPatternsSetup } from '.'; -// @ts-ignore -import { flattenHitWrapper } from './index_patterns/flatten_hit'; +import { flattenHitWrapper } from './index_patterns'; type IndexPatternsServiceClientContract = PublicMethodsOf; diff --git a/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts b/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts index 8ecca8fa94a142..5f8a66f733c42e 100644 --- a/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts +++ b/src/legacy/core_plugins/data/public/index_patterns/index_patterns_service.ts @@ -19,8 +19,7 @@ import { UiSettingsClientContract, SavedObjectsClientContract } from 'src/core/public'; import { Field, FieldList, FieldType } from './fields'; -// @ts-ignore -import { createFlattenHitWrapper } from './index_patterns/flatten_hit'; +import { createFlattenHitWrapper } from './index_patterns'; import { createIndexPatternSelect } from './components'; import { formatHitProvider, diff --git a/src/legacy/core_plugins/kbn_doc_views/public/views/table/table.test.tsx b/src/legacy/core_plugins/kbn_doc_views/public/views/table/table.test.tsx index 03437e7b1ac261..d70402af83345a 100644 --- a/src/legacy/core_plugins/kbn_doc_views/public/views/table/table.test.tsx +++ b/src/legacy/core_plugins/kbn_doc_views/public/views/table/table.test.tsx @@ -21,7 +21,6 @@ import { mount } from 'enzyme'; import { IndexPattern } from 'ui/index_patterns'; // @ts-ignore import { findTestSubject } from '@elastic/eui/lib/test'; -// @ts-ignore import { flattenHitWrapper } from '../../../../data/public/index_patterns/index_patterns/flatten_hit'; import { DocViewTable } from './table';