mirror of
https://github.com/elastic/kibana.git
synced 2025-04-24 17:59:23 -04:00
15 commits
Author | SHA1 | Message | Date | |
---|---|---|---|---|
|
fccfd4cf75
|
[react@18] Implicit children type fixes (#192011)
## Summary Part of https://github.com/elastic/kibana/issues/138222 in @types/react@18 types [have become more strict](https://github.com/DefinitelyTyped/DefinitelyTyped/pull/56210). This PR addresses a bunch of easy fixes. The most common are: ### 1 Removal of implicit children For components that do implement children but relied on their implicit declaration from React.FunctionComponent or React.Component: ```diff interface Props { + children?: React.ReactNode; } class SomeClassComponents React.Component<Props> { render() { return <div>{this.props.children}</div> } } const SomeFunctionComponent: React.FunctionComponent<Props> = props => <div>{props.children}</div> ``` or ```diff - const SomeFunctionComponent: React.FunctionComponent<Props> = props => <div>{props.children}</div> + const SomeFunctionComponent: React.FunctionComponent<React.PropsWithChildren<Props>> = props => <div>{props.children}</div> ``` *Note 1:* The most common change occurs in unit tests where `renderHook` and `wrapper` are used. I had to re-type the props so that `children` were there ```diff const { result } = renderHook( () => { return useLicense(); }, { - wrapper: ({ children }) => ( + wrapper: ({ children }: React.PropsWithChildren<{}>) => ( <TestProviders license={license}>{children}</TestProviders> ), } ); ``` ```diff - const { result } = renderHook<GetCasesColumn, UseCasesColumnsReturnValue>( + const { result } = renderHook<React.PropsWithChildren<GetCasesColumn>, UseCasesColumnsReturnValue>( () => useCasesColumns(defaultColumnArgs), { wrapper: ({ children }) => <TestProviders>{children}</TestProviders>, } ); ``` *Note 2:* With @types/react@17 the components that don't have any props apart from `children` I had to use `React.PropsWithChildren<{}>`, whereas in @types/react@18 the argument becomes optional, so it can be omitted, and type simpler with `React.PropsWithChildren` without an argument ### 2 `this.context` becomes `unknown` (was `any`) In a couple of places where `this.context` is used, I had to type it ### 3 `ComponentType` from enzyme is no longer compatible with `ComponentType` from react This one is a bummer, but where `wrappingComponent` with enzyme is used I had to cast it to type from `enzyme` ```diff - import { mount } from 'enzyme' + import { mount, ComponentType } from 'enzyme' wrapper = mount(<ClosureOptions {...props} />, { - wrappingComponent: TestProviders, + wrappingComponent: TestProviders as ComponentType<{}>, }); ``` |
||
|
b6287708f6
|
Adds AGPL 3.0 license (#192025)
Updates files outside of x-pack to be triple-licensed under Elastic License 2.0, AGPL 3.0, or SSPL 1.0. |
||
|
a6491ab360
|
Add treeshake to some core, ml and shared-ux modules (#182348)
## Summary While debugging another issue I've noticed there were few packages without treeshake enabled who could be optimized for bundle size, so I've enabled it for a few of them. This PR focuses only on `shared-ux`, `core` and `ml` packages for now. it relies on the tests to check if the treeshake broke anything deep. |
||
|
5c25069c58
|
[Shared UX] Clean up after TS upgrade (#179588)
## Summary Closes https://github.com/elastic/kibana/issues/176113 --------- Co-authored-by: Sébastien Loix <sebastien.loix@elastic.co> |
||
|
250790e0f1
|
chore(NA): upgrade typescript into v4.9.5 (#175178)
This PR bumps the Typescript version used on Kibana into v4.9.5. The
full set of changes can be found
[here](https://devblogs.microsoft.com/typescript/announcing-typescript-4-9/).
So far, as long I can see, the performance is better than in the version
we're currently in.
I didn't want to make assumptions for such a diversity of type errors
across the codebase so instead I choose to mark the failures with
`@ts-expect-error` and let each team decide how to handle it.
There is a list below with the files (and teams those belong to) where
the annotations were added. If each team could provide help of fixing
the ones under their domain it would be fantastic. It can be done in
this PR or in subsequent ones.
Here it goes the list for follow up:
@elastic/kibana-core - tracking issue:
https://github.com/elastic/kibana/issues/176153
- [ ]
[packages/analytics/client/src/analytics_client/analytics_client.ts](https://github.com/elastic/kibana/pull/175178/files#diff-57477fa4b8c2fcd5a3159e8a6a9a1db80199dbe94b2917a520d4dcee4f65599b)
- [ ]
[packages/analytics/client/src/analytics_client/context_service.ts](https://github.com/elastic/kibana/pull/175178/files#diff-b7802a3b9a46305607ff678abde499d9c9e1dd8b1f3f6a76add1a8c3a0b94e43)
- [ ]
[packages/analytics/client/src/analytics_client/types.ts](https://github.com/elastic/kibana/pull/175178/files#diff-6584fc2ecf29864805de0f0f82dcff81a850b53aeff25932a598c9157c991d43)
- [ ]
[packages/core/http/core-http-router-server-internal/src/validator.ts](https://github.com/elastic/kibana/pull/175178/files#diff-5a4d386d142b33439aa7c638b7ddc2300da40155c636b4cf3119929b8bb57b72)
- [ ]
[packages/core/http/core-http-server-internal/src/cookie_session_storage.ts](https://github.com/elastic/kibana/pull/175178/files#diff-9efcaa58a5bdbfcac57c68b9c2e108b921c9c5ea88abf90920191b150d56a03a)
- [ ]
[packages/core/plugins/core-plugins-server-internal/src/create_browser_config.ts](https://github.com/elastic/kibana/pull/175178/files#diff-b49a02fac82b32dd34c271d0ed71f7f79f173591e6810b32093975bd50fe11b1)
- [ ]
[packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/bulk_update.ts](https://github.com/elastic/kibana/pull/175178/files#diff-9a151f7dc25effb6f2bb084075b7d1d8e8ee049dcd91e92a0d27e014d3bc82b8)
- [ ]
[packages/core/saved-objects/core-saved-objects-api-server-internal/src/lib/apis/update.ts](https://github.com/elastic/kibana/pull/175178/files#diff-d5a4ebda74b0c2e2ca625fe395a185e3ff0076bc44614cf640cf33cbc5cba2bd)
- [ ]
[packages/kbn-es-types/src/search.ts](https://github.com/elastic/kibana/pull/175178/files#diff-49222c37a13c4c85c287947aaa8293029513f4a34933fcac6116ad3059ee8fcf)
- [ ]
[packages/kbn-utility-types/src/dot.ts](https://github.com/elastic/kibana/pull/175178/files#diff-f14998302c20ca97ac7f3faa7b542f22670708eac134e6af96c354489a641689)
- [ ]
[src/core/server/mocks.ts](https://github.com/elastic/kibana/pull/175178/files#diff-a3e30603bf537517842354df3548e88a25f4d9e2a6be08f95b88fb8db48e4228)
- [ ]
[test/plugin_functional/test_suites/core_plugins/rendering.ts](https://github.com/elastic/kibana/pull/175178/files#diff-eb6bd8a02c024aa1ab5c3debbeda149e8d2fb2614bca80d09c3f9aa21100ed7d)
@elastic/kibana-presentation
- [ ]
[packages/content-management/content_editor/src/__jest__/tests.helpers.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-6e56e39c2e9accef38070408bb589fb4cc973e4353098574be142aa8e3da399e)
- [ ]
[src/plugins/embeddable/public/lib/embeddables/embeddable_factory.ts](https://github.com/elastic/kibana/pull/175178/files#diff-1aa4b1f585b7a75d996ad7620d8cfef03584e41f77d529172acc5250f5de092f)
- [ ]
[src/plugins/presentation_util/public/services/create/provider.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-baa5fb3d72bf64b6c269155b736f6af387688b0f2f77d804f5fd5ced69d3e2c9)
- [ ]
[x-pack/plugins/canvas/canvas_plugin_src/functions/server/pointseries/index.ts](https://github.com/elastic/kibana/pull/175178/files#diff-da216f23664ac188404e9a48cdf33b05ad121512d988da5cd88a72724d5bfff9)
- [ ]
[x-pack/plugins/canvas/server/templates/status_report.ts](https://github.com/elastic/kibana/pull/175178/files#diff-45598e8b99710f8fd7a0a00eb7b0810cb24bf529b7fefb52dfd5f05b82a23578)
- [ ]
[x-pack/plugins/canvas/server/templates/summary_report.ts](https://github.com/elastic/kibana/pull/175178/files#diff-b1eb9cec629f0adcae86dede388d6b343b785970a458fbf57c96dbd32b3fc8b5)
- [ ]
[x-pack/plugins/canvas/types/arguments.ts](https://github.com/elastic/kibana/pull/175178/files#diff-c7d1e4fa5026000bb99d03e5dace364226857c8e1e928a182c14c3f33f0006d9)
- [ ]
[x-pack/plugins/canvas/types/functions.ts](https://github.com/elastic/kibana/pull/175178/files#diff-00548b1936e05f24bc8dcbf453bf5a49f0f129989bab422926d3f4b56e35abae)
@elastic/apm
- [ ]
[packages/kbn-apm-synthtrace-client/src/lib/interval.ts](https://github.com/elastic/kibana/pull/175178/files#diff-ec08c88331cc24811a3e24cec3aa99d02a707fb1a5848e1fb3a7c3172f99f1e7)
- [ ]
[packages/kbn-apm-synthtrace/src/lib/shared/get_serialize_transform.ts](https://github.com/elastic/kibana/pull/175178/files#diff-98d45df58fce30ac60a87c3a88aa7368ecf16f5b79b68a67419d8546974e42db)
- [ ]
[packages/kbn-apm-synthtrace/src/lib/utils/with_client.ts](https://github.com/elastic/kibana/pull/175178/files#diff-612d609963c9fe7830bc4e522bd3bb614369772906708b163e9854ec85cf879c)
- [ ]
[x-pack/plugins/apm/server/lib/helpers/transactions/get_is_using_transaction_events.test.ts](https://github.com/elastic/kibana/pull/175178/files#diff-69ee25aee396b7ccb9cc749b4f9cfad19a380bf3c4eb1f2d1848390b75477732)
@elastic/obs-knowledge-team
- [ ]
[packages/kbn-io-ts-utils/src/to_json_schema/index.ts](https://github.com/elastic/kibana/pull/175178/files#diff-012b20f075e09f40a1839b759082ffea0122aeb79d6b5fd5e642f9abee2435e2)
- [ ]
[packages/kbn-server-route-repository/src/test_types.ts](https://github.com/elastic/kibana/pull/175178/files#diff-a4e28211d0c856831b71488f849f1c9e542373d4a287baa3cbfa032278cc8dc0)
@elastic/security-detection-engine
- [ ]
[packages/kbn-securitysolution-io-ts-alerting-types/src/threat_mapping/index.test.ts](https://github.com/elastic/kibana/pull/175178/files#diff-594114826caa3dee11e8dda5d6a67d4ce852b02f5d4df9721925c19d9c5d97af)
- [ ]
[packages/kbn-securitysolution-utils/src/add_remove_id_to_item/index.ts](https://github.com/elastic/kibana/pull/175178/files#diff-8a1645d3d66eedeb05f8d954a3855523f8403b7a9c59200ad8184af96bb28cfb)
- [ ]
[x-pack/plugins/lists/server/routes/utils/build_siem_response.ts](https://github.com/elastic/kibana/pull/175178/files#diff-170882f010e12304aec81e167487cfc086c2d6a1d7dbbb36d1db2215d072577e)
@elastic/appex-sharedux
- [ ]
[packages/shared-ux/router/impl/routes.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-43ba27115faf87c05460364c3b30b32f2794451404c82470653ccd9258e944b8)
- [ ]
[src/plugins/files/server/routes/file_kind/enhance_router.ts](https://github.com/elastic/kibana/pull/175178/files#diff-33258e2bd2f400b53a1366511ec3ef1c83b8f0aee762c1bd83abdea3ff153c2a)
- [ ]
[src/plugins/files/server/routes/types.ts](https://github.com/elastic/kibana/pull/175178/files#diff-bad66d1fdd59cf33bfa9a20aa96dde580fab1b7da8252723ee08c4e99203074f)
@elastic/kibana-visualizations
- [x]
[src/plugins/chart_expressions/expression_legacy_metric/public/__stories__/metric_renderer.stories.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-e66ed20c106e40aee23cbca1980280ef6600797f5d2210486be007d7fe5d72ca)
- [x]
[src/plugins/chart_expressions/expression_legacy_metric/public/components/with_auto_scale.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-d45fb549abb422cdd706da86c52a3d9dc3b0517f028b966b20cf2679aabcd24f)
- [x]
[src/plugins/expressions/common/execution/execution_contract.ts](https://github.com/elastic/kibana/pull/175178/files#diff-8817ec58899f80b4bfd6144dc59c3e6dc9a508e31264cd2bdf155a0b1746d9f9)
- [x]
[src/plugins/vis_types/table/public/components/table_vis_basic.test.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-4de9a68e38b105b862755f59d2d05722bfba6ffc85dcb0b2cf5eaf754a6afb50)
- [x]
[src/plugins/vis_types/timeseries/public/convert_to_lens/lib/convert/percentile.ts](https://github.com/elastic/kibana/pull/175178/files#diff-c5fef6976b67ee678ec2dda15e0bd3ca56bef8404565499b915783a40c3c908d)
- [x]
[src/plugins/vis_types/timeseries/public/convert_to_lens/lib/convert/percentile_rank.ts](https://github.com/elastic/kibana/pull/175178/files#diff-8ad6988492e0ada34f9899f56f40533e41e537d6d79af1cc3794fdb68fbff358)
- [x]
[src/plugins/visualizations/public/vis.ts](https://github.com/elastic/kibana/pull/175178/files#diff-15c314cac8f334b9e9feb83d9f23c0c9e94f4c85405cfa4b4e3b3b445bd6763e)
- [x]
[src/plugins/visualizations/public/vis_async.ts](https://github.com/elastic/kibana/pull/175178/files#diff-d5e129fbb0217fe4da38f828794cd141bc6a4d32d87847713920312a5d27f150)
- [ ]
[x-pack/plugins/lens/public/datasources/form_based/operations/definitions/formula/formula.test.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-5624778a752c98be20953fd297e58165dab354ddab95bcf0c6b2a91d854a9c71)
- [x]
[x-pack/plugins/lens/public/debounced_component/debounced_component.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-9c14c9f29c5b351993b25d462b1d988e354068a1db9a8651515c3ee85fbd6ce9)
- [ ]
[x-pack/plugins/lens/public/editor_frame_service/editor_frame/workspace_panel/workspace_panel.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-8ca1f3be4f6696d9c05773cfaa23d7489a1c460fffdf39c8ad2ba8aa09f6c194)
- [ ]
[x-pack/plugins/lens/public/embeddable/expression_wrapper.tsx](https://github.com/elastic/kibana/pull/175178/files#diff-d3a5ba0620f3712afd6af94b1f4ceea107d356c6812ae245d1b496caf86c54a7)
- [x]
[x-pack/plugins/lens/public/state_management/lens_slice.ts](https://github.com/elastic/kibana/pull/175178/files#diff-8b56f34b3034981765e12503ccd32ca15b2d889ab6acd594737ae5313a5e2312)
- [x]
[x-pack/plugins/lens/server/migrations/common_migrations.ts](https://github.com/elastic/kibana/pull/175178/files#diff-7609127370894696659846e16e36353fda9cc11150c663334236caf597854b24)
- [ ]
[src/plugins/embeddable/public/registry/saved_object_to_panel_methods.ts](
|
||
|
a1d02824f1
|
[shared-ux-router] Add Router and Routes components (#159834)
## Summary Why? To simplify the process of migration to react-router@6. https://github.com/remix-run/react-router/discussions/8753 What problems exactly it solves? - In my previous PR I added `CompatRouter` https://github.com/elastic/kibana/pull/159173, which caused changes in ~50 files and pinged 15 Teams. And this is just meant to be a temporary change, so when we're done with the migration I would have to revert these changes and engage everyone to review the PR again. And it is just a single step in the migration strategy. So to make our lives easier I think it would be better to have a common place where we do import our router components because it will allow us to surface some extra logic in single place instead of going through the whole source code again. - `react-router@6` doesn't support a custom `Route` component, so that means our custom `Route` component that we're using almost everywhere today, will need to be replaced by a different solution. I have decided to add `Routes` component, which will be responsible for rendering the proper component (`react-router@6` renamed `Switch` to `Routes`, so I have named this component to align with the dictionary of the new router) and also is going to add the logic that today is done in `Route` (moving logic to `Routes` will be done in the follow-up PR, here I just wanted to focus on using the common router components to make the review process easier) --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> |
||
|
09577fa0af
|
Add react-router-dom-v5-compat (#159173)
## Summary Prep work for bumping react-router to v6 Following https://github.com/remix-run/react-router/discussions/8753 --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> |
||
|
50a4fc4916
|
[Shared UX] Adoption of Shared UX Route component (#150357)
## Summary This PR removes all imports of Route from react-router-dom and '@kbn/kibana-react-plugin/public' and instead imports Route from @kbn/shared-ux-router. ### Context Based on https://github.com/elastic/kibana/issues/132629#issue-1243243678 This PR executes steps 2 - 4: > 2. To make the transition easier, we want to re-export other react-router-dom exports alongside the modified' Route'. > 3. Solutions should start using that Route component in place of the one from react-router-dom. I.e. replace all occurrences of import { ... } from 'react-router-dom' with import { ... } from '@kbn/shared-ux-router'. > 4. All manual calls to useExecutionContext are not needed anymore and should be removed. ### Future PR Looks like this might be getting worked on in: https://github.com/elastic/kibana/pull/145863 (thanks!) > Introduce an ESlint rule that ensures that react-router-dom is not used directly in Kibana and that imports go through the new @kbn/shared-ux-router package. This is tangentially accomplished through https://github.com/elastic/kibana/pull/150340 but only addresses using Route through @kbn/kibana-react-plugin/public' ### Checklist Delete any items that are not applicable to this PR. - [x] [Unit or functional tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html) were updated or added to match the most common scenarios --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> Co-authored-by: Tiago Costa <tiagoffcc@hotmail.com> |
||
|
e3dff93c97
|
[codeowners] rename global experience to @elastic/appex-sharedux | ||
|
afb09ccf8a
|
Transpile packages on demand, validate all TS projects (#146212)
## Dearest Reviewers 👋 I've been working on this branch with @mistic and @tylersmalley and we're really confident in these changes. Additionally, this changes code in nearly every package in the repo so we don't plan to wait for reviews to get in before merging this. If you'd like to have a concern addressed, please feel free to leave a review, but assuming that nobody raises a blocker in the next 24 hours we plan to merge this EOD pacific tomorrow, 12/22. We'll be paying close attention to any issues this causes after merging and work on getting those fixed ASAP. 🚀 --- The operations team is not confident that we'll have the time to achieve what we originally set out to accomplish by moving to Bazel with the time and resources we have available. We have also bought ourselves some headroom with improvements to babel-register, optimizer caching, and typescript project structure. In order to make sure we deliver packages as quickly as possible (many teams really want them), with a usable and familiar developer experience, this PR removes Bazel for building packages in favor of using the same JIT transpilation we use for plugins. Additionally, packages now use `kbn_references` (again, just copying the dx from plugins to packages). Because of the complex relationships between packages/plugins and in order to prepare ourselves for automatic dependency detection tools we plan to use in the future, this PR also introduces a "TS Project Linter" which will validate that every tsconfig.json file meets a few requirements: 1. the chain of base config files extended by each config includes `tsconfig.base.json` and not `tsconfig.json` 1. the `include` config is used, and not `files` 2. the `exclude` config includes `target/**/*` 3. the `outDir` compiler option is specified as `target/types` 1. none of these compiler options are specified: `declaration`, `declarationMap`, `emitDeclarationOnly`, `skipLibCheck`, `target`, `paths` 4. all references to other packages/plugins use their pkg id, ie: ```js // valid { "kbn_references": ["@kbn/core"] } // not valid { "kbn_references": [{ "path": "../../../src/core/tsconfig.json" }] } ``` 5. only packages/plugins which are imported somewhere in the ts code are listed in `kbn_references` This linter is not only validating all of the tsconfig.json files, but it also will fix these config files to deal with just about any violation that can be produced. Just run `node scripts/ts_project_linter --fix` locally to apply these fixes, or let CI take care of automatically fixing things and pushing the changes to your PR. > **Example:** [` |
||
|
5b44aa8295
|
rename codeowners from shared-ux to global-experience | ||
|
e41569b4a6
|
fix(NA): wrongly spread stripInternal and rootDir configs across packages (#144463)
* chore(NA): remove overrides for rootDir on packages * chore(NA): replace './target_types' with 'target_types' on packages * chore(NA): removes stripInternal false configs * chore(NA): remove unused strip internals |
||
|
52f2b33a07
|
[auto] migrate existing plugin/package configs | ||
|
da60f57dff
|
[packages] add missing kibana.jsonc files (#141327) | ||
|
89985e5289
|
[Shared UX] Migrate router from kibana react to shared ux (#138544) |