kibana/packages
Jean-Louis Leysens caa9231aef
[HTTP] Update versioned router to follow spec (#154823)
## Summary

Update the versioned router based on current Elastic API spec.

Laundry list of changes:

1. Public versions must be specified as `^[0-9]{4}-[0-9]{2}-[0-9]{2}$`
e.g. 2023-12-12
2. For unsupported versions we respond with `400`
3. For incorrectly formatted versions we must respond with `400` and an
appropriate error message
4. Server must add the `Elastic-Api-Version` header to responses that
hit a versioned API
5. On serverless, a request WITHOUT a version header must default to
LATEST (TODO in follow up)
  a. For Kibana, on prem must default to OLDEST

## Future work

Some way to toggle the handler resolution strategy from `oldest` to
`newest`. This could be Kibana config.


### Checklist

- [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
2023-04-17 02:27:59 -07:00
..
analytics Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
content-management Upgraded EUI to v76.0.0 (#152506) 2023-03-14 14:27:40 -05:00
core [HTTP] Update versioned router to follow spec (#154823) 2023-04-17 02:27:59 -07:00
home [codeowners] rename global experience to @elastic/appex-sharedux 2023-01-18 10:02:49 -07:00
kbn-ace Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-alerts Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-alerts-as-data-utils [RAM] Adds revision to alerts schema (#151388) 2023-03-29 19:28:02 +00:00
kbn-alerts-ui-shared [RAM] Bring flapping status and settings in o11y (#150483) 2023-02-07 20:52:26 -07:00
kbn-ambient-common-types Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ambient-ftr-types Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ambient-storybook-types Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ambient-ui-types Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-analytics Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-apm-config-loader Config loader: remove unecessary properties (#154902) 2023-04-13 11:16:51 -05:00
kbn-apm-synthtrace [APM] telemetry auto version over sdk version for otel agents in explorer (#152911) 2023-03-10 14:09:40 +01:00
kbn-apm-synthtrace-client [APM] Make sure scoring is applied by ES (#154627) 2023-04-11 15:02:36 +02:00
kbn-apm-utils Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-axe-config Updating axe-core to latest (#144940) 2023-03-29 00:06:25 +05:30
kbn-babel-preset [Observability] Add Observability Shared app (#154716) 2023-04-11 21:51:59 +02:00
kbn-babel-register [kbn/babel-register] improve cache performance (#150261) 2023-02-06 19:50:42 -07:00
kbn-babel-transform [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-bazel-runner Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-cases-components [Cases] add tooltip component to kbn-cases-components package (#148561) 2023-01-17 14:24:50 +01:00
kbn-cell-actions [Security Solution][Bug] Alert Table raises error when switchting to event rendered view (#151994) 2023-02-24 09:11:06 -05:00
kbn-chart-icons Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ci-stats-core Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ci-stats-performance-metrics Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ci-stats-reporter Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ci-stats-shipper-cli [ci-stats] move shipper to a package, validate limits in on-merge job (#149474) 2023-01-25 08:20:40 -07:00
kbn-cli-dev-mode [kibana] Thank you for everything, Spencer! 🧔🏻‍♂️ (#150759) 2023-02-10 16:57:43 -06:00
kbn-coloring Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-config Config loader: remove unecessary properties (#154902) 2023-04-13 11:16:51 -05:00
kbn-config-mocks [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-config-schema Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-crypto Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-crypto-browser Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-cypress-config [Defend workflows] Add Cypress tests for Endpoint reassignment functi… (#151887) 2023-02-24 16:19:30 +01:00
kbn-datemath [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-dev-cli-errors Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-dev-cli-runner Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-dev-proc-runner Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-dev-utils [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-doc-links [Fleet] Update Fleet API doc link + remove beta badge (#154442) 2023-04-12 17:05:02 +02:00
kbn-docs-utils [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-dom-drag-drop Migrate drag and drop logic from Lens plugin to its own package (#151836) 2023-03-23 11:09:17 +01:00
kbn-ebt-tools Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ecs Generate kbn/ecs with ECS 8.6.1 (#151642) 2023-02-21 15:02:38 +01:00
kbn-es [kbn/es] Add dev docs for snapshot promotion pipeline (#148350) 2023-01-05 12:45:34 -06:00
kbn-es-archiver Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-es-errors Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-es-query [CM] Event Stream service (#153211) 2023-04-05 11:35:09 +02:00
kbn-es-types [APM] Use (rolled up) service metrics for service inventory (#149938) 2023-02-04 04:00:25 -07:00
kbn-eslint-config ESLint Telemetry Rule (#153108) 2023-03-20 13:31:02 +00:00
kbn-eslint-plugin-disable Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-eslint-plugin-eslint Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-eslint-plugin-imports [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-eslint-plugin-telemetry Upgrade typescript-eslint to 5.54.0 (#152358) 2023-03-23 10:52:41 -05:00
kbn-expandable-flyout [Security Solution] expanded flyout using dynamic width (#154114) 2023-04-05 22:45:09 -05:00
kbn-expect Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-failed-test-reporter-cli Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-field-types Update codeowners to move AppServices packages to DataDiscovery (#149065) 2023-01-18 13:34:28 -07:00
kbn-find-used-node-modules [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-flot-charts Fix useless regex escapes (#150043) 2023-02-07 09:58:47 -07:00
kbn-ftr-common-functional-services Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ftr-screenshot-filename Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-generate [codeowners] allow overrides to take higher precedence (#150821) 2023-02-09 16:29:26 -07:00
kbn-generate-csv [Reporting] Generate CSV Package (#151801) 2023-04-13 10:27:35 -07:00
kbn-generate-csv-types [Reporting] Generate CSV Package (#151801) 2023-04-13 10:27:35 -07:00
kbn-get-repo-files [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-guided-onboarding Filter guided onboarding solutions based on cloud discovery questions… (#153367) 2023-04-04 12:15:42 +01:00
kbn-handlebars [@kbn/handlebars] Refactor types (#150520) 2023-02-14 13:37:41 +01:00
kbn-hapi-mocks Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-health-gateway-server implement "plugin" package type (#149370) 2023-01-30 10:47:53 -07:00
kbn-i18n Downgrade Node.js to version 16 (#149531) 2023-01-26 11:53:52 +00:00
kbn-i18n-react Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-import-locator [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-import-resolver [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-interpreter Fix eslint rule for restricting certain lodash imports (#151023) 2023-02-16 08:35:09 -07:00
kbn-io-ts-utils Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-jest-serializers Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-journeys [kbn-journeys] add optional beforeSteps hook (#151717) 2023-02-22 18:53:00 +01:00
kbn-json-ast [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-kibana-manifest-schema implement "plugin" package type (#149370) 2023-01-30 10:47:53 -07:00
kbn-language-documentation-popover Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-lint-packages-cli [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-lint-ts-projects-cli [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-logging Replace ecs package with ecs-typescript generated code (#148804) 2023-01-26 07:10:32 +01:00
kbn-logging-mocks Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-managed-vscode-config Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-managed-vscode-config-cli Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-mapbox-gl Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-monaco Downgrade Node.js to version 16 (#149531) 2023-01-26 11:53:52 +00:00
kbn-object-versioning [Content Management] Maps onboard (#153304) 2023-04-13 10:32:39 +01:00
kbn-optimizer [Observability] Add Observability Shared app (#154716) 2023-04-11 21:51:59 +02:00
kbn-optimizer-webpack-helpers Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-osquery-io-ts-types [Osquery] Substitute Event Data in place of {{parameter}} in Osquery run from Alerts (#146598) 2023-01-05 15:49:40 +01:00
kbn-peggy Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-peggy-loader Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-performance-testing-dataset-extractor [performance] use journey own ftr config to run scalability test (#152596) 2023-03-07 13:20:21 +01:00
kbn-picomatcher Implement package linter (#148496) 2023-01-09 16:49:29 -07:00
kbn-plugin-generator fix(NA): external plugins development flow with the new modern package plugins in place (#153562) 2023-04-06 18:00:24 +01:00
kbn-plugin-helpers fix(NA): external plugins development flow with the new modern package plugins in place (#153562) 2023-04-06 18:00:24 +01:00
kbn-react-field Upgraded EUI to v76.0.0 (#152506) 2023-03-14 14:27:40 -05:00
kbn-repo-file-maps [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-repo-info Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-repo-linter Implement package linter (#148496) 2023-01-09 16:49:29 -07:00
kbn-repo-packages fix(NA): using repo root scope when validating package manifests (#151765) 2023-02-23 18:45:20 +00:00
kbn-repo-path [packages] prevent and remove basename collisions for js/ts code (#148835) 2023-01-12 12:29:30 -07:00
kbn-repo-source-classifier [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-repo-source-classifier-cli [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-reporting/common [Reporting] Generate CSV Package (#151801) 2023-04-13 10:27:35 -07:00
kbn-rison [Security Solution] Global query string functionality improvements (#147218) 2023-01-05 18:02:12 +01:00
kbn-rule-data-utils [RAM] Adds revision to alerts schema (#151388) 2023-03-29 19:28:02 +00:00
kbn-safer-lodash-set Fix eslint rule for restricting certain lodash imports (#151023) 2023-02-16 08:35:09 -07:00
kbn-securitysolution-autocomplete Upgraded EUI to v76.0.0 (#152506) 2023-03-14 14:27:40 -05:00
kbn-securitysolution-ecs [Security Solution] Security Common Schema Package (#148664) 2023-01-23 10:07:08 -07:00
kbn-securitysolution-es-utils [Response Ops][Alerting] Enable framework alerts as data by default (#154076) 2023-04-04 12:05:14 -07:00
kbn-securitysolution-exception-list-components Upgraded EUI to v76.0.0 (#152506) 2023-03-14 14:27:40 -05:00
kbn-securitysolution-grouping [Security solution] More grouping cleanup (#153382) 2023-03-23 10:57:35 -06:00
kbn-securitysolution-hook-utils Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-securitysolution-io-ts-alerting-types [RAM] [FE] Add conditional actions UI for timeframe (#153944) 2023-04-11 12:13:54 -07:00
kbn-securitysolution-io-ts-list-types [Security Solution] Exceptions TTL Follow-up (#151952) 2023-03-03 18:56:39 -05:00
kbn-securitysolution-io-ts-types [Security Solution][Platform] - Add connectors to import/export API (#148703) 2023-02-06 16:47:22 +00:00
kbn-securitysolution-io-ts-utils Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-securitysolution-list-api [Security Solution][Exceptions] Rule exceptions TTL - Expiration (#145180) 2023-02-07 16:20:39 -05:00
kbn-securitysolution-list-constants Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-securitysolution-list-hooks [Security Solution][Exceptions] Rule exceptions TTL - Expiration (#145180) 2023-02-07 16:20:39 -05:00
kbn-securitysolution-list-utils [Security Solution][Exceptions] Rule exceptions TTL - Expiration (#145180) 2023-02-07 16:20:39 -05:00
kbn-securitysolution-rules Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-securitysolution-t-grid Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-securitysolution-utils chore(NA): upgrades uuid to v9.0.0 (#149135) 2023-01-19 19:48:07 +00:00
kbn-server-http-tools chore(NA): upgrades uuid to v9.0.0 (#149135) 2023-01-19 19:48:07 +00:00
kbn-server-route-repository Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-set-map [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-shared-svg Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-shared-ux-utility [codeowners] rename global experience to @elastic/appex-sharedux 2023-01-18 10:02:49 -07:00
kbn-slo-schema chore(slo): require customkql timestamp field (#154654) 2023-04-11 08:31:53 -04:00
kbn-some-dev-log Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-sort-package-json [sort-package-json] always ensure 2-space indent is used 2023-01-10 10:39:48 -07:00
kbn-spec-to-console [Console] Update autocomplete definitions (#153098) 2023-03-22 14:50:38 +00:00
kbn-std Config loader: remove unecessary properties (#154902) 2023-04-13 11:16:51 -05:00
kbn-stdio-dev-helpers Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-storybook Upgrade vega dependency (5.22.15.23.0). (#152541) (#152700) 2023-03-06 16:00:26 +01:00
kbn-telemetry-tools [Telemetry] Fix telemetry-tools TS parser for packages (#149819) 2023-01-31 04:09:09 +03:00
kbn-test [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-test-jest-helpers [Shared UX] Adoption of Shared UX Route component (#150357) 2023-02-14 19:25:04 +00:00
kbn-test-subj-selector Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-timelion-grammar Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-tinymath [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-tooling-log Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ts-projects Remove Playwright e2e test from Observability (#153934) 2023-03-29 17:01:35 +02:00
kbn-ts-type-check-cli [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-typed-react-router-config [APM] Migrate tx latency chart and group stats to rollups/service metrics (#153162) 2023-03-23 11:30:20 +01:00
kbn-ui-actions-browser create @kbn/ui-actions-browser package (#149202) 2023-01-19 18:28:07 +01:00
kbn-ui-framework Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-ui-shared-deps-npm [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-ui-shared-deps-src [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-ui-theme Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-user-profile-components Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-utility-types [Versioned HTTP] Add response runtime and type-level validation (#153011) 2023-03-13 10:54:42 -03:00
kbn-utility-types-jest [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-utils Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-validate-next-docs-cli [validate-next-docs] declare how github urls are determined 2023-02-10 10:54:20 -06:00
kbn-web-worker-stub Transpile packages on demand, validate all TS projects (#146212) 2022-12-22 19:00:29 -06:00
kbn-whereis-pkg-cli [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
kbn-yarn-lock-validator [packages] migrate all plugins to packages (#148130) 2023-02-08 21:06:50 -06:00
security-solution [Security Solution] Fix security-solution storybook package codeowners (#153307) 2023-03-20 18:21:57 +01:00
shared-ux Upgraded EUI to v76.0.0 (#152506) 2023-03-14 14:27:40 -05:00
README.md create @kbn/ui-actions-browser package (#149202) 2023-01-19 18:28:07 +01:00

Kibana-related packages

This folder contains packages that are intended for use in Kibana and Kibana plugins.

tl;dr:

  • Don't publish to npm registry
  • Always use the @kbn namespace
  • Always set "private": true in package.json

Using these packages

We no longer publish these packages to the npm registry. Now, instead of specifying a version when including these packages, we rely on yarn workspaces, which sets up a symlink to the package.

For example if you want to use the @kbn/i18n package in Kibana itself, you can specify the dependency like this:

"@kbn/i18n": "1.0.0"

However, if you want to use this from a Kibana plugin, you need to use a link: dependency and account for the relative location of the Kibana repo, so it would instead be:

"@kbn/i18n": "link:../../kibana/packages/kbn-i18n"

then run yarn kbn bootstrap from the plugin directory.

Creating a new package

Run the following command from the root of the Kibana repo:

node scripts/generate package @kbn/<PACKAGE_NAME> --web --owner @elastic/<TEAM_NAME>

Unit tests for a package

Currently there is only one tool being used in order to test packages which is Jest. Below we will explain how it should be done.

Jest

A package should follow the pattern of having .test.js files as siblings of the source code files, and these run by Jest.

A package using the .test.js naming convention will have those tests automatically picked up by Jest and run by the unit test runner, currently mapped to the Kibana test script in the root package.json.

  • yarn test runs all unit tests.
  • yarn jest runs all Jest tests in Kibana.

In order for the plugin or package to use Jest, a jest.config.js file must be present in it's root. However, there are safeguards for this in CI should a test file be added without a corresponding config file.


Each package can also specify its own test script in the package's package.json, for cases where you'd prefer to run the tests from the local package directory.