kibana/packages
Pierre Gayvallet d4b2a5145a
SavedObjects tagging MVP (#79096)
* create xpack plugin skeleton, start to implement management section

* add tag creation modal

* first implementation of the tags table

* use InMemoryTable

* add edit modal and delete action

* update plugin list

* add tag list, fix types

* add capabilities check on client-side

* add tag combo box component

* add missing i18n keys

* fix privilege FTR tests

* add base structure for FTR tests

* fix feature ftr test

* use string literals for i18n

* create savedObjectsTaggingOss plugin, move API types to oss plugin, start to wire to SO management page.

* update plugin list

* fix types

* allow to use `_find` with multiple references

* add FTR test for _find API on references fields

* add _find integration tests

* update generated doc

* start to implement tag filtering on SO management section

* update generated docs

* wire tagging API to dashboard listing page

* fix i18n namespace

* fix type & tests

* update dashboard listing snapshots

* adapt FTR listingTable service to search for parsable queries

* wite tagging API to visualize listing

* update tagging plugin limits

* add server-side and client-side validation for tag create/edit

* rename title field to name

* fix types

* fix types bis

* add removeReferencesTo API to SOR/SOC

* update generated doc

* add server-side unit test for `savedObjectsTagging` plugin

* move tagging API types to its own file

* add savedObjectsTaggingOss mock

* add tags_cache tests

* add tests for client-side tag client

* extract uiApi to distinct files

* various API improvements

* add more tests

* add link between tag and so management sections + add connection counts

* add base functional test suite for tagging

* add more FTR tests

* improve feature control func test

* update codeowners

* update generated doc

* fix access to proxy modal

* adapt SO save modal to allow to add tag field

* add SO decorator registry and tag implementation

* add unit tests for SO tag decorator

* add functional tests for visualize integration

* add tag SO read permission for vis/dash feature

* add RBAC api integ tests

* add API integration tests

* add test for getTagConnectionsUrl

* add SOM test suite

* add dashboard integration suite

* remove test line

* add missing unit tests

* improve API types doc

* fix create modal save button label

* remove console.log

* improve doc

* self review

* add refresh interval for tag cache

* improve page object doc

* minor cleanup

* address review comments

* small layout fixes

* add initial focus

* use lazy accessor for tag request handler context

* adapt SOM export and export route to handle references

* remove icon from feature config due to master changes

* fix SO table tests

* update generated docs

* sort tags by name in filter dropdown and listing component

* wire SO tagging to dashboard save modal

* fix types

* - add 'create tag' action in tag selector
- add notifications on update/create/delete from management
- delete modal wording

* add description max length validation

* remove real-time validation

* fix i18n bundle id

* update expected size of savedObjectsTagging plugin

* use own useIfMounted

* update limit again, contract components cannot be lazy loaded atm.

* math is hard

* remove single usage of lodash for bundle size

* add async imports for create/edit modal

* add FTR test for 'create tag' action from tag selector

* allow 'create new' option to prepopulate name field

* extract savedObjectToTag

* add advancedSettings read user for security api_integ suite

* add audit login for security client wrapper

* use import type when possible

* wire SO tagging to lens visualization

* fix lens jest test

* Fix `create tag` option being selected when closing the selector dropdown

* add sorting to tag column from getTableColumnDef

* address some of restrry comments

* rename tag selector's setSelected option to onTagsSelected

* fix audit logging even type for saved_object_remove_references

* update plugin size limit to current size

* adapt maxlength validation wording

* remove selection column until we have batch action menu

* remove connections link when user lack read privilege to savedObjectManagement

* forbid registering multiple SO decorators with the same priority

* add so decorator test

* extract getTagFindReferences and create API mock

* update audit-logging ascidoc

* doc nit

* throw conflict error if update returns any failure

* use refresh=true as default

* wording nits

* export: rename `references` to `hasReference`

* update generated doc

* set description max length to 100

* do not initialize tag cache on anonymous pages

* split fetchObjectsToExport into two distinct functions

* change tag client `delete` call order

* tsdoc nits

* more nits

* add README for oss plugin

* add oss plugin start tests

* SavedObject.find: rename `references` to `hasReference`

* change section description label

* remove url prefix constants

* last nits and comments

* update generated doc
2020-11-03 10:33:18 +01:00
..
elastic-datemath chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
elastic-eslint-config-kibana chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
elastic-safer-lodash-set chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-ace chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-analytics chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-apm-config-loader chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-babel-code-parser chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-babel-preset chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-config chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-config-schema chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-dev-utils chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-es chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-es-archiver SavedObjects tagging MVP (#79096) 2020-11-03 10:33:18 +01:00
kbn-eslint-import-resolver-kibana chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-eslint-plugin-eslint chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-expect [kbn/bootstrap] validate that certain deps don't ship in production (#80549) 2020-10-15 09:56:10 -07:00
kbn-i18n chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-interpreter chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-logging chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-monaco chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-optimizer SavedObjects tagging MVP (#79096) 2020-11-03 10:33:18 +01:00
kbn-plugin-generator chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-plugin-helpers chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-pm chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-release-notes chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-spec-to-console chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-std chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-storybook chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-telemetry-tools chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-test chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-test-subj-selector [kbn/bootstrap] validate that certain deps don't ship in production (#80549) 2020-10-15 09:56:10 -07:00
kbn-ui-framework chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-ui-shared-deps chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-utility-types chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
kbn-utils chore(NA): move into single pkg json (#80015) 2020-11-02 21:18:52 +00:00
README.md [test] remove x-pack mocha configuration (#42979) 2019-08-15 12:21:42 -05: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"

How all of this works is described in more detail in the @kbn/pm docs.

Creating a new package

Create a new sub-folder. The name of the folder should mirror the name in the package's package.json. E.g. if the name is @kbn/i18n the folder name should be kbn-i18n.

All new packages should use the @kbn namespace, and should be marked with "private": true.

Unit tests for a package

Currently there are two patterns used to test packages, one using Mocha and one using Jest. These patterns emerged out of convention and we'd like to make them more similar to each other in the near future.

1. Mocha

Today a package can follow the pattern of having a __tests__ directory in each source code directory of a package which contains the tests for that module. These are usually run by Mocha.

If a package's tests should be run with Mocha, you'll have to opt-in to run them by appending the package's test file pattern(s) to Kibana's src/dev/mocha/run_mocha_cli.js file. These will then be run by the unit test runner.

  • yarn test or yarn grunt test runs all unit tests.
  • node scripts/mocha runs all Mocha tests.

2. Jest

A package can also 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 or yarn grunt test runs all unit tests.
  • node scripts/jest runs all Jest tests in Kibana.

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.