chore(NA): upgrade to lodash@4 (#69868)
* chore(NA): upgrade oss to lodash4
chore(NA): migrate cli, cli_plugin, cli_keystore, dev, test_utils and apm src script to lodash4
chore(NA): missing file for cli plugin
chore(NA): add src core
chore(NA): es archiver and fixtures
chore(NA): try to fix functional test failure
chore(NA): migrate src/legacy entirely to lodash4 except src/legacy/core_plugins
chore(NA): move legacy core plugins to lodash4
chore(NA): upgrade optimize to lodash4
chore(NA): upgrade to lodash4 on advanced_settings, charts, console and dashboard
chore(NA): migrate to lodash4 on dev_tools, discover, embeddable, es_ui)shared, expressions, home plugins
chore(NA): upgrade data plugin to lodash4
chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4
chore(NA): missing data upgrades to lodash4
Revert "chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4"
This reverts commit 137055c5fed2fc52bb26547e0bc1ad2e3d4fe309.
Revert "Revert "chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4""
This reverts commit f7e73688782998513d9fb6d7e8f0765e9beb28d1.
Revert "chore(NA): missing data upgrades to lodash4"
This reverts commit 92b85bf947a89bfc70cc4052738a6b2128ffb076.
Revert "chore(NA): upgrade data plugin to lodash4"
This reverts commit 88fdb075ee1e26c4ac979b6681d8a2b002df74c6.
chore(NA): upgrade idx_pattern_mgt, input_control_vis, inspector, kbn_legacy, kbn_react, kbn_usage_collections, kbn_utils, management and maps_legacy to lodash4
chore(NA): map src plugin data to lodash3
chore(NA): missing lodash.clonedeep dep
chore(NA): change packages kbn-config-schema deps
chore(NA): update renovate config
chore(NA): upgrade vis_type plugins to lodash4
chore(NA): move vis_type_vislib to lodash3
chore(NA): update visualizations and visualize to lodash4
chore(NA): remove lodash 3 types from src and move test to lodash4
chore(NA): move home, usage_collection and management to lodash 3
Revert "chore(NA): move home, usage_collection and management to lodash 3"
This reverts commit f86e8585f02d21550746569af54215b076a79a3d.
chore(NA): move kibana_legacy, saved_objects saved_objects_management into lodash3
chore(NA): update x-pack test to mock lodash4
Revert "chore(NA): move kibana_legacy, saved_objects saved_objects_management into lodash3"
This reverts commit 2d10fe450533e1b36db21d99cfae3ce996a244e0.
* chore(NA): move x-pack and packages to lodash 4
* chore(NA): remove mention to lodash from main package.json
* chore(NA): remove helper alias for lodash4 and make it the default lodash
* chore(NA): fix last failing types in the repo
* chore(NA): fix public api
* chore(NA): fix types for agg_row.tsx
* chore(NA): fix increment of optimizer modules in the rollup plugin
* chore(NA): migrate `src/core/public/http/fetch.ts` (#5)
* omit undefined query props
* just remove merge usage
* fix types
* chore(NA): fixes for feedback from apm team
* chore(NA): recover old behaviour on apm LoadingIndeicatorContext.tsx
* chore(NA): fixes for feedback from watson
* Platform lodash4 tweaks (#6)
* chore(NA): fix types and behaviour on src/core/server/elasticsearch/errors.ts
* Canvas fixes for lodash upgrade
* [APM] Adds unit test for APM service maps transform (#7)
* Adds a snapshot unit test for getConnections and rearranges some code to make testing easier
* reverts `ArrayList` back to `String[]` in the painless script within `fetch_service_paths_from_trace_ids.ts`
* chore(NA): update yarn.lock
* chore(NA): remove any and use a real type for alerts task runner
Co-authored-by: Gidi Meir Morris <github@gidi.io>
* chore(NA): used named import for triggers_actions_ui file
* chore(NA): fix eslint
* chore(NA): fix types
* Delete most uptime lodash references.
* Simplify. Clean up types.
* [Uptime] Delete most uptime lodash references (#8)
* Delete most uptime lodash references.
* Simplify. Clean up types.
* chore(NA): add eslint rule to avoid using lodash3
* chore(NA): apply changes on feedback from es-ui team
* fix some types (#9)
* Clean up some expressions types.
* chore(NA): missing ts-expect-error statements
* Upgrade lodash 4 vislib (#11)
* replace lodash 3 with lodash 4 on vislib plugin
* Further changes
* further replacement of lodash3 to 4
* further work on upgrading to lodash 4
* final changes to update lodash
* chore(NA): upgrade data plugin to lodash4
chore(NA): upgrade data plugin public to lodash4
chore(NA): fix typecheck task
chore(NA): fix agg_config with hasIn
chore(NA): assign to assignIn and has to hasIn
chore(NA): upgrade data plugin server to lodash4
chore(NA): new signature for core api
fix(NA): match behaviour between lodash3 and lodash4 for set in search_source
* chore(NA): remove lodash3 completely from the repo
* chore(NA): fix x-pack/test/api_integration/apis/metrics_ui/snapshot.ts missing content
* chore(NA): fix lodash usage on apm
* chore(NA): fix typecheck for maps
* Patch lodash template (#12)
* Applying changes from https://github.com/elastic/kibana/pull/64985
* Using isIterateeCall, because it seems less brittle
* Also patching `lodash/template` and `lodash/fp/template`
* Reorganizing some files...
* Revising comment
* Ends up `_` is a function also... I hate JavaScript
Co-authored-by: Pierre Gayvallet <pierre.gayvallet@gmail.com>
Co-authored-by: Josh Dover <me@joshdover.com>
Co-authored-by: Clint Andrew Hall <clint.hall@elastic.co>
Co-authored-by: Oliver Gupte <ogupte@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Gidi Meir Morris <github@gidi.io>
Co-authored-by: Justin Kambic <justin.kambic@elastic.co>
Co-authored-by: Stratoula Kalafateli <stratoula1@gmail.com>
Co-authored-by: Luke Elmers <luke.elmers@elastic.co>
Co-authored-by: Brandon Kobel <brandon.kobel@gmail.com>
Co-authored-by: kobelb <brandon.kobel@elastic.co>
2020-07-03 02:30:13 +02:00
|
|
|
/*
|
2021-01-20 02:52:56 +01:00
|
|
|
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
|
|
|
|
* or more contributor license agreements. Licensed under the Elastic License
|
|
|
|
* and the Server Side Public License, v 1; you may not use this file except in
|
|
|
|
* compliance with, at your election, the Elastic License or the Server Side
|
|
|
|
* Public License, v 1.
|
chore(NA): upgrade to lodash@4 (#69868)
* chore(NA): upgrade oss to lodash4
chore(NA): migrate cli, cli_plugin, cli_keystore, dev, test_utils and apm src script to lodash4
chore(NA): missing file for cli plugin
chore(NA): add src core
chore(NA): es archiver and fixtures
chore(NA): try to fix functional test failure
chore(NA): migrate src/legacy entirely to lodash4 except src/legacy/core_plugins
chore(NA): move legacy core plugins to lodash4
chore(NA): upgrade optimize to lodash4
chore(NA): upgrade to lodash4 on advanced_settings, charts, console and dashboard
chore(NA): migrate to lodash4 on dev_tools, discover, embeddable, es_ui)shared, expressions, home plugins
chore(NA): upgrade data plugin to lodash4
chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4
chore(NA): missing data upgrades to lodash4
Revert "chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4"
This reverts commit 137055c5fed2fc52bb26547e0bc1ad2e3d4fe309.
Revert "Revert "chore(NA): upgrade usage_collection, ui_actions, tile_map, telemtry, share, saved_objects, saved_objects_management, region_map and navigation to lodash4""
This reverts commit f7e73688782998513d9fb6d7e8f0765e9beb28d1.
Revert "chore(NA): missing data upgrades to lodash4"
This reverts commit 92b85bf947a89bfc70cc4052738a6b2128ffb076.
Revert "chore(NA): upgrade data plugin to lodash4"
This reverts commit 88fdb075ee1e26c4ac979b6681d8a2b002df74c6.
chore(NA): upgrade idx_pattern_mgt, input_control_vis, inspector, kbn_legacy, kbn_react, kbn_usage_collections, kbn_utils, management and maps_legacy to lodash4
chore(NA): map src plugin data to lodash3
chore(NA): missing lodash.clonedeep dep
chore(NA): change packages kbn-config-schema deps
chore(NA): update renovate config
chore(NA): upgrade vis_type plugins to lodash4
chore(NA): move vis_type_vislib to lodash3
chore(NA): update visualizations and visualize to lodash4
chore(NA): remove lodash 3 types from src and move test to lodash4
chore(NA): move home, usage_collection and management to lodash 3
Revert "chore(NA): move home, usage_collection and management to lodash 3"
This reverts commit f86e8585f02d21550746569af54215b076a79a3d.
chore(NA): move kibana_legacy, saved_objects saved_objects_management into lodash3
chore(NA): update x-pack test to mock lodash4
Revert "chore(NA): move kibana_legacy, saved_objects saved_objects_management into lodash3"
This reverts commit 2d10fe450533e1b36db21d99cfae3ce996a244e0.
* chore(NA): move x-pack and packages to lodash 4
* chore(NA): remove mention to lodash from main package.json
* chore(NA): remove helper alias for lodash4 and make it the default lodash
* chore(NA): fix last failing types in the repo
* chore(NA): fix public api
* chore(NA): fix types for agg_row.tsx
* chore(NA): fix increment of optimizer modules in the rollup plugin
* chore(NA): migrate `src/core/public/http/fetch.ts` (#5)
* omit undefined query props
* just remove merge usage
* fix types
* chore(NA): fixes for feedback from apm team
* chore(NA): recover old behaviour on apm LoadingIndeicatorContext.tsx
* chore(NA): fixes for feedback from watson
* Platform lodash4 tweaks (#6)
* chore(NA): fix types and behaviour on src/core/server/elasticsearch/errors.ts
* Canvas fixes for lodash upgrade
* [APM] Adds unit test for APM service maps transform (#7)
* Adds a snapshot unit test for getConnections and rearranges some code to make testing easier
* reverts `ArrayList` back to `String[]` in the painless script within `fetch_service_paths_from_trace_ids.ts`
* chore(NA): update yarn.lock
* chore(NA): remove any and use a real type for alerts task runner
Co-authored-by: Gidi Meir Morris <github@gidi.io>
* chore(NA): used named import for triggers_actions_ui file
* chore(NA): fix eslint
* chore(NA): fix types
* Delete most uptime lodash references.
* Simplify. Clean up types.
* [Uptime] Delete most uptime lodash references (#8)
* Delete most uptime lodash references.
* Simplify. Clean up types.
* chore(NA): add eslint rule to avoid using lodash3
* chore(NA): apply changes on feedback from es-ui team
* fix some types (#9)
* Clean up some expressions types.
* chore(NA): missing ts-expect-error statements
* Upgrade lodash 4 vislib (#11)
* replace lodash 3 with lodash 4 on vislib plugin
* Further changes
* further replacement of lodash3 to 4
* further work on upgrading to lodash 4
* final changes to update lodash
* chore(NA): upgrade data plugin to lodash4
chore(NA): upgrade data plugin public to lodash4
chore(NA): fix typecheck task
chore(NA): fix agg_config with hasIn
chore(NA): assign to assignIn and has to hasIn
chore(NA): upgrade data plugin server to lodash4
chore(NA): new signature for core api
fix(NA): match behaviour between lodash3 and lodash4 for set in search_source
* chore(NA): remove lodash3 completely from the repo
* chore(NA): fix x-pack/test/api_integration/apis/metrics_ui/snapshot.ts missing content
* chore(NA): fix lodash usage on apm
* chore(NA): fix typecheck for maps
* Patch lodash template (#12)
* Applying changes from https://github.com/elastic/kibana/pull/64985
* Using isIterateeCall, because it seems less brittle
* Also patching `lodash/template` and `lodash/fp/template`
* Reorganizing some files...
* Revising comment
* Ends up `_` is a function also... I hate JavaScript
Co-authored-by: Pierre Gayvallet <pierre.gayvallet@gmail.com>
Co-authored-by: Josh Dover <me@joshdover.com>
Co-authored-by: Clint Andrew Hall <clint.hall@elastic.co>
Co-authored-by: Oliver Gupte <ogupte@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
Co-authored-by: Gidi Meir Morris <github@gidi.io>
Co-authored-by: Justin Kambic <justin.kambic@elastic.co>
Co-authored-by: Stratoula Kalafateli <stratoula1@gmail.com>
Co-authored-by: Luke Elmers <luke.elmers@elastic.co>
Co-authored-by: Brandon Kobel <brandon.kobel@gmail.com>
Co-authored-by: kobelb <brandon.kobel@elastic.co>
2020-07-03 02:30:13 +02:00
|
|
|
*/
|
|
|
|
|
|
|
|
require('../../src/setup_node_env');
|
|
|
|
const _ = require('lodash');
|
|
|
|
const template = require('lodash/template');
|
|
|
|
const fp = require('lodash/fp');
|
|
|
|
const fpTemplate = require('lodash/fp/template');
|
|
|
|
const test = require('tape');
|
|
|
|
|
|
|
|
Object.prototype.sourceURL = '\u2028\u2029\n;global.whoops=true'; // eslint-disable-line no-extend-native
|
|
|
|
|
|
|
|
test.onFinish(() => {
|
|
|
|
delete Object.prototype.sourceURL;
|
|
|
|
});
|
|
|
|
|
|
|
|
test('test setup ok', (t) => {
|
|
|
|
t.equal({}.sourceURL, '\u2028\u2029\n;global.whoops=true');
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
|
|
|
|
[_.template, template].forEach((fn) => {
|
|
|
|
test(`_.template('<%= foo %>')`, (t) => {
|
|
|
|
const output = fn('<%= foo %>')({ foo: 'bar' });
|
|
|
|
t.equal(output, 'bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`_.template('<%= foo %>', {})`, (t) => {
|
|
|
|
const output = fn('<%= foo %>', Object.freeze({}))({ foo: 'bar' });
|
|
|
|
t.equal(output, 'bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`_.template('<%= data.foo %>', { variable: 'data' })`, (t) => {
|
|
|
|
const output = fn('<%= data.foo %>', Object.freeze({ variable: 'data' }))({ foo: 'bar' });
|
|
|
|
t.equal(output, 'bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`_.template('<%= foo %>', { sourceURL: '/foo/bar' })`, (t) => {
|
|
|
|
// throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do
|
|
|
|
const template = fn('<% throw new Error() %>', Object.freeze({ sourceURL: '/foo/bar' }));
|
|
|
|
t.plan(2);
|
|
|
|
try {
|
|
|
|
template();
|
|
|
|
} catch (err) {
|
|
|
|
const path = parsePathFromStack(err.stack);
|
|
|
|
t.equal(path, '/foo/bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`_.template('<%= foo %>', { sourceURL: '\\u2028\\u2029\\nglobal.whoops=true' })`, (t) => {
|
|
|
|
// throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do
|
|
|
|
const template = fn(
|
|
|
|
'<% throw new Error() %>',
|
|
|
|
Object.freeze({ sourceURL: '\u2028\u2029\nglobal.whoops=true' })
|
|
|
|
);
|
|
|
|
t.plan(2);
|
|
|
|
try {
|
|
|
|
template();
|
|
|
|
} catch (err) {
|
|
|
|
const path = parsePathFromStack(err.stack);
|
|
|
|
t.equal(path, 'global.whoops=true');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`_.template used as an iteratee call(`, (t) => {
|
|
|
|
const templateStrArr = ['<%= data.foo %>', 'example <%= data.foo %>'];
|
|
|
|
const output = _.map(templateStrArr, fn);
|
|
|
|
|
|
|
|
t.equal(output[0]({ data: { foo: 'bar' } }), 'bar');
|
|
|
|
t.equal(output[1]({ data: { foo: 'bar' } }), 'example bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
[fp.template, fpTemplate].forEach((fn) => {
|
|
|
|
test(`fp.template('<%= foo %>')`, (t) => {
|
|
|
|
const output = fn('<%= foo %>')({ foo: 'bar' });
|
|
|
|
t.equal(output, 'bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`fp.template('<%= foo %>', {})`, (t) => {
|
|
|
|
// fp.template ignores the second argument, this is negligible in this situation since options is an empty object
|
|
|
|
const output = fn('<%= foo %>', Object.freeze({}))({ foo: 'bar' });
|
|
|
|
t.equal(output, 'bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`fp.template('<%= data.foo %>', { variable: 'data' })`, (t) => {
|
|
|
|
// fp.template ignores the second argument, this causes an error to be thrown
|
|
|
|
t.plan(2);
|
|
|
|
try {
|
|
|
|
fn('<%= data.foo %>', Object.freeze({ variable: 'data' }))({ foo: 'bar' });
|
|
|
|
} catch (err) {
|
|
|
|
t.equal(err.message, 'data is not defined');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`fp.template('<%= foo %>', { sourceURL: '/foo/bar' })`, (t) => {
|
|
|
|
// fp.template ignores the second argument, the sourceURL is ignored
|
|
|
|
// throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do
|
|
|
|
// our patching to hard-code the sourceURL and use non-FP _.template does slightly alter the stack-traces but it's negligible
|
|
|
|
const template = fn('<% throw new Error() %>', Object.freeze({ sourceURL: '/foo/bar' }));
|
|
|
|
t.plan(3);
|
|
|
|
try {
|
|
|
|
template();
|
|
|
|
} catch (err) {
|
|
|
|
const path = parsePathFromStack(err.stack);
|
|
|
|
t.match(path, /^eval at <anonymous> /);
|
|
|
|
t.doesNotMatch(path, /\/foo\/bar/);
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`fp.template('<%= foo %>', { sourceURL: '\\u2028\\u2029\\nglobal.whoops=true' })`, (t) => {
|
|
|
|
// fp.template ignores the second argument, the sourceURL is ignored
|
|
|
|
// throwing errors in the template and parsing the stack, which is a string, is super ugly, but all I know to do
|
|
|
|
// our patching to hard-code the sourceURL and use non-FP _.template does slightly alter the stack-traces but it's negligible
|
|
|
|
const template = fn(
|
|
|
|
'<% throw new Error() %>',
|
|
|
|
Object.freeze({ sourceURL: '\u2028\u2029\nglobal.whoops=true' })
|
|
|
|
);
|
|
|
|
t.plan(3);
|
|
|
|
try {
|
|
|
|
template();
|
|
|
|
} catch (err) {
|
|
|
|
const path = parsePathFromStack(err.stack);
|
|
|
|
t.match(path, /^eval at <anonymous> /);
|
|
|
|
t.doesNotMatch(path, /\/foo\/bar/);
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
test(`fp.template used as an iteratee call(`, (t) => {
|
|
|
|
const templateStrArr = ['<%= data.foo %>', 'example <%= data.foo %>'];
|
|
|
|
const output = fp.map(fn)(templateStrArr);
|
|
|
|
|
|
|
|
t.equal(output[0]({ data: { foo: 'bar' } }), 'bar');
|
|
|
|
t.equal(output[1]({ data: { foo: 'bar' } }), 'example bar');
|
|
|
|
t.equal(global.whoops, undefined);
|
|
|
|
t.end();
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
function parsePathFromStack(stack) {
|
|
|
|
const lines = stack.split('\n');
|
|
|
|
// the frame starts at the second line
|
|
|
|
const frame = lines[1];
|
|
|
|
|
|
|
|
// the path is in parathensis, and ends with a colon before the line/column numbers
|
|
|
|
const [, path] = /\(([^:]+)/.exec(frame);
|
|
|
|
return path;
|
|
|
|
}
|