opensearch-project / OpenSearch-Dashboards

📊 Open source visualization dashboards for OpenSearch.
https://opensearch.org/docs/latest/dashboards/index/
Apache License 2.0
1.61k stars 826 forks source link

[Research] lodash usage in opensearch dashboards #3660

Open ananzh opened 1 year ago

ananzh commented 1 year ago

Goal for this task:

Aigerim-ai commented 1 year ago

Hi @ananzh, I have couple of question to clarify:

  1. should I also define what method does?
  2. Lodash function means(differenciate with Lodash methods), functions which use Lodash method? could you provide me example of Lodash function, I found in Lodash documentation examples https://lodash.com/docs/3.10.1#after, but there are not so many of them
Aigerim-ai commented 1 year ago

@ananzh I found that in some files we use just import _ from 'lodash'( example: OpenSearch-Dashboards/test/functional/apps/visualize/_charttypes.ts), then calling method using .remove() my question is does this affects our runtime or memory space? I believe we need to import exact method which we are using in the file to reduce ambiguity? What is the reason behind not specifying specific method using, and defining that later?

also in some files we import from lodash and don't use its methods for example in OpenSearch-Dashboards/src/plugins/dashboard/public/application/actions/add_to_library_action.tsx

Aigerim-ai commented 1 year ago

[Research] lodash usage in opensearch dashboards.docx

joshuarrrr commented 1 year ago

@Aigerim-ai Thanks for the doc, this is an awesome start!

nurSaadat commented 1 year ago

Thank you @Aigerim-ai for organizing a doc with the functions you found so far!

I'd like to help, just to double-check the functions in the files and edit the doc a little bit (by changing the absolute path to the relative path, so it is more general)

Aigerim-ai commented 1 year ago

Thank you @nurSaadat let's work on this issue together!

nurSaadat commented 1 year ago

Thank you for finding this issue @ananzh

I wrote a Python script that allows to find all instances of loadash functions:

import os

def search_directory(directory_path, search_string):
    excluded_dirs = {"plugins", "node_modules"}  # Directories to exclude from the search
    result = []

    for root, dirs, files in os.walk(directory_path):
        # Exclude directories that match any of the excluded directories
        dirs[:] = [d for d in dirs if d not in excluded_dirs]
        files[:] = [f for f in files if f.endswith(('.ts', '.js'))]
        for file_name in files:
            file_path = os.path.join(root, file_name)
            with open(file_path, "r") as f:
                for line_num, line in enumerate(f, start=1):
                    if search_string in line:
                        result.append(file_path)
    return result

def search_files(files, search_str):
    separator = "=" * 20

    # Loop over the files
    for file in files:
        # Open the file and search for the string
        print("Found in {0}: ".format(file))
        with open(file, 'r') as f:
            for line_num, line in enumerate(f, start=1):
                if search_str in line:
                    print("line {0}:{1}".format(line_num, line.rstrip()))
        print(separator)

# Usage example
files_with_lodash = search_directory("./OpenSearch-Dashboards", "import _ from 'lodash'")
search_files(files_with_lodash, "_.")

Our team plans to use it to find and replace all function occurrences.

nurSaadat commented 1 year ago

Update: Realized, that the search shouldn't exclude "plugins" folder. I wanted to exclude the plugins that I have installed manually, but it excluded other folders that should be present.

Also, not every function starts with _. (underscore and dot). Named imports are still undetected. I realized it after comparing manually collected list of functions with the one which was generated using my code.

Currently, I want my code to be able to detect all functions :+1:

ananzh commented 1 year ago

[Proposal] replace lodash methods and other usage to native built-in JavaScript methods #3661

Hi @ananzh, I have couple of question to clarify:

  1. should I also define what method does?
  2. Lodash function means(differenciate with Lodash methods), functions which use Lodash method? could you provide me example of Lodash function, I found in Lodash documentation examples https://lodash.com/docs/3.10.1#after, but there are not so many of them

@Aigerim-ai For Q#1, you could propose and update methods/solutions in the proposal issue https://github.com/opensearch-project/OpenSearch-Dashboards/issues/3661

For Q#2, you could search from 'lodash' in the code base to see what lodash functions we used in our repo.

ananzh commented 1 year ago

I found that in some files we use just import _ from 'lodash'( example: OpenSearch-Dashboards/test/functional/apps/visualize/_charttypes.ts), then calling method using .remove() my question is does this affects our runtime or memory space? I believe we need to import exact method which we are using in the file to reduce ambiguity? What is the reason behind not specifying specific method using, and defining that later?

@Aigerim-ai Thank you for checking and helping here. I think you are correct. Importing the entire lodash library instead of importing only the specific method will affect the bundle size. We have multiple files using diff methods fromlodash and Webpack will only include one instance of lodash in the final bundle. However, even though there's only one instance of lodash in the final bundle, it is still the entire library, which can lead to a larger bundle size and slower load times.

Since we forked this repo, I am not quite sure why we are bundling the entire package. But these legacy code are very old and have some errors, like what you found here (import from lodash and don't use its methods). I have no idea why the code is written like this.... maybe they are written before the practice of importing specific methods was widely adopted or maybe because given a lot of different methods are used the bundle size is not so different.

ananzh commented 1 year ago

This is great progress and kudos to both @Aigerim-ai and @nurSaadat .

@nurSaadat love this script and it could also be used to find usage of other old packages. I would suggest you add some step and create an issue, for example Find package usage using Python script and make it general. This is good knowledge share which can greatly help others.

@Aigerim-ai I checked the doc file you shared. It seems you already done the research task by categorizing the lodash usage. If you want to summarize and add a comment in the research task with all the usages instead of using a doc file, it is better but not requried.

Would anyone of you like to move on to Proposal task https://github.com/opensearch-project/OpenSearch-Dashboards/issues/3661?

Aigerim-ai commented 1 year ago

Hi there! listing all of the methods which are used in the project

_.cloneDeepWith( value, customizer ) OpenSearch-Dashboards/test/functional/services/common/browser.ts
_.keyBy( collection, iteratee ) OpenSearch-Dashboards/test/functional/page_objects/management/saved_objects_page.tsOpenSearch-Dashboards/test/functional/apps/management/_import_objects.js
_.remove(array, function) OpenSearch-Dashboards/test/functional/apps/visualize/_chart_types.ts
_.get(object, path, [defaultValue]) OpenSearch-Dashboards/test/common/services/deployment.tsOpenSearch-Dashboards/test/api_integration/apis/dql_telemetry/dql_telemetry.jsOpenSearch-Dashboards/src/plugins/visualize/public/application/utils/migrate_app_state.tsOpenSearch-Dashboards/src/plugins/visualizations/server/saved_objects/visualization_migrations.tsOpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.tsOpenSearch-Dashboards/src/plugins/visualizations/public/legacy/vis_update_state.jsOpenSearch-Dashboards/src/plugins/visualizations/public/legacy/build_pipeline.tsOpenSearch-Dashboards/src/plugins/visualizations/public/expressions/visualization_function.tsOpenSearch-Dashboards/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsOpenSearch-Dashboards/src/plugins/visualizations/public/components/visualization.tsx
.uniq(array).map( collection, iteratee ) OpenSearch-Dashboards/test/api_integration/apis/telemetry/telemetry_local.js
_.set(object, path, value) -> @elastic/safer-lodash-set OpenSearch-Dashboards/test/api_integration/apis/saved_objects/migrations.tsOpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.tsOpenSearch-Dashboards/src/plugins/visualizations/public/legacy/vis_update_state.js
_.omit( object, paths ) OpenSearch-Dashboards/test/api_integration/apis/saved_objects/migrations.tsOpenSearch-Dashboards/test/api_integration/apis/saved_objects/bulk_update.jsOpenSearch-Dashboards/src/plugins/visualize/public/application/utils/migrate_app_state.tsOpenSearch-Dashboards/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts
_.sortBy(collection, iteratees) OpenSearch-Dashboards/test/api_integration/apis/saved_objects/bulk_update.jsOpenSearch-Dashboards/packages/osd-ui-framework/src/services/sort/sortable_properties.js
_.isNull(value) OpenSearch-Dashboards/tasks/licenses_csv_report.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.js
_.isUndefined(value) OpenSearch-Dashboards/tasks/licenses_csv_report.jsOpenSearch-Dashboards/src/plugins/visualizations/public/expressions/vis.ts
_.assign( dest_object, src_obj ) OpenSearch-Dashboards/src/test_utils/get_url.js
_.pickBy( object, predicate ) OpenSearch-Dashboards/src/test_utils/get_url.js
_.pick( object, paths ) OpenSearch-Dashboards/src/test_utils/get_url.js
_.template( string, options ) OpenSearch-Dashboards/src/setup_node_env/harden/lodash_template.js
_.cloneDeep( value ) OpenSearch-Dashboards/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsxOpenSearch-Dashboards/src/plugins/visualize/public/application/utils/get_visualization_instance.tsOpenSearch-Dashboards/src/plugins/visualizations/server/saved_objects/visualization_migrations.tsOpenSearch-Dashboards/src/plugins/visualizations/public/legacy/vis_update_state.test.jsOpenSearch-Dashboards/src/plugins/visualizations/public/vis_types/react_vis_type.test.tsOpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.tsOpenSearch-Dashboards/src/plugins/visualizations/public/legacy/vis_update_state.jsOpenSearch-Dashboards/src/plugins/visualizations/public/expressions/vis.tsOpenSearch-Dashboards/src/plugins/visualizations/public/embeddable/visualize_embeddable.tsOpenSearch-Dashboards/src/plugins/visualizations/public/vis.ts
_.isEqual( value1, value2) OpenSearch-Dashboards/src/plugins/visualize/public/application/utils/use/use_visualize_app_state.tsxOpenSearch-Dashboards/src/plugins/visualize/public/application/utils/use/use_editor_updates.tsOpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.tsOpenSearch-Dashboards/src/plugins/visualizations/public/legacy/vis_update_state.test.jsOpenSearch-Dashboards/src/plugins/visualizations/public/embeddable/visualize_embeddable.ts
_.has(object, path) OpenSearch-Dashboards/src/plugins/visualize/public/application/utils/migrate_legacy_query.tsOpenSearch-Dashboards/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts
_.isFunction( value ) OpenSearch-Dashboards/src/plugins/visualize/public/application/utils/create_visualize_app_state.tsOpenSearch-Dashboards/src/plugins/visualizations/public/expressions/vis.tsOpenSearch-Dashboards/src/plugins/visualizations/public/vis.tsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.test.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.test.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.test.js
_.omitBy( object, predicate ) OpenSearch-Dashboards/src/plugins/visualize/public/application/utils/create_visualize_app_state.ts
_.union(*arrays) OpenSearch-Dashboards/src/plugins/visualize/public/application/utils/create_visualize_app_state.ts
.countBy(collection, [iteratee=.identity]) OpenSearch-Dashboards/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts
_.groupBy( collection, iteratee ) OpenSearch-Dashboards/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts
_.mapValues( object, iteratee ) OpenSearch-Dashboards/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts
_.max OpenSearch-Dashboards/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts
_.min OpenSearch-Dashboards/src/plugins/visualizations/server/usage_collector/get_usage_collector.tsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.js
_.value OpenSearch-Dashboards/src/plugins/visualizations/server/usage_collector/get_usage_collector.ts
_.flow( funcs ) OpenSearch-Dashboards/src/plugins/visualizations/server/saved_objects/visualization_migrations.ts
_.orderBy(collection, iteratees, orders) OpenSearch-Dashboards/src/plugins/visualizations/public/wizard/type_selection/type_selection.tsx
_.defaultsDeep(object, [sources]) OpenSearch-Dashboards/src/plugins/visualizations/public/vis_types/base_vis_type.tsOpenSearch-Dashboards/src/plugins/visualizations/public/expressions/vis.tsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.test.js
_.isPlainObject OpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.ts
_.isString OpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.ts
_.merge OpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.ts
_.mergeWith OpenSearch-Dashboards/src/plugins/visualizations/public/persisted_state/persisted_state.ts
_.defaults OpenSearch-Dashboards/src/plugins/visualizations/public/vis.tsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_point_series.js
_.noop OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/line_chart.test.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.test.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.test.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.test.js
_.find OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/heatmap_chart.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.test.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/_point_series.jsOpenSearch-Dashboards/src/cli/cli.js
_.isNumber OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/column_chart.test.jsOpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.test.js
_.forOwn OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series/area_chart.test.js
_.last OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/gauges/meter.js
_.isObject OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/vis_types.test.jsOpenSearch-Dashboards/packages/osd-ui-framework/src/components/table/listing_table/listing_table_row.jsOpenSearch-Dashboards/packages/osd-ui-framework/src/components/table/listing_table/listing_table.js
_.uniqueId OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series.js
_.identity OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series.js
_.each OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/point_series.js
_.bind OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/visualizations/_chart.js
_.forEach  
_.flattenDeep OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/axis/y_axis.test.js
_.isDate OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/axis/x_axis.test.js
_.times OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_scale.js
_.reduce OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_scale.js
_.isNaN OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/axis/axis_scale.js
_.filter OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/handler.js
_.memoize OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/handler.js
_.first OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.test.js
_.pull OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js
_.rest OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js
_.size OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.jsOpenSearch-Dashboards/src/cli/help.js
_.reduce OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/dispatch.js
_.uniqBy OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/data.js
_.clone OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/data.js
_.toArray OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/data.js
_.escape OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/lib/chart_title.js
_.uniq OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/helpers/point_series/_init_x_axis.ts
_.partial OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_injection.test.js
_.keys OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_injection.test.js
_.findIndex OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/zero_injection/zero_fill_data_array.js
_.constant OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js
_.once OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/tooltip/tooltip.js
_.random OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.test.js
_.drop OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.test.js
_.mergeWith OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/tooltip/position_tooltip.js
_.forEachRight OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_hierarchical_tooltip_formatter.js
_.repeat OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/tooltip/_hierarchical_tooltip_formatter.js
_.every OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx
_.findLast OpenSearch-Dashboards/src/plugins/vis_default_editor/public/components/sidebar/data_tab.tsx
_.compact OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/legend/legend.tsx
_.chain OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/vislib/components/labels/labels.test.js
_.upperFirst OpenSearch-Dashboards/src/plugins/vis_type_vislib/public/components/options/metrics_axes/utils.ts
_.flatten OpenSearch-Dashboards/src/plugins/vis_type_vega/public/lib/extract_index_pattern.ts
_.isPlainObject OpenSearch-Dashboards/src/plugins/vis_type_vega/public/data_model/vega_parser.ts
_.sum OpenSearch-Dashboards/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/_series_agg.js
_.zip OpenSearch-Dashboards/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/table/_series_agg.js
_.startsWith OpenSearch-Dashboards/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/series/time_shift.js
_.isEmpty OpenSearch-Dashboards/src/plugins/vis_type_timeseries/server/lib/vis_data/response_processors/annotations/buckets.js
_.includes OpenSearch-Dashboards/src/plugins/vis_type_timeseries/server/lib/vis_data/helpers/get_sibling_agg_value.js
._gt, .gte, .lt OpenSearch-Dashboards/src/plugins/vis_type_timeseries/public/application/components/vis_types/top_n/vis.js
_.snakeCase OpenSearch-Dashboards/src/plugins/vis_type_timeseries/public/application/components/lib/convert_series_to_vars.js
_.debounce OpenSearch-Dashboards/src/plugins/vis_type_timeseries/public/application/components/vis_editor.js
_.isBoolean OpenSearch-Dashboards/src/plugins/vis_type_timeseries/public/application/components/add_delete_buttons.tsx
_.mapValues OpenSearch-Dashboards/src/plugins/vis_type_timeline/server/series_functions/opensearch/lib/agg_response_to_series_list.js
_.fill OpenSearch-Dashboards/src/plugins/vis_type_timeline/server/series_functions/aggregate/index.js
_.fromPairs OpenSearch-Dashboards/src/plugins/vis_type_timeline/server/lib/load_functions.js
_.extend OpenSearch-Dashboards/src/plugins/vis_type_timeline/server/lib/functions_md.js
_.without OpenSearch-Dashboards/src/plugins/vis_type_timeline/server/lib/functions_md.js
_.difference OpenSearch-Dashboards/src/plugins/vis_type_timeline/server/handlers/lib/validate_arg.js
_.throttle OpenSearch-Dashboards/src/plugins/vis_type_tagcloud/public/components/tag_cloud_chart.tsx
_.findLastIndex OpenSearch-Dashboards/src/plugins/timeline/public/directives/cells/collection.ts
_.words OpenSearch-Dashboards/src/plugins/timeline/public/directives/saved_object_finder.js
_.capitalize OpenSearch-Dashboards/src/plugins/timeline/public/directives/saved_object_finder.js
_.assignIn OpenSearch-Dashboards/src/plugins/timeline/public/app.js
_.round OpenSearch-Dashboards/src/plugins/tile_map/public/tile_map_visualization.js
_.trim  
_.trimStart OpenSearch-Dashboards/src/plugins/data/common/field_formats/field_format.test.ts
_.trimEnd OpenSearch-Dashboards/src/plugins/data/common/field_formats/field_format.test.ts
_.take OpenSearch-Dashboards/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx
_.getField OpenSearch-Dashboards/src/plugins/saved_objects_management/public/management_section/objects_table/components/flyout.tsx
_.mapKeys OpenSearch-Dashboards/src/plugins/saved_objects_management/public/lib/case_conversion.ts
_.padStart OpenSearch-Dashboards/src/plugins/opensearch_ui_shared/public/components/cron_editor/cron_editor.js
_.pad OpenSearch-Dashboards/src/legacy/server/logging/log_format_string.js
_.transform OpenSearch-Dashboards/src/plugins/opensearch_dashboards_utils/common/url/encode_uri_query.ts
_.escapeRegExp OpenSearch-Dashboards/src/plugins/opensearch_dashboards_utils/common/field_wildcard.ts
_.parseInt OpenSearch-Dashboards/src/plugins/opensearch_dashboards_legacy/public/paginate/paginate.js
_.intersection OpenSearch-Dashboards/src/plugins/index_pattern_management/public/components/field_editor/field_editor.tsxOpenSearch-Dashboards/src/cli/cli.js
_.zipObject OpenSearch-Dashboards/src/plugins/expressions/common/expression_types/specs/datatable.ts
_.shuffle OpenSearch-Dashboards/src/plugins/data/server/index_patterns/fetcher/lib/field_capabilities/field_capabilities.test.js
_.hasIn OpenSearch-Dashboards/src/plugins/data/public/search/expressions/opensearchaggs.ts
_.trimEnd OpenSearch-Dashboards/src/plugins/data/public/search/search_interceptor.ts
_.partition OpenSearch-Dashboards/src/plugins/data/public/query/timefilter/lib/extract_time_filter.ts
.take, .remove OpenSearch-Dashboards/src/plugins/data/public/query/persisted_log/persisted_log.ts
_.reduceRight OpenSearch-Dashboards/src/plugins/data/public/query/filter_manager/lib/map_filter.ts
_.findKey OpenSearch-Dashboards/src/plugins/data/common/search/tabify/buckets.ts
_.setWith ->@elastic/safer-lodash-set OpenSearch-Dashboards/src/plugins/data/common/search/search_source/search_source.ts
_.startCase OpenSearch-Dashboards/src/plugins/data/common/search/aggs/metrics/lib/make_nested_label.ts
_.dropRight OpenSearch-Dashboards/src/plugins/data/common/search/aggs/metrics/top_hit.test.ts
_.reject OpenSearch-Dashboards/src/plugins/data/common/index_patterns/index_patterns/index_pattern.ts
_.truncate OpenSearch-Dashboards/src/plugins/data/common/field_formats/converters/truncate.ts
_.head OpenSearch-Dashboards/src/plugins/console/server/lib/opensearch_proxy_config.ts
_.some OpenSearch-Dashboards/src/plugins/console/public/lib/autocomplete/components/list_component.js
_.sampleSize OpenSearch-Dashboards/src/plugins/charts/public/services/colors/mapped_colors.ts
_.toPath OpenSearch-Dashboards/src/legacy/utils/unset.ts
_.range OpenSearch-Dashboards/src/fixtures/agg_resp/geohash_grid.js
_.delay OpenSearch-Dashboards/src/cli_plugin/install/rename.js
_.padEnd OpenSearch-Dashboards/src/cli/help.js
_.wrap OpenSearch-Dashboards/src/cli/command.js


vvavdiya commented 9 months ago

@Aigerim-ai @nurSaadat @ananzh I would to bit contribute in this journey to replace Lodash with JS native functions. How I can start here?