mirror of
https://github.com/elastic/kibana.git
synced 2025-06-27 18:51:07 -04:00
@maximpn brought up the issues caused by the types required by the rison-node package, which attempted to communicate that "encoded values must be primitive values, or recursive arrays/object of primitive values". This isn't actually expressible in TypeScript, which lead to many instances of `rison.encode(value as unknown as RisonValue)` which is useless. Additionally, the rison-node library actually supports any value and will either produce valid rison or `undefined` for that value. To address this I'm adding a wrapper function which accepts `any` and returns a `string`. If rison-node is totally unable to produce any rison for the value (because the value is `undefined` or some other type like Symbol or BigInt) the `encode()` function will throw. If you're accepting arbitrary input you can use the `encodeUnknown()` function, which will return a string or undefined, if the value you provided has zero rison representation. Like JSON.stringify() any non-circular primitive, object, or array can be encoded with either function. If the values within those objects are not encodable (functions, RegExps, etc) then they will be skipped. Any object/array with the `toJSON()` method will be converted to JSON first, and if the prototype of the object has the `encode_rison()` method it will be used to convert he value into rison. The changes in this PR are mostly updating usage of rison-node to use `@kbn/rison` (which is also enforced by eslint). There are also several changes which remove unnecessary casting. |
||
---|---|---|
.. | ||
src | ||
BUILD.bazel | ||
index.d.ts | ||
index.js | ||
kibana.jsonc | ||
package.json | ||
README.mdx | ||
tsconfig.json | ||
webpack.config.js |
--- id: kibDevDocsOpsUiSharedDepsNpm slug: /kibana-dev-docs/ops/ui-shared-deps-npm title: "@kbn/ui-shared-deps-npm" description: A package to share single instances of npm external packages across bundles date: 2022-05-24 tags: ['kibana', 'dev', 'contributor', 'operations', 'ui', 'shared', 'deps', 'npm'] --- This is a package of shared dependencies that must only have a single instance and are from the NPM external to the Kibana repository. To consume them, import the package and merge the `externals` export into your webpack externals config so that all references to the supported modules will be remapped to use the global versions.