Commit graph

4 commits

Author SHA1 Message Date
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