Commit graph

6 commits

Author SHA1 Message Date
Gerard Soldevila
adb4bdf8d8
SKA: Extract list of Kibana solutions into a dedicated package (#213353)
## Summary

The intent is to have a centralised place to store the list of Kibana
solutions and serverless project types.
To that end, this PR creates a `@kbn/projects-solutions-groups` package.
It also adds the new solution type `'chat'`.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-03-20 10:20:07 +01:00
Alex Szabo
702c9c49dc
[CI] Only emit .d.ts when running typecheck (#209259)
## Summary
Stop emitting any `.js` files during typechecking. We only depend on the
declarations, not the emitted, compiled javascript files.

An added benefit, is making some bad import errors more obvious.  
We'll no longer try to build javascript files in place if a poor
import/require is made, rather the error of importing outside projects
(in the forest of a bunch of errors possibly) will be visible in the
typescript logs:
```
# instead of:
proc [tsc] error TS5055: Cannot write file '/opt/buildkite-agent/builds/bk-agent-prod-gcp-1741789017236110254/elastic/kibana-pull-request/kibana/src/platform/packages/shared/kbn-babel-register/cache/no_cache_cache.js' because it would overwrite input file.

# we'll see:
... several others like this
 proc [tsc] src/platform/packages/shared/kbn-grok-ui/scripts/generate_patterns.js:10:9 - error TS6307: File '/Users/alex/Git/elastic-kibana/src/setup_node_env/index.js' is not listed within the file list of project '/Users/alex/Git/elastic-kibana/src/platform/packages/shared/kbn-grok-ui/tsconfig.type_check.json'. Projects must list all files or use an 'include' pattern.
 proc [tsc] 
 proc [tsc] 10 require('../../../../../setup_node_env');
... several others like this
```
2025-03-18 11:48:14 +01:00
Gerard Soldevila
6a7c904f92
SKA: Relocate "platform" packages that remain on /packages (#208704)
## Summary

The `/packages` folder at the root of the Kibana repository used to
contain a lot of packages.
In the context of SKA, they have been gradually moved to various
locations:
* `src/platform/packages`
* `x-pack/platform/packages`
* `src/core/packages`

Currently, only `devOnly: true` packages are left in this folder. This
comprises libraries for CLI scripts as well as testing utilities.

With this PR, we are moving ~half of these packages under
`src/platform/packages/(private|shared)/`.
In particular, we are moving those packages that are being used from
platform and/or solutions.

Since they are `"devOnly": true`, this means they are ONLY used from
tests, cypress tests, storybook configs, ./scripts/ folders inside some
modules, or other non-prod-time logic. Nonetheless, they are effectively
referenced from platform and/or solutions code, hence I decided they
should be placed under `platform` folders.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-02-24 11:03:30 +00:00
Gerard Soldevila
ca5a08db00
Sustainable Kibana Architecture: Move modules owned by @elastic/kibana-security (#202748)
## Summary

This PR aims at relocating some of the Kibana modules (plugins and
packages) into a new folder structure, according to the _Sustainable
Kibana Architecture_ initiative.

> [!IMPORTANT]
> * We kindly ask you to:
> * Manually fix the errors in the error section below (if there are
any).
> * Search for the `packages[\/\\]` and `plugins[\/\\]` patterns in the
source code (Babel and Eslint config files), and update them
appropriately.
> * Manually review
`.buildkite/scripts/pipelines/pull_request/pipeline.ts` to ensure that
any CI pipeline customizations continue to be correctly applied after
the changed path names
> * Review all of the updated files, specially the `.ts` and `.js` files
listed in the sections below, as some of them contain relative paths
that have been updated.
> * Think of potential impact of the move, including tooling and
configuration files that can be pointing to the relocated modules. E.g.:
>     * customised eslint rules
>     * docs pointing to source code

> [!NOTE]
> * This PR has been auto-generated.
> * Any manual contributions will be lost if the 'relocate' script is
re-run.
> * Try to obtain the missing reviews / approvals before applying manual
fixes, and/or keep your changes in a .patch / git stash.
> * Please use
[#sustainable_kibana_architecture](https://elastic.slack.com/archives/C07TCKTA22E)
Slack channel for feedback.

Are you trying to rebase this PR to solve merge conflicts? Please follow
the steps describe
[here](https://elastic.slack.com/archives/C07TCKTA22E/p1734019532879269?thread_ts=1734019339.935419&cid=C07TCKTA22E).

#### 4 plugin(s) are going to be relocated:

| Id | Target folder |
| -- | ------------- |
| `@kbn/encrypted-saved-objects-plugin` |
`x-pack/platform/plugins/shared/encrypted_saved_objects` |
| `@kbn/interactive-setup-plugin` |
`src/platform/plugins/private/interactive_setup` |
| `@kbn/security-plugin` | `x-pack/platform/plugins/shared/security` |
| `@kbn/spaces-plugin` | `x-pack/platform/plugins/shared/spaces` |




#### 14 packages(s) are going to be relocated:

| Id | Target folder |
| -- | ------------- |
| `@kbn/crypto` | `src/platform/packages/shared/kbn-crypto` |
| `@kbn/handlebars` | `src/platform/packages/private/kbn-handlebars` |
| `@kbn/safer-lodash-set` |
`src/platform/packages/shared/kbn-safer-lodash-set` |
| `@kbn/security-api-key-management` |
`x-pack/platform/packages/shared/security/api_key_management` |
| `@kbn/security-authorization-core` |
`x-pack/platform/packages/private/security/authorization_core` |
| `@kbn/security-authorization-core-common` |
`x-pack/platform/packages/private/security/authorization_core_common` |
| `@kbn/security-form-components` |
`x-pack/platform/packages/shared/security/form_components` |
| `@kbn/security-hardening` |
`src/platform/packages/shared/kbn-security-hardening` |
| `@kbn/security-plugin-types-common` |
`x-pack/platform/packages/shared/security/plugin_types_common` |
| `@kbn/security-plugin-types-public` |
`x-pack/platform/packages/shared/security/plugin_types_public` |
| `@kbn/security-plugin-types-server` |
`x-pack/platform/packages/shared/security/plugin_types_server` |
| `@kbn/security-role-management-model` |
`x-pack/platform/packages/private/security/role_management_model` |
| `@kbn/security-ui-components` |
`x-pack/platform/packages/private/security/ui_components` |
| `@kbn/user-profile-components` |
`src/platform/packages/shared/kbn-user-profile-components` |


<details open>
<summary>Script errors</summary>

```
Cannot replace multiple occurrences of "../.." in the same line, please fix manually:	/Users/dokmic/work/elastic/kibana/src/platform/packages/shared/kbn-safer-lodash-set/package.json:6
```

</details><details >
<summary>Updated references</summary>

```
./.buildkite/scripts/steps/test/kbn_handlebars.sh
./.eslintrc.js
./.i18nrc.json
./docs/developer/advanced/sharing-saved-objects.asciidoc
./docs/developer/plugin-list.asciidoc
./legacy_rfcs/text/0007_lifecycle_unblocked.md
./legacy_rfcs/text/0016_ols_phase_1.md
./package.json
./packages/kbn-dependency-usage/src/dependency_graph/providers/cruiser.test.ts
./packages/kbn-ts-projects/config-paths.json
./packages/kbn-user-profile-components/src/user_profile.ts
./src/core/packages/saved-objects/common/src/types.ts
./src/core/packages/security/server/src/audit_logging/audit_logger.ts
./src/core/packages/user-profile/common/src/user_profile.ts
./src/dev/precommit_hook/casing_check_config.js
./src/platform/packages/private/kbn-handlebars/README.md
./src/platform/packages/private/kbn-handlebars/index.test.ts
./src/platform/packages/private/kbn-handlebars/index.ts
./src/platform/packages/private/kbn-handlebars/jest.config.js
./src/platform/packages/private/kbn-handlebars/scripts/check_for_upstream_updates.sh
./src/platform/packages/private/kbn-handlebars/scripts/print_ast.js
./src/platform/packages/private/kbn-handlebars/scripts/update_upstream_git_hash.sh
./src/platform/packages/private/kbn-handlebars/src/__jest__/test_bench.ts
./src/platform/packages/private/kbn-handlebars/src/handlebars.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.basic.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.blocks.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.builtins.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.compiler.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.data.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.helpers.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.partials.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.regressions.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.security.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.strict.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.subexpressions.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.utils.test.ts
./src/platform/packages/private/kbn-handlebars/src/spec/index.whitespace_control.test.ts
./src/platform/packages/private/kbn-handlebars/src/symbols.ts
./src/platform/packages/private/kbn-handlebars/src/types.ts
./src/platform/packages/private/kbn-handlebars/src/utils.ts
./src/platform/packages/private/kbn-handlebars/src/visitor.ts
./src/platform/packages/private/kbn-repo-packages/package-map.json
./src/platform/packages/private/kbn-ui-shared-deps-src/BUILD.bazel
./src/platform/packages/shared/kbn-crypto/jest.config.js
./src/platform/packages/shared/kbn-safer-lodash-set/fp/assoc.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/fp/assoc.js
./src/platform/packages/shared/kbn-safer-lodash-set/fp/assocPath.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/fp/assocPath.js
./src/platform/packages/shared/kbn-safer-lodash-set/fp/index.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/fp/index.js
./src/platform/packages/shared/kbn-safer-lodash-set/fp/set.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/fp/set.js
./src/platform/packages/shared/kbn-safer-lodash-set/fp/setWith.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/fp/setWith.js
./src/platform/packages/shared/kbn-safer-lodash-set/index.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/index.js
./src/platform/packages/shared/kbn-safer-lodash-set/lodash/_baseSet.js
./src/platform/packages/shared/kbn-safer-lodash-set/lodash/set.js
./src/platform/packages/shared/kbn-safer-lodash-set/lodash/setWith.js
./src/platform/packages/shared/kbn-safer-lodash-set/package.json
./src/platform/packages/shared/kbn-safer-lodash-set/scripts/_get_lodash.sh
./src/platform/packages/shared/kbn-safer-lodash-set/scripts/license-header.txt
./src/platform/packages/shared/kbn-safer-lodash-set/scripts/save_state.sh
./src/platform/packages/shared/kbn-safer-lodash-set/scripts/update.sh
./src/platform/packages/shared/kbn-safer-lodash-set/set.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/set.js
./src/platform/packages/shared/kbn-safer-lodash-set/setWith.d.ts
./src/platform/packages/shared/kbn-safer-lodash-set/setWith.js
./src/platform/packages/shared/kbn-safer-lodash-set/test/fp.ts
./src/platform/packages/shared/kbn-safer-lodash-set/test/fp_assoc.ts
./src/platform/packages/shared/kbn-safer-lodash-set/test/fp_assocPath.ts
./src/platform/packages/shared/kbn-safer-lodash-set/test/fp_patch_test.js
./src/platform/packages/shared/kbn-safer-lodash-set/test/fp_set.ts
./src/platform/packages/shared/kbn-safer-lodash-set/test/fp_setWith.ts
./src/platform/packages/shared/kbn-safer-lodash-set/test/index.ts
./src/platform/packages/shared/kbn-safer-lodash-set/test/patch_test.js
./src/platform/packages/shared/kbn-safer-lodash-set/test/set.ts
./src/platform/packages/shared/kbn-safer-lodash-set/test/setWith.ts
./src/platform/packages/shared/kbn-user-profile-components/jest.config.js
./src/platform/plugins/private/interactive_setup/jest.config.js
./tsconfig.base.json
./x-pack/.i18nrc.json
./x-pack/platform/packages/private/security/authorization_core/jest.config.js
./x-pack/platform/packages/private/security/authorization_core_common/jest.config.js
./x-pack/platform/packages/private/security/role_management_model/jest.config.js
./x-pack/platform/packages/private/security/ui_components/jest.config.js
./x-pack/platform/packages/shared/security/api_key_management/jest.config.js
./x-pack/platform/packages/shared/security/form_components/jest.config.js
./x-pack/platform/plugins/shared/cases/server/authorization/index.ts
./x-pack/platform/plugins/shared/cases/server/authorization/types.ts
./x-pack/platform/plugins/shared/cases/server/connectors/cases/utils.ts
./x-pack/platform/plugins/shared/cases/server/routes/api/utils.ts
./x-pack/platform/plugins/shared/encrypted_saved_objects/README.md
./x-pack/platform/plugins/shared/encrypted_saved_objects/jest.config.js
./x-pack/platform/plugins/shared/fleet/common/http_authorization_header.ts
./x-pack/platform/plugins/shared/rule_registry/server/lib/get_is_kibana_request.ts
./x-pack/platform/plugins/shared/security/jest.config.js
./x-pack/platform/plugins/shared/spaces/jest.config.js
./x-pack/solutions/security/plugins/security_solution/server/lib/timeline/routes/notes/get_notes.ts
./yarn.lock
.github/CODEOWNERS
```

</details><details >
<summary>Updated relative paths</summary>

```
src/platform/packages/private/kbn-handlebars/jest.config.js:8
src/platform/packages/private/kbn-handlebars/src/spec/index.regressions.test.ts:276
src/platform/packages/private/kbn-handlebars/src/spec/index.regressions.test.ts:277
src/platform/packages/private/kbn-handlebars/tsconfig.json:2
src/platform/packages/shared/kbn-crypto/jest.config.js:12
src/platform/packages/shared/kbn-crypto/tsconfig.json:2
src/platform/packages/shared/kbn-safer-lodash-set/package.json:6
src/platform/packages/shared/kbn-safer-lodash-set/package.json:7
src/platform/packages/shared/kbn-safer-lodash-set/package.json:8
src/platform/packages/shared/kbn-safer-lodash-set/tsconfig.json:2
src/platform/packages/shared/kbn-security-hardening/tsconfig.json:2
src/platform/packages/shared/kbn-user-profile-components/jest.config.js:12
src/platform/packages/shared/kbn-user-profile-components/tsconfig.json:2
src/platform/plugins/private/interactive_setup/jest.config.js:12
src/platform/plugins/private/interactive_setup/tsconfig.json:2
x-pack/platform/packages/private/security/authorization_core/jest.config.js:13
x-pack/platform/packages/private/security/authorization_core/tsconfig.json:2
x-pack/platform/packages/private/security/authorization_core_common/jest.config.js:15
x-pack/platform/packages/private/security/authorization_core_common/tsconfig.json:2
x-pack/platform/packages/private/security/role_management_model/jest.config.js:14
x-pack/platform/packages/private/security/role_management_model/tsconfig.json:2
x-pack/platform/packages/private/security/ui_components/jest.config.js:13
x-pack/platform/packages/private/security/ui_components/tsconfig.json:2
x-pack/platform/packages/shared/security/api_key_management/jest.config.js:14
x-pack/platform/packages/shared/security/api_key_management/tsconfig.json:2
x-pack/platform/packages/shared/security/form_components/jest.config.js:14
x-pack/platform/packages/shared/security/form_components/tsconfig.json:2
x-pack/platform/packages/shared/security/plugin_types_common/tsconfig.json:2
x-pack/platform/packages/shared/security/plugin_types_public/tsconfig.json:2
x-pack/platform/packages/shared/security/plugin_types_server/tsconfig.json:2
x-pack/platform/plugins/shared/encrypted_saved_objects/README.md:8
x-pack/platform/plugins/shared/encrypted_saved_objects/jest.config.js:10
x-pack/platform/plugins/shared/encrypted_saved_objects/tsconfig.json:2
x-pack/platform/plugins/shared/security/jest.config.js:10
x-pack/platform/plugins/shared/security/tsconfig.json:2
x-pack/platform/plugins/shared/spaces/jest.config.js:10
x-pack/platform/plugins/shared/spaces/tsconfig.json:2
```

</details>

---------

Co-authored-by: Michael Dokolin <mikhail.dokolin@elastic.co>
Co-authored-by: “jeramysoucy” <jeramy.soucy@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-01-05 12:57:01 +01:00
Gerard Soldevila
da25d13a2a
Sustainable Kibana Architecture: Move modules owned by @elastic/security-solution (#202851) 2024-12-16 22:55:27 -06:00
Elena Shostak
34bf83b54f
Dependency usage CLI (#198920)
## Summary


[dependency-cruiser](https://github.com/sverweij/dependency-cruiser/tree/main)
is used for building dependency graph.

### Show all dependencies for a specific package/plugin or directory

#### Run for all plugins
```bash
bash scripts/dependency_usage.sh -p x-pack/plugins -o ./tmp/deps-result-all.json
```

#### Run for single plugin
```bash
bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution -o ./tmp/deps-result-single.json
```

#### Run for multiple plugins
```bash
bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution x-pack/plugins/security -o ./tmp/deps-result-multiple.json
```

#### Run for `x-pack/packages`
```bash
bash scripts/dependency_usage.sh -p x-pack/packages -o ./tmp/deps-packages-1.json
```

#### Run for `packages`
```bash
bash scripts/dependency_usage.sh -p packages -o ./tmp/deps-packages-2.json
```

#### Benchmark

| Analysis              | Real Time   | User Time   | Sys Time   |
|-----------------------|-------------|-------------|------------|
| All plugins           | 7m 21.126s  | 7m 53.099s  | 20.581s    |
| Single plugin         | 31.360s     | 45.352s     | 2.208s     |
| Multiple plugins      | 36.403s     | 50.563s     | 2.814s     |
| x-pack/packages       | 6.638s      | 12.646s     | 0.654s     |
| packages              | 25.744s     | 39.073s     | 2.191s     |


#### Show all packages/plugins within a directory that use a specific
dependency

```sh
bash scripts/dependency_usage.sh -d rxjs -p x-pack/plugins/security_solution
```
---
#### Show all packages/plugins within a directory grouped by code owner
```sh
bash scripts/dependency_usage.sh -d rxjs -p x-pack/plugins -g owner
```
---

#### Group by code owner with adjustable collapse depth for fine-grained
grouping
**Fine-grained grouping**:
```sh
bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution -g owner --collapse-depth 4
```
**Collapsed grouping**: groups the results under a higher-level owner
(e.g., `security_solution` as a single group).
```bash
bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution -g owner --collapse-depth 1
```
---

#### Show all dependencies matching a pattern (e.g., `react-*`) within a
package
```bash
bash scripts/dependency_usage.sh -p x-pack/plugins/security_solution -d 'react-*' -o ./tmp/result.json
```

### Checklist

- [x]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [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

__Related: https://github.com/elastic/kibana/issues/196767__

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2024-11-25 14:07:40 +01:00