Skip to content

Commit

Permalink
TypeScriptify index_patterns/index_patterns/flatten_hit.js (#45269) (#…
Browse files Browse the repository at this point in the history
…45763)

* Typescriptify flatten_hit.js

* Fix path
  • Loading branch information
Artyom Gospodarsky committed Sep 16, 2019
1 parent 7b12301 commit ec4de99
Show file tree
Hide file tree
Showing 6 changed files with 19 additions and 19 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, any>, deep: boolean) {
const flat = {} as Record<string, any>;

// 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) {
Expand All @@ -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<string, any>, metaFields: Record<string, any>) {
return function(flattened: Record<string, any>) {
// 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;
});
Expand All @@ -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<string, any>, deep = false) {
const decorateFlattened = decorateFlattenedWrapper(hit, metaFields);
const cached = cache.get(hit);
const flattened = cached || flattenHit(indexPattern, hit, deep);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
* under the License.
*/

// @ts-ignore
export * from './flatten_hit';
export * from './format_hit';
export * from './index_pattern';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<IndexPatternsService>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand Down

0 comments on commit ec4de99

Please sign in to comment.